6c92f85d10
Bring the Nexus/Praxis/Hexis integration in line with MAVEN_ECOSYSTEM_ARCHITECTURE.md: - Praxis over HTTP: drop the in-process praxis.db open (praxisstore/ praxistools) and call praxisd's /api/v1/tools/* API via a new praxisClient. Honors the "no component reads another's DB" invariant (AC#12). PraxisConfig.DBPath -> URL. - Hexis confirmation gate: mutating capabilities (ReadOnly=false) now park a bound pendingHexis confirmation and require a spoken "да" before executing; read-only run immediately (AC#7, no auto attention->action). - Capability safety: >1 verb match is ambiguous -> ask instead of firing the first; ambiguous Nexus resolution asks for clarification (AC#2). - Correlation IDs on Hexis execute, recorded in the cross-service trace. - Bug: importance arrives as JSON float64 over HTTP, not int. - Tests: confirm-gate, decline, read-only, and ambiguity paths. Build: vendor/ bakes in the hexis client (replace-directed at a sibling repo outside the Docker context); Dockerfile builds from vendor and no longer `go mod download`s the unreachable replace paths. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
317 lines
12 KiB
Go
317 lines
12 KiB
Go
// Code generated by modernc.org/undup from the per-target sqlite_*.go files; DO NOT EDIT.
|
|
|
|
//go:build (freebsd && 386) || (freebsd && amd64) || (freebsd && arm) || (freebsd && arm64) || (linux && 386) || (linux && amd64) || (linux && arm) || (linux && arm64) || (linux && loong64) || (linux && ppc64le) || (linux && riscv64) || (linux && s390x) || (netbsd && amd64) || (openbsd && amd64) || (openbsd && arm64)
|
|
|
|
package sqlite3
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"modernc.org/libc"
|
|
)
|
|
|
|
const AT_FDCWD = -100
|
|
|
|
const HAVE_FULLFSYNC = 0
|
|
|
|
const INT_FAST16_MAX = 2147483647
|
|
|
|
const INT_FAST16_MIN = -2147483648
|
|
|
|
const RTLD_GLOBAL = 256
|
|
|
|
type Tfsblkcnt_t = uint64
|
|
|
|
type Tfsfilcnt_t = uint64
|
|
|
|
type Tint_fast16_t = int32
|
|
|
|
type Tlocale_t = uintptr
|
|
|
|
type Tuint_fast16_t = uint32
|
|
|
|
const UINT_FAST16_MAX = 4294967295
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** If the following global variable points to a string which is the
|
|
// ** name of a directory, then that directory will be used to store
|
|
// ** temporary files.
|
|
// **
|
|
// ** See also the "PRAGMA temp_store_directory" SQL command.
|
|
// */
|
|
var Xsqlite3_temp_directory uintptr
|
|
|
|
/*
|
|
** Make sure we can call this stuff from C++.
|
|
*/
|
|
|
|
/*
|
|
** Facilitate override of interface linkage and calling conventions.
|
|
** Be aware that these macros may not be used within this particular
|
|
** translation of the amalgamation and its associated header file.
|
|
**
|
|
** The SQLITE_EXTERN and SQLITE_API macros are used to instruct the
|
|
** compiler that the target identifier should have external linkage.
|
|
**
|
|
** The SQLITE_CDECL macro is used to set the calling convention for
|
|
** public functions that accept a variable number of arguments.
|
|
**
|
|
** The SQLITE_APICALL macro is used to set the calling convention for
|
|
** public functions that accept a fixed number of arguments.
|
|
**
|
|
** The SQLITE_STDCALL macro is no longer used and is now deprecated.
|
|
**
|
|
** The SQLITE_CALLBACK macro is used to set the calling convention for
|
|
** function pointers.
|
|
**
|
|
** The SQLITE_SYSAPI macro is used to set the calling convention for
|
|
** functions provided by the operating system.
|
|
**
|
|
** Currently, the SQLITE_CDECL, SQLITE_APICALL, SQLITE_CALLBACK, and
|
|
** SQLITE_SYSAPI macros are used only when building for environments
|
|
** that require non-default calling conventions.
|
|
*/
|
|
|
|
/*
|
|
** These no-op macros are used in front of interfaces to mark those
|
|
** interfaces as either deprecated or experimental. New applications
|
|
** should not use deprecated interfaces - they are supported for backwards
|
|
** compatibility only. Application writers should be aware that
|
|
** experimental interfaces are subject to change in point releases.
|
|
**
|
|
** These macros used to resolve to various kinds of compiler magic that
|
|
** would generate warning messages when they were used. But that
|
|
** compiler magic ended up generating such a flurry of bug reports
|
|
** that we have taken it all out and gone back to using simple
|
|
** noop macros.
|
|
*/
|
|
|
|
/*
|
|
** Ensure these symbols were not defined by some previous header file.
|
|
*/
|
|
|
|
/*
|
|
** CAPI3REF: Compile-Time Library Version Numbers
|
|
**
|
|
** ^(The [SQLITE_VERSION] C preprocessor macro in the sqlite3.h header
|
|
** evaluates to a string literal that is the SQLite version in the
|
|
** format "X.Y.Z" where X is the major version number (always 3 for
|
|
** SQLite3) and Y is the minor version number and Z is the release number.)^
|
|
** ^(The [SQLITE_VERSION_NUMBER] C preprocessor macro resolves to an integer
|
|
** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z are the same
|
|
** numbers used in [SQLITE_VERSION].)^
|
|
** The SQLITE_VERSION_NUMBER for any given release of SQLite will also
|
|
** be larger than the release from which it is derived. Either Y will
|
|
** be held constant and Z will be incremented or else Y will be incremented
|
|
** and Z will be reset to zero.
|
|
**
|
|
** Since [version 3.6.18] ([dateof:3.6.18]),
|
|
** SQLite source code has been stored in the
|
|
** <a href="http://fossil-scm.org/">Fossil configuration management
|
|
** system</a>. ^The SQLITE_SOURCE_ID macro evaluates to
|
|
** a string which identifies a particular check-in of SQLite
|
|
** within its configuration management system. ^The SQLITE_SOURCE_ID
|
|
** string contains the date and time of the check-in (UTC) and a SHA1
|
|
** or SHA3-256 hash of the entire source tree. If the source code has
|
|
** been edited in any way since it was last checked in, then the last
|
|
** four hexadecimal digits of the hash may be modified.
|
|
**
|
|
** See also: [sqlite3_libversion()],
|
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
|
** [sqlite_version()] and [sqlite_source_id()].
|
|
*/
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Return the ON CONFLICT resolution mode in effect for the virtual
|
|
// ** table update operation currently in progress.
|
|
// **
|
|
// ** The results of this routine are undefined unless it is called from
|
|
// ** within an xUpdate method.
|
|
// */
|
|
func Xsqlite3_vtab_on_conflict(tls *libc.TLS, db uintptr) (r int32) {
|
|
return libc.Int32FromUint8(_aMap[libc.Int32FromUint8((*Tsqlite3)(unsafe.Pointer(db)).FvtabOnConflict)-int32(1)])
|
|
}
|
|
|
|
const _POSIX_CHOWN_RESTRICTED = 1
|
|
|
|
const _POSIX_JOB_CONTROL = 1
|
|
|
|
const _POSIX_NO_TRUNC = 1
|
|
|
|
const _POSIX_REGEXP = 1
|
|
|
|
const _POSIX_SHELL = 1
|
|
|
|
const __ELF__ = 1
|
|
|
|
const __unix__ = 1
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Close a file. Make sure the lock has been released before closing.
|
|
// */
|
|
func _dotlockClose(tls *libc.TLS, id uintptr) (r int32) {
|
|
var pFile uintptr
|
|
_ = pFile
|
|
pFile = id
|
|
_dotlockUnlock(tls, id, NO_LOCK)
|
|
Xsqlite3_free(tls, (*TunixFile)(unsafe.Pointer(pFile)).FlockingContext)
|
|
return _closeUnixFile(tls, id)
|
|
}
|
|
|
|
/****************** End of the dot-file lock implementation *******************
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
************************** Begin flock Locking ********************************
|
|
**
|
|
** Use the flock() system call to do file locking.
|
|
**
|
|
** flock() locking is like dot-file locking in that the various
|
|
** fine-grain locking levels supported by SQLite are collapsed into
|
|
** a single exclusive lock. In other words, SHARED, RESERVED, and
|
|
** PENDING locks are the same thing as an EXCLUSIVE lock. SQLite
|
|
** still works when you do this, but concurrency is reduced since
|
|
** only a single process can be reading the database at a time.
|
|
**
|
|
** Omit this section if SQLITE_ENABLE_LOCKING_STYLE is turned off
|
|
*/
|
|
|
|
/******************* End of the flock lock implementation *********************
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
************************ Begin Named Semaphore Locking ************************
|
|
**
|
|
** Named semaphore locking is only supported on VxWorks.
|
|
**
|
|
** Semaphore locking is like dot-lock and flock in that it really only
|
|
** supports EXCLUSIVE locking. Only a single process can read or write
|
|
** the database file at a time. This reduces potential concurrency, but
|
|
** makes the lock implementation much easier.
|
|
*/
|
|
/*
|
|
** Named semaphore locking is only available on VxWorks.
|
|
**
|
|
*************** End of the named semaphore lock implementation ****************
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
*************************** Begin AFP Locking *********************************
|
|
**
|
|
** AFP is the Apple Filing Protocol. AFP is a network filesystem found
|
|
** on Apple Macintosh computers - both OS9 and OSX.
|
|
**
|
|
** Third-party implementations of AFP are available. But this code here
|
|
** only works on OSX.
|
|
*/
|
|
|
|
/*
|
|
** The code above is the AFP lock implementation. The code is specific
|
|
** to MacOSX and does not work on other unix platforms. No alternative
|
|
** is available. If you don't compile for a mac, then the "unix-afp"
|
|
** VFS is not available.
|
|
**
|
|
********************* End of the AFP lock implementation **********************
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
*************************** Begin NFS Locking ********************************/
|
|
|
|
/*
|
|
** The code above is the NFS lock implementation. The code is specific
|
|
** to MacOSX and does not work on other unix platforms. No alternative
|
|
** is available.
|
|
**
|
|
********************* End of the NFS lock implementation **********************
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
**************** Non-locking sqlite3_file methods *****************************
|
|
**
|
|
** The next division contains implementations for all methods of the
|
|
** sqlite3_file object other than the locking methods. The locking
|
|
** methods were defined in divisions above (one locking method per
|
|
** division). Those methods that are common to all locking modes
|
|
** are gather together into this division.
|
|
*/
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** The fsync() system call does not work as advertised on many
|
|
// ** unix systems. The following procedure is an attempt to make
|
|
// ** it work better.
|
|
// **
|
|
// ** The SQLITE_NO_SYNC macro disables all fsync()s. This is useful
|
|
// ** for testing when we want to run through the test suite quickly.
|
|
// ** You are strongly advised *not* to deploy with SQLITE_NO_SYNC
|
|
// ** enabled, however, since with SQLITE_NO_SYNC enabled, an OS crash
|
|
// ** or power failure will likely corrupt the database file.
|
|
// **
|
|
// ** SQLite sets the dataOnly flag if the size of the file is unchanged.
|
|
// ** The idea behind dataOnly is that it should only write the file content
|
|
// ** to disk, not the inode. We only set dataOnly if the file size is
|
|
// ** unchanged since the file size is part of the inode. However,
|
|
// ** Ted Ts'o tells us that fdatasync() will also write the inode if the
|
|
// ** file size has changed. The only real difference between fdatasync()
|
|
// ** and fsync(), Ted tells us, is that fdatasync() will not flush the
|
|
// ** inode if the mtime or owner or other inode attributes have changed.
|
|
// ** We only care about the file size, not the other file attributes, so
|
|
// ** as far as SQLite is concerned, an fdatasync() is always adequate.
|
|
// ** So, we always use fdatasync() if it is available, regardless of
|
|
// ** the value of the dataOnly flag.
|
|
// */
|
|
func _full_fsync(tls *libc.TLS, fd int32, fullSync int32, dataOnly int32) (r int32) {
|
|
var rc int32
|
|
_ = rc
|
|
/* The following "ifdef/elif/else/" block has the same structure as
|
|
** the one below. It is replicated here solely to avoid cluttering
|
|
** up the real code with the UNUSED_PARAMETER() macros.
|
|
*/
|
|
_ = fullSync
|
|
_ = dataOnly
|
|
/* Record the number of times that we do a normal fsync() and
|
|
** FULLSYNC. This is used during testing to verify that this procedure
|
|
** gets called with the correct arguments.
|
|
*/
|
|
/* If we compiled with the SQLITE_NO_SYNC flag, then syncing is a
|
|
** no-op. But go ahead and call fstat() to validate the file
|
|
** descriptor as we need a method to provoke a failure during
|
|
** coverage testing.
|
|
*/
|
|
rc = libc.Xfsync(tls, fd)
|
|
if libc.Bool(OS_VXWORKS != 0) && rc != -int32(1) {
|
|
rc = 0
|
|
}
|
|
return rc
|
|
}
|
|
|
|
func init() {
|
|
p := unsafe.Pointer(&_dotlockIoFinder)
|
|
*(*uintptr)(unsafe.Add(p, 0)) = __ccgo_fp(_dotlockIoFinderImpl)
|
|
}
|
|
|
|
/*
|
|
** The proxy locking method is a "super-method" in the sense that it
|
|
** opens secondary file descriptors for the conch and lock files and
|
|
** it uses proxy, dot-file, AFP, and flock() locking methods on those
|
|
** secondary files. For this reason, the division that implements
|
|
** proxy locking is located much further down in the file. But we need
|
|
** to go ahead and define the sqlite3_io_methods and finder function
|
|
** for proxy locking here. So we forward declare the I/O methods.
|
|
*/
|
|
|
|
/* nfs lockd on OSX 10.3+ doesn't clear write locks when a read lock is set */
|
|
|
|
type locale_t = Tlocale_t
|
|
|
|
const math_errhandling = 2
|
|
|
|
type timer_t = Ttimer_t
|