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>
165 lines
6.9 KiB
Go
165 lines
6.9 KiB
Go
// Code generated by modernc.org/undup from the per-target sqlite_*.go files; DO NOT EDIT.
|
|
|
|
//go:build (linux && arm64) || (linux && ppc64le) || (linux && riscv64) || (linux && s390x) || (openbsd && arm64)
|
|
|
|
package sqlite3
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"modernc.org/libc"
|
|
)
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Rtree virtual table module xBestIndex method. There are three
|
|
// ** table scan strategies to choose from (in order from most to
|
|
// ** least desirable):
|
|
// **
|
|
// ** idxNum idxStr Strategy
|
|
// ** ------------------------------------------------
|
|
// ** 1 Unused Direct lookup by rowid.
|
|
// ** 2 See below R-tree query or full-table scan.
|
|
// ** ------------------------------------------------
|
|
// **
|
|
// ** If strategy 1 is used, then idxStr is not meaningful. If strategy
|
|
// ** 2 is used, idxStr is formatted to contain 2 bytes for each
|
|
// ** constraint used. The first two bytes of idxStr correspond to
|
|
// ** the constraint in sqlite3_index_info.aConstraintUsage[] with
|
|
// ** (argvIndex==1) etc.
|
|
// **
|
|
// ** The first of each pair of bytes in idxStr identifies the constraint
|
|
// ** operator as follows:
|
|
// **
|
|
// ** Operator Byte Value
|
|
// ** ----------------------
|
|
// ** = 0x41 ('A')
|
|
// ** <= 0x42 ('B')
|
|
// ** < 0x43 ('C')
|
|
// ** >= 0x44 ('D')
|
|
// ** > 0x45 ('E')
|
|
// ** MATCH 0x46 ('F')
|
|
// ** ----------------------
|
|
// **
|
|
// ** The second of each pair of bytes identifies the coordinate column
|
|
// ** to which the constraint applies. The leftmost coordinate column
|
|
// ** is 'a', the second from the left 'b' etc.
|
|
// */
|
|
func _rtreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) (r int32) {
|
|
bp := tls.Alloc(48)
|
|
defer tls.Free(48)
|
|
var bMatch, iIdx, ii, jj, rc, v4 int32
|
|
var doOmit, op Tu8
|
|
var nRow Ti64
|
|
var p, pRtree uintptr
|
|
var _ /* zIdxStr at bp+0 */ [41]uint8
|
|
_, _, _, _, _, _, _, _, _, _, _ = bMatch, doOmit, iIdx, ii, jj, nRow, op, p, pRtree, rc, v4
|
|
pRtree = tab
|
|
rc = SQLITE_OK
|
|
bMatch = 0 /* Estimated rows returned by this scan */
|
|
iIdx = 0
|
|
libc.Xmemset(tls, bp, 0, uint64(41))
|
|
/* Check if there exists a MATCH constraint - even an unusable one. If there
|
|
** is, do not consider the lookup-by-rowid plan as using such a plan would
|
|
** require the VDBE to evaluate the MATCH constraint, which is not currently
|
|
** possible. */
|
|
ii = 0
|
|
for {
|
|
if !(ii < (*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
|
|
break
|
|
}
|
|
if libc.Int32FromUint8((**(**Tsqlite3_index_constraint)(__ccgo_up((*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12))).Fop) == int32(SQLITE_INDEX_CONSTRAINT_MATCH) {
|
|
bMatch = int32(1)
|
|
}
|
|
goto _1
|
|
_1:
|
|
;
|
|
ii = ii + 1
|
|
}
|
|
ii = 0
|
|
for {
|
|
if !(ii < (*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint && iIdx < libc.Int32FromUint64(libc.Uint64FromInt64(41)-libc.Uint64FromInt32(1))) {
|
|
break
|
|
}
|
|
p = (*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
|
|
if bMatch == 0 && (*Tsqlite3_index_constraint)(unsafe.Pointer(p)).Fusable != 0 && (*Tsqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn <= 0 && libc.Int32FromUint8((*Tsqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == int32(SQLITE_INDEX_CONSTRAINT_EQ) {
|
|
jj = 0
|
|
for {
|
|
if !(jj < ii) {
|
|
break
|
|
}
|
|
(**(**Tsqlite3_index_constraint_usage)(__ccgo_up((*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(jj)*8))).FargvIndex = 0
|
|
(**(**Tsqlite3_index_constraint_usage)(__ccgo_up((*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(jj)*8))).Fomit = uint8(0)
|
|
goto _3
|
|
_3:
|
|
;
|
|
jj = jj + 1
|
|
}
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32(1)
|
|
(**(**Tsqlite3_index_constraint_usage)(__ccgo_up((*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8))).FargvIndex = int32(1)
|
|
(**(**Tsqlite3_index_constraint_usage)(__ccgo_up((*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(jj)*8))).Fomit = uint8(1)
|
|
/* This strategy involves a two rowid lookups on an B-Tree structures
|
|
** and then a linear search of an R-Tree node. This should be
|
|
** considered almost as quick as a direct rowid lookup (for which
|
|
** sqlite uses an internal cost of 0.0). It is expected to return
|
|
** a single row.
|
|
*/
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(30)
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = int32(SQLITE_INDEX_SCAN_UNIQUE)
|
|
return SQLITE_OK
|
|
}
|
|
if (*Tsqlite3_index_constraint)(unsafe.Pointer(p)).Fusable != 0 && ((*Tsqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn > 0 && (*Tsqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn <= libc.Int32FromUint8((*TRtree)(unsafe.Pointer(pRtree)).FnDim2) || libc.Int32FromUint8((*Tsqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == int32(SQLITE_INDEX_CONSTRAINT_MATCH)) {
|
|
doOmit = uint8(1)
|
|
switch libc.Int32FromUint8((*Tsqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
|
|
case int32(SQLITE_INDEX_CONSTRAINT_EQ):
|
|
op = uint8(RTREE_EQ)
|
|
doOmit = uint8(0)
|
|
case int32(SQLITE_INDEX_CONSTRAINT_GT):
|
|
op = uint8(RTREE_GT)
|
|
doOmit = uint8(0)
|
|
case int32(SQLITE_INDEX_CONSTRAINT_LE):
|
|
op = uint8(RTREE_LE)
|
|
case int32(SQLITE_INDEX_CONSTRAINT_LT):
|
|
op = uint8(RTREE_LT)
|
|
doOmit = uint8(0)
|
|
case int32(SQLITE_INDEX_CONSTRAINT_GE):
|
|
op = uint8(RTREE_GE)
|
|
case int32(SQLITE_INDEX_CONSTRAINT_MATCH):
|
|
op = uint8(RTREE_MATCH)
|
|
default:
|
|
op = uint8(0)
|
|
break
|
|
}
|
|
if op != 0 {
|
|
v4 = iIdx
|
|
iIdx = iIdx + 1
|
|
(**(**[41]uint8)(__ccgo_up(bp)))[v4] = op
|
|
v4 = iIdx
|
|
iIdx = iIdx + 1
|
|
(**(**[41]uint8)(__ccgo_up(bp)))[v4] = libc.Uint8FromInt32((*Tsqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn - libc.Int32FromInt32(1) + libc.Int32FromUint8('0'))
|
|
(**(**Tsqlite3_index_constraint_usage)(__ccgo_up((*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8))).FargvIndex = iIdx / int32(2)
|
|
(**(**Tsqlite3_index_constraint_usage)(__ccgo_up((*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8))).Fomit = doOmit
|
|
}
|
|
}
|
|
goto _2
|
|
_2:
|
|
;
|
|
ii = ii + 1
|
|
}
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32(2)
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = int32(1)
|
|
if iIdx > 0 {
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = Xsqlite3_malloc(tls, iIdx+int32(1))
|
|
if (*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr == uintptr(0) {
|
|
return int32(SQLITE_NOMEM)
|
|
}
|
|
libc.Xmemcpy(tls, (*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr, bp, libc.Uint64FromInt32(iIdx+int32(1)))
|
|
}
|
|
nRow = (*TRtree)(unsafe.Pointer(pRtree)).FnRowEst >> (iIdx / int32(2))
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(libc.Float64FromFloat64(6) * float64(nRow))
|
|
(*Tsqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
|
|
return rc
|
|
}
|