From 5e8a085cfb2f6df373a2a68436b1c1acacba592b Mon Sep 17 00:00:00 2001
From: Jan Mercl <0xjnml@gmail.com>
Date: Sat, 1 Jul 2017 23:04:53 +0200
Subject: Add a couple of tests. Build only on linux, do not pass.
modified: Makefile
modified: all_test.go
modified: generator.go
modified: internal/bin/bin_linux_386.go
modified: internal/bin/bin_linux_amd64.go
new file: internal/mptest/mptest_linux_386.go
new file: internal/mptest/mptest_linux_amd64.go
new file: internal/threadtest1/threadtest1_linux_386.go
new file: internal/threadtest1/threadtest1_linux_amd64.go
new file: internal/threadtest2/threadtest2_linux_386.go
new file: internal/threadtest2/threadtest2_linux_amd64.go
new file: internal/threadtest4/threadtest4_linux_386.go
new file: internal/threadtest4/threadtest4_linux_amd64.go
modified: main.c
new file: sqlite.h
new file: testdata/mptest/config01.test
new file: testdata/mptest/config02.test
new file: testdata/mptest/crash01.test
new file: testdata/mptest/crash02.subtest
new file: testdata/mptest/multiwrite01.test
---
internal/bin/bin_linux_386.go | 161966 +++++++++++++++++----------------------
1 file changed, 69817 insertions(+), 92149 deletions(-)
(limited to 'internal/bin/bin_linux_386.go')
diff --git a/internal/bin/bin_linux_386.go b/internal/bin/bin_linux_386.go
index a1a3056..e25062f 100644
--- a/internal/bin/bin_linux_386.go
+++ b/internal/bin/bin_linux_386.go
@@ -1,3 +1,5 @@
+// Code generated by ccgo. DO NOT EDIT.
+
/*
SQLite Is Public Domain
@@ -28,7 +30,26 @@ uncontaminated with licensed code from other projects.
*/
-// Code generated by ccgo DO NOT EDIT.
+// sqlite3.c
+
+// *****************************************************************************
+// This file is an amalgamation of many separate C source files from SQLite
+// version 3.19.3. By combining all the individual C code files into this
+// single large file, the entire code can be compiled as a single translation
+// unit. This allows many compilers to do optimizations that would not be
+// possible if the files were compiled separately. Performance improvements
+// of 5% or more are commonly seen when SQLite is compiled as a single
+// translation unit.
+//
+// This file is all you need to compile SQLite. To use SQLite in other
+// programs, you need this file and the "sqlite3.h" header file that defines
+// the programming interface to the SQLite library. (If you do not have
+// the "sqlite3.h" header file at hand, you will find a copy embedded within
+// the text of this file. Search for "Begin file sqlite3.h" to find the start
+// of the embedded sqlite3.h header file.) Additional code files may be needed
+// if you want a wrapper to interface SQLite with your choice of programming
+// language. The code for the "sqlite3" command-line shell is also in a
+// separate file. This file contains only code for the core SQLite library.
package bin
@@ -584,290 +605,284 @@ const (
X__volatile = 0
)
-func X_start(tls *crt.TLS, _argc int32, _argv **int8) { // crt0.c:12:1
+func X_start(tls *crt.TLS, _argc int32, _argv **int8) {
crt.X__register_stdfiles(tls, Xstdin, Xstdout, Xstderr)
crt.X__builtin_exit(tls, Xmain(tls, _argc, _argv))
}
-var Xstdin unsafe.Pointer // crt0.c:10:6
+var Xstdin unsafe.Pointer
func init() {
Xstdin = unsafe.Pointer(&X__stdfiles)
}
-var X__stdfiles [3]unsafe.Pointer // crt0.c:9:15
+var X__stdfiles [3]unsafe.Pointer
-var Xstdout unsafe.Pointer // crt0.c:10:31
+var Xstdout unsafe.Pointer
func init() {
Xstdout = (unsafe.Pointer)(uintptr(unsafe.Pointer(&X__stdfiles)) + 4)
}
-var Xstderr unsafe.Pointer // crt0.c:10:57
+var Xstderr unsafe.Pointer
func init() {
Xstderr = (unsafe.Pointer)(uintptr(unsafe.Pointer(&X__stdfiles)) + 8)
}
-func Xmain(tls *crt.TLS, _argc int32, _argv **int8) (r0 int32) { // main.c:9:1
- var _f func(*crt.TLS, int32, ...interface{}) int32 // main.c:12:6
- _ = _f
+func Xmain(tls *crt.TLS, _argc int32, _argv **int8) (r0 int32) {
r0 = i32(0)
- _f = Xsqlite3_config
+ _use(tls, i32(0), Xsqlite3_exec, Xsqlite3_enable_load_extension)
return
}
-func Xsqlite3_config(tls *crt.TLS, _op int32, args ...interface{}) (r0 int32) { // sqlite3.c:140823:12
- var _ap []interface{} // sqlite3.c:140824:11
- _ = _ap
- var _rc int32 // sqlite3.c:140825:7
- _ = _rc
- var _22_szMmap int64 // sqlite3.c:141069:21
- _ = _22_szMmap
- var _22_mxMmap int64 // sqlite3.c:141070:21
- _ = _22_mxMmap
+func _use(tls *crt.TLS, _ int32, args ...interface{}) {
+}
+
+// Execute SQL code. Return one of the SQLITE_ success/failure
+// codes. Also write an error message into memory obtained from
+// malloc() and make *pzErrMsg point to that message.
+//
+// If the SQL is a query, then for each row in the query result
+// the xCallback() function is called. pArg becomes the first
+// argument to xCallback(). If xCallback=NULL then no callback
+// is invoked, even for queries.
+func Xsqlite3_exec(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _xCallback func(*crt.TLS, unsafe.Pointer, int32, **int8, **int8) int32, _pArg unsafe.Pointer, _pzErrMsg **int8) (r0 int32) {
+ var _rc, _callbackIsInit, _1_nCol, _4_i, _14_nErrMsg int32
+ var _zLeftover *int8
+ var _pStmt unsafe.Pointer
+ var _azCols, _1_azVals **int8
_rc = i32(0)
- if (_sqlite3Config.X28) == 0 {
- goto _0
+ _pStmt = nil
+ _azCols = nil
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ return _sqlite3MisuseError(tls, i32(111141))
}
- return _sqlite3MisuseError(tls, i32(140829))
-
-_0:
- _ap = args
- switch _op {
- case i32(1):
- goto _2
- case i32(2):
- goto _3
- case i32(3):
- goto _4
- case i32(4):
- goto _7
- case i32(5):
- goto _8
- case i32(6):
- goto _10
- case i32(7):
- goto _11
- case i32(9):
- goto _9
- case i32(10):
- goto _5
- case i32(11):
- goto _6
- case i32(13):
- goto _17
- case i32(14):
- goto _13
- case i32(15):
- goto _14
- case i32(16):
- goto _18
- case i32(17):
- goto _19
- case i32(18):
- goto _15
- case i32(19):
- goto _16
- case i32(20):
- goto _20
- case i32(22):
- goto _21
- case i32(24):
- goto _12
- case i32(25):
- goto _22
- case i32(26):
- goto _23
- default:
- goto _24
+ if _zSql == nil {
+ _zSql = str(0)
}
-
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
+ _sqlite3Error(tls, _db, i32(0))
_2:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(4 /* X1 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(8 /* X2 */))) = i32(0)
- goto _25
-
-_3:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(4 /* X1 */))) = i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(8 /* X2 */))) = i32(0)
- goto _25
-
-_4:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(4 /* X1 */))) = i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(8 /* X2 */))) = i32(1)
- goto _25
-
-_5:
- *(*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))) = *(*Xsqlite3_mutex_methods)(crt.VAPointer(&_ap))
- goto _25
-
-_6:
- *(*Xsqlite3_mutex_methods)(crt.VAPointer(&_ap)) = _sqlite3Config.X11
- goto _25
-
-_7:
- *(*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))) = *(*Xsqlite3_mem_methods)(crt.VAPointer(&_ap))
- goto _25
-
-_8:
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, int32) unsafe.Pointer
- }{((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X0)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, int32) unsafe.Pointer
- }{nil})) {
- goto _26
+ if _rc != i32(0) || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == 0 {
+ goto _3
}
-
- _sqlite3MemSetDefault(tls)
-_26:
- *(*Xsqlite3_mem_methods)(crt.VAPointer(&_ap)) = _sqlite3Config.X10
- goto _25
-
-_9:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(0 /* X0 */))) = crt.VAInt32(&_ap)
- goto _25
-
+ _1_azVals = nil
+ _pStmt = nil
+ _rc = Xsqlite3_prepare_v2(tls, _db, _zSql, i32(-1), &_pStmt, &_zLeftover)
+ func() {
+ if _rc != i32(0) && _pStmt != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(111152), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_execØ00__func__Ø000))), unsafe.Pointer(str(95)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _rc != i32(0) {
+ goto _2
+ }
+ if _pStmt == nil {
+ _zSql = _zLeftover
+ goto _2
+ }
+ _callbackIsInit = i32(0)
+ _1_nCol = Xsqlite3_column_count(tls, _pStmt)
_10:
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(192 /* X19 */))) = crt.VAPointer(&_ap)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(196 /* X20 */))) = crt.VAInt32(&_ap)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(200 /* X21 */))) = crt.VAInt32(&_ap)
- goto _25
-
-_11:
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(204 /* X22 */))) = crt.VAPointer(&_ap)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(208 /* X23 */))) = crt.VAInt32(&_ap)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(212 /* X24 */))) = crt.VAInt32(&_ap)
- goto _25
-
-_12:
- *(*int32)(crt.VAPointer(&_ap)) = (_sqlite3HeaderSizeBtree(tls) + _sqlite3HeaderSizePcache(tls)) + _sqlite3HeaderSizePcache1(tls)
- goto _25
-
-_13:
- goto _25
-
-_14:
- _rc = i32(1)
- goto _25
-
-_15:
- *(*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))) = *(*Xsqlite3_pcache_methods2)(crt.VAPointer(&_ap))
- goto _25
-
-_16:
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X2)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{nil})) {
- goto _27
+ _rc = Xsqlite3_step(tls, _pStmt)
+ if _xCallback == nil || i32(100) != _rc && (i32(101) != _rc || _callbackIsInit != 0 || ((_db.X6)&i32(256)) == 0) {
+ goto _16
}
-
- _sqlite3PCacheSetDefault(tls)
-_27:
- *(*Xsqlite3_pcache_methods2)(crt.VAPointer(&_ap)) = _sqlite3Config.X12
- goto _25
-
-_17:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(28 /* X7 */))) = crt.VAInt32(&_ap)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(32 /* X8 */))) = crt.VAInt32(&_ap)
- goto _25
-
-_18:
- *(*func(*crt.TLS, unsafe.Pointer, int32, *int8))(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(256 /* X35 */))) = crt.VAOther(&_ap).(func(*crt.TLS, unsafe.Pointer, int32, *int8))
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(260 /* X36 */))) = crt.VAPointer(&_ap)
- goto _25
-
+ if _callbackIsInit != 0 {
+ goto _17
+ }
+ _azCols = (**int8)(_sqlite3DbMallocRaw(tls, _db, uint64(uint32((i32(2)*_1_nCol)+i32(1))*u32(4))))
+ if _azCols == nil {
+ goto _exec_out
+ }
+ _4_i = i32(0)
_19:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(12 /* X3 */))) = crt.VAInt32(&_ap)
- goto _25
-
-_20:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(16 /* X4 */))) = crt.VAInt32(&_ap)
- goto _25
-
-_21:
- _22_szMmap = crt.VAInt64(&_ap)
- _22_mxMmap = crt.VAInt64(&_ap)
- if _22_mxMmap >= int64(i32(0)) && _22_mxMmap <= int64(i32(2147418112)) {
+ if _4_i >= _1_nCol {
+ goto _22
+ }
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azCols)) + 4*uintptr(_4_i))) = Xsqlite3_column_name(tls, _pStmt, _4_i)
+ func() {
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azCols)) + 4*uintptr(_4_i)))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(111182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_execØ00__func__Ø000))), unsafe.Pointer(str(121)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _4_i += 1
+ goto _19
+_22:
+ _callbackIsInit = i32(1)
+_17:
+ if _rc != i32(100) {
+ goto _25
+ }
+ _1_azVals = (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azCols)) + 4*uintptr(_1_nCol)))
+ _4_i = i32(0)
+_26:
+ if _4_i >= _1_nCol {
goto _29
}
-
- _22_mxMmap = int64(i32(2147418112))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_azVals)) + 4*uintptr(_4_i))) = (*int8)(unsafe.Pointer(Xsqlite3_column_text(tls, _pStmt, _4_i)))
+ if ((*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_azVals)) + 4*uintptr(_4_i)))) == nil) && (Xsqlite3_column_type(tls, _pStmt, _4_i) != i32(5)) {
+ _sqlite3OomFault(tls, _db)
+ goto _exec_out
+ }
+ _4_i += 1
+ goto _26
_29:
- if _22_szMmap >= int64(i32(0)) {
- goto _30
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_azVals)) + 4*uintptr(_4_i))) = nil
+_25:
+ if _xCallback(tls, _pArg, _1_nCol, _1_azVals, _azCols) != 0 {
+ _rc = i32(4)
+ _sqlite3VdbeFinalize(tls, (*TVdbe)(_pStmt))
+ _pStmt = nil
+ _sqlite3Error(tls, _db, i32(4))
+ goto _exec_out
}
-
- _22_szMmap = int64(i32(0))
-_30:
- if _22_szMmap <= _22_mxMmap {
- goto _31
+_16:
+ if _rc == i32(100) {
+ goto _33
}
-
- _22_szMmap = _22_mxMmap
-_31:
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(184 /* X18 */))) = _22_mxMmap
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(176 /* X17 */))) = _22_szMmap
- goto _25
-
-_22:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(224 /* X27 */))) = crt.VAUint32(&_ap)
- goto _25
-
-_23:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(36 /* X9 */))) = crt.VAInt32(&_ap)
- goto _25
-
-_24:
- _rc = i32(1)
- goto _25
-
-_25:
- _ap = nil
+ _rc = _sqlite3VdbeFinalize(tls, (*TVdbe)(_pStmt))
+ _pStmt = nil
+ _zSql = _zLeftover
+_34:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))))))) & i32(1)) != 0 {
+ *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
+ goto _34
+ }
+ goto _11
+_33:
+ goto _10
+_11:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_azCols))
+ _azCols = nil
+ goto _2
+_3:
+_exec_out:
+ if _pStmt != nil {
+ _sqlite3VdbeFinalize(tls, (*TVdbe)(_pStmt))
+ }
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_azCols))
+ _rc = _sqlite3ApiExit(tls, _db, _rc)
+ if _rc == i32(0) || _pzErrMsg == nil {
+ goto _38
+ }
+ _14_nErrMsg = i32(1) + _sqlite3Strlen30(tls, Xsqlite3_errmsg(tls, _db))
+ *_pzErrMsg = (*int8)(_sqlite3Malloc(tls, uint64(_14_nErrMsg)))
+ if (*_pzErrMsg) != nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(*_pzErrMsg), (unsafe.Pointer)(Xsqlite3_errmsg(tls, _db)), uint32(_14_nErrMsg))
+ goto _40
+ }
+ _rc = _sqlite3NomemError(tls, i32(111233))
+ _sqlite3Error(tls, _db, i32(7))
+_40:
+ goto _41
+_38:
+ if _pzErrMsg != nil {
+ *_pzErrMsg = nil
+ }
+_41:
+ func() {
+ if (_rc & (_db.X11)) != _rc {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(111240), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_execØ00__func__Ø000))), unsafe.Pointer(str(134)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
return _rc
}
-var _sqlite3Config TSqlite3Config // sqlite3.c:17345:48
+// Check to make sure we have a valid db pointer. This test is not
+// foolproof but it does provide some measure of protection against
+// misuse of the interface such as passing in db pointers that are
+// NULL or which have been previously closed. If this routine returns
+// 1 it means that the db pointer is valid and 0 if it should not be
+// dereferenced for any reason. The calling function should invoke
+// SQLITE_MISUSE immediately.
+//
+// sqlite3SafetyCheckOk() requires that the db pointer be valid for
+// use. sqlite3SafetyCheckSickOrOk() allows a db pointer that failed to
+// open properly and is not fit for general use but which can be
+// used as an argument to sqlite3_errmsg() or sqlite3_close().
+func _sqlite3SafetyCheckOk(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
+ var _magic uint32
+ if _db == nil {
+ _logBadConnection(tls, str(155))
+ return i32(0)
+ }
+ _magic = _db.X28
+ if _magic == u32(2687084183) {
+ goto _1
+ }
+ if _sqlite3SafetyCheckSickOrOk(tls, _db) != 0 {
+ _logBadConnection(tls, str(160))
+ }
+ return i32(0)
-func init() {
- _sqlite3Config = TSqlite3Config{X0: i32(1), X1: i32(1), X2: i32(1), X3: i32(1), X4: i32(1), X5: i32(2147483646), X6: i32(0), X7: i32(1200), X8: i32(100), X9: i32(65536), X10: Xsqlite3_mem_methods{}, X11: Xsqlite3_mutex_methods{}, X12: Xsqlite3_pcache_methods2{}, X13: nil, X14: i32(0), X15: i32(0), X16: i32(0), X17: i64(0), X18: i64(2147418112), X19: nil, X20: i32(0), X21: i32(0), X22: nil, X23: i32(0), X24: i32(20), X25: i32(0), X26: i32(0), X27: u32(250), X28: i32(0), X29: i32(0), X30: i32(0), X31: i32(0), X32: i32(0), X33: i32(0), X34: nil, X35: nil, X36: nil, X37: nil, X38: i32(0), X39: i32(2147483646)}
+_1:
+ return i32(1)
}
-func _sqlite3MisuseError(tls *crt.TLS, _lineno int32) (r0 int32) { // sqlite3.c:143799:1
- return _reportError(tls, i32(21), _lineno, str(0))
+// Log an error that is an API call on a connection pointer that should
+// not have been used. The "type" of connection pointer is given as the
+// argument. The zType is a word like "NULL" or "closed" or "invalid".
+func _logBadConnection(tls *crt.TLS, _zType *int8) {
+ Xsqlite3_log(tls, i32(21), str(169), unsafe.Pointer(_zType))
}
-func _reportError(tls *crt.TLS, _iErr int32, _lineno int32, _zType *int8) (r0 int32) { // sqlite3.c:143790:1
- Xsqlite3_log(tls, _iErr, str(8), unsafe.Pointer(_zType), _lineno, unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(20))))))+uintptr(unsafe.Pointer(Xsqlite3_sourceid(tls)))))))
- return _iErr
+// Format and write a message to the log if logging is enabled.
+func Xsqlite3_log(tls *crt.TLS, _iErrCode int32, _zFormat *int8, args ...interface{}) {
+ var _ap []interface{}
+ if (_sqlite3Config.X35) != nil {
+ _ap = args
+ _renderLogMsg(tls, _iErrCode, _zFormat, _ap)
+ _ap = nil
+ }
}
-func Xsqlite3_log(tls *crt.TLS, _iErrCode int32, _zFormat *int8, args ...interface{}) { // sqlite3.c:26133:12
- var _ap []interface{} // sqlite3.c:26134:11
- _ = _ap
- if (_sqlite3Config.X35) == nil {
- goto _0
- }
+var _sqlite3Config TSqlite3Config
- _ap = args
- _renderLogMsg(tls, _iErrCode, _zFormat, _ap)
- _ap = nil
-_0:
+func init() {
+ _sqlite3Config = TSqlite3Config{X0: i32(1), X1: i32(1), X2: i32(1), X3: i32(1), X4: i32(1), X5: i32(2147483646), X6: i32(0), X7: i32(1200), X8: i32(100), X9: i32(65536), X10: Xsqlite3_mem_methods{}, X11: Xsqlite3_mutex_methods{}, X12: Xsqlite3_pcache_methods2{}, X13: nil, X14: i32(0), X15: i32(0), X16: i32(0), X17: i64(0), X18: i64(2147418112), X19: nil, X20: i32(0), X21: i32(0), X22: nil, X23: i32(0), X24: i32(20), X25: i32(0), X26: i32(0), X27: u32(250), X28: i32(0), X29: i32(0), X30: i32(0), X31: i32(0), X32: i32(0), X33: i32(0), X34: nil, X35: nil, X36: nil, X37: nil, X38: i32(0), X39: i32(2147483646)}
}
-func _renderLogMsg(tls *crt.TLS, _iErrCode int32, _zFormat *int8, _ap []interface{}) { // sqlite3.c:26120:1
- var _acc XStrAccum // sqlite3.c:26121:12
- _ = _acc
- var _zMsg [210]int8 // sqlite3.c:26122:8
- _ = _zMsg
+// This is the routine that actually formats the sqlite3_log() message.
+// We house it in a separate routine from sqlite3_log() to avoid using
+// stack space on small-stack systems when logging is disabled.
+//
+// sqlite3_log() must render into a static buffer. It cannot dynamically
+// allocate memory because it might be called while the memory allocator
+// mutex is held.
+//
+// sqlite3VXPrintf() might ask for *temporary* memory allocations for
+// certain format characters (%q) or for very large precisions or widths.
+// Care must be taken that any sqlite3_log() calls that occur while the
+// memory mutex is held do not use these mechanisms.
+func _renderLogMsg(tls *crt.TLS, _iErrCode int32, _zFormat *int8, _ap []interface{}) {
+ var _acc XStrAccum
+ var _zMsg [210]int8
_sqlite3StrAccumInit(tls, &_acc, nil, (*int8)(unsafe.Pointer(&_zMsg)), int32(u32(210)), i32(0))
_sqlite3VXPrintf(tls, &_acc, _zFormat, _ap)
(_sqlite3Config.X35)(tls, _sqlite3Config.X36, _iErrCode, _sqlite3StrAccumFinish(tls, &_acc))
+ _ = _acc
+ _ = _zMsg
}
-func _sqlite3StrAccumInit(tls *crt.TLS, _p *XStrAccum, _db *Xsqlite3, _zBase *int8, _n int32, _mx int32) { // sqlite3.c:25986:1
+// Initialize a string accumulator.
+//
+// p: The accumulator to be initialized.
+// db: Pointer to a database connection. May be NULL. Lookaside
+// memory is used if not NULL. db->mallocFailed is set appropriately
+// when not NULL.
+// zBase: An initial buffer. May be NULL in which case the initial buffer
+// is malloced.
+// n: Size of zBase in bytes. If total space requirements never exceed
+// n then no memory allocations ever occur.
+// mx: Maximum number of bytes to accumulate. If mx==0 then no memory
+// allocations will ever occur.
+func _sqlite3StrAccumInit(tls *crt.TLS, _p *XStrAccum, _db *Xsqlite3, _zBase *int8, _n int32, _mx int32) {
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = store0((**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(4 /* X1 */))), _zBase)
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _db
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = uint32(i32(0))
@@ -877,171 +892,55 @@ func _sqlite3StrAccumInit(tls *crt.TLS, _p *XStrAccum, _db *Xsqlite3, _zBase *in
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(25 /* X7 */))) = uint8(i32(0))
}
-func _sqlite3VXPrintf(tls *crt.TLS, _pAccum *XStrAccum, _fmt *int8, _ap []interface{}) { // sqlite3.c:25230:1
- var _c int32 // sqlite3.c:25235:7
- _ = _c
- var _bufpt *int8 // sqlite3.c:25236:8
- _ = _bufpt
- var _precision int32 // sqlite3.c:25237:7
- _ = _precision
- var _length int32 // sqlite3.c:25238:7
- _ = _length
- var _idx int32 // sqlite3.c:25239:7
- _ = _idx
- var _width int32 // sqlite3.c:25240:7
- _ = _width
- var _flag_leftjustify uint8 // sqlite3.c:25241:10
- _ = _flag_leftjustify
- var _flag_prefix uint8 // sqlite3.c:25242:10
- _ = _flag_prefix
- var _flag_alternateform uint8 // sqlite3.c:25243:10
- _ = _flag_alternateform
- var _flag_altform2 uint8 // sqlite3.c:25244:10
- _ = _flag_altform2
- var _flag_zeropad uint8 // sqlite3.c:25245:10
- _ = _flag_zeropad
- var _flag_long uint8 // sqlite3.c:25246:10
- _ = _flag_long
- var _done uint8 // sqlite3.c:25247:10
- _ = _done
- var _cThousand uint8 // sqlite3.c:25248:10
- _ = _cThousand
- var _xtype uint8 // sqlite3.c:25249:10
- _ = _xtype
- var _bArgList uint8 // sqlite3.c:25250:6
- _ = _bArgList
- var _prefix int8 // sqlite3.c:25251:8
- _ = _prefix
- var _longvalue uint64 // sqlite3.c:25252:17
- _ = _longvalue
- var _realvalue float64 // sqlite3.c:25253:19
- _ = _realvalue
- var _infop *Xet_info // sqlite3.c:25254:17
- _ = _infop
- var _zOut *int8 // sqlite3.c:25255:8
- _ = _zOut
- var _nOut int32 // sqlite3.c:25256:7
- _ = _nOut
- var _zExtra *int8 // sqlite3.c:25257:8
- _ = _zExtra
- var _exp int32 // sqlite3.c:25259:8
- _ = _exp
- var _e2 int32 // sqlite3.c:25259:13
- _ = _e2
- var _nsd int32 // sqlite3.c:25260:7
- _ = _nsd
- var _rounder float64 // sqlite3.c:25261:10
- _ = _rounder
- var _flag_dp uint8 // sqlite3.c:25262:10
- _ = _flag_dp
- var _flag_rtz uint8 // sqlite3.c:25263:10
- _ = _flag_rtz
- var _pArgList *XPrintfArguments // sqlite3.c:25265:19
- _ = _pArgList
- var _buf [70]int8 // sqlite3.c:25266:8
- _ = _buf
- var _13_wx uint32 // sqlite3.c:25319:16
- _ = _13_wx
- var _20_px uint32 // sqlite3.c:25348:18
- _ = _20_px
- var _29_v int64 // sqlite3.c:25417:15
- _ = _29_v
- var _47_n uint64 // sqlite3.c:25462:15
- _ = _47_n
- var _49_x int32 // sqlite3.c:25473:15
- _ = _49_x
- var _51_cset *int8 // sqlite3.c:25481:22
- _ = _51_cset
- var _51_base uint8 // sqlite3.c:25482:14
- _ = _51_base
- var _54_nn int32 // sqlite3.c:25494:15
- _ = _54_nn
- var _54_ix int32 // sqlite3.c:25495:15
- _ = _54_ix
- var _57_pre *int8 // sqlite3.c:25509:22
- _ = _57_pre
- var _57_x int8 // sqlite3.c:25510:16
- _ = _57_x
- var _64_scale float64 // sqlite3.c:25546:27
- _ = _64_scale
- var _96_i int32 // sqlite3.c:25661:15
- _ = _96_i
- var _96_nPad int32 // sqlite3.c:25662:15
- _ = _96_nPad
- var _110_i int32 // sqlite3.c:25724:13
- _ = _110_i
- var _110_j int32 // sqlite3.c:25724:16
- _ = _110_j
- var _110_k int32 // sqlite3.c:25724:19
- _ = _110_k
- var _110_n int32 // sqlite3.c:25724:22
- _ = _110_n
- var _110_isnull int32 // sqlite3.c:25724:25
- _ = _110_isnull
- var _110_needQuote int32 // sqlite3.c:25725:13
- _ = _110_needQuote
- var _110_ch int8 // sqlite3.c:25726:14
- _ = _110_ch
- var _110_q int8 // sqlite3.c:25727:14
- _ = _110_q
- var _110_escarg *int8 // sqlite3.c:25728:14
- _ = _110_escarg
- var _118_pToken *XToken // sqlite3.c:25768:15
- _ = _118_pToken
- var _120_pSrc *XSrcList // sqlite3.c:25779:17
- _ = _120_pSrc
- var _120_k int32 // sqlite3.c:25780:13
- _ = _120_k
- var _120_pItem *TSrcList_item // sqlite3.c:25781:29
- _ = _120_pItem
+// Render a string given by "fmt" into the StrAccum object.
+func _sqlite3VXPrintf(tls *crt.TLS, _pAccum *XStrAccum, _fmt *int8, _ap []interface{}) {
+ var _c, _precision, _length, _idx, _width, _nOut, _exp, _e2, _nsd, _49_x, _54_nn, _54_ix, _96_i, _96_nPad, _110_i, _110_j, _110_k, _110_n, _110_isnull, _110_needQuote, _120_k int32
+ var _29_v int64
+ var _prefix, _57_x, _110_ch, _110_q int8
+ var _13_wx, _20_px uint32
+ var _longvalue, _47_n uint64
+ var _bufpt, _zOut, _zExtra, _51_cset, _57_pre, _110_escarg *int8
+ var _realvalue, _rounder, _64_scale float64
+ var _flag_leftjustify, _flag_prefix, _flag_alternateform, _flag_altform2, _flag_zeropad, _flag_long, _done, _cThousand, _xtype, _bArgList, _flag_dp, _flag_rtz, _51_base uint8
+ var _pArgList *XPrintfArguments
+ var _infop *Xet_info
+ var _buf [70]int8
+ var _118_pToken *XToken
+ var _120_pSrc *XSrcList
+ var _120_pItem *TSrcList_item
_xtype = u8(17)
_zExtra = nil
_pArgList = nil
_bufpt = nil
- if (int32(_pAccum.X7) & i32(2)) == i32(0) {
- goto _0
+ if (int32(_pAccum.X7) & i32(2)) != i32(0) {
+ _pArgList = (*XPrintfArguments)(crt.VAPointer(&_ap))
+ _bArgList = uint8(i32(1))
+ goto _1
}
-
- _pArgList = (*XPrintfArguments)(crt.VAPointer(&_ap))
- _bArgList = uint8(i32(1))
- goto _1
-
-_0:
_bArgList = uint8(i32(0))
_1:
_2:
if store1(&_c, int32(*_fmt)) == i32(0) {
goto _5
}
-
if _c == i32(37) {
goto _6
}
-
_bufpt = _fmt
_7:
*(*uintptr)(unsafe.Pointer(&_fmt)) += uintptr(1)
if ((*_fmt) != 0) && (int32(*_fmt) != i32(37)) {
goto _7
}
-
_sqlite3StrAccumAppend(tls, _pAccum, _bufpt, int32((uintptr(unsafe.Pointer(_fmt))-uintptr(unsafe.Pointer(_bufpt)))/1))
- if int32(*_fmt) != i32(0) {
- goto _9
+ if int32(*_fmt) == i32(0) {
+ goto _5
}
-
- goto _5
-
-_9:
_6:
- if store1(&_c, int32(*preInc0(&_fmt, 1))) != i32(0) {
- goto _10
+ if store1(&_c, int32(*preInc0(&_fmt, 1))) == i32(0) {
+ _sqlite3StrAccumAppend(tls, _pAccum, str(214), i32(1))
+ goto _5
}
-
- _sqlite3StrAccumAppend(tls, _pAccum, str(36), i32(1))
- goto _5
-
-_10:
_flag_leftjustify = store2(&_flag_prefix, store2(&_cThousand, store2(&_flag_alternateform, store2(&_flag_altform2, store2(&_flag_zeropad, uint8(i32(0)))))))
_done = uint8(i32(0))
_11:
@@ -1067,162 +966,120 @@ _11:
_13:
_flag_leftjustify = uint8(i32(1))
goto _21
-
_14:
_flag_prefix = uint8(i32(43))
goto _21
-
_15:
_flag_prefix = uint8(i32(32))
goto _21
-
_16:
_flag_alternateform = uint8(i32(1))
goto _21
-
_17:
_flag_altform2 = uint8(i32(1))
goto _21
-
_18:
_flag_zeropad = uint8(i32(1))
goto _21
-
_19:
_cThousand = uint8(i32(44))
goto _21
-
_20:
_done = uint8(i32(1))
goto _21
-
_21:
if (_done == 0) && (store1(&_c, int32(*preInc0(&_fmt, 1))) != i32(0)) {
goto _11
}
-
if _c != i32(42) {
goto _23
}
-
- if _bArgList == 0 {
- goto _24
+ if _bArgList != 0 {
+ _width = int32(_getIntArg(tls, _pArgList))
+ goto _25
}
-
- _width = int32(_getIntArg(tls, _pArgList))
- goto _25
-
-_24:
_width = crt.VAInt32(&_ap)
_25:
- if _width >= i32(0) {
- goto _26
+ if _width < i32(0) {
+ _flag_leftjustify = uint8(i32(1))
+ _width = func() int32 {
+ if _width >= i32(-2147483647) {
+ return (-_width)
+ }
+ return i32(0)
+ }()
}
-
- _flag_leftjustify = uint8(i32(1))
- _width = func() int32 {
- if _width >= i32(-2147483647) {
- return (-_width)
- }
- return i32(0)
- }()
-_26:
_c = int32(*preInc0(&_fmt, 1))
goto _29
-
_23:
_13_wx = uint32(i32(0))
_30:
- if _c < i32(48) || _c > i32(57) {
- goto _31
+ if (_c >= i32(48)) && (_c <= i32(57)) {
+ _13_wx = ((_13_wx * uint32(i32(10))) + uint32(_c)) - uint32(i32(48))
+ _c = int32(*preInc0(&_fmt, 1))
+ goto _30
}
-
- _13_wx = ((_13_wx * uint32(i32(10))) + uint32(_c)) - uint32(i32(48))
- _c = int32(*preInc0(&_fmt, 1))
- goto _30
-
-_31:
_width = int32(_13_wx & uint32(i32(2147483647)))
_29:
func() {
if _width < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25327), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25327), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(216)))
crt.X__builtin_abort(tls)
}
}()
if _c != i32(46) {
goto _35
}
-
_c = int32(*preInc0(&_fmt, 1))
if _c != i32(42) {
goto _36
}
-
- if _bArgList == 0 {
- goto _37
+ if _bArgList != 0 {
+ _precision = int32(_getIntArg(tls, _pArgList))
+ goto _38
}
-
- _precision = int32(_getIntArg(tls, _pArgList))
- goto _38
-
-_37:
_precision = crt.VAInt32(&_ap)
_38:
_c = int32(*preInc0(&_fmt, 1))
- if _precision >= i32(0) {
- goto _39
+ if _precision < i32(0) {
+ _precision = func() int32 {
+ if _precision >= i32(-2147483647) {
+ return (-_precision)
+ }
+ return i32(-1)
+ }()
}
-
- _precision = func() int32 {
- if _precision >= i32(-2147483647) {
- return (-_precision)
- }
- return i32(-1)
- }()
-_39:
goto _42
-
_36:
_20_px = uint32(i32(0))
_43:
- if _c < i32(48) || _c > i32(57) {
- goto _44
+ if (_c >= i32(48)) && (_c <= i32(57)) {
+ _20_px = ((_20_px * uint32(i32(10))) + uint32(_c)) - uint32(i32(48))
+ _c = int32(*preInc0(&_fmt, 1))
+ goto _43
}
-
- _20_px = ((_20_px * uint32(i32(10))) + uint32(_c)) - uint32(i32(48))
- _c = int32(*preInc0(&_fmt, 1))
- goto _43
-
-_44:
_precision = int32(_20_px & uint32(i32(2147483647)))
_42:
goto _46
-
_35:
_precision = i32(-1)
_46:
func() {
if _precision < i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25359), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25359), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(225)))
crt.X__builtin_abort(tls)
}
}()
if _c != i32(108) {
goto _49
}
-
_flag_long = uint8(i32(1))
_c = int32(*preInc0(&_fmt, 1))
- if _c != i32(108) {
- goto _50
+ if _c == i32(108) {
+ _flag_long = uint8(i32(2))
+ _c = int32(*preInc0(&_fmt, 1))
}
-
- _flag_long = uint8(i32(2))
- _c = int32(*preInc0(&_fmt, 1))
-_50:
goto _51
-
_49:
_flag_long = uint8(i32(0))
_51:
@@ -1233,19 +1090,13 @@ _52:
if _idx >= i32(23) {
goto _55
}
-
- if _c != int32((*Xet_info)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_fmtinfo))+6*uintptr(_idx))).X0) {
- goto _56
+ if _c == int32((*Xet_info)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_fmtinfo))+6*uintptr(_idx))).X0) {
+ _infop = (*Xet_info)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_fmtinfo)) + 6*uintptr(_idx)))
+ _xtype = _infop.X3
+ goto _55
}
-
- _infop = (*Xet_info)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_fmtinfo)) + 6*uintptr(_idx)))
- _xtype = _infop.X3
- goto _55
-
-_56:
_idx += 1
goto _52
-
_55:
switch int32(_xtype) {
case i32(0):
@@ -1295,31 +1146,20 @@ _61:
if (int32(_infop.X2) & i32(1)) == 0 {
goto _76
}
-
- if _bArgList == 0 {
- goto _77
+ if _bArgList != 0 {
+ _29_v = _getIntArg(tls, _pArgList)
+ goto _78
}
-
- _29_v = _getIntArg(tls, _pArgList)
- goto _78
-
-_77:
if _flag_long == 0 {
goto _79
}
-
- if int32(_flag_long) != i32(2) {
- goto _80
+ if int32(_flag_long) == i32(2) {
+ _29_v = crt.VAInt64(&_ap)
+ goto _81
}
-
- _29_v = crt.VAInt64(&_ap)
- goto _81
-
-_80:
_29_v = int64(crt.VAInt32(&_ap))
_81:
goto _82
-
_79:
_29_v = int64(crt.VAInt32(&_ap))
_82:
@@ -1327,102 +1167,67 @@ _78:
if _29_v >= int64(i32(0)) {
goto _83
}
-
- if _29_v != i64(-9223372036854775808) {
- goto _84
+ if _29_v == i64(-9223372036854775808) {
+ _longvalue = u64(9223372036854775808)
+ goto _85
}
-
- _longvalue = u64(9223372036854775808)
- goto _85
-
-_84:
_longvalue = uint64(-_29_v)
_85:
_prefix = int8(i32(45))
goto _86
-
_83:
_longvalue = uint64(_29_v)
_prefix = int8(_flag_prefix)
_86:
goto _87
-
_76:
- if _bArgList == 0 {
- goto _88
+ if _bArgList != 0 {
+ _longvalue = uint64(_getIntArg(tls, _pArgList))
+ goto _89
}
-
- _longvalue = uint64(_getIntArg(tls, _pArgList))
- goto _89
-
-_88:
if _flag_long == 0 {
goto _90
}
-
- if int32(_flag_long) != i32(2) {
- goto _91
+ if int32(_flag_long) == i32(2) {
+ _longvalue = crt.VAUint64(&_ap)
+ goto _92
}
-
- _longvalue = crt.VAUint64(&_ap)
- goto _92
-
-_91:
_longvalue = uint64(crt.VAUint32(&_ap))
_92:
goto _93
-
_90:
_longvalue = uint64(crt.VAUint32(&_ap))
_93:
_89:
_prefix = int8(i32(0))
_87:
- if _longvalue != uint64(i32(0)) {
- goto _94
+ if _longvalue == uint64(i32(0)) {
+ _flag_alternateform = uint8(i32(0))
}
-
- _flag_alternateform = uint8(i32(0))
-_94:
- if _flag_zeropad == 0 || _precision >= (_width-bool2int(int32(_prefix) != i32(0))) {
- goto _96
+ if (_flag_zeropad != 0) && (_precision < (_width - bool2int(int32(_prefix) != i32(0)))) {
+ _precision = _width - bool2int(int32(_prefix) != i32(0))
}
-
- _precision = _width - bool2int(int32(_prefix) != i32(0))
-_96:
- if _precision >= i32(37) {
- goto _97
+ if _precision < i32(37) {
+ _nOut = i32(70)
+ _zOut = (*int8)(unsafe.Pointer(&_buf))
+ goto _98
}
-
- _nOut = i32(70)
- _zOut = (*int8)(unsafe.Pointer(&_buf))
- goto _98
-
-_97:
_47_n = (uint64(_precision) + uint64(i32(10))) + uint64(_precision/i32(3))
_zOut = store0(&_zExtra, (*int8)(_sqlite3Malloc(tls, _47_n)))
- if _zOut != nil {
- goto _99
+ if _zOut == nil {
+ _setStrAccumError(tls, _pAccum, uint8(i32(1)))
+ return
}
-
- _setStrAccumError(tls, _pAccum, uint8(i32(1)))
- return
-
-_99:
_nOut = int32(_47_n)
_98:
_bufpt = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zOut)) + 1*uintptr(_nOut-i32(1))))
if int32(_xtype) != i32(15) {
goto _100
}
-
_49_x = int32(_longvalue % uint64(i32(10)))
- if _49_x < i32(4) && ((_longvalue/uint64(i32(10)))%uint64(i32(10))) != uint64(i32(1)) {
- goto _102
+ if (_49_x >= i32(4)) || (((_longvalue / uint64(i32(10))) % uint64(i32(10))) == uint64(i32(1))) {
+ _49_x = i32(0)
}
-
- _49_x = i32(0)
-_102:
*preInc0(&_bufpt, -1) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VXPrintfØ00zOrdØ001)) + 1*uintptr((_49_x*i32(2))+i32(1))))
*preInc0(&_bufpt, -1) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VXPrintfØ00zOrdØ001)) + 1*uintptr(_49_x*i32(2))))
_100:
@@ -1434,22 +1239,16 @@ _103:
if _longvalue > uint64(i32(0)) {
goto _103
}
-
_length = int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zOut))+1*uintptr(_nOut-i32(1)))))) - uintptr(unsafe.Pointer(_bufpt))) / 1)
_104:
- if _precision <= _length {
- goto _105
+ if _precision > _length {
+ *preInc0(&_bufpt, -1) = int8(i32(48))
+ _length += 1
+ goto _104
}
-
- *preInc0(&_bufpt, -1) = int8(i32(48))
- _length += 1
- goto _104
-
-_105:
if _cThousand == 0 {
goto _106
}
-
_54_nn = (_length - i32(1)) / i32(3)
_54_ix = ((_length - i32(1)) % i32(3)) + i32(1)
{
@@ -1462,272 +1261,198 @@ _107:
if _54_nn <= i32(0) {
goto _110
}
-
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(_idx))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(_idx+_54_nn)))
_54_ix -= 1
- if _54_ix != i32(0) {
- goto _111
+ if _54_ix == i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(preInc1(&_idx, 1)))) = int8(_cThousand)
+ _54_nn -= 1
+ _54_ix = i32(3)
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(preInc1(&_idx, 1)))) = int8(_cThousand)
- _54_nn -= 1
- _54_ix = i32(3)
-_111:
_idx += 1
goto _107
-
_110:
_106:
- if _prefix == 0 {
- goto _112
+ if _prefix != 0 {
+ *preInc0(&_bufpt, -1) = _prefix
}
-
- *preInc0(&_bufpt, -1) = _prefix
-_112:
if _flag_alternateform == 0 || (_infop.X5) == 0 {
goto _114
}
-
_57_pre = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPrefix)) + 1*uintptr(_infop.X5)))
_115:
if int32(store3(&_57_x, *_57_pre)) == i32(0) {
goto _118
}
-
*preInc0(&_bufpt, -1) = _57_x
*(*uintptr)(unsafe.Pointer(&_57_pre)) += uintptr(1)
goto _115
-
_118:
_114:
_length = int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zOut))+1*uintptr(_nOut-i32(1)))))) - uintptr(unsafe.Pointer(_bufpt))) / 1)
goto _119
-
_62:
_63:
_64:
- if _bArgList == 0 {
- goto _120
+ if _bArgList != 0 {
+ _realvalue = _getDoubleArg(tls, _pArgList)
+ goto _121
}
-
- _realvalue = _getDoubleArg(tls, _pArgList)
- goto _121
-
-_120:
_realvalue = crt.VAOther(&_ap).(float64)
_121:
- if _precision >= i32(0) {
- goto _122
+ if _precision < i32(0) {
+ _precision = i32(6)
}
-
- _precision = i32(6)
-_122:
- if _realvalue >= float64(0) {
- goto _123
+ if _realvalue < float64(0) {
+ _realvalue = -_realvalue
+ _prefix = int8(i32(45))
+ goto _124
}
-
- _realvalue = -_realvalue
- _prefix = int8(i32(45))
- goto _124
-
-_123:
_prefix = int8(_flag_prefix)
_124:
- if int32(_xtype) != i32(3) || _precision <= i32(0) {
- goto _126
+ if (int32(_xtype) == i32(3)) && (_precision > i32(0)) {
+ _precision -= 1
}
-
- _precision -= 1
-_126:
*func() *float64 { _idx = _precision & i32(4095); return &_rounder }() = 0.5
_127:
if _idx <= i32(0) {
goto _130
}
-
{
p := func() *float64 { _idx -= 1; return &_rounder }()
*p = (*p) * (0.1)
sink4 = *p
}
goto _127
-
_130:
- if int32(_xtype) != i32(1) {
- goto _131
- }
-
- {
- p := &_realvalue
- *p = (*p) + _rounder
- sink4 = *p
+ if int32(_xtype) == i32(1) {
+ {
+ p := &_realvalue
+ *p = (*p) + _rounder
+ sink4 = *p
+ }
}
-_131:
_exp = i32(0)
- if _sqlite3IsNaN(tls, _realvalue) == 0 {
- goto _132
+ if _sqlite3IsNaN(tls, _realvalue) != 0 {
+ _bufpt = str(241)
+ _length = i32(3)
+ goto _119
}
-
- _bufpt = str(164)
- _length = i32(3)
- goto _119
-
-_132:
if _realvalue <= float64(0) {
goto _133
}
-
_64_scale = float64(1)
_134:
- if _realvalue < (float64(1e+100)*_64_scale) || _exp > i32(350) {
- goto _135
- }
-
- {
- p := &_64_scale
- *p = (*p) * float64(1e+100)
- sink4 = *p
- }
- {
- p := &_exp
- *p = (*p) + i32(100)
- sink1 = *p
+ if (_realvalue >= (float64(1e+100) * _64_scale)) && (_exp <= i32(350)) {
+ {
+ p := &_64_scale
+ *p = (*p) * float64(1e+100)
+ sink4 = *p
+ }
+ {
+ p := &_exp
+ *p = (*p) + i32(100)
+ sink1 = *p
+ }
+ goto _134
}
- goto _134
-
-_135:
_137:
- if _realvalue < (float64(1e+10)*_64_scale) || _exp > i32(350) {
- goto _138
- }
-
- {
- p := &_64_scale
- *p = (*p) * float64(1e+10)
- sink4 = *p
- }
- {
- p := &_exp
- *p = (*p) + i32(10)
- sink1 = *p
+ if (_realvalue >= (float64(1e+10) * _64_scale)) && (_exp <= i32(350)) {
+ {
+ p := &_64_scale
+ *p = (*p) * float64(1e+10)
+ sink4 = *p
+ }
+ {
+ p := &_exp
+ *p = (*p) + i32(10)
+ sink1 = *p
+ }
+ goto _137
}
- goto _137
-
-_138:
_140:
- if _realvalue < (float64(10)*_64_scale) || _exp > i32(350) {
- goto _141
- }
-
- {
- p := &_64_scale
- *p = (*p) * float64(10)
- sink4 = *p
+ if (_realvalue >= (float64(10) * _64_scale)) && (_exp <= i32(350)) {
+ {
+ p := &_64_scale
+ *p = (*p) * float64(10)
+ sink4 = *p
+ }
+ _exp += 1
+ goto _140
}
- _exp += 1
- goto _140
-
-_141:
{
p := &_realvalue
*p = (*p) / _64_scale
sink4 = *p
}
_143:
- if _realvalue >= float64(1e-08) {
- goto _144
- }
-
- {
- p := &_realvalue
- *p = (*p) * float64(1e+08)
- sink4 = *p
- }
- {
- p := &_exp
- *p = (*p) - i32(8)
- sink1 = *p
+ if _realvalue < float64(1e-08) {
+ {
+ p := &_realvalue
+ *p = (*p) * float64(1e+08)
+ sink4 = *p
+ }
+ {
+ p := &_exp
+ *p = (*p) - i32(8)
+ sink1 = *p
+ }
+ goto _143
}
- goto _143
-
-_144:
_145:
- if _realvalue >= float64(1) {
- goto _146
- }
-
- {
- p := &_realvalue
- *p = (*p) * float64(10)
- sink4 = *p
+ if _realvalue < float64(1) {
+ {
+ p := &_realvalue
+ *p = (*p) * float64(10)
+ sink4 = *p
+ }
+ _exp -= 1
+ goto _145
}
- _exp -= 1
- goto _145
-
-_146:
- if _exp <= i32(350) {
- goto _147
+ if _exp > i32(350) {
+ _bufpt = (*int8)(unsafe.Pointer(&_buf))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_buf)) + 1*uintptr(i32(0)))) = _prefix
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(&_buf))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(bool2int(int32(_prefix) != i32(0)))))))))), (unsafe.Pointer)(str(245)), uint32(i32(4)))
+ _length = i32(3) + bool2int(int32(_prefix) != i32(0))
+ goto _119
}
-
- _bufpt = (*int8)(unsafe.Pointer(&_buf))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_buf)) + 1*uintptr(i32(0)))) = _prefix
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(&_buf))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(bool2int(int32(_prefix) != i32(0)))))))))), (unsafe.Pointer)(str(168)), uint32(i32(4)))
- _length = i32(3) + bool2int(int32(_prefix) != i32(0))
- goto _119
-
-_147:
_133:
_bufpt = (*int8)(unsafe.Pointer(&_buf))
if int32(_xtype) == i32(1) {
goto _148
}
-
{
p := &_realvalue
*p = (*p) + _rounder
sink4 = *p
}
- if _realvalue < float64(10) {
- goto _149
- }
-
- {
- p := &_realvalue
- *p = (*p) * (0.1)
- sink4 = *p
+ if _realvalue >= float64(10) {
+ {
+ p := &_realvalue
+ *p = (*p) * (0.1)
+ sink4 = *p
+ }
+ _exp += 1
}
- _exp += 1
-_149:
_148:
if int32(_xtype) != i32(3) {
goto _150
}
-
_flag_rtz = uint8(bool2int(_flag_alternateform == 0))
- if _exp >= i32(-4) && _exp <= _precision {
- goto _152
+ if (_exp < i32(-4)) || (_exp > _precision) {
+ _xtype = uint8(i32(2))
+ goto _153
}
-
- _xtype = uint8(i32(2))
- goto _153
-
-_152:
_precision = _precision - _exp
_xtype = uint8(i32(1))
_153:
goto _154
-
_150:
_flag_rtz = _flag_altform2
_154:
- if int32(_xtype) != i32(2) {
- goto _155
+ if int32(_xtype) == i32(2) {
+ _e2 = i32(0)
+ goto _156
}
-
- _e2 = i32(0)
- goto _156
-
-_155:
_e2 = _exp
_156:
if ((int64(func() int32 {
@@ -1738,21 +1463,16 @@ _156:
}()) + int64(_precision)) + int64(_width)) <= int64(i32(55)) {
goto _159
}
-
_bufpt = store0(&_zExtra, (*int8)(_sqlite3Malloc(tls, uint64(((int64(func() int32 {
if _e2 > i32(0) {
return _e2
}
return i32(0)
}())+int64(_precision))+int64(_width))+int64(i32(15))))))
- if _bufpt != nil {
- goto _162
+ if _bufpt == nil {
+ _setStrAccumError(tls, _pAccum, uint8(i32(1)))
+ return
}
-
- _setStrAccumError(tls, _pAccum, uint8(i32(1)))
- return
-
-_162:
_159:
_zOut = _bufpt
_nsd = i32(16) + (int32(_flag_altform2) * i32(10))
@@ -1762,94 +1482,66 @@ _159:
}
return i32(0)
}() | int32(_flag_alternateform)) | int32(_flag_altform2))
- if _prefix == 0 {
- goto _165
+ if _prefix != 0 {
+ *postInc0(&_bufpt, 1) = _prefix
}
-
- *postInc0(&_bufpt, 1) = _prefix
-_165:
- if _e2 >= i32(0) {
- goto _166
+ if _e2 < i32(0) {
+ *postInc0(&_bufpt, 1) = int8(i32(48))
+ goto _167
}
-
- *postInc0(&_bufpt, 1) = int8(i32(48))
- goto _167
-
-_166:
_168:
if _e2 < i32(0) {
goto _171
}
-
*postInc0(&_bufpt, 1) = _et_getdigit(tls, &_realvalue, &_nsd)
_e2 -= 1
goto _168
-
_171:
_167:
- if _flag_dp == 0 {
- goto _172
+ if _flag_dp != 0 {
+ *postInc0(&_bufpt, 1) = int8(i32(46))
}
-
- *postInc0(&_bufpt, 1) = int8(i32(46))
-_172:
_e2 += 1
_173:
if _e2 >= i32(0) {
goto _176
}
-
func() {
if _precision <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(249)))
crt.X__builtin_abort(tls)
}
}()
*postInc0(&_bufpt, 1) = int8(i32(48))
*func() *int32 { _precision -= 1; return &_e2 }() += 1
goto _173
-
_176:
_179:
- if postInc1(&_precision, int32(-1)) <= i32(0) {
- goto _180
+ if postInc1(&_precision, int32(-1)) > i32(0) {
+ *postInc0(&_bufpt, 1) = _et_getdigit(tls, &_realvalue, &_nsd)
+ goto _179
}
-
- *postInc0(&_bufpt, 1) = _et_getdigit(tls, &_realvalue, &_nsd)
- goto _179
-
-_180:
if _flag_rtz == 0 || _flag_dp == 0 {
goto _182
}
-
_183:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(i32(-1))))) != i32(48) {
- goto _184
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(i32(-1))))) == i32(48) {
+ *preInc0(&_bufpt, -1) = int8(i32(0))
+ goto _183
}
-
- *preInc0(&_bufpt, -1) = int8(i32(0))
- goto _183
-
-_184:
func() {
if uintptr(unsafe.Pointer(_bufpt)) <= uintptr(unsafe.Pointer(_zOut)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25626), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(184)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25626), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(261)))
crt.X__builtin_abort(tls)
}
}()
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(i32(-1))))) != i32(46) {
goto _187
}
-
- if _flag_altform2 == 0 {
- goto _188
+ if _flag_altform2 != 0 {
+ *postInc0(&_bufpt, 1) = int8(i32(48))
+ goto _189
}
-
- *postInc0(&_bufpt, 1) = int8(i32(48))
- goto _189
-
-_188:
*preInc0(&_bufpt, -1) = int8(i32(0))
_189:
_187:
@@ -1857,30 +1549,22 @@ _182:
if int32(_xtype) != i32(2) {
goto _190
}
-
*postInc0(&_bufpt, 1) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aDigits)) + 1*uintptr(_infop.X4)))
- if _exp >= i32(0) {
- goto _191
+ if _exp < i32(0) {
+ *postInc0(&_bufpt, 1) = int8(i32(45))
+ _exp = -_exp
+ goto _192
}
-
- *postInc0(&_bufpt, 1) = int8(i32(45))
- _exp = -_exp
- goto _192
-
-_191:
*postInc0(&_bufpt, 1) = int8(i32(43))
_192:
- if _exp < i32(100) {
- goto _193
- }
-
- *postInc0(&_bufpt, 1) = int8((_exp / i32(100)) + i32(48))
- {
- p := &_exp
- *p = (*p) % i32(100)
- sink1 = *p
+ if _exp >= i32(100) {
+ *postInc0(&_bufpt, 1) = int8((_exp / i32(100)) + i32(48))
+ {
+ p := &_exp
+ *p = (*p) % i32(100)
+ sink1 = *p
+ }
}
-_193:
*postInc0(&_bufpt, 1) = int8((_exp / i32(10)) + i32(48))
*postInc0(&_bufpt, 1) = int8((_exp % i32(10)) + i32(48))
_190:
@@ -1890,138 +1574,100 @@ _190:
if _flag_zeropad == 0 || _flag_leftjustify != 0 || _length >= _width {
goto _196
}
-
_96_nPad = _width - _length
_96_i = _width
_197:
if _96_i < _96_nPad {
goto _200
}
-
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(_96_i))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(_96_i-_96_nPad)))
_96_i -= 1
goto _197
-
_200:
_96_i = bool2int(int32(_prefix) != i32(0))
_201:
- if postInc1(&_96_nPad, int32(-1)) == 0 {
- goto _202
+ if postInc1(&_96_nPad, int32(-1)) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_96_i, int32(1))))) = int8(i32(48))
+ goto _201
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_96_i, int32(1))))) = int8(i32(48))
- goto _201
-
-_202:
_length = _width
_196:
goto _119
-
_65:
- if _bArgList != 0 {
- goto _203
+ if _bArgList == 0 {
+ *(*int32)(crt.VAPointer(&_ap)) = int32(_pAccum.X3)
}
-
- *(*int32)(crt.VAPointer(&_ap)) = int32(_pAccum.X3)
-_203:
_length = store1(&_width, i32(0))
goto _119
-
_66:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_buf)) + 1*uintptr(i32(0)))) = int8(i32(37))
_bufpt = (*int8)(unsafe.Pointer(&_buf))
_length = i32(1)
goto _119
-
_67:
- if _bArgList == 0 {
- goto _204
+ if _bArgList != 0 {
+ _bufpt = _getTextArg(tls, _pArgList)
+ _c = func() int32 {
+ if _bufpt != nil {
+ return int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(i32(0)))))
+ }
+ return i32(0)
+ }()
+ goto _207
}
-
- _bufpt = _getTextArg(tls, _pArgList)
- _c = func() int32 {
- if _bufpt != nil {
- return int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(i32(0)))))
- }
- return i32(0)
- }()
- goto _207
-
-_204:
_c = crt.VAInt32(&_ap)
_207:
if _precision <= i32(1) {
goto _208
}
-
{
p := &_width
*p = (*p) - (_precision - i32(1))
sink1 = *p
}
- if _width <= i32(1) || _flag_leftjustify != 0 {
- goto _210
+ if (_width > i32(1)) && (_flag_leftjustify == 0) {
+ _sqlite3AppendChar(tls, _pAccum, _width-i32(1), int8(i32(32)))
+ _width = i32(0)
}
-
- _sqlite3AppendChar(tls, _pAccum, _width-i32(1), int8(i32(32)))
- _width = i32(0)
-_210:
_sqlite3AppendChar(tls, _pAccum, _precision-i32(1), int8(_c))
_208:
_length = i32(1)
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_buf)) + 1*uintptr(i32(0)))) = int8(_c)
_bufpt = (*int8)(unsafe.Pointer(&_buf))
goto _119
-
_68:
_69:
- if _bArgList == 0 {
- goto _211
+ if _bArgList != 0 {
+ _bufpt = _getTextArg(tls, _pArgList)
+ _xtype = uint8(i32(5))
+ goto _212
}
-
- _bufpt = _getTextArg(tls, _pArgList)
- _xtype = uint8(i32(5))
- goto _212
-
-_211:
_bufpt = (*int8)(crt.VAPointer(&_ap))
_212:
- if _bufpt != nil {
- goto _213
+ if _bufpt == nil {
+ _bufpt = str(0)
+ goto _214
}
-
- _bufpt = str(196)
- goto _214
-
-_213:
- if int32(_xtype) != i32(6) {
- goto _215
+ if int32(_xtype) == i32(6) {
+ _zExtra = _bufpt
}
-
- _zExtra = _bufpt
-_215:
_214:
if _precision < i32(0) {
goto _216
}
-
_length = i32(0)
_217:
if _length >= _precision || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(_length)))) == 0 {
goto _221
}
-
_length += 1
goto _217
-
_221:
goto _222
-
_216:
_length = _sqlite3Strlen30(tls, _bufpt)
_222:
goto _119
-
_70:
_71:
_72:
@@ -2031,44 +1677,32 @@ _72:
}
return i32(39)
}())
- if _bArgList == 0 {
- goto _225
+ if _bArgList != 0 {
+ _110_escarg = _getTextArg(tls, _pArgList)
+ goto _226
}
-
- _110_escarg = _getTextArg(tls, _pArgList)
- goto _226
-
-_225:
_110_escarg = (*int8)(crt.VAPointer(&_ap))
_226:
_110_isnull = bool2int(_110_escarg == nil)
- if _110_isnull == 0 {
- goto _227
+ if _110_isnull != 0 {
+ _110_escarg = func() *int8 {
+ if int32(_xtype) == i32(10) {
+ return str(155)
+ }
+ return str(272)
+ }()
}
-
- _110_escarg = func() *int8 {
- if int32(_xtype) == i32(10) {
- return str(200)
- }
- return str(208)
- }()
-_227:
_110_k = _precision
_110_i = store1(&_110_n, i32(0))
_230:
if _110_k == i32(0) || int32(store3(&_110_ch, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_110_escarg)) + 1*uintptr(_110_i))))) == i32(0) {
goto _234
}
-
- if int32(_110_ch) != int32(_110_q) {
- goto _235
+ if int32(_110_ch) == int32(_110_q) {
+ _110_n += 1
}
-
- _110_n += 1
-_235:
*func() *int32 { _110_i += 1; return &_110_k }() -= 1
goto _230
-
_234:
_110_needQuote = bool2int((_110_isnull == 0) && (int32(_xtype) == i32(10)))
{
@@ -2079,121 +1713,88 @@ _234:
if _110_n <= i32(70) {
goto _237
}
-
_bufpt = store0(&_zExtra, (*int8)(_sqlite3Malloc(tls, uint64(_110_n))))
- if _bufpt != nil {
- goto _238
+ if _bufpt == nil {
+ _setStrAccumError(tls, _pAccum, uint8(i32(1)))
+ return
}
-
- _setStrAccumError(tls, _pAccum, uint8(i32(1)))
- return
-
-_238:
goto _239
-
_237:
_bufpt = (*int8)(unsafe.Pointer(&_buf))
_239:
_110_j = i32(0)
- if _110_needQuote == 0 {
- goto _240
+ if _110_needQuote != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_110_j, int32(1))))) = _110_q
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_110_j, int32(1))))) = _110_q
-_240:
_110_k = _110_i
_110_i = i32(0)
_241:
if _110_i >= _110_k {
goto _244
}
-
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_110_j, int32(1))))) = store3(&_110_ch, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_110_escarg)) + 1*uintptr(_110_i))))
- if int32(_110_ch) != int32(_110_q) {
- goto _245
+ if int32(_110_ch) == int32(_110_q) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_110_j, int32(1))))) = _110_ch
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_110_j, int32(1))))) = _110_ch
-_245:
_110_i += 1
goto _241
-
_244:
- if _110_needQuote == 0 {
- goto _246
+ if _110_needQuote != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_110_j, int32(1))))) = _110_q
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(postInc1(&_110_j, int32(1))))) = _110_q
-_246:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_bufpt)) + 1*uintptr(_110_j))) = int8(i32(0))
_length = _110_j
goto _119
-
_73:
- if (int32(_pAccum.X7) & i32(1)) != i32(0) {
- goto _247
+ if (int32(_pAccum.X7) & i32(1)) == i32(0) {
+ return
}
- return
-
-_247:
_118_pToken = (*XToken)(crt.VAPointer(&_ap))
func() {
if int32(_bArgList) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(216)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(279)))
crt.X__builtin_abort(tls)
}
}()
- if _118_pToken == nil || (_118_pToken.X1) == 0 {
- goto _251
+ if (_118_pToken != nil) && ((_118_pToken.X1) != 0) {
+ _sqlite3StrAccumAppend(tls, _pAccum, _118_pToken.X0, int32(_118_pToken.X1))
}
-
- _sqlite3StrAccumAppend(tls, _pAccum, _118_pToken.X0, int32(_118_pToken.X1))
-_251:
_length = store1(&_width, i32(0))
goto _119
-
_74:
- if (int32(_pAccum.X7) & i32(1)) != i32(0) {
- goto _252
+ if (int32(_pAccum.X7) & i32(1)) == i32(0) {
+ return
}
- return
-
-_252:
_120_pSrc = (*XSrcList)(crt.VAPointer(&_ap))
_120_k = crt.VAInt32(&_ap)
_120_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_120_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_120_k)))
func() {
if int32(_bArgList) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25786), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(216)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25786), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(279)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _120_k < i32(0) || _120_k >= (_120_pSrc.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25787), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(228)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25787), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(291)))
crt.X__builtin_abort(tls)
}
}()
- if (_120_pItem.X1) == nil {
- goto _258
+ if (_120_pItem.X1) != nil {
+ _sqlite3StrAccumAppendAll(tls, _pAccum, _120_pItem.X1)
+ _sqlite3StrAccumAppend(tls, _pAccum, str(312), i32(1))
}
-
- _sqlite3StrAccumAppendAll(tls, _pAccum, _120_pItem.X1)
- _sqlite3StrAccumAppend(tls, _pAccum, str(252), i32(1))
-_258:
_sqlite3StrAccumAppendAll(tls, _pAccum, _120_pItem.X2)
_length = store1(&_width, i32(0))
goto _119
-
_75:
func() {
if int32(_xtype) != i32(17) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25797), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(256)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25797), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VXPrintfØ00__func__Ø000))), unsafe.Pointer(str(314)))
crt.X__builtin_abort(tls)
}
}()
return
-
_119:
{
p := &_width
@@ -2203,146 +1804,128 @@ _119:
if _width <= i32(0) {
goto _261
}
-
- if _flag_leftjustify != 0 {
- goto _262
+ if _flag_leftjustify == 0 {
+ _sqlite3AppendChar(tls, _pAccum, _width, int8(i32(32)))
}
-
- _sqlite3AppendChar(tls, _pAccum, _width, int8(i32(32)))
-_262:
_sqlite3StrAccumAppend(tls, _pAccum, _bufpt, _length)
- if _flag_leftjustify == 0 {
- goto _263
+ if _flag_leftjustify != 0 {
+ _sqlite3AppendChar(tls, _pAccum, _width, int8(i32(32)))
}
-
- _sqlite3AppendChar(tls, _pAccum, _width, int8(i32(32)))
-_263:
goto _264
-
_261:
_sqlite3StrAccumAppend(tls, _pAccum, _bufpt, _length)
_264:
- if _zExtra == nil {
- goto _265
+ if _zExtra != nil {
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pAccum.X0), (unsafe.Pointer)(_zExtra))
+ _zExtra = nil
}
-
- _sqlite3DbFree(tls, (*Xsqlite3)(_pAccum.X0), (unsafe.Pointer)(_zExtra))
- _zExtra = nil
-_265:
*(*uintptr)(unsafe.Pointer(&_fmt)) += uintptr(1)
goto _2
-
_5:
+ _ = _nsd
+ _ = _buf
}
-func _sqlite3StrAccumAppend(tls *crt.TLS, _p *XStrAccum, _z *int8, _N int32) { // sqlite3.c:25911:1
+// Append N bytes of text from z to the StrAccum object. Increase the
+// size of the memory allocation for StrAccum if necessary.
+func _sqlite3StrAccumAppend(tls *crt.TLS, _p *XStrAccum, _z *int8, _N int32) {
func() {
if _z == nil && _N != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(331)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X2) == nil && (_p.X3) != uint32(i32(0)) && (_p.X6) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25913), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(292)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25913), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(344)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _N < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(386)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X6) != i32(0) && (_p.X4) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25915), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25915), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(391)))
crt.X__builtin_abort(tls)
}
}()
- if ((_p.X3) + uint32(_N)) < (_p.X4) {
- goto _12
+ if ((_p.X3) + uint32(_N)) >= (_p.X4) {
+ _enlargeAndAppend(tls, _p, _z, _N)
+ goto _13
}
-
- _enlargeAndAppend(tls, _p, _z, _N)
- goto _13
-
-_12:
- if _N == 0 {
- goto _14
+ if _N != 0 {
+ func() {
+ if (_p.X2) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(422)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */)))
+ *p = (*p) + uint32(_N)
+ sink5 = *p
+ }
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2))+1*uintptr((_p.X3)-uint32(_N))))), (unsafe.Pointer)(_z), uint32(_N))
}
+_13:
+}
- func() {
- if (_p.X2) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumAppendØ00__func__Ø000))), unsafe.Pointer(str(376)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */)))
- *p = (*p) + uint32(_N)
- sink5 = *p
- }
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2))+1*uintptr((_p.X3)-uint32(_N))))), (unsafe.Pointer)(_z), uint32(_N))
-_14:
-_13:
-}
-
-var _sqlite3StrAccumAppendØ00__func__Ø000 [22]int8 // -
+var _sqlite3StrAccumAppendØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StrAccumAppendØ00__func__Ø000[0], str(388), 22)
+ crt.Xstrncpy(nil, &_sqlite3StrAccumAppendØ00__func__Ø000[0], str(431), 22)
}
-func _enlargeAndAppend(tls *crt.TLS, _p *XStrAccum, _z *int8, _N int32) { // sqlite3.c:25898:1
+// The StrAccum "p" is not large enough to accept N new bytes of z[].
+// So enlarge if first, then do the append.
+//
+// This is a helper routine to sqlite3StrAccumAppend() that does special-case
+// work (enlarging the buffer) using tail recursion, so that the
+// sqlite3StrAccumAppend() routine can use fast calling semantics.
+func _enlargeAndAppend(tls *crt.TLS, _p *XStrAccum, _z *int8, _N int32) {
_N = _sqlite3StrAccumEnlarge(tls, _p, _N)
- if _N <= i32(0) {
- goto _0
- }
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2))+1*uintptr(_p.X3)))), (unsafe.Pointer)(_z), uint32(_N))
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */)))
- *p = (*p) + uint32(_N)
- sink5 = *p
+ if _N > i32(0) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2))+1*uintptr(_p.X3)))), (unsafe.Pointer)(_z), uint32(_N))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */)))
+ *p = (*p) + uint32(_N)
+ sink5 = *p
+ }
}
-_0:
func() {
if (((_p.X2) == nil) || ((_p.X2) == (_p.X1))) != ((int32(_p.X7) & i32(4)) == i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25904), unsafe.Pointer((*int8)(unsafe.Pointer(&_enlargeAndAppendØ00__func__Ø000))), unsafe.Pointer(str(412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25904), unsafe.Pointer((*int8)(unsafe.Pointer(&_enlargeAndAppendØ00__func__Ø000))), unsafe.Pointer(str(453)))
crt.X__builtin_abort(tls)
}
}()
}
-func _sqlite3StrAccumEnlarge(tls *crt.TLS, _p *XStrAccum, _N int32) (r0 int32) { // sqlite3.c:25829:1
- var _zNew *int8 // sqlite3.c:25830:8
- _ = _zNew
- var _3_zOld *int8 // sqlite3.c:25842:10
- _ = _3_zOld
- var _3_szNew int64 // sqlite3.c:25843:9
- _ = _3_szNew
+// Enlarge the memory allocation on a StrAccum object so that it is
+// able to accept at least N more bytes of text.
+//
+// Return the number of bytes of text that StrAccum is able to accept
+// after the attempted enlargement. The value returned might be zero.
+func _sqlite3StrAccumEnlarge(tls *crt.TLS, _p *XStrAccum, _N int32) (r0 int32) {
+ var _3_szNew int64
+ var _zNew, _3_zOld *int8
func() {
if (int64(_p.X3) + int64(_N)) < int64(_p.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25831), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumEnlargeØ00__func__Ø000))), unsafe.Pointer(str(464)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25831), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumEnlargeØ00__func__Ø000))), unsafe.Pointer(str(505)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X6) == 0 {
- goto _2
+ if (_p.X6) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_2:
- if (_p.X5) != uint32(i32(0)) {
- goto _3
+ if (_p.X5) == uint32(i32(0)) {
+ _N = int32(((_p.X4) - (_p.X3)) - uint32(i32(1)))
+ _setStrAccumError(tls, _p, uint8(i32(2)))
+ return _N
}
-
- _N = int32(((_p.X4) - (_p.X3)) - uint32(i32(1)))
- _setStrAccumError(tls, _p, uint8(i32(2)))
- return _N
-
-_3:
_3_zOld = func() *int8 {
if (int32(_p.X7) & i32(4)) != i32(0) {
return (_p.X2)
@@ -2352,7 +1935,7 @@ _3:
_3_szNew = int64(_p.X3)
func() {
if (((_p.X2) == nil) || ((_p.X2) == (_p.X1))) != ((int32(_p.X7) & i32(4)) == i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25844), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumEnlargeØ00__func__Ø000))), unsafe.Pointer(str(412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25844), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumEnlargeØ00__func__Ø000))), unsafe.Pointer(str(453)))
crt.X__builtin_abort(tls)
}
}()
@@ -2361,52 +1944,37 @@ _3:
*p = (*p) + int64(_N+i32(1))
sink6 = *p
}
- if (_3_szNew + int64(_p.X3)) > int64(_p.X5) {
- goto _10
- }
-
- {
- p := &_3_szNew
- *p = (*p) + int64(_p.X3)
- sink6 = *p
+ if (_3_szNew + int64(_p.X3)) <= int64(_p.X5) {
+ {
+ p := &_3_szNew
+ *p = (*p) + int64(_p.X3)
+ sink6 = *p
+ }
}
-_10:
- if _3_szNew <= int64(_p.X5) {
- goto _11
+ if _3_szNew > int64(_p.X5) {
+ _sqlite3StrAccumReset(tls, _p)
+ _setStrAccumError(tls, _p, uint8(i32(2)))
+ return i32(0)
}
-
- _sqlite3StrAccumReset(tls, _p)
- _setStrAccumError(tls, _p, uint8(i32(2)))
- return i32(0)
-
-_11:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = uint32(int32(_3_szNew))
- if (*Xsqlite3)(_p.X0) == nil {
- goto _13
+ if (*Xsqlite3)(_p.X0) != nil {
+ _zNew = (*int8)(_sqlite3DbRealloc(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_3_zOld), uint64(_p.X4)))
+ goto _14
}
-
- _zNew = (*int8)(_sqlite3DbRealloc(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_3_zOld), uint64(_p.X4)))
- goto _14
-
-_13:
_zNew = (*int8)(Xsqlite3_realloc64(tls, (unsafe.Pointer)(_3_zOld), uint64(_p.X4)))
_14:
if _zNew == nil {
goto _15
}
-
func() {
if (_p.X2) == nil && (_p.X3) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumEnlargeØ00__func__Ø000))), unsafe.Pointer(str(496)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumEnlargeØ00__func__Ø000))), unsafe.Pointer(str(534)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X7)&i32(4)) != i32(0) || (_p.X3) <= uint32(i32(0)) {
- goto _20
+ if ((int32(_p.X7) & i32(4)) == i32(0)) && ((_p.X3) > uint32(i32(0))) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zNew), (unsafe.Pointer)(_p.X2), _p.X3)
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zNew), (unsafe.Pointer)(_p.X2), _p.X3)
-_20:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = _zNew
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = uint32(_sqlite3DbMallocSize(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_zNew)))
{
@@ -2415,7 +1983,6 @@ _20:
sink2 = *p
}
goto _21
-
_15:
_sqlite3StrAccumReset(tls, _p)
_setStrAccumError(tls, _p, uint8(i32(1)))
@@ -2425,16 +1992,17 @@ _21:
return _N
}
-var _sqlite3StrAccumEnlargeØ00__func__Ø000 [23]int8 // -
+var _sqlite3StrAccumEnlargeØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StrAccumEnlargeØ00__func__Ø000[0], str(524), 23)
+ crt.Xstrncpy(nil, &_sqlite3StrAccumEnlargeØ00__func__Ø000[0], str(561), 23)
}
-func _setStrAccumError(tls *crt.TLS, _p *XStrAccum, _eError uint8) { // sqlite3.c:25195:1
+// Set the StrAccum object to an error mode.
+func _setStrAccumError(tls *crt.TLS, _p *XStrAccum, _eError uint8) {
func() {
if int32(_eError) != i32(1) && int32(_eError) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25196), unsafe.Pointer((*int8)(unsafe.Pointer(&_setStrAccumErrorØ00__func__Ø000))), unsafe.Pointer(str(548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25196), unsafe.Pointer((*int8)(unsafe.Pointer(&_setStrAccumErrorØ00__func__Ø000))), unsafe.Pointer(str(584)))
crt.X__builtin_abort(tls)
}
}()
@@ -2442,60 +2010,57 @@ func _setStrAccumError(tls *crt.TLS, _p *XStrAccum, _eError uint8) { // sqlite3.
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = uint32(i32(0))
}
-var _setStrAccumErrorØ00__func__Ø000 [17]int8 // -
+var _setStrAccumErrorØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_setStrAccumErrorØ00__func__Ø000[0], str(600), 17)
+ crt.Xstrncpy(nil, &_setStrAccumErrorØ00__func__Ø000[0], str(634), 17)
}
-func _sqlite3StrAccumReset(tls *crt.TLS, _p *XStrAccum) { // sqlite3.c:25963:1
+// Reset an StrAccum string. Reclaim all malloced memory.
+func _sqlite3StrAccumReset(tls *crt.TLS, _p *XStrAccum) {
func() {
if (((_p.X2) == nil) || ((_p.X2) == (_p.X1))) != ((int32(_p.X7) & i32(4)) == i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25964), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumResetØ00__func__Ø000))), unsafe.Pointer(str(412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25964), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumResetØ00__func__Ø000))), unsafe.Pointer(str(453)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X7) & i32(4)) == i32(0) {
- goto _3
- }
-
- _sqlite3DbFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_p.X2))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(25 /* X7 */)))
- *p = uint8(int32(*p) & i32(-5))
- sink2 = *p
+ if (int32(_p.X7) & i32(4)) != i32(0) {
+ _sqlite3DbFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_p.X2))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(25 /* X7 */)))
+ *p = uint8(int32(*p) & i32(-5))
+ sink2 = *p
+ }
}
-_3:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = nil
}
-var _sqlite3StrAccumResetØ00__func__Ø000 [21]int8 // -
+var _sqlite3StrAccumResetØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StrAccumResetØ00__func__Ø000[0], str(620), 21)
+ crt.Xstrncpy(nil, &_sqlite3StrAccumResetØ00__func__Ø000[0], str(651), 21)
}
-func _sqlite3DbFree(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) { // sqlite3.c:24720:1
+func _sqlite3DbFree(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) {
func() {
if _db != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24721), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeØ00__func__Ø000))), unsafe.Pointer(str(644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24721), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeØ00__func__Ø000))), unsafe.Pointer(str(672)))
crt.X__builtin_abort(tls)
}
}()
- if _p == nil {
- goto _3
+ if _p != nil {
+ _sqlite3DbFreeNN(tls, _db, _p)
}
-
- _sqlite3DbFreeNN(tls, _db, _p)
-_3:
}
-func Xsqlite3_mutex_held(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:22901:12
+// The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
+// intended for use inside assert() statements.
+func Xsqlite3_mutex_held(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) {
func() {
if _p != nil && (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X7)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_heldØ00__func__Ø000))), unsafe.Pointer(str(684)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_heldØ00__func__Ø000))), unsafe.Pointer(str(711)))
crt.X__builtin_abort(tls)
}
}()
@@ -2505,76 +2070,71 @@ func Xsqlite3_mutex_held(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) { // sqlit
}{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72))).X7)})))(tls, _p) != 0)
}
-var _sqlite3_mutex_heldØ00__func__Ø000 [19]int8 // -
+var _sqlite3_mutex_heldØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_mutex_heldØ00__func__Ø000[0], str(732), 19)
+ crt.Xstrncpy(nil, &_sqlite3_mutex_heldØ00__func__Ø000[0], str(756), 19)
}
-var _sqlite3DbFreeØ00__func__Ø000 [14]int8 // -
+var _sqlite3DbFreeØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DbFreeØ00__func__Ø000[0], str(752), 14)
+ crt.Xstrncpy(nil, &_sqlite3DbFreeØ00__func__Ø000[0], str(775), 14)
}
-func _sqlite3DbFreeNN(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) { // sqlite3.c:24694:1
- var _3_pBuf *Xsqlite3_file // sqlite3.c:24703:21
- _ = _3_pBuf
+// Free memory that might be associated with a particular database
+// connection. Calling sqlite3DbFree(D,X) for X==0 is a harmless no-op.
+// The sqlite3DbFreeNN(D,X) version requires that X be non-NULL.
+func _sqlite3DbFreeNN(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) {
+ var _3_pBuf *Xsqlite3_file
func() {
if _db != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeNNØ00__func__Ø000))), unsafe.Pointer(str(644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeNNØ00__func__Ø000))), unsafe.Pointer(str(672)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24696), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeNNØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24696), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeNNØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
if _db == nil {
goto _5
}
-
- if (_db.X79) == nil {
- goto _6
+ if (_db.X79) != nil {
+ _measureAllocationSize(tls, _db, _p)
+ return
}
-
- _measureAllocationSize(tls, _db, _p)
- return
-
-_6:
- if _isLookaside(tls, _db, _p) == 0 {
- goto _7
+ if _isLookaside(tls, _db, _p) != 0 {
+ _3_pBuf = (*Xsqlite3_file)(_p)
+ crt.Xmemset(tls, _p, i32(170), uint32((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1))
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pBuf)) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X6)
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(28 /* X6 */))))) = _3_pBuf
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(8 /* X3 */))) -= 1
+ return
}
-
- _3_pBuf = (*Xsqlite3_file)(_p)
- crt.Xmemset(tls, _p, i32(170), uint32((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1))
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pBuf)) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X6)
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(28 /* X6 */))))) = _3_pBuf
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(8 /* X3 */))) -= 1
- return
-
-_7:
_5:
i32(0)
i32(0)
func() {
if _db == nil && i32(1) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24716), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeNNØ00__func__Ø000))), unsafe.Pointer(str(776)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24716), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbFreeNNØ00__func__Ø000))), unsafe.Pointer(str(794)))
crt.X__builtin_abort(tls)
}
}()
Xsqlite3_free(tls, _p)
}
-var _sqlite3DbFreeNNØ00__func__Ø000 [16]int8 // -
+var _sqlite3DbFreeNNØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DbFreeNNØ00__func__Ø000[0], str(832), 16)
+ crt.Xstrncpy(nil, &_sqlite3DbFreeNNØ00__func__Ø000[0], str(847), 16)
}
-func _measureAllocationSize(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) { // sqlite3.c:24685:1
+// Add the size of memory allocation "p" to the count in
+// *db->pnBytesFreed.
+func _measureAllocationSize(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) {
{
p := _db.X79
*p = (*p) + _sqlite3DbMallocSize(tls, _db, _p)
@@ -2582,26 +2142,21 @@ func _measureAllocationSize(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) { //
}
}
-func _sqlite3DbMallocSize(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) (r0 int32) { // sqlite3.c:24639:1
+func _sqlite3DbMallocSize(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) (r0 int32) {
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24640), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocSizeØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24640), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocSizeØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
if _db != nil && _isLookaside(tls, _db, _p) != 0 {
goto _3
}
-
- if _db != nil {
- goto _4
+ if _db == nil {
+ i32(0)
+ i32(0)
+ goto _5
}
-
- i32(0)
- i32(0)
- goto _5
-
-_4:
i32(0)
i32(0)
_5:
@@ -2611,7 +2166,7 @@ _5:
_3:
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocSizeØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocSizeØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -2619,79 +2174,72 @@ _3:
return int32((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252))).X1)
}
-var _sqlite3DbMallocSizeØ00__func__Ø000 [20]int8 // -
+var _sqlite3DbMallocSizeØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DbMallocSizeØ00__func__Ø000[0], str(880), 20)
+ crt.Xstrncpy(nil, &_sqlite3DbMallocSizeØ00__func__Ø000[0], str(893), 20)
}
-func _isLookaside(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) (r0 int32) { // sqlite3.c:24624:1
+func _isLookaside(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer) (r0 int32) {
/* X58 */ /* X58 */
return bool2int((uint32(uintptr(_p)) >= uint32(uintptr((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252))).X7))) && (uint32(uintptr(_p)) < uint32(uintptr((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252))).X8))))
}
-func Xsqlite3_free(tls *crt.TLS, _p unsafe.Pointer) { // sqlite3.c:24666:12
- if _p != nil {
- goto _0
+// Free memory previously obtained from sqlite3Malloc().
+func Xsqlite3_free(tls *crt.TLS, _p unsafe.Pointer) {
+ if _p == nil {
+ return
}
- return
-
-_0:
i32(0)
i32(0)
- if (_sqlite3Config.X0) == 0 {
- goto _1
+ if (_sqlite3Config.X0) != 0 {
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ _sqlite3StatusDown(tls, i32(0), _sqlite3MallocSize(tls, _p))
+ _sqlite3StatusDown(tls, i32(9), i32(1))
+ ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X1)(tls, _p)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ goto _2
}
-
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
- _sqlite3StatusDown(tls, i32(0), _sqlite3MallocSize(tls, _p))
- _sqlite3StatusDown(tls, i32(9), i32(1))
- ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X1)(tls, _p)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
- goto _2
-
-_1:
((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X1)(tls, _p)
_2:
}
-func Xsqlite3_mutex_enter(tls *crt.TLS, _p *Xsqlite3_mutex) { // sqlite3.c:22863:12
- if _p == nil {
- goto _0
- }
-
- func() {
- if (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
+// Obtain the mutex p. If some other thread already has the mutex, block
+// until it can be obtained.
+func Xsqlite3_mutex_enter(tls *crt.TLS, _p *Xsqlite3_mutex) {
+ if _p != nil {
+ func() {
+ if (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X4)}))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22865), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_enterØ00__func__Ø000))), unsafe.Pointer(str(913)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X4)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22865), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_enterØ00__func__Ø000))), unsafe.Pointer(str(900)))
- crt.X__builtin_abort(tls)
- }
- }()
- (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X4)})))(tls, _p)
-_0:
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X4)})))(tls, _p)
+ }
}
-var _sqlite3_mutex_enterØ00__func__Ø000 [20]int8 // -
+var _sqlite3_mutex_enterØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_mutex_enterØ00__func__Ø000[0], str(940), 20)
+ crt.Xstrncpy(nil, &_sqlite3_mutex_enterØ00__func__Ø000[0], str(951), 20)
}
-var _mem0 TMem0Global // sqlite3.c:24279:3
+var _mem0 TMem0Global
-func _sqlite3StatusDown(tls *crt.TLS, _op int32, _N int32) { // sqlite3.c:18572:1
+func _sqlite3StatusDown(tls *crt.TLS, _op int32, _N int32) {
func() {
if _N < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18574), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18574), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(386)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18575), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(960)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18575), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(971)))
crt.X__builtin_abort(tls)
}
}()
@@ -2702,13 +2250,13 @@ func _sqlite3StatusDown(tls *crt.TLS, _op int32, _N int32) { // sqlite3.c:18572:
}
return _sqlite3MallocMutex(tls)
}()) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(1004)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18578), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(1080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18578), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusDownØ00__func__Ø000))), unsafe.Pointer(str(1085)))
crt.X__builtin_abort(tls)
}
}()
@@ -2719,249 +2267,223 @@ func _sqlite3StatusDown(tls *crt.TLS, _op int32, _N int32) { // sqlite3.c:18572:
}
}
-var _sqlite3StatusDownØ00__func__Ø000 [18]int8 // -
+var _sqlite3StatusDownØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StatusDownØ00__func__Ø000[0], str(1120), 18)
+ crt.Xstrncpy(nil, &_sqlite3StatusDownØ00__func__Ø000[0], str(1125), 18)
}
-var _statMutex [10]int8 // sqlite3.c:18509:19
+var _statMutex [10]int8
func init() {
_statMutex = [10]int8{0, 1, 1, 0, 0, 0, 0, 1, 0, 0}
}
-func _sqlite3Pcache1Mutex(tls *crt.TLS) (r0 *Xsqlite3_mutex) { // sqlite3.c:46200:1
+// Return the global mutex used by this PCACHE implementation. The
+// sqlite3_status() routine needs access to this mutex.
+func _sqlite3Pcache1Mutex(tls *crt.TLS) (r0 *Xsqlite3_mutex) {
return (*Xsqlite3_mutex)(_pcache1_g.X9)
}
-var _pcache1_g TPCacheGlobal // sqlite3.c:45214:3
+var _pcache1_g TPCacheGlobal
-func _sqlite3MallocMutex(tls *crt.TLS) (r0 *Xsqlite3_mutex) { // sqlite3.c:24286:1
+// Return the memory allocator mutex. sqlite3_status() needs it.
+func _sqlite3MallocMutex(tls *crt.TLS) (r0 *Xsqlite3_mutex) {
return (*Xsqlite3_mutex)(_mem0.X0)
}
-var _sqlite3Stat Tsqlite3StatType // sqlite3.c:18503:3
+var _sqlite3Stat Tsqlite3StatType
-func _sqlite3MallocSize(tls *crt.TLS, _p unsafe.Pointer) (r0 int32) { // sqlite3.c:24635:1
+// Return the size of a memory allocation previously obtained from
+// sqlite3Malloc() or sqlite3_malloc().
+func _sqlite3MallocSize(tls *crt.TLS, _p unsafe.Pointer) (r0 int32) {
i32(0)
/* X10 */
return ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40))).X3)(tls, _p)
}
-func Xsqlite3_mutex_leave(tls *crt.TLS, _p *Xsqlite3_mutex) { // sqlite3.c:22889:12
- if _p == nil {
- goto _0
- }
-
- func() {
- if (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
+// The sqlite3_mutex_leave() routine exits a mutex that was previously
+// entered by the same thread. The behavior is undefined if the mutex
+// is not currently entered. If a NULL pointer is passed as an argument
+// this function is a no-op.
+func Xsqlite3_mutex_leave(tls *crt.TLS, _p *Xsqlite3_mutex) {
+ if _p != nil {
+ func() {
+ if (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X6)}))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_leaveØ00__func__Ø000))), unsafe.Pointer(str(1143)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X6)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_leaveØ00__func__Ø000))), unsafe.Pointer(str(1140)))
- crt.X__builtin_abort(tls)
- }
- }()
- (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X6)})))(tls, _p)
-_0:
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X6)})))(tls, _p)
+ }
}
-var _sqlite3_mutex_leaveØ00__func__Ø000 [20]int8 // -
+var _sqlite3_mutex_leaveØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_mutex_leaveØ00__func__Ø000[0], str(1180), 20)
+ crt.Xstrncpy(nil, &_sqlite3_mutex_leaveØ00__func__Ø000[0], str(1181), 20)
}
-func _sqlite3DbRealloc(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24903:1
+// Resize the block of memory pointed to by p to n bytes. If the
+// resize fails, set the mallocFailed flag in the connection object.
+func _sqlite3DbRealloc(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) {
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24904), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbReallocØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24904), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbReallocØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil {
- goto _2
+ if _p == nil {
+ return _sqlite3DbMallocRawNN(tls, _db, _n)
}
- return _sqlite3DbMallocRawNN(tls, _db, _n)
-
-_2:
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbReallocØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbReallocØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
- if _isLookaside(tls, _db, _p) == 0 || _n > uint64((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1) {
- goto _6
+ if _isLookaside(tls, _db, _p) != 0 && (_n <= uint64((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1)) {
+ return _p
}
- return _p
-
-_6:
return _dbReallocFinish(tls, _db, _p, _n)
}
-var _sqlite3DbReallocØ00__func__Ø000 [17]int8 // -
+var _sqlite3DbReallocØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DbReallocØ00__func__Ø000[0], str(1208), 17)
+ crt.Xstrncpy(nil, &_sqlite3DbReallocØ00__func__Ø000[0], str(1207), 17)
}
-func _sqlite3DbMallocRawNN(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24861:1
- var _pBuf *Xsqlite3_file // sqlite3.c:24863:17
- _ = _pBuf
+func _sqlite3DbMallocRawNN(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) {
+ var _pBuf *Xsqlite3_file
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24865), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24865), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_db.X79) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24866), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(1228)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24866), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(1224)))
crt.X__builtin_abort(tls)
}
}()
if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X0) != uint32(i32(0)) {
goto _6
}
-
func() {
if int32(_db.X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24868), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(1248)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24868), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbMallocRawNNØ00__func__Ø000))), unsafe.Pointer(str(1244)))
crt.X__builtin_abort(tls)
}
}()
- if _n <= uint64((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1) {
- goto _9
+ if _n > uint64((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */)))))+uintptr(16 /* X5 */))))) + 4*uintptr(i32(1)))) += 1
+ goto _10
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */)))))+uintptr(16 /* X5 */))))) + 4*uintptr(i32(1)))) += 1
- goto _10
-
-_9:
- if store8(&_pBuf, (*Xsqlite3_file)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X6)) != nil {
- goto _11
+ if store8(&_pBuf, (*Xsqlite3_file)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X6)) == nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */)))))+uintptr(16 /* X5 */))))) + 4*uintptr(i32(2)))) += 1
+ goto _12
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */)))))+uintptr(16 /* X5 */))))) + 4*uintptr(i32(2)))) += 1
- goto _12
-
-_11:
*(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(28 /* X6 */))))) = (*Xsqlite3_file)(_pBuf.X0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(8 /* X3 */))) += 1
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */)))))+uintptr(16 /* X5 */))))) + 4*uintptr(i32(0)))) += 1
- if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X3) <= ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X4) {
- goto _13
+ if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X3) > ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X4) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(12 /* X4 */))) = (*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X3
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(12 /* X4 */))) = (*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X3
-_13:
return (unsafe.Pointer)(_pBuf)
_12:
_10:
goto _14
-
_6:
- if (_db.X17) == 0 {
- goto _15
+ if (_db.X17) != 0 {
+ return nil
}
- return nil
-
-_15:
_14:
- r0 = _dbMallocRawFinish(tls, _db, _n)
- return
+ return _dbMallocRawFinish(tls, _db, _n)
}
-var _sqlite3DbMallocRawNNØ00__func__Ø000 [21]int8 // -
+var _sqlite3DbMallocRawNNØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DbMallocRawNNØ00__func__Ø000[0], str(1268), 21)
+ crt.Xstrncpy(nil, &_sqlite3DbMallocRawNNØ00__func__Ø000[0], str(1264), 21)
}
-func _dbMallocRawFinish(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24822:1
- var _p unsafe.Pointer // sqlite3.c:24823:8
- _ = _p
+// Finish the work of sqlite3DbMallocRawNN for the unusual and
+// slower case when the allocation cannot be fulfilled using lookaside.
+func _dbMallocRawFinish(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24824), unsafe.Pointer((*int8)(unsafe.Pointer(&_dbMallocRawFinishØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24824), unsafe.Pointer((*int8)(unsafe.Pointer(&_dbMallocRawFinishØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
_p = _sqlite3Malloc(tls, _n)
- if _p != nil {
- goto _2
+ if _p == nil {
+ _sqlite3OomFault(tls, _db)
}
-
- _sqlite3OomFault(tls, _db)
-_2:
return _p
}
-var _dbMallocRawFinishØ00__func__Ø000 [18]int8 // -
+var _dbMallocRawFinishØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_dbMallocRawFinishØ00__func__Ø000[0], str(1292), 18)
+ crt.Xstrncpy(nil, &_dbMallocRawFinishØ00__func__Ø000[0], str(1285), 18)
}
-func _sqlite3Malloc(tls *crt.TLS, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24483:1
- var _p unsafe.Pointer // sqlite3.c:24484:8
- _ = _p
- if _n != uint64(i32(0)) && _n < uint64(i32(2147483392)) {
- goto _1
+// Allocate memory. This routine is like sqlite3_malloc() except that it
+// assumes the memory subsystem has already been initialized.
+func _sqlite3Malloc(tls *crt.TLS, _n uint64) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
+ if (_n == uint64(i32(0))) || (_n >= uint64(i32(2147483392))) {
+ _p = nil
+ goto _2
}
-
- _p = nil
- goto _2
-
-_1:
- if (_sqlite3Config.X0) == 0 {
- goto _3
+ if (_sqlite3Config.X0) != 0 {
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ _mallocWithAlarm(tls, int32(_n), &_p)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ goto _4
}
-
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
- _mallocWithAlarm(tls, int32(_n), &_p)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
- goto _4
-
-_3:
_p = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X0)(tls, int32(_n))
_4:
_2:
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(_p)))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MallocØ00__func__Ø000))), unsafe.Pointer(str(1312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MallocØ00__func__Ø000))), unsafe.Pointer(str(1303)))
crt.X__builtin_abort(tls)
}
}()
return _p
}
-func _mallocWithAlarm(tls *crt.TLS, _n int32, _pp *unsafe.Pointer) { // sqlite3.c:24434:1
- var _p unsafe.Pointer // sqlite3.c:24435:8
- _ = _p
- var _nFull int32 // sqlite3.c:24436:7
- _ = _nFull
- var _1_nUsed int64 // sqlite3.c:24456:19
- _ = _1_nUsed
+// Do a memory allocation with statistics and alarms. Assume the
+// lock is already held.
+func _mallocWithAlarm(tls *crt.TLS, _n int32, _pp *unsafe.Pointer) {
+ var _nFull int32
+ var _1_nUsed int64
+ var _p unsafe.Pointer
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_mem0.X0)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24437), unsafe.Pointer((*int8)(unsafe.Pointer(&_mallocWithAlarmØ00__func__Ø000))), unsafe.Pointer(str(1336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24437), unsafe.Pointer((*int8)(unsafe.Pointer(&_mallocWithAlarmØ00__func__Ø000))), unsafe.Pointer(str(1327)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _n <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24438), unsafe.Pointer((*int8)(unsafe.Pointer(&_mallocWithAlarmØ00__func__Ø000))), unsafe.Pointer(str(1368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24438), unsafe.Pointer((*int8)(unsafe.Pointer(&_mallocWithAlarmØ00__func__Ø000))), unsafe.Pointer(str(1358)))
crt.X__builtin_abort(tls)
}
}()
@@ -2970,57 +2492,50 @@ func _mallocWithAlarm(tls *crt.TLS, _n int32, _pp *unsafe.Pointer) { // sqlite3.
if (_mem0.X1) <= int64(i32(0)) {
goto _4
}
-
_1_nUsed = _sqlite3StatusValue(tls, i32(0))
- if _1_nUsed < ((_mem0.X1) - int64(_nFull)) {
- goto _5
+ if _1_nUsed >= ((_mem0.X1) - int64(_nFull)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(24 /* X5 */))) = i32(1)
+ _sqlite3MallocAlarm(tls, _nFull)
+ goto _6
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(24 /* X5 */))) = i32(1)
- _sqlite3MallocAlarm(tls, _nFull)
- goto _6
-
-_5:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(24 /* X5 */))) = i32(0)
_6:
_4:
_p = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X0)(tls, _nFull)
- if _p == nil {
- goto _7
+ if _p != nil {
+ _nFull = _sqlite3MallocSize(tls, _p)
+ _sqlite3StatusUp(tls, i32(0), _nFull)
+ _sqlite3StatusUp(tls, i32(9), i32(1))
}
-
- _nFull = _sqlite3MallocSize(tls, _p)
- _sqlite3StatusUp(tls, i32(0), _nFull)
- _sqlite3StatusUp(tls, i32(9), i32(1))
-_7:
*_pp = _p
}
-var _mallocWithAlarmØ00__func__Ø000 [16]int8 // -
+var _mallocWithAlarmØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_mallocWithAlarmØ00__func__Ø000[0], str(1372), 16)
+ crt.Xstrncpy(nil, &_mallocWithAlarmØ00__func__Ø000[0], str(1362), 16)
}
-func _sqlite3StatusHighwater(tls *crt.TLS, _op int32, _X int32) { // sqlite3.c:18586:1
- var _newValue uint32 // sqlite3.c:18587:24
- _ = _newValue
+// Adjust the highwater mark if necessary.
+// The caller must hold the appropriate mutex.
+func _sqlite3StatusHighwater(tls *crt.TLS, _op int32, _X int32) {
+ var _newValue uint32
func() {
if _X < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18589), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(1388)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18589), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(1378)))
crt.X__builtin_abort(tls)
}
}()
_newValue = uint32(_X)
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(1080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(1085)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18592), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(960)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18592), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(971)))
crt.X__builtin_abort(tls)
}
}()
@@ -3031,40 +2546,39 @@ func _sqlite3StatusHighwater(tls *crt.TLS, _op int32, _X int32) { // sqlite3.c:1
}
return _sqlite3MallocMutex(tls)
}()) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18593), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18593), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(1004)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _op != i32(5) && _op != i32(7) && _op != i32(8) && _op != i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18595), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(1396)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18595), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusHighwaterØ00__func__Ø000))), unsafe.Pointer(str(1383)))
crt.X__builtin_abort(tls)
}
}()
- if _newValue <= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op)))) {
- goto _17
+ if _newValue > (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op)))) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op))) = _newValue
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op))) = _newValue
-_17:
}
-var _sqlite3StatusHighwaterØ00__func__Ø000 [23]int8 // -
+var _sqlite3StatusHighwaterØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StatusHighwaterØ00__func__Ø000[0], str(1532), 23)
+ crt.Xstrncpy(nil, &_sqlite3StatusHighwaterØ00__func__Ø000[0], str(1517), 23)
}
-func _sqlite3StatusValue(tls *crt.TLS, _op int32) (r0 int64) { // sqlite3.c:18541:1
+// Return the current value of a status parameter. The caller must
+// be holding the appropriate mutex.
+func _sqlite3StatusValue(tls *crt.TLS, _op int32) (r0 int64) {
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18543), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusValueØ00__func__Ø000))), unsafe.Pointer(str(1080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18543), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusValueØ00__func__Ø000))), unsafe.Pointer(str(1085)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18544), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusValueØ00__func__Ø000))), unsafe.Pointer(str(960)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18544), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusValueØ00__func__Ø000))), unsafe.Pointer(str(971)))
crt.X__builtin_abort(tls)
}
}()
@@ -3075,7 +2589,7 @@ func _sqlite3StatusValue(tls *crt.TLS, _op int32) (r0 int64) { // sqlite3.c:1854
}
return _sqlite3MallocMutex(tls)
}()) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18545), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusValueØ00__func__Ø000))), unsafe.Pointer(str(996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18545), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusValueØ00__func__Ø000))), unsafe.Pointer(str(1004)))
crt.X__builtin_abort(tls)
}
}()
@@ -3083,38 +2597,48 @@ func _sqlite3StatusValue(tls *crt.TLS, _op int32) (r0 int64) { // sqlite3.c:1854
return int64(*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(0))))) + 4*uintptr(_op))))
}
-var _sqlite3StatusValueØ00__func__Ø000 [19]int8 // -
+var _sqlite3StatusValueØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StatusValueØ00__func__Ø000[0], str(1556), 19)
+ crt.Xstrncpy(nil, &_sqlite3StatusValueØ00__func__Ø000[0], str(1540), 19)
}
-func _sqlite3MallocAlarm(tls *crt.TLS, _nByte int32) { // sqlite3.c:24423:1
- if (_mem0.X1) > int64(i32(0)) {
- goto _0
+// Trigger the alarm
+func _sqlite3MallocAlarm(tls *crt.TLS, _nByte int32) {
+ if (_mem0.X1) <= int64(i32(0)) {
+ return
}
- return
-
-_0:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
Xsqlite3_release_memory(tls, _nByte)
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
}
-func Xsqlite3_release_memory(tls *crt.TLS, _n int32) (r0 int32) { // sqlite3.c:24237:12
+// Attempt to release up to n bytes of non-essential memory currently
+// held by SQLite. An example of non-essential memory is memory used to
+// cache database pages that are not currently in use.
+func Xsqlite3_release_memory(tls *crt.TLS, _n int32) (r0 int32) {
return i32(0)
}
-func _sqlite3StatusUp(tls *crt.TLS, _op int32, _N int32) { // sqlite3.c:18561:1
+// Add N to the value of a status record. The caller must hold the
+// appropriate mutex. (Locking is checked by assert()).
+//
+// The StatusUp() routine can accept positive or negative values for N.
+// The value of N is added to the current status value and the high-water
+// mark is adjusted if necessary.
+//
+// The StatusDown() routine lowers the current value by N. The highwater
+// mark is unchanged. N must be non-negative for StatusDown().
+func _sqlite3StatusUp(tls *crt.TLS, _op int32, _N int32) {
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18563), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusUpØ00__func__Ø000))), unsafe.Pointer(str(1080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18563), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusUpØ00__func__Ø000))), unsafe.Pointer(str(1085)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _op < i32(0) || _op >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18564), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusUpØ00__func__Ø000))), unsafe.Pointer(str(960)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18564), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusUpØ00__func__Ø000))), unsafe.Pointer(str(971)))
crt.X__builtin_abort(tls)
}
}()
@@ -3125,7 +2649,7 @@ func _sqlite3StatusUp(tls *crt.TLS, _op int32, _N int32) { // sqlite3.c:18561:1
}
return _sqlite3MallocMutex(tls)
}()) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18565), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusUpØ00__func__Ø000))), unsafe.Pointer(str(996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18565), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StatusUpØ00__func__Ø000))), unsafe.Pointer(str(1004)))
crt.X__builtin_abort(tls)
}
}()
@@ -3134,259 +2658,226 @@ func _sqlite3StatusUp(tls *crt.TLS, _op int32, _N int32) { // sqlite3.c:18561:1
*p = (*p) + uint32(_N)
sink5 = *p
}
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(0 /* X0 */))))) + 4*uintptr(_op)))) <= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op)))) {
- goto _10
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(0 /* X0 */))))) + 4*uintptr(_op)))) > (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op)))) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(0 /* X0 */))))) + 4*uintptr(_op)))
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(40 /* X1 */))))) + 4*uintptr(_op))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Stat))+uintptr(0 /* X0 */))))) + 4*uintptr(_op)))
-_10:
}
-var _sqlite3StatusUpØ00__func__Ø000 [16]int8 // -
+var _sqlite3StatusUpØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StatusUpØ00__func__Ø000[0], str(1576), 16)
+ crt.Xstrncpy(nil, &_sqlite3StatusUpØ00__func__Ø000[0], str(1559), 16)
}
-var _sqlite3MallocØ00__func__Ø000 [14]int8 // -
+var _sqlite3MallocØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3MallocØ00__func__Ø000[0], str(1592), 14)
+ crt.Xstrncpy(nil, &_sqlite3MallocØ00__func__Ø000[0], str(1575), 14)
}
-func _sqlite3OomFault(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:24998:1
+// Call this routine to record the fact that an OOM (out-of-memory) error
+// has happened. This routine will set db->mallocFailed, and also
+// temporarily disable the lookaside memory allocator and interrupt
+// any running VDBEs.
+func _sqlite3OomFault(tls *crt.TLS, _db *Xsqlite3) {
if int32(_db.X17) != i32(0) || int32(_db.X18) != i32(0) {
goto _1
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(65 /* X17 */))) = uint8(i32(1))
- if (_db.X37) <= i32(0) {
- goto _2
+ if (_db.X37) > i32(0) {
+ *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(1)
}
-
- *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(1)
-_2:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) += 1
_1:
}
-func _dbReallocFinish(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24910:1
- var _pNew unsafe.Pointer // sqlite3.c:24911:8
- _ = _pNew
+func _dbReallocFinish(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) {
+ var _pNew unsafe.Pointer
_pNew = nil
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24912), unsafe.Pointer((*int8)(unsafe.Pointer(&_dbReallocFinishØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24912), unsafe.Pointer((*int8)(unsafe.Pointer(&_dbReallocFinishØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24913), unsafe.Pointer((*int8)(unsafe.Pointer(&_dbReallocFinishØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24913), unsafe.Pointer((*int8)(unsafe.Pointer(&_dbReallocFinishØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
if int32(_db.X17) != i32(0) {
goto _4
}
-
if _isLookaside(tls, _db, _p) == 0 {
goto _5
}
-
_pNew = _sqlite3DbMallocRawNN(tls, _db, _n)
- if _pNew == nil {
- goto _6
+ if _pNew != nil {
+ crt.Xmemcpy(tls, _pNew, _p, uint32((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1))
+ _sqlite3DbFree(tls, _db, _p)
}
-
- crt.Xmemcpy(tls, _pNew, _p, uint32((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X1))
- _sqlite3DbFree(tls, _db, _p)
-_6:
goto _7
-
_5:
i32(0)
i32(0)
_pNew = Xsqlite3_realloc64(tls, _p, _n)
- if _pNew != nil {
- goto _8
+ if _pNew == nil {
+ _sqlite3OomFault(tls, _db)
}
-
- _sqlite3OomFault(tls, _db)
-_8:
_7:
_4:
- r0 = _pNew
- return
+ return _pNew
}
-var _dbReallocFinishØ00__func__Ø000 [16]int8 // -
+var _dbReallocFinishØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_dbReallocFinishØ00__func__Ø000[0], str(1608), 16)
+ crt.Xstrncpy(nil, &_dbReallocFinishØ00__func__Ø000[0], str(1589), 16)
}
-func Xsqlite3_realloc64(tls *crt.TLS, _pOld unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24787:12
- if Xsqlite3_initialize(tls) == 0 {
- goto _0
+func Xsqlite3_realloc64(tls *crt.TLS, _pOld unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) {
+ if Xsqlite3_initialize(tls) != 0 {
+ return nil
}
- return nil
-
-_0:
return _sqlite3Realloc(tls, _pOld, _n)
}
-func Xsqlite3_initialize(tls *crt.TLS) (r0 int32) { // sqlite3.c:140603:12
- var _pMaster *Xsqlite3_mutex // sqlite3.c:140604:30
- _ = _pMaster
- var _rc int32 // sqlite3.c:140605:7
- _ = _rc
- var _12_x uint64 // sqlite3.c:140738:9
- _ = _12_x
- var _12_y float64 // sqlite3.c:140739:12
- _ = _12_y
+// Initialize SQLite.
+//
+// This routine must be called to initialize the memory allocation,
+// VFS, and mutex subsystems prior to doing any serious work with
+// SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT
+// this routine will be called automatically by key routines such as
+// sqlite3_open().
+//
+// This routine is a no-op except on its very first call for the process,
+// or for the first call after a call to sqlite3_shutdown.
+//
+// The first thread to call this routine runs the initialization to
+// completion. If subsequent threads call this routine before the first
+// thread has finished the initialization process, then the subsequent
+// threads must block until the first thread finishes with the initialization.
+//
+// The first thread might call this routine recursively. Recursive
+// calls to this routine should not block, of course. Otherwise the
+// initialization process would never complete.
+//
+// Let X be the first thread to enter this routine. Let Y be some other
+// thread. Then while the initial invocation of this routine by X is
+// incomplete, it is required that:
+//
+// * Calls to this routine from Y must block until the outer-most
+// call by X completes.
+//
+// * Recursive calls to this routine from thread X return immediately
+// without blocking.
+func Xsqlite3_initialize(tls *crt.TLS) (r0 int32) {
+ var _rc int32
+ var _12_x uint64
+ var _12_y float64
+ var _pMaster *Xsqlite3_mutex
i32(0)
- if (_sqlite3Config.X28) == 0 {
- goto _0
+ if (_sqlite3Config.X28) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_0:
_rc = _sqlite3MutexInit(tls)
- if _rc == 0 {
- goto _1
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_1:
_pMaster = _sqlite3MutexAlloc(tls, i32(2))
Xsqlite3_mutex_enter(tls, _pMaster)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(236 /* X30 */))) = i32(1)
- if (_sqlite3Config.X31) != 0 {
- goto _2
+ if (_sqlite3Config.X31) == 0 {
+ _rc = _sqlite3MallocInit(tls)
}
-
- _rc = _sqlite3MallocInit(tls)
-_2:
if _rc != i32(0) {
goto _3
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(240 /* X31 */))) = i32(1)
if (*Xsqlite3_mutex)(_sqlite3Config.X34) != nil {
goto _4
}
-
*(**Xsqlite3_mutex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(252 /* X34 */))))) = _sqlite3MutexAlloc(tls, i32(1))
- if (_sqlite3Config.X1) == 0 || (*Xsqlite3_mutex)(_sqlite3Config.X34) != nil {
- goto _6
+ if (_sqlite3Config.X1) != 0 && ((*Xsqlite3_mutex)(_sqlite3Config.X34) == nil) {
+ _rc = _sqlite3NomemError(tls, i32(140658))
}
-
- _rc = _sqlite3NomemError(tls, i32(140658))
-_6:
_4:
_3:
- if _rc != i32(0) {
- goto _7
+ if _rc == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(248 /* X33 */))) += 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(248 /* X33 */))) += 1
-_7:
Xsqlite3_mutex_leave(tls, _pMaster)
- if _rc == i32(0) {
- goto _8
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_8:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_sqlite3Config.X34))
if (_sqlite3Config.X28) != i32(0) || (_sqlite3Config.X29) != i32(0) {
goto _10
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(232 /* X29 */))) = i32(1)
crt.Xmemset(tls, (unsafe.Pointer)(&_sqlite3BuiltinFunctions), i32(0), u32(92))
_sqlite3RegisterBuiltinFunctions(tls)
- if (_sqlite3Config.X32) != i32(0) {
- goto _11
+ if (_sqlite3Config.X32) == i32(0) {
+ _rc = _sqlite3PcacheInitialize(tls)
}
-
- _rc = _sqlite3PcacheInitialize(tls)
-_11:
- if _rc != i32(0) {
- goto _12
+ if _rc == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(244 /* X32 */))) = i32(1)
+ _rc = _sqlite3OsInit(tls)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(244 /* X32 */))) = i32(1)
- _rc = _sqlite3OsInit(tls)
-_12:
- if _rc != i32(0) {
- goto _13
+ if _rc == i32(0) {
+ _sqlite3PCacheBufferSetup(tls, _sqlite3Config.X22, _sqlite3Config.X23, _sqlite3Config.X24)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(228 /* X28 */))) = i32(1)
}
-
- _sqlite3PCacheBufferSetup(tls, _sqlite3Config.X22, _sqlite3Config.X23, _sqlite3Config.X24)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(228 /* X28 */))) = i32(1)
-_13:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(232 /* X29 */))) = i32(0)
_10:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_sqlite3Config.X34))
Xsqlite3_mutex_enter(tls, _pMaster)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(248 /* X33 */))) -= 1
- if (_sqlite3Config.X33) > i32(0) {
- goto _14
+ if (_sqlite3Config.X33) <= i32(0) {
+ func() {
+ if (_sqlite3Config.X33) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(140723), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_initializeØ00__func__Ø000))), unsafe.Pointer(str(1605)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ Xsqlite3_mutex_free(tls, (*Xsqlite3_mutex)(_sqlite3Config.X34))
+ *(**Xsqlite3_mutex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(252 /* X34 */))))) = nil
}
-
- func() {
- if (_sqlite3Config.X33) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(140723), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_initializeØ00__func__Ø000))), unsafe.Pointer(str(1624)))
- crt.X__builtin_abort(tls)
- }
- }()
- Xsqlite3_mutex_free(tls, (*Xsqlite3_mutex)(_sqlite3Config.X34))
- *(**Xsqlite3_mutex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(252 /* X34 */))))) = nil
-_14:
Xsqlite3_mutex_leave(tls, _pMaster)
- if _rc != i32(0) {
- goto _17
+ if _rc == i32(0) {
+ _12_x = u64(9223372036854775807)
+ i32(0)
+ i32(0)
+ crt.Xmemcpy(tls, (unsafe.Pointer)(&_12_y), (unsafe.Pointer)(&_12_x), uint32(i32(8)))
+ func() {
+ if _sqlite3IsNaN(tls, _12_y) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(140743), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_initializeØ00__func__Ø000))), unsafe.Pointer(str(1642)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _12_x = u64(9223372036854775807)
- i32(0)
- i32(0)
- crt.Xmemcpy(tls, (unsafe.Pointer)(&_12_y), (unsafe.Pointer)(&_12_x), uint32(i32(8)))
- func() {
- if _sqlite3IsNaN(tls, _12_y) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(140743), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_initializeØ00__func__Ø000))), unsafe.Pointer(str(1664)))
- crt.X__builtin_abort(tls)
- }
- }()
-_17:
return _rc
+
+ _ = _12_x
+ panic(0)
}
-func _sqlite3MutexInit(tls *crt.TLS) (r0 int32) { // sqlite3.c:22774:1
- var _rc int32 // sqlite3.c:22775:7
- _ = _rc
- var _1_pFrom *Xsqlite3_mutex_methods // sqlite3.c:22782:33
- _ = _1_pFrom
- var _1_pTo *Xsqlite3_mutex_methods // sqlite3.c:22783:27
- _ = _1_pTo
+// Initialize the mutex system.
+func _sqlite3MutexInit(tls *crt.TLS) (r0 int32) {
+ var _rc int32
+ var _1_pFrom, _1_pTo *Xsqlite3_mutex_methods
_rc = i32(0)
if (*(*func(*crt.TLS, int32) *Xsqlite3_mutex)(unsafe.Pointer(&struct {
f func(*crt.TLS, int32) unsafe.Pointer
}{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X2)}))) != nil {
goto _0
}
-
_1_pTo = (*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */)))
- if (_sqlite3Config.X1) == 0 {
- goto _1
+ if (_sqlite3Config.X1) != 0 {
+ _1_pFrom = _sqlite3DefaultMutex(tls)
+ goto _2
}
-
- _1_pFrom = _sqlite3DefaultMutex(tls)
- goto _2
-
-_1:
_1_pFrom = _sqlite3NoopMutex(tls)
_2:
*(*func(*crt.TLS) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTo)) + uintptr(0 /* X0 */))) = _1_pFrom.X0
@@ -3416,7 +2907,7 @@ _2:
_0:
func() {
if ((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MutexInitØ00__func__Ø000))), unsafe.Pointer(str(1680)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MutexInitØ00__func__Ø000))), unsafe.Pointer(str(1658)))
crt.X__builtin_abort(tls)
}
}()
@@ -3426,11 +2917,11 @@ _0:
return _rc
}
-func _sqlite3DefaultMutex(tls *crt.TLS) (r0 *Xsqlite3_mutex_methods) { // sqlite3.c:23498:1
+func _sqlite3DefaultMutex(tls *crt.TLS) (r0 *Xsqlite3_mutex_methods) {
return &_sqlite3DefaultMutexØ00sMutexØ001
}
-var _sqlite3DefaultMutexØ00sMutexØ001 Xsqlite3_mutex_methods // sqlite3.c:23499:38
+var _sqlite3DefaultMutexØ00sMutexØ001 Xsqlite3_mutex_methods
func init() {
_sqlite3DefaultMutexØ00sMutexØ001 = Xsqlite3_mutex_methods{X0: _pthreadMutexInit, X1: _pthreadMutexEnd, X2: *(*func(*crt.TLS, int32) unsafe.Pointer)(unsafe.Pointer(&struct {
@@ -3450,19 +2941,64 @@ func init() {
}{_pthreadMutexNotheld}))}
}
-func _pthreadMutexInit(tls *crt.TLS) (r0 int32) { // sqlite3.c:23233:1
- return i32(0)
-}
-
-func _pthreadMutexEnd(tls *crt.TLS) (r0 int32) { // sqlite3.c:23234:1
- return i32(0)
-}
-
-func _pthreadMutexAlloc(tls *crt.TLS, _iType int32) (r0 *Xsqlite3_mutex) { // sqlite3.c:23284:1
- var _p *Xsqlite3_mutex // sqlite3.c:23299:17
- _ = _p
- var _3_recursiveAttr crt.Xpthread_mutexattr_t // sqlite3.c:23310:29
- _ = _3_recursiveAttr
+// Initialize and deinitialize the mutex subsystem.
+func _pthreadMutexInit(tls *crt.TLS) (r0 int32) {
+ return i32(0)
+}
+
+func _pthreadMutexEnd(tls *crt.TLS) (r0 int32) {
+ return i32(0)
+}
+
+// The sqlite3_mutex_alloc() routine allocates a new
+// mutex and returns a pointer to it. If it returns NULL
+// that means that a mutex could not be allocated. SQLite
+// will unwind its stack and return an error. The argument
+// to sqlite3_mutex_alloc() is one of these integer constants:
+//
+//
+// - SQLITE_MUTEX_FAST
+//
- SQLITE_MUTEX_RECURSIVE
+//
- SQLITE_MUTEX_STATIC_MASTER
+//
- SQLITE_MUTEX_STATIC_MEM
+//
- SQLITE_MUTEX_STATIC_OPEN
+//
- SQLITE_MUTEX_STATIC_PRNG
+//
- SQLITE_MUTEX_STATIC_LRU
+//
- SQLITE_MUTEX_STATIC_PMEM
+//
- SQLITE_MUTEX_STATIC_APP1
+//
- SQLITE_MUTEX_STATIC_APP2
+//
- SQLITE_MUTEX_STATIC_APP3
+//
- SQLITE_MUTEX_STATIC_VFS1
+//
- SQLITE_MUTEX_STATIC_VFS2
+//
- SQLITE_MUTEX_STATIC_VFS3
+//
+//
+// The first two constants cause sqlite3_mutex_alloc() to create
+// a new mutex. The new mutex is recursive when SQLITE_MUTEX_RECURSIVE
+// is used but not necessarily so when SQLITE_MUTEX_FAST is used.
+// The mutex implementation does not need to make a distinction
+// between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
+// not want to. But SQLite will only request a recursive mutex in
+// cases where it really needs one. If a faster non-recursive mutex
+// implementation is available on the host platform, the mutex subsystem
+// might return such a mutex in response to SQLITE_MUTEX_FAST.
+//
+// The other allowed parameters to sqlite3_mutex_alloc() each return
+// a pointer to a static preexisting mutex. Six static mutexes are
+// used by the current version of SQLite. Future versions of SQLite
+// may add additional static mutexes. Static mutexes are for internal
+// use by SQLite only. Applications that use SQLite mutexes should
+// use only the dynamic mutexes returned by SQLITE_MUTEX_FAST or
+// SQLITE_MUTEX_RECURSIVE.
+//
+// Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
+// or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
+// returns a different mutex on every call. But for the static
+// mutex types, the same mutex is returned on every call that has
+// the same type number.
+func _pthreadMutexAlloc(tls *crt.TLS, _iType int32) (r0 *Xsqlite3_mutex) {
+ var _3_recursiveAttr crt.Xpthread_mutexattr_t
+ var _p *Xsqlite3_mutex
switch _iType {
case i32(0):
goto _2
@@ -3474,204 +3010,207 @@ func _pthreadMutexAlloc(tls *crt.TLS, _iType int32) (r0 *Xsqlite3_mutex) { // sq
_1:
_p = (*Xsqlite3_mutex)(_sqlite3MallocZero(tls, uint64(u32(40))))
- if _p == nil {
- goto _4
+ if _p != nil {
+ crt.Xpthread_mutexattr_init(tls, &_3_recursiveAttr)
+ crt.Xpthread_mutexattr_settype(tls, &_3_recursiveAttr, i32(1))
+ crt.Xpthread_mutex_init(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))), &_3_recursiveAttr)
+ crt.Xpthread_mutexattr_destroy(tls, &_3_recursiveAttr)
}
-
- crt.Xpthread_mutexattr_init(tls, &_3_recursiveAttr)
- crt.Xpthread_mutexattr_settype(tls, &_3_recursiveAttr, i32(1))
- crt.Xpthread_mutex_init(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))), &_3_recursiveAttr)
- crt.Xpthread_mutexattr_destroy(tls, &_3_recursiveAttr)
-_4:
goto _5
-
_2:
_p = (*Xsqlite3_mutex)(_sqlite3MallocZero(tls, uint64(u32(40))))
- if _p == nil {
- goto _6
+ if _p != nil {
+ crt.Xpthread_mutex_init(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))), nil)
}
-
- crt.Xpthread_mutex_init(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))), nil)
-_6:
goto _5
-
_3:
- if (_iType-i32(2)) >= i32(0) && (_iType-i32(2)) < i32(12) {
- goto _8
+ if ((_iType - i32(2)) < i32(0)) || ((_iType - i32(2)) >= i32(12)) {
+ _sqlite3MisuseError(tls, i32(23329))
+ return nil
}
-
- _sqlite3MisuseError(tls, i32(23329))
- return nil
-
-_8:
_p = (*Xsqlite3_mutex)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pthreadMutexAllocØ00staticMutexesØ001)) + 40*uintptr(_iType-i32(2))))
goto _5
-
_5:
- if _p == nil {
- goto _9
+ if _p != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X1 */))) = _iType
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X1 */))) = _iType
-_9:
return _p
+
+ _ = _3_recursiveAttr
+ panic(0)
}
-func _sqlite3MallocZero(tls *crt.TLS, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24798:1
- var _p unsafe.Pointer // sqlite3.c:24799:8
- _ = _p
+func _sqlite3MallocZero(tls *crt.TLS, _n uint64) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
_p = _sqlite3Malloc(tls, _n)
- if _p == nil {
- goto _0
+ if _p != nil {
+ crt.Xmemset(tls, _p, i32(0), uint32(_n))
}
-
- crt.Xmemset(tls, _p, i32(0), uint32(_n))
-_0:
return _p
}
-var _pthreadMutexAllocØ00staticMutexesØ001 [12]Xsqlite3_mutex // sqlite3.c:23285:24
+func _sqlite3MisuseError(tls *crt.TLS, _lineno int32) (r0 int32) {
+ return _reportError(tls, i32(21), _lineno, str(1695))
+}
+
+// The following routines are substitutes for constants SQLITE_CORRUPT,
+// SQLITE_MISUSE, SQLITE_CANTOPEN, SQLITE_NOMEM and possibly other error
+// constants. They serve two purposes:
+//
+// 1. Serve as a convenient place to set a breakpoint in a debugger
+// to detect when version error conditions occurs.
+//
+// 2. Invoke sqlite3_log() to provide the source code location where
+// a low-level error is first detected.
+func _reportError(tls *crt.TLS, _iErr int32, _lineno int32, _zType *int8) (r0 int32) {
+ Xsqlite3_log(tls, _iErr, str(1702), unsafe.Pointer(_zType), _lineno, unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(20))))))+uintptr(unsafe.Pointer(Xsqlite3_sourceid(tls)))))))
+ return _iErr
+}
+
+// IMPLEMENTATION-OF: R-63124-39300 The sqlite3_sourceid() function returns a
+// pointer to a string constant whose value is the same as the
+// SQLITE_SOURCE_ID C preprocessor macro.
+func Xsqlite3_sourceid(tls *crt.TLS) (r0 *int8) {
+ return str(1727)
+}
-func _pthreadMutexFree(tls *crt.TLS, _p *Xsqlite3_mutex) { // sqlite3.c:23349:1
+var _pthreadMutexAllocØ00staticMutexesØ001 [12]Xsqlite3_mutex
+
+// This routine deallocates a previously
+// allocated mutex. SQLite is careful to deallocate every
+// mutex that it allocates.
+func _pthreadMutexFree(tls *crt.TLS, _p *Xsqlite3_mutex) {
func() {
if (_p.X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23350), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexFreeØ00__func__Ø000))), unsafe.Pointer(str(1720)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23350), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexFreeØ00__func__Ø000))), unsafe.Pointer(str(1812)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X1) != i32(0) && (_p.X1) != i32(1) {
- goto _3
+ if ((_p.X1) == i32(0)) || ((_p.X1) == i32(1)) {
+ crt.Xpthread_mutex_destroy(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p))
+ goto _4
}
-
- crt.Xpthread_mutex_destroy(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
- Xsqlite3_free(tls, (unsafe.Pointer)(_p))
- goto _4
-
-_3:
_sqlite3MisuseError(tls, i32(23360))
_4:
}
-var _pthreadMutexFreeØ00__func__Ø000 [17]int8 // -
+var _pthreadMutexFreeØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_pthreadMutexFreeØ00__func__Ø000[0], str(1732), 17)
+ crt.Xstrncpy(nil, &_pthreadMutexFreeØ00__func__Ø000[0], str(1823), 17)
}
-func _pthreadMutexEnter(tls *crt.TLS, _p *Xsqlite3_mutex) { // sqlite3.c:23376:1
+// The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
+// to enter a mutex. If another thread is already within the mutex,
+// sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
+// SQLITE_BUSY. The sqlite3_mutex_try() interface returns SQLITE_OK
+// upon successful entry. Mutexes created using SQLITE_MUTEX_RECURSIVE can
+// be entered multiple times by the same thread. In such cases the,
+// mutex must be exited an equal number of times before another thread
+// can enter. If the same thread tries to enter any other kind of mutex
+// more than once, the behavior is undefined.
+func _pthreadMutexEnter(tls *crt.TLS, _p *Xsqlite3_mutex) {
func() {
if (_p.X1) != i32(1) && _pthreadMutexNotheld(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23377), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexEnterØ00__func__Ø000))), unsafe.Pointer(str(1752)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23377), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexEnterØ00__func__Ø000))), unsafe.Pointer(str(1840)))
crt.X__builtin_abort(tls)
}
}()
crt.Xpthread_mutex_lock(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
func() {
if (_p.X2) <= i32(0) && (_p.X3) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23406), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexEnterØ00__func__Ø000))), unsafe.Pointer(str(1808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23406), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexEnterØ00__func__Ø000))), unsafe.Pointer(str(1896)))
crt.X__builtin_abort(tls)
}
}()
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X3 */))) = crt.Xpthread_self(tls)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X2 */))) += 1
- if (_p.X4) == 0 {
- goto _6
+ if (_p.X4) != 0 {
+ crt.Xprintf(tls, str(1921), unsafe.Pointer(_p), _p.X4, _p.X2)
}
-
- crt.Xprintf(tls, str(1836), unsafe.Pointer(_p), _p.X4, _p.X2)
-_6:
}
-func _pthreadMutexNotheld(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:23212:1
+func _pthreadMutexNotheld(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) {
return bool2int(((_p.X2) == i32(0)) || (crt.Xpthread_equal(tls, _p.X3, crt.Xpthread_self(tls)) == i32(0)))
}
-var _pthreadMutexEnterØ00__func__Ø000 [18]int8 // -
+var _pthreadMutexEnterØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_pthreadMutexEnterØ00__func__Ø000[0], str(1872), 18)
+ crt.Xstrncpy(nil, &_pthreadMutexEnterØ00__func__Ø000[0], str(1955), 18)
}
-func _pthreadMutexTry(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:23418:1
- var _rc int32 // sqlite3.c:23419:7
- _ = _rc
+func _pthreadMutexTry(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) {
+ var _rc int32
func() {
if (_p.X1) != i32(1) && _pthreadMutexNotheld(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23420), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexTryØ00__func__Ø000))), unsafe.Pointer(str(1752)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23420), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexTryØ00__func__Ø000))), unsafe.Pointer(str(1840)))
crt.X__builtin_abort(tls)
}
}()
- if crt.Xpthread_mutex_trylock(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */)))) != i32(0) {
- goto _3
+ if crt.Xpthread_mutex_trylock(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */)))) == i32(0) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X3 */))) = crt.Xpthread_self(tls)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X2 */))) += 1
+ _rc = i32(0)
+ goto _4
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X3 */))) = crt.Xpthread_self(tls)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X2 */))) += 1
- _rc = i32(0)
- goto _4
-
-_3:
_rc = i32(5)
_4:
- if _rc != i32(0) || (_p.X4) == 0 {
- goto _6
+ if (_rc == i32(0)) && (_p.X4) != 0 {
+ crt.Xprintf(tls, str(1921), unsafe.Pointer(_p), _p.X4, _p.X2)
}
-
- crt.Xprintf(tls, str(1836), unsafe.Pointer(_p), _p.X4, _p.X2)
-_6:
return _rc
}
-var _pthreadMutexTryØ00__func__Ø000 [16]int8 // -
+var _pthreadMutexTryØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_pthreadMutexTryØ00__func__Ø000[0], str(1892), 16)
+ crt.Xstrncpy(nil, &_pthreadMutexTryØ00__func__Ø000[0], str(1973), 16)
}
-func _pthreadMutexLeave(tls *crt.TLS, _p *Xsqlite3_mutex) { // sqlite3.c:23475:1
+// The sqlite3_mutex_leave() routine exits a mutex that was
+// previously entered by the same thread. The behavior
+// is undefined if the mutex is not currently entered or
+// is not currently allocated. SQLite will never do either.
+func _pthreadMutexLeave(tls *crt.TLS, _p *Xsqlite3_mutex) {
func() {
if _pthreadMutexHeld(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23476), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(1908)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23476), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(1989)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X2 */))) -= 1
- if (_p.X2) != i32(0) {
- goto _2
+ if (_p.X2) == i32(0) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X3 */))) = uint32(i32(0))
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X3 */))) = uint32(i32(0))
-_2:
func() {
if (_p.X2) != i32(0) && (_p.X1) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23481), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(1928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23481), unsafe.Pointer((*int8)(unsafe.Pointer(&_pthreadMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(2009)))
crt.X__builtin_abort(tls)
}
}()
crt.Xpthread_mutex_unlock(tls, (*crt.Xpthread_mutex_t)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
- if (_p.X4) == 0 {
- goto _6
+ if (_p.X4) != 0 {
+ crt.Xprintf(tls, str(2053), unsafe.Pointer(_p), _p.X4, _p.X2)
}
-
- crt.Xprintf(tls, str(1972), unsafe.Pointer(_p), _p.X4, _p.X2)
-_6:
}
-func _pthreadMutexHeld(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:23209:1
+func _pthreadMutexHeld(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) {
return bool2int(((_p.X2) != i32(0)) && crt.Xpthread_equal(tls, _p.X3, crt.Xpthread_self(tls)) != 0)
}
-var _pthreadMutexLeaveØ00__func__Ø000 [18]int8 // -
+var _pthreadMutexLeaveØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_pthreadMutexLeaveØ00__func__Ø000[0], str(2008), 18)
+ crt.Xstrncpy(nil, &_pthreadMutexLeaveØ00__func__Ø000[0], str(2087), 18)
}
-func _sqlite3NoopMutex(tls *crt.TLS) (r0 *Xsqlite3_mutex_methods) { // sqlite3.c:23102:1
+func _sqlite3NoopMutex(tls *crt.TLS) (r0 *Xsqlite3_mutex_methods) {
return &_sqlite3NoopMutexØ00sMutexØ001
}
-var _sqlite3NoopMutexØ00sMutexØ001 Xsqlite3_mutex_methods // sqlite3.c:23103:38
+var _sqlite3NoopMutexØ00sMutexØ001 Xsqlite3_mutex_methods
func init() {
_sqlite3NoopMutexØ00sMutexØ001 = Xsqlite3_mutex_methods{X0: _debugMutexInit, X1: _debugMutexEnd, X2: *(*func(*crt.TLS, int32) unsafe.Pointer)(unsafe.Pointer(&struct {
@@ -3691,17 +3230,20 @@ func init() {
}{_debugMutexNotheld}))}
}
-func _debugMutexInit(tls *crt.TLS) (r0 int32) { // sqlite3.c:23015:1
+// Initialize and deinitialize the mutex subsystem.
+func _debugMutexInit(tls *crt.TLS) (r0 int32) {
return i32(0)
}
-func _debugMutexEnd(tls *crt.TLS) (r0 int32) { // sqlite3.c:23016:1
+func _debugMutexEnd(tls *crt.TLS) (r0 int32) {
return i32(0)
}
-func _debugMutexAlloc(tls *crt.TLS, _id int32) (r0 *Xsqlite3_mutex) { // sqlite3.c:23023:1
- var _pNew *crt.Xstruct_timeval // sqlite3.c:23025:23
- _ = _pNew
+// The sqlite3_mutex_alloc() routine allocates a new
+// mutex and returns a pointer to it. If it returns NULL
+// that means that a mutex could not be allocated.
+func _debugMutexAlloc(tls *crt.TLS, _id int32) (r0 *Xsqlite3_mutex) {
+ var _pNew *crt.Xstruct_timeval
_pNew = nil
switch _id {
case i32(0):
@@ -3715,95 +3257,88 @@ func _debugMutexAlloc(tls *crt.TLS, _id int32) (r0 *Xsqlite3_mutex) { // sqlite3
_1:
_2:
_pNew = (*crt.Xstruct_timeval)(_sqlite3Malloc(tls, uint64(u32(8))))
- if _pNew == nil {
- goto _4
+ if _pNew != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _id
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))) = i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _id
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))) = i32(0)
-_4:
goto _5
-
_3:
- if (_id-i32(2)) >= i32(0) && (_id-i32(2)) < i32(12) {
- goto _7
+ if ((_id - i32(2)) < i32(0)) || ((_id - i32(2)) >= i32(12)) {
+ _sqlite3MisuseError(tls, i32(23039))
+ return nil
}
-
- _sqlite3MisuseError(tls, i32(23039))
- return nil
-
-_7:
_pNew = (*crt.Xstruct_timeval)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_debugMutexAllocØ00aStaticØ001)) + 8*uintptr(_id-i32(2))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _id
goto _5
-
_5:
return (*Xsqlite3_mutex)(unsafe.Pointer(_pNew))
}
-var _debugMutexAllocØ00aStaticØ001 [12]crt.Xstruct_timeval // sqlite3.c:23024:30
+var _debugMutexAllocØ00aStaticØ001 [12]crt.Xstruct_timeval
-func _debugMutexFree(tls *crt.TLS, _pX *Xsqlite3_mutex) { // sqlite3.c:23054:1
- var _p *crt.Xstruct_timeval // sqlite3.c:23055:23
- _ = _p
+// This routine deallocates a previously allocated mutex.
+func _debugMutexFree(tls *crt.TLS, _pX *Xsqlite3_mutex) {
+ var _p *crt.Xstruct_timeval
_p = (*crt.Xstruct_timeval)(unsafe.Pointer(_pX))
func() {
if (_p.X1) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23056), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexFreeØ00__func__Ø000))), unsafe.Pointer(str(2028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23056), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexFreeØ00__func__Ø000))), unsafe.Pointer(str(2105)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X0) != i32(1) && (_p.X0) != i32(0) {
- goto _3
+ if ((_p.X0) == i32(1)) || ((_p.X0) == i32(0)) {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p))
+ goto _4
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_p))
- goto _4
-
-_3:
_sqlite3MisuseError(tls, i32(23061))
_4:
}
-var _debugMutexFreeØ00__func__Ø000 [15]int8 // -
+var _debugMutexFreeØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_debugMutexFreeØ00__func__Ø000[0], str(2040), 15)
+ crt.Xstrncpy(nil, &_debugMutexFreeØ00__func__Ø000[0], str(2115), 15)
}
-func _debugMutexEnter(tls *crt.TLS, _pX *Xsqlite3_mutex) { // sqlite3.c:23077:1
- var _p *crt.Xstruct_timeval // sqlite3.c:23078:23
- _ = _p
+// The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
+// to enter a mutex. If another thread is already within the mutex,
+// sqlite3_mutex_enter() will block and sqlite3_mutex_try() will return
+// SQLITE_BUSY. The sqlite3_mutex_try() interface returns SQLITE_OK
+// upon successful entry. Mutexes created using SQLITE_MUTEX_RECURSIVE can
+// be entered multiple times by the same thread. In such cases the,
+// mutex must be exited an equal number of times before another thread
+// can enter. If the same thread tries to enter any other kind of mutex
+// more than once, the behavior is undefined.
+func _debugMutexEnter(tls *crt.TLS, _pX *Xsqlite3_mutex) {
+ var _p *crt.Xstruct_timeval
_p = (*crt.Xstruct_timeval)(unsafe.Pointer(_pX))
func() {
if (_p.X0) != i32(1) && _debugMutexNotheld(tls, _pX) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23079), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexEnterØ00__func__Ø000))), unsafe.Pointer(str(2056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23079), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexEnterØ00__func__Ø000))), unsafe.Pointer(str(2130)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) += 1
}
-func _debugMutexNotheld(tls *crt.TLS, _pX *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:23007:1
- var _p *crt.Xstruct_timeval // sqlite3.c:23008:23
- _ = _p
+func _debugMutexNotheld(tls *crt.TLS, _pX *Xsqlite3_mutex) (r0 int32) {
+ var _p *crt.Xstruct_timeval
_p = (*crt.Xstruct_timeval)(unsafe.Pointer(_pX))
return bool2int((_p == nil) || ((_p.X1) == i32(0)))
}
-var _debugMutexEnterØ00__func__Ø000 [16]int8 // -
+var _debugMutexEnterØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_debugMutexEnterØ00__func__Ø000[0], str(2112), 16)
+ crt.Xstrncpy(nil, &_debugMutexEnterØ00__func__Ø000[0], str(2185), 16)
}
-func _debugMutexTry(tls *crt.TLS, _pX *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:23082:1
- var _p *crt.Xstruct_timeval // sqlite3.c:23083:23
- _ = _p
+func _debugMutexTry(tls *crt.TLS, _pX *Xsqlite3_mutex) (r0 int32) {
+ var _p *crt.Xstruct_timeval
_p = (*crt.Xstruct_timeval)(unsafe.Pointer(_pX))
func() {
if (_p.X0) != i32(1) && _debugMutexNotheld(tls, _pX) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23084), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexTryØ00__func__Ø000))), unsafe.Pointer(str(2056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23084), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexTryØ00__func__Ø000))), unsafe.Pointer(str(2130)))
crt.X__builtin_abort(tls)
}
}()
@@ -3811,65 +3346,69 @@ func _debugMutexTry(tls *crt.TLS, _pX *Xsqlite3_mutex) (r0 int32) { // sqlite3.c
return i32(0)
}
-var _debugMutexTryØ00__func__Ø000 [14]int8 // -
+var _debugMutexTryØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_debugMutexTryØ00__func__Ø000[0], str(2128), 14)
+ crt.Xstrncpy(nil, &_debugMutexTryØ00__func__Ø000[0], str(2201), 14)
}
-func _debugMutexLeave(tls *crt.TLS, _pX *Xsqlite3_mutex) { // sqlite3.c:23095:1
- var _p *crt.Xstruct_timeval // sqlite3.c:23096:23
- _ = _p
+// The sqlite3_mutex_leave() routine exits a mutex that was
+// previously entered by the same thread. The behavior
+// is undefined if the mutex is not currently entered or
+// is not currently allocated. SQLite will never do either.
+func _debugMutexLeave(tls *crt.TLS, _pX *Xsqlite3_mutex) {
+ var _p *crt.Xstruct_timeval
_p = (*crt.Xstruct_timeval)(unsafe.Pointer(_pX))
func() {
if _debugMutexHeld(tls, _pX) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23097), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(2144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23097), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(2215)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) -= 1
func() {
if (_p.X0) != i32(1) && _debugMutexNotheld(tls, _pX) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(23099), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(2056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(23099), unsafe.Pointer((*int8)(unsafe.Pointer(&_debugMutexLeaveØ00__func__Ø000))), unsafe.Pointer(str(2130)))
crt.X__builtin_abort(tls)
}
}()
}
-func _debugMutexHeld(tls *crt.TLS, _pX *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:23003:1
- var _p *crt.Xstruct_timeval // sqlite3.c:23004:23
- _ = _p
+// The sqlite3_mutex_held() and sqlite3_mutex_notheld() routine are
+// intended for use inside assert() statements.
+func _debugMutexHeld(tls *crt.TLS, _pX *Xsqlite3_mutex) (r0 int32) {
+ var _p *crt.Xstruct_timeval
_p = (*crt.Xstruct_timeval)(unsafe.Pointer(_pX))
return bool2int((_p == nil) || ((_p.X1) > i32(0)))
}
-var _debugMutexLeaveØ00__func__Ø000 [16]int8 // -
+var _debugMutexLeaveØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_debugMutexLeaveØ00__func__Ø000[0], str(2164), 16)
+ crt.Xstrncpy(nil, &_debugMutexLeaveØ00__func__Ø000[0], str(2234), 16)
}
-func _sqlite3MemoryBarrier(tls *crt.TLS) { // sqlite3.c:23222:1
+// Try to provide a memory barrier operation, needed for initialization
+// and also for the implementation of xShmBarrier in the VFS in cases
+// where SQLite is compiled without mutexes.
+func _sqlite3MemoryBarrier(tls *crt.TLS) {
}
-var _sqlite3MutexInitØ00__func__Ø000 [17]int8 // -
+var _sqlite3MutexInitØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3MutexInitØ00__func__Ø000[0], str(2180), 17)
+ crt.Xstrncpy(nil, &_sqlite3MutexInitØ00__func__Ø000[0], str(2250), 17)
}
-var _mutexIsInit int32 // sqlite3.c:22766:23
+var _mutexIsInit int32
-func _sqlite3MutexAlloc(tls *crt.TLS, _id int32) (r0 *Xsqlite3_mutex) { // sqlite3.c:22840:1
- if (_sqlite3Config.X1) != 0 {
- goto _0
+func _sqlite3MutexAlloc(tls *crt.TLS, _id int32) (r0 *Xsqlite3_mutex) {
+ if (_sqlite3Config.X1) == 0 {
+ return nil
}
- return nil
-
-_0:
func() {
if _mutexIsInit == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22844), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MutexAllocØ00__func__Ø000))), unsafe.Pointer(str(2200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22844), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MutexAllocØ00__func__Ø000))), unsafe.Pointer(str(2267)))
crt.X__builtin_abort(tls)
}
}()
@@ -3877,7 +3416,7 @@ _0:
if (*(*func(*crt.TLS, int32) *Xsqlite3_mutex)(unsafe.Pointer(&struct {
f func(*crt.TLS, int32) unsafe.Pointer
}{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X2)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22845), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MutexAllocØ00__func__Ø000))), unsafe.Pointer(str(2228)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22845), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MutexAllocØ00__func__Ø000))), unsafe.Pointer(str(2292)))
crt.X__builtin_abort(tls)
}
}()
@@ -3887,39 +3426,28 @@ _0:
}{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72))).X2)})))(tls, _id)
}
-var _sqlite3MutexAllocØ00__func__Ø000 [18]int8 // -
+var _sqlite3MutexAllocØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3MutexAllocØ00__func__Ø000[0], str(2268), 18)
+ crt.Xstrncpy(nil, &_sqlite3MutexAllocØ00__func__Ø000[0], str(2330), 18)
}
-func _sqlite3MallocInit(tls *crt.TLS) (r0 int32) { // sqlite3.c:24342:1
- var _rc int32 // sqlite3.c:24343:7
- _ = _rc
- var _2_i int32 // sqlite3.c:24351:9
- _ = _2_i
- var _2_n int32 // sqlite3.c:24351:12
- _ = _2_n
- var _2_sz int32 // sqlite3.c:24351:15
- _ = _2_sz
- var _2_pSlot *Xsqlite3_file // sqlite3.c:24352:21
- _ = _2_pSlot
+// Initialize the memory allocation subsystem.
+func _sqlite3MallocInit(tls *crt.TLS) (r0 int32) {
+ var _rc, _2_i, _2_n, _2_sz int32
+ var _2_pSlot *Xsqlite3_file
if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, int32) unsafe.Pointer
- }{((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X0)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X0)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, int32) unsafe.Pointer
}{nil})) {
- goto _0
+ _sqlite3MemSetDefault(tls)
}
-
- _sqlite3MemSetDefault(tls)
-_0:
crt.Xmemset(tls, (unsafe.Pointer)(&_mem0), i32(0), u32(28))
*(**Xsqlite3_mutex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(0 /* X0 */))))) = _sqlite3MutexAlloc(tls, i32(3))
if (_sqlite3Config.X19) == nil || (_sqlite3Config.X20) < i32(100) || (_sqlite3Config.X21) <= i32(0) {
goto _3
}
-
_2_sz = (_sqlite3Config.X20) & i32(-8)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(196 /* X20 */))) = _2_sz
_2_pSlot = (*Xsqlite3_file)(_sqlite3Config.X19)
@@ -3931,5197 +3459,6004 @@ _4:
if _2_i >= (_2_n - i32(1)) {
goto _7
}
-
*(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pSlot)) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_2_sz))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_2_pSlot))))))))
_2_pSlot = (*Xsqlite3_file)(_2_pSlot.X0)
_2_i += 1
goto _4
-
_7:
*(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pSlot)) + uintptr(0 /* X0 */))))) = nil
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(12 /* X2 */))) = (unsafe.Pointer)((*Xsqlite3_file)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pSlot)) + 4*uintptr(i32(1)))))
goto _8
-
_3:
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(12 /* X2 */))) = nil
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(192 /* X19 */))) = nil
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(196 /* X20 */))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(200 /* X21 */))) = i32(0)
_8:
- if _sqlite3Config.X22 != nil && (_sqlite3Config.X23) >= i32(512) && (_sqlite3Config.X24) > i32(0) {
- goto _11
+ if ((_sqlite3Config.X22 == nil) || ((_sqlite3Config.X23) < i32(512))) || ((_sqlite3Config.X24) <= i32(0)) {
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(204 /* X22 */))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(208 /* X23 */))) = i32(0)
}
-
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(204 /* X22 */))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(208 /* X23 */))) = i32(0)
-_11:
_rc = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X5)(tls, (*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config))+uintptr(40 /* X10 */))).X7)
- if _rc == i32(0) {
- goto _12
+ if _rc != i32(0) {
+ crt.Xmemset(tls, (unsafe.Pointer)(&_mem0), i32(0), u32(28))
}
-
- crt.Xmemset(tls, (unsafe.Pointer)(&_mem0), i32(0), u32(28))
-_12:
return _rc
}
-func _sqlite3MemSetDefault(tls *crt.TLS) { // sqlite3.c:20925:1
+// This routine is the only routine in this file with external linkage.
+//
+// Populate the low-level memory allocation function pointers in
+// sqlite3GlobalConfig.m with pointers to the routines in this file.
+func _sqlite3MemSetDefault(tls *crt.TLS) {
Xsqlite3_config(tls, i32(4), unsafe.Pointer(&_sqlite3MemSetDefaultØ00defaultMethodsØ001))
}
-var _sqlite3MemSetDefaultØ00defaultMethodsØ001 Xsqlite3_mem_methods // sqlite3.c:20926:36
-
-func init() {
- _sqlite3MemSetDefaultØ00defaultMethodsØ001 = Xsqlite3_mem_methods{X0: _sqlite3MemMalloc, X1: _sqlite3MemFree, X2: _sqlite3MemRealloc, X3: _sqlite3MemSize, X4: _sqlite3MemRoundup, X5: _sqlite3MemInit, X6: _sqlite3MemShutdown, X7: nil}
-}
-
-func _sqlite3MemMalloc(tls *crt.TLS, _nByte int32) (r0 unsafe.Pointer) { // sqlite3.c:20776:1
- var _p unsafe.Pointer // sqlite3.c:20778:8
- _ = _p
- _p = crt.Xmalloc(tls, uint32(_nByte))
- if _p != nil {
- goto _0
+// This API allows applications to modify the global configuration of
+// the SQLite library at run-time.
+//
+// This routine should only be called when there are no outstanding
+// database connections or memory allocations. This routine is not
+// threadsafe. Failure to heed these warnings can lead to unpredictable
+// behavior.
+func Xsqlite3_config(tls *crt.TLS, _op int32, args ...interface{}) (r0 int32) {
+ var _rc int32
+ var _22_szMmap, _22_mxMmap int64
+ var _ap []interface{}
+ _rc = i32(0)
+ if (_sqlite3Config.X28) != 0 {
+ return _sqlite3MisuseError(tls, i32(140829))
}
-
- Xsqlite3_log(tls, i32(7), str(2288), _nByte)
-_0:
- return _p
-}
-
-func _sqlite3MemFree(tls *crt.TLS, _pPrior unsafe.Pointer) { // sqlite3.c:20810:1
- crt.Xfree(tls, _pPrior)
-}
-
-func _sqlite3MemRealloc(tls *crt.TLS, _pPrior unsafe.Pointer, _nByte int32) (r0 unsafe.Pointer) { // sqlite3.c:20848:1
- var _p unsafe.Pointer // sqlite3.c:20850:8
- _ = _p
- _p = crt.Xrealloc(tls, _pPrior, uint32(_nByte))
- if _p != nil {
- goto _0
+ _ap = args
+ switch _op {
+ case i32(1):
+ goto _2
+ case i32(2):
+ goto _3
+ case i32(3):
+ goto _4
+ case i32(4):
+ goto _7
+ case i32(5):
+ goto _8
+ case i32(6):
+ goto _10
+ case i32(7):
+ goto _11
+ case i32(9):
+ goto _9
+ case i32(10):
+ goto _5
+ case i32(11):
+ goto _6
+ case i32(13):
+ goto _17
+ case i32(14):
+ goto _13
+ case i32(15):
+ goto _14
+ case i32(16):
+ goto _18
+ case i32(17):
+ goto _19
+ case i32(18):
+ goto _15
+ case i32(19):
+ goto _16
+ case i32(20):
+ goto _20
+ case i32(22):
+ goto _21
+ case i32(24):
+ goto _12
+ case i32(25):
+ goto _22
+ case i32(26):
+ goto _23
+ default:
+ goto _24
}
- Xsqlite3_log(tls, i32(7), str(2328), crt.Xmalloc_usable_size(tls, _pPrior), _nByte)
-_0:
- return _p
-}
-
-func _sqlite3MemSize(tls *crt.TLS, _pPrior unsafe.Pointer) (r0 int32) { // sqlite3.c:20825:1
- func() {
- if _pPrior == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(20827), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemSizeØ00__func__Ø000))), unsafe.Pointer(str(2364)))
- crt.X__builtin_abort(tls)
- }
- }()
- return int32(crt.Xmalloc_usable_size(tls, _pPrior))
-}
-
-var _sqlite3MemSizeØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3MemSizeØ00__func__Ø000[0], str(2376), 15)
+_2:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(4 /* X1 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(8 /* X2 */))) = i32(0)
+ goto _25
+_3:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(4 /* X1 */))) = i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(8 /* X2 */))) = i32(0)
+ goto _25
+_4:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(4 /* X1 */))) = i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(8 /* X2 */))) = i32(1)
+ goto _25
+_5:
+ *(*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))) = *(*Xsqlite3_mutex_methods)(crt.VAPointer(&_ap))
+ goto _25
+_6:
+ *(*Xsqlite3_mutex_methods)(crt.VAPointer(&_ap)) = _sqlite3Config.X11
+ goto _25
+_7:
+ *(*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))) = *(*Xsqlite3_mem_methods)(crt.VAPointer(&_ap))
+ goto _25
+_8:
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, int32) unsafe.Pointer
+ }{((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X0)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, int32) unsafe.Pointer
+ }{nil})) {
+ _sqlite3MemSetDefault(tls)
+ }
+ *(*Xsqlite3_mem_methods)(crt.VAPointer(&_ap)) = _sqlite3Config.X10
+ goto _25
+_9:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(0 /* X0 */))) = crt.VAInt32(&_ap)
+ goto _25
+_10:
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(192 /* X19 */))) = crt.VAPointer(&_ap)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(196 /* X20 */))) = crt.VAInt32(&_ap)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(200 /* X21 */))) = crt.VAInt32(&_ap)
+ goto _25
+_11:
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(204 /* X22 */))) = crt.VAPointer(&_ap)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(208 /* X23 */))) = crt.VAInt32(&_ap)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(212 /* X24 */))) = crt.VAInt32(&_ap)
+ goto _25
+_12:
+ *(*int32)(crt.VAPointer(&_ap)) = (_sqlite3HeaderSizeBtree(tls) + _sqlite3HeaderSizePcache(tls)) + _sqlite3HeaderSizePcache1(tls)
+ goto _25
+_13:
+ goto _25
+_14:
+ _rc = i32(1)
+ goto _25
+_15:
+ *(*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))) = *(*Xsqlite3_pcache_methods2)(crt.VAPointer(&_ap))
+ goto _25
+_16:
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X2)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{nil})) {
+ _sqlite3PCacheSetDefault(tls)
+ }
+ *(*Xsqlite3_pcache_methods2)(crt.VAPointer(&_ap)) = _sqlite3Config.X12
+ goto _25
+_17:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(28 /* X7 */))) = crt.VAInt32(&_ap)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(32 /* X8 */))) = crt.VAInt32(&_ap)
+ goto _25
+_18:
+ *(*func(*crt.TLS, unsafe.Pointer, int32, *int8))(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(256 /* X35 */))) = crt.VAOther(&_ap).(func(*crt.TLS, unsafe.Pointer, int32, *int8))
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(260 /* X36 */))) = crt.VAPointer(&_ap)
+ goto _25
+_19:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(12 /* X3 */))) = crt.VAInt32(&_ap)
+ goto _25
+_20:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(16 /* X4 */))) = crt.VAInt32(&_ap)
+ goto _25
+_21:
+ _22_szMmap = crt.VAInt64(&_ap)
+ _22_mxMmap = crt.VAInt64(&_ap)
+ if (_22_mxMmap < int64(i32(0))) || (_22_mxMmap > int64(i32(2147418112))) {
+ _22_mxMmap = int64(i32(2147418112))
+ }
+ if _22_szMmap < int64(i32(0)) {
+ _22_szMmap = int64(i32(0))
+ }
+ if _22_szMmap > _22_mxMmap {
+ _22_szMmap = _22_mxMmap
+ }
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(184 /* X18 */))) = _22_mxMmap
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(176 /* X17 */))) = _22_szMmap
+ goto _25
+_22:
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(224 /* X27 */))) = crt.VAUint32(&_ap)
+ goto _25
+_23:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(36 /* X9 */))) = crt.VAInt32(&_ap)
+ goto _25
+_24:
+ _rc = i32(1)
+ goto _25
+_25:
+ _ap = nil
+ return _rc
}
-func _sqlite3MemRoundup(tls *crt.TLS, _n int32) (r0 int32) { // sqlite3.c:20880:1
- return (_n + i32(7)) & i32(-8)
+// Return the size of the header added to each page by this module.
+func _sqlite3HeaderSizeBtree(tls *crt.TLS) (r0 int32) {
+ return int32(u32(88))
}
-func _sqlite3MemInit(tls *crt.TLS, _NotUsed unsafe.Pointer) (r0 int32) { // sqlite3.c:20887:1
- return i32(0)
+// Return the size of the header added by this middleware layer
+// in the page-cache hierarchy.
+func _sqlite3HeaderSizePcache(tls *crt.TLS) (r0 int32) {
+ return int32(u32(40))
}
-func _sqlite3MemShutdown(tls *crt.TLS, _NotUsed unsafe.Pointer) { // sqlite3.c:20914:1
+// Return the size of the header on each page of this PCACHE implementation.
+func _sqlite3HeaderSizePcache1(tls *crt.TLS) (r0 int32) {
+ return int32(u32(32))
}
-func _sqlite3NomemError(tls *crt.TLS, _lineno int32) (r0 int32) { // sqlite3.c:143808:1
- return _reportError(tls, i32(7), _lineno, str(2392))
+// This function is called during initialization (sqlite3_initialize()) to
+// install the default pluggable cache module, assuming the user has not
+// already provided an alternative.
+func _sqlite3PCacheSetDefault(tls *crt.TLS) {
+ Xsqlite3_config(tls, i32(18), unsafe.Pointer(&_sqlite3PCacheSetDefaultØ00defaultMethodsØ001))
}
-var _sqlite3BuiltinFunctions XFuncDefHash // sqlite3.c:17402:28
-
-func _sqlite3RegisterBuiltinFunctions(tls *crt.TLS) { // sqlite3.c:107287:1
- _sqlite3AlterFunctions(tls)
- _sqlite3RegisterDateTimeFunctions(tls)
- _sqlite3InsertBuiltinFuncs(tls, (*XFuncDef)(unsafe.Pointer(&_sqlite3RegisterBuiltinFunctionsØ00aBuiltinFuncØ001)), i32(60))
-}
+var _sqlite3PCacheSetDefaultØ00defaultMethodsØ001 Xsqlite3_pcache_methods2
-func _sqlite3AlterFunctions(tls *crt.TLS) { // sqlite3.c:96340:1
- _sqlite3InsertBuiltinFuncs(tls, (*XFuncDef)(unsafe.Pointer(&_sqlite3AlterFunctionsØ00aAlterTableFuncsØ001)), i32(3))
+func init() {
+ _sqlite3PCacheSetDefaultØ00defaultMethodsØ001 = Xsqlite3_pcache_methods2{X0: i32(1), X1: nil, X2: _pcache1Init, X3: _pcache1Shutdown, X4: _pcache1Create, X5: _pcache1Cachesize, X6: _pcache1Pagecount, X7: *(*func(*crt.TLS, unsafe.Pointer, uint32, int32) unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, uint32, int32) *Xsqlite3_pcache_page
+ }{_pcache1Fetch})), X8: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *Xsqlite3_pcache_page, int32)
+ }{_pcache1Unpin})), X9: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, uint32, uint32))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *Xsqlite3_pcache_page, uint32, uint32)
+ }{_pcache1Rekey})), X10: _pcache1Truncate, X11: _pcache1Destroy, X12: _pcache1Shrink}
}
-func _sqlite3InsertBuiltinFuncs(tls *crt.TLS, _aDef *XFuncDef, _nDef int32) { // sqlite3.c:104447:1
- var _i int32 // sqlite3.c:104451:7
- _ = _i
- var _1_pOther *XFuncDef // sqlite3.c:104453:13
- _ = _1_pOther
- var _1_zName *int8 // sqlite3.c:104454:16
- _ = _1_zName
- var _1_nName int32 // sqlite3.c:104455:9
- _ = _1_nName
- var _1_h int32 // sqlite3.c:104456:9
- _ = _1_h
- _i = i32(0)
-_0:
- if _i >= _nDef {
- goto _3
- }
-
- _1_zName = (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef)) + 28*uintptr(_i))).X6
- _1_nName = _sqlite3Strlen30(tls, _1_zName)
- _1_h = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_zName)) + 1*uintptr(i32(0))))))))) + _1_nName) % i32(23)
- _1_pOther = _functionSearch(tls, _1_h, _1_zName)
- if _1_pOther == nil {
- goto _4
- }
-
+// Implementation of the sqlite3_pcache.xInit method.
+func _pcache1Init(tls *crt.TLS, _NotUsed unsafe.Pointer) (r0 int32) {
func() {
- if _1_pOther == (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))) || (*XFuncDef)(_1_pOther.X3) == (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104459), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertBuiltinFuncsØ00__func__Ø000))), unsafe.Pointer(str(2396)))
+ if (_pcache1_g.X1) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45688), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1InitØ00__func__Ø000))), unsafe.Pointer(str(2348)))
crt.X__builtin_abort(tls)
}
}()
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))))) + uintptr(8 /* X3 */))))) = (*XFuncDef)(_1_pOther.X3)
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOther)) + uintptr(8 /* X3 */))))) = (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef)) + 28*uintptr(_i)))
- goto _8
-
-_4:
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))))) + uintptr(8 /* X3 */))))) = nil
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))))) + uintptr(24 /* X7 */))))))) = *(**XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[23]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3BuiltinFunctions))+uintptr(0 /* X0 */))))) + 4*uintptr(_1_h)))
- *(**XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[23]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3BuiltinFunctions))+uintptr(0 /* X0 */))))) + 4*uintptr(_1_h))) = (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef)) + 28*uintptr(_i)))
-_8:
- _i += 1
- goto _0
-
-_3:
-}
-
-func _sqlite3Strlen30(tls *crt.TLS, _z *int8) (r0 int32) { // sqlite3.c:27763:1
- if _z != nil {
- goto _0
+ crt.Xmemset(tls, (unsafe.Pointer)(&_pcache1_g), i32(0), u32(100))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(56 /* X2 */))) = bool2int((_sqlite3Config.X22 == nil) || ((_sqlite3Config.X1) > i32(0)))
+ if (_sqlite3Config.X1) != 0 {
+ *(**Xsqlite3_mutex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPGroup)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g))+uintptr(0 /* X0 */))))) + uintptr(0 /* X0 */))))) = _sqlite3MutexAlloc(tls, i32(6))
+ *(**Xsqlite3_mutex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(84 /* X9 */))))) = _sqlite3MutexAlloc(tls, i32(7))
+ }
+ if ((_pcache1_g.X2) != 0 && ((_sqlite3Config.X24) != i32(0))) && (_sqlite3Config.X22 == nil) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(60 /* X3 */))) = _sqlite3Config.X24
+ goto _7
}
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(60 /* X3 */))) = i32(0)
+_7:
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPGroup)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g))+uintptr(0 /* X0 */))))) + uintptr(12 /* X3 */))) = uint32(i32(10))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(52 /* X1 */))) = i32(1)
return i32(0)
-
-_0:
- return i32(1073741823) & int32(crt.Xstrlen(tls, _z))
}
-var _sqlite3UpperToLower [256]uint8 // sqlite3.c:17173:36
+var _pcache1InitØ00__func__Ø000 [12]int8
func init() {
- _sqlite3UpperToLower = [256]uint8{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255}
-}
-
-func _functionSearch(tls *crt.TLS, _h int32, _zFunc *int8) (r0 *XFuncDef) { // sqlite3.c:104431:1
- var _p *XFuncDef // sqlite3.c:104435:11
- _ = _p
- _p = *(**XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[23]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3BuiltinFunctions))+uintptr(0 /* X0 */))))) + 4*uintptr(_h)))
-_0:
- if _p == nil {
- goto _3
- }
-
- if _sqlite3StrICmp(tls, _p.X6, _zFunc) != i32(0) {
- goto _4
- }
- return _p
-
-_4:
- _p = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))))))
- goto _0
-
-_3:
- return nil
-}
-
-func _sqlite3StrICmp(tls *crt.TLS, _zLeft *int8, _zRight *int8) (r0 int32) { // sqlite3.c:27953:1
- var _a *uint8 // sqlite3.c:27954:17
- _ = _a
- var _b *uint8 // sqlite3.c:27954:21
- _ = _b
- var _c int32 // sqlite3.c:27955:7
- _ = _c
- _a = (*uint8)(unsafe.Pointer(_zLeft))
- _b = (*uint8)(unsafe.Pointer(_zRight))
-_0:
- _c = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_a)))) - int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_b))))
- if _c == 0 && int32(*_a) != i32(0) {
- goto _4
- }
-
- goto _2
-
-_4:
- *(*uintptr)(unsafe.Pointer(&_a)) += uintptr(1)
- *(*uintptr)(unsafe.Pointer(&_b)) += uintptr(1)
- goto _0
-
-_2:
- return _c
+ crt.Xstrncpy(nil, &_pcache1InitØ00__func__Ø000[0], str(2366), 12)
}
-var _sqlite3InsertBuiltinFuncsØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3InsertBuiltinFuncsØ00__func__Ø000[0], str(2440), 26)
+// Implementation of the sqlite3_pcache.xShutdown method.
+// Note that the static mutex allocated in xInit does
+// not need to be freed.
+func _pcache1Shutdown(tls *crt.TLS, _NotUsed unsafe.Pointer) {
+ func() {
+ if (_pcache1_g.X1) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45741), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1ShutdownØ00__func__Ø000))), unsafe.Pointer(str(2378)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ crt.Xmemset(tls, (unsafe.Pointer)(&_pcache1_g), i32(0), u32(100))
}
-var _sqlite3AlterFunctionsØ00aAlterTableFuncsØ001 [3]XFuncDef // sqlite3.c:96341:18
+var _pcache1ShutdownØ00__func__Ø000 [16]int8
func init() {
- _sqlite3AlterFunctionsØ00aAlterTableFuncsØ001 = [3]XFuncDef{XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_renameTableFunc})), X5: nil, X6: str(2468), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_renameTriggerFunc})), X5: nil, X6: str(2488), X7: t10{}}, XFuncDef{X0: i8(3), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_renameParentFunc})), X5: nil, X6: str(2512), X7: t10{}}}
+ crt.Xstrncpy(nil, &_pcache1ShutdownØ00__func__Ø000[0], str(2396), 16)
}
-func _renameTableFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _argv **XMem) { // sqlite3.c:96146:1
- var _zSql *uint8 // sqlite3.c:96151:23
- _ = _zSql
- var _zTableName *uint8 // sqlite3.c:96152:23
- _ = _zTableName
- var _token int32 // sqlite3.c:96154:7
- _ = _token
- var _tname XToken // sqlite3.c:96155:9
- _ = _tname
- var _zCsr *uint8 // sqlite3.c:96156:23
- _ = _zCsr
- var _len int32 // sqlite3.c:96157:7
- _ = _len
- var _zRet *int8 // sqlite3.c:96158:8
- _ = _zRet
- var _db *Xsqlite3 // sqlite3.c:96160:11
- _ = _db
- _zSql = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
- _zTableName = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
- _zCsr = _zSql
- _len = i32(0)
- _db = Xsqlite3_context_db_handle(tls, _context)
-
- if _zSql == nil {
- goto _0
- }
-
-_1:
- if (*_zCsr) != 0 {
- goto _2
- }
- return
-
-_2:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer(_zCsr))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(4 /* X1 */))) = uint32(_len)
-_3:
- {
- p := &_zCsr
- *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_len)))
- sink11 = *p
- }
- _len = _sqlite3GetToken(tls, _zCsr, &_token)
- if _token == i32(163) {
- goto _3
- }
-
+// Implementation of the sqlite3_pcache.xCreate method.
+//
+// Allocate a new cache.
+func _pcache1Create(tls *crt.TLS, _szPage int32, _szExtra int32, _bPurgeable int32) (r0 unsafe.Pointer) {
+ var _sz int32
+ var _pCache *XPCache1
+ var _pGroup *XPGroup
func() {
- if _len <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(96186), unsafe.Pointer((*int8)(unsafe.Pointer(&_renameTableFuncØ00__func__Ø000))), unsafe.Pointer(str(2536)))
+ if (_szPage&(_szPage-i32(1))) != i32(0) || _szPage < i32(512) || _szPage > i32(65536) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45758), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1CreateØ00__func__Ø000))), unsafe.Pointer(str(2412)))
crt.X__builtin_abort(tls)
}
}()
- if (_token != i32(22)) && (_token != i32(125)) {
- goto _1
- }
-
- _zRet = _sqlite3MPrintf(tls, _db, str(2544), int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_tname.X0))))-uintptr(unsafe.Pointer(_zSql)))/1), unsafe.Pointer(_zSql), unsafe.Pointer(_zTableName), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_tname.X0))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_tname.X1)))))))))
- Xsqlite3_result_text(tls, _context, _zRet, i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))
-_0:
-}
-
-func Xsqlite3_value_text(tls *crt.TLS, _pVal *XMem) (r0 *uint8) { // sqlite3.c:76298:12
- return (*uint8)(_sqlite3ValueText(tls, _pVal, uint8(i32(1))))
-}
-
-func _sqlite3ValueText(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 unsafe.Pointer) { // sqlite3.c:70757:1
- if _pVal != nil {
- goto _0
- }
- return nil
-
-_0:
func() {
- if (*Xsqlite3)(_pVal.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pVal.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70759), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueTextØ00__func__Ø000))), unsafe.Pointer(str(2556)))
+ if _szExtra >= i32(300) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45759), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1CreateØ00__func__Ø000))), unsafe.Pointer(str(2469)))
crt.X__builtin_abort(tls)
}
}()
+ _sz = int32(u32(60) + (u32(52) * uint32(_pcache1_g.X2)))
+ _pCache = (*XPCache1)(_sqlite3MallocZero(tls, uint64(_sz)))
+ if _pCache == nil {
+ goto _6
+ }
+ if (_pcache1_g.X2) != 0 {
+ _pGroup = (*XPGroup)(unsafe.Pointer((*XPCache1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + 60*uintptr(i32(1))))))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(12 /* X3 */))) = uint32(i32(10))
+ goto _8
+ }
+ _pGroup = (*XPGroup)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(0 /* X0 */)))
+_8:
+ if int32((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */))).X4) == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */))))) + uintptr(14 /* X4 */))) = uint8(i32(1))
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */))))) + uintptr(28 /* X8 */))))) = store10((**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */)))))+uintptr(24 /* X7 */))))), (*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */))))
+ }
+ *(**XPGroup)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(0 /* X0 */))))) = _pGroup
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(4 /* X1 */))) = _szPage
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(8 /* X2 */))) = _szExtra
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(12 /* X3 */))) = int32(uint32(_szPage+_szExtra) + u32(32))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(16 /* X4 */))) = func() int32 {
+ if _bPurgeable != 0 {
+ return i32(1)
+ }
+ return i32(0)
+ }()
func() {
- if (int32(_enc) & i32(3)) != (int32(_enc) & i32(-9)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70760), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueTextØ00__func__Ø000))), unsafe.Pointer(str(2608)))
+ if (*Xsqlite3_mutex)(_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45779), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1CreateØ00__func__Ø000))), unsafe.Pointer(str(2483)))
crt.X__builtin_abort(tls)
}
}()
+ _pcache1ResizeHash(tls, _pCache)
+ if _bPurgeable != 0 {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(20 /* X5 */))) = uint32(i32(10))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(8 /* X2 */)))
+ *p = (*p) + (_pCache.X5)
+ sink5 = *p
+ }
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(12 /* X3 */))) = ((_pGroup.X1) + uint32(i32(10))) - (_pGroup.X2)
+ }
func() {
- if (int32(_pVal.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70761), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueTextØ00__func__Ø000))), unsafe.Pointer(str(2648)))
+ if (*Xsqlite3_mutex)(_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45786), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1CreateØ00__func__Ø000))), unsafe.Pointer(str(2483)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pVal.X1)&i32(514)) != i32(514) || int32(_pVal.X2) != int32(_enc) {
- goto _9
+ if (_pCache.X11) == uint32(i32(0)) {
+ _pcache1Destroy(tls, (unsafe.Pointer)(_pCache))
+ _pCache = nil
}
- return (unsafe.Pointer)(_pVal.X5)
-
-_9:
- if (int32(_pVal.X1) & i32(1)) == 0 {
- goto _10
- }
- return nil
-
-_10:
- return _valueToText(tls, _pVal, _enc)
+_6:
+ return (unsafe.Pointer)(_pCache)
}
-var _sqlite3ValueTextØ00__func__Ø000 [17]int8 // -
+var _pcache1CreateØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ValueTextØ00__func__Ø000[0], str(2680), 17)
+ crt.Xstrncpy(nil, &_pcache1CreateØ00__func__Ø000[0], str(2502), 14)
}
-func _valueToText(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 unsafe.Pointer) { // sqlite3.c:70715:1
+// This function is used to resize the hash table used by the cache passed
+// as the first argument.
+//
+// The PCache mutex must be held when this function is called.
+func _pcache1ResizeHash(tls *crt.TLS, _p *XPCache1) {
+ var _nNew, _i, _6_h uint32
+ var _5_pPage, _5_pNext *XPgHdr1
+ var _apNew **XPgHdr1
func() {
- if _pVal == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70716), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2700)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XPGroup)(_p.X0).X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45528), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1ResizeHashØ00__func__Ø000))), unsafe.Pointer(str(2516)))
crt.X__builtin_abort(tls)
}
}()
+ _nNew = (_p.X11) * uint32(i32(2))
+ if _nNew < uint32(i32(256)) {
+ _nNew = uint32(i32(256))
+ }
func() {
- if (*Xsqlite3)(_pVal.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pVal.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70717), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2556)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_p.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45535), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1ResizeHashØ00__func__Ø000))), unsafe.Pointer(str(2553)))
crt.X__builtin_abort(tls)
}
}()
+ if (_p.X11) != 0 {
+ _sqlite3BeginBenignMalloc(tls)
+ }
+ _apNew = (**XPgHdr1)(_sqlite3MallocZero(tls, uint64(u32(4)*_nNew)))
+ if (_p.X11) != 0 {
+ _sqlite3EndBenignMalloc(tls)
+ }
func() {
- if (int32(_enc) & i32(3)) != (int32(_enc) & i32(-9)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70718), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2608)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_p.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45539), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1ResizeHashØ00__func__Ø000))), unsafe.Pointer(str(2553)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if (int32(_pVal.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70719), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2648)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32(_pVal.X1) & i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70720), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2708)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (int32(_pVal.X1) & i32(18)) == 0 {
- goto _11
+ if _apNew == nil {
+ goto _9
}
-
- if func() int32 {
- if (int32(_pVal.X1) & i32(16384)) != 0 {
- return _sqlite3VdbeMemExpandBlob(tls, _pVal)
- }
- return i32(0)
- }() == 0 {
- goto _14
+ _i = uint32(i32(0))
+_10:
+ if _i >= (_p.X11) {
+ goto _13
}
- return nil
-
+ _5_pNext = *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X12)) + 4*uintptr(_i)))
_14:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(2))
- sink12 = *p
- }
- if int32(_pVal.X2) == (int32(_enc) & i32(-9)) {
- goto _15
- }
-
- _sqlite3VdbeChangeEncoding(tls, _pVal, int32(_enc)&i32(-9))
-_15:
- if (int32(_enc)&i32(8)) == i32(0) || i32(1) != (i32(1)&int32(uintptr(unsafe.Pointer(_pVal.X5)))) {
- goto _17
+ if store10(&_5_pPage, _5_pNext) != nil {
+ _6_h = (_5_pPage.X1) % _nNew
+ _5_pNext = (*XPgHdr1)(_5_pPage.X5)
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pPage)) + uintptr(16 /* X5 */))))) = *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apNew)) + 4*uintptr(_6_h)))
+ *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apNew)) + 4*uintptr(_6_h))) = _5_pPage
+ goto _14
}
+ _i += 1
+ goto _10
+_13:
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p.X12))
+ *(***XPgHdr1)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))))) = _apNew
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = _nNew
+_9:
+}
- func() {
- if (int32(_pVal.X1) & i32(6144)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70728), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2740)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3VdbeMemMakeWriteable(tls, _pVal) == i32(0) {
- goto _20
- }
- return nil
+var _pcache1ResizeHashØ00__func__Ø000 [18]int8
-_20:
-_17:
- _sqlite3VdbeMemNulTerminate(tls, _pVal)
- goto _21
+func init() {
+ crt.Xstrncpy(nil, &_pcache1ResizeHashØ00__func__Ø000[0], str(2575), 18)
+}
-_11:
- _sqlite3VdbeMemStringify(tls, _pVal, _enc, uint8(i32(0)))
- func() {
- if i32(0) != (i32(1) & int32(uintptr(unsafe.Pointer(_pVal.X5)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70736), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2784)))
- crt.X__builtin_abort(tls)
- }
- }()
-_21:
- func() {
- if int32(_pVal.X2) != (int32(_enc)&i32(-9)) && (*Xsqlite3)(_pVal.X9) != nil && ((*Xsqlite3)(_pVal.X9).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70738), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(2820)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_pVal.X2) != (int32(_enc) & i32(-9)) {
- goto _28
+// This (sqlite3EndBenignMalloc()) is called by SQLite code to indicate that
+// subsequent malloc failures are benign. A call to sqlite3EndBenignMalloc()
+// indicates that subsequent malloc failures are non-benign.
+func _sqlite3BeginBenignMalloc(tls *crt.TLS) {
+ if (_sqlite3Hooks.X0) != nil {
+ (_sqlite3Hooks.X0)(tls)
}
- return (unsafe.Pointer)(_pVal.X5)
-
-_28:
- return nil
}
-var _valueToTextØ00__func__Ø000 [12]int8 // -
+var _sqlite3Hooks TBenignMallocHooks
-func init() {
- crt.Xstrncpy(nil, &_valueToTextØ00__func__Ø000[0], str(2904), 12)
+func _sqlite3EndBenignMalloc(tls *crt.TLS) {
+ if (_sqlite3Hooks.X1) != nil {
+ (_sqlite3Hooks.X1)(tls)
+ }
}
-func _sqlite3VdbeMemExpandBlob(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:69921:1
- var _nByte int32 // sqlite3.c:69922:7
- _ = _nByte
+// Implementation of the sqlite3_pcache.xDestroy method.
+//
+// Destroy a cache allocated using pcache1Create().
+func _pcache1Destroy(tls *crt.TLS, _p unsafe.Pointer) {
+ var _pCache *XPCache1
+ var _pGroup *XPGroup
+ _pCache = (*XPCache1)(_p)
+ _pGroup = (*XPGroup)(_pCache.X0)
func() {
- if (int32(_pMem.X1) & i32(16384)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(2916)))
+ if (_pCache.X4) == 0 && ((_pCache.X6) != uint32(i32(0)) || (_pCache.X5) != uint32(i32(0))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46152), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1DestroyØ00__func__Ø000))), unsafe.Pointer(str(2593)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_pMem.X1) & i32(16)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(2940)))
+ if (*Xsqlite3_mutex)(_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46153), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1DestroyØ00__func__Ø000))), unsafe.Pointer(str(2483)))
crt.X__builtin_abort(tls)
}
}()
+ if (_pCache.X10) != 0 {
+ _pcache1TruncateUnsafe(tls, _pCache, uint32(i32(0)))
+ }
func() {
- if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69925), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(2964)))
+ if (_pGroup.X1) < (_pCache.X6) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46155), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1DestroyØ00__func__Ø000))), unsafe.Pointer(str(2652)))
crt.X__builtin_abort(tls)
}
}()
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(4 /* X1 */)))
+ *p = (*p) - (_pCache.X6)
+ sink5 = *p
+ }
func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ if (_pGroup.X2) < (_pCache.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46157), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1DestroyØ00__func__Ø000))), unsafe.Pointer(str(2685)))
crt.X__builtin_abort(tls)
}
}()
- _nByte = (_pMem.X4) + (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
- if _nByte > i32(0) {
- goto _9
- }
-
- _nByte = i32(1)
-_9:
- if _sqlite3VdbeMemGrow(tls, _pMem, _nByte, i32(1)) == 0 {
- goto _10
- }
- return _sqlite3NomemError(tls, i32(69934))
-
-_10:
- crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5))+1*uintptr(_pMem.X4)))), i32(0), uint32(*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))))
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */)))
- *p = (*p) + (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
- sink1 = *p
- }
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-16897))
- sink12 = *p
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(8 /* X2 */)))
+ *p = (*p) - (_pCache.X5)
+ sink5 = *p
}
- return i32(0)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(12 /* X3 */))) = ((_pGroup.X1) + uint32(i32(10))) - (_pGroup.X2)
+ _pcache1EnforceMaxPage(tls, _pCache)
+ func() {
+ if (*Xsqlite3_mutex)(_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46161), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1DestroyØ00__func__Ø000))), unsafe.Pointer(str(2483)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ Xsqlite3_free(tls, _pCache.X14)
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pCache.X12))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pCache))
}
-var _sqlite3VdbeMemExpandBlobØ00__func__Ø000 [25]int8 // -
+var _pcache1DestroyØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemExpandBlobØ00__func__Ø000[0], str(3044), 25)
+ crt.Xstrncpy(nil, &_pcache1DestroyØ00__func__Ø000[0], str(2718), 15)
}
-func _sqlite3VdbeMemGrow(tls *crt.TLS, _pMem *XMem, _n int32, _bPreserve int32) (r0 int32) { // sqlite3.c:69821:1
+// Discard all pages from cache pCache with a page number (key value)
+// greater than or equal to iLimit. Any pinned pages that meet this
+// criteria are unpinned before they are discarded.
+//
+// The PCache mutex must be held when this function is called.
+func _pcache1TruncateUnsafe(tls *crt.TLS, _pCache *XPCache1, _iLimit uint32) {
+ var _nPage int32
+ var _h, _iStop uint32
+ var _3_pPage *XPgHdr1
+ var _3_pp **XPgHdr1
+ _nPage = i32(0)
func() {
- if _sqlite3VdbeCheckMemInvariants(tls, _pMem) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(3072)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45641), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1TruncateUnsafeØ00__func__Ø000))), unsafe.Pointer(str(2733)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69823), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(2964)))
+ if (_pCache.X8) < _iLimit {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45642), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1TruncateUnsafeØ00__func__Ø000))), unsafe.Pointer(str(2775)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _bPreserve != i32(0) && (int32(_pMem.X1)&i32(18)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69828), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(3108)))
+ if (_pCache.X11) <= uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45643), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1TruncateUnsafeØ00__func__Ø000))), unsafe.Pointer(str(2801)))
crt.X__builtin_abort(tls)
}
}()
+ if ((_pCache.X8) - _iLimit) < (_pCache.X11) {
+ _h = _iLimit % (_pCache.X11)
+ _iStop = (_pCache.X8) % (_pCache.X11)
+ _nPage = i32(-10)
+ goto _7
+ }
+ _h = (_pCache.X11) / uint32(i32(2))
+ _iStop = _h - uint32(i32(1))
+_7:
+_8:
func() {
- if (_pMem.X7) != i32(0) && (_pMem.X7) != _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69831), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(3156)))
+ if _h >= (_pCache.X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45661), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1TruncateUnsafeØ00__func__Ø000))), unsafe.Pointer(str(2819)))
crt.X__builtin_abort(tls)
}
}()
- if _n >= i32(32) {
- goto _10
- }
-
- _n = i32(32)
-_10:
- if _bPreserve == 0 || (_pMem.X7) <= i32(0) || (_pMem.X5) != (_pMem.X6) {
- goto _13
- }
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = store0((**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(20 /* X6 */))), (*int8)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X5), uint64(_n))))
- _bPreserve = i32(0)
- goto _14
-
+ _3_pp = (**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_h)))
_13:
- if (_pMem.X7) <= i32(0) {
+ if store10(&_3_pPage, *_3_pp) == nil {
+ goto _14
+ }
+ if (_3_pPage.X1) < _iLimit {
goto _15
}
-
- _sqlite3DbFreeNN(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(40 /* X10 */))) -= 1
+ *_3_pp = (*XPgHdr1)(_3_pPage.X5)
+ if (_3_pPage.X2) == 0 {
+ _pcache1PinPage(tls, _3_pPage)
+ }
+ _pcache1FreePage(tls, _3_pPage)
+ goto _17
_15:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = (*int8)(_sqlite3DbMallocRaw(tls, (*Xsqlite3)(_pMem.X9), uint64(_n)))
+ _3_pp = (**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pPage)) + uintptr(16 /* X5 */)))))
+ if _nPage >= i32(0) {
+ _nPage += 1
+ }
+_17:
+ goto _13
_14:
- if (_pMem.X6) != nil {
- goto _16
+ if _h == _iStop {
+ goto _10
}
-
- _sqlite3VdbeMemSetNull(tls, _pMem)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = i32(0)
- return _sqlite3NomemError(tls, i32(69845))
-
-_16:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
- if _bPreserve == 0 || (_pMem.X5) == nil || func() int32 {
- if (_pMem.X5) != (_pMem.X6) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69850), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ _h = (_h + uint32(i32(1))) % (_pCache.X11)
+ goto _8
+_10:
+ func() {
+ if _nPage >= i32(0) && (_pCache.X10) != uint32(_nPage) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45677), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1TruncateUnsafeØ00__func__Ø000))), unsafe.Pointer(str(2835)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _22
- }
+ }
+ }()
+}
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pMem.X6), (unsafe.Pointer)(_pMem.X5), uint32(_pMem.X4))
-_22:
- if (int32(_pMem.X1) & i32(1024)) == i32(0) {
- goto _23
- }
+var _pcache1TruncateUnsafeØ00__func__Ø000 [22]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pcache1TruncateUnsafeØ00__func__Ø000[0], str(2877), 22)
+}
+// This function is used internally to remove the page pPage from the
+// PGroup LRU list, if is part of it. If pPage is not part of the PGroup
+// LRU list, then this function is a no-op.
+//
+// The PGroup mutex must be held when this function is called.
+func _pcache1PinPage(tls *crt.TLS, _pPage *XPgHdr1) (r0 *XPgHdr1) {
+ var _pCache *XPCache1
func() {
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_pMem.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{nil})) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_pMem.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69854), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(3244)))
+ if _pPage == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45567), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PinPageØ00__func__Ø000))), unsafe.Pointer(str(2899)))
crt.X__builtin_abort(tls)
}
}()
- (_pMem.X10)(tls, (unsafe.Pointer)(_pMem.X5))
-_23:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _pMem.X6
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-7169))
- sink12 = *p
- }
- return i32(0)
-}
-
-func _sqlite3VdbeCheckMemInvariants(tls *crt.TLS, _p *XMem) (r0 int32) { // sqlite3.c:69729:1
func() {
- if (int32(_p.X1)&i32(1024)) != i32(0) && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_p.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{nil})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69733), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(3288)))
+ if int32(_pPage.X2) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45568), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PinPageØ00__func__Ø000))), unsafe.Pointer(str(2908)))
crt.X__builtin_abort(tls)
}
}()
+ _pCache = (*XPCache1)(_pPage.X6)
func() {
- if (int32(_p.X1)&i32(1024)) != i32(0) && (_p.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(3328)))
+ if (*XPgHdr1)(_pPage.X7) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45570), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PinPageØ00__func__Ø000))), unsafe.Pointer(str(2927)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_p.X1) & i32(12)) == i32(12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69742), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(3372)))
+ if (*XPgHdr1)(_pPage.X8) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45571), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PinPageØ00__func__Ø000))), unsafe.Pointer(str(2943)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_p.X1)&i32(1)) != i32(0) && (int32(_p.X1)&i32(30)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69745), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(3424)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45572), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PinPageØ00__func__Ø000))), unsafe.Pointer(str(2733)))
crt.X__builtin_abort(tls)
}
}()
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X8) + uintptr(24 /* X7 */))))) = (*XPgHdr1)(_pPage.X7)
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X7) + uintptr(28 /* X8 */))))) = (*XPgHdr1)(_pPage.X8)
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(24 /* X7 */))))) = nil
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(28 /* X8 */))))) = nil
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(12 /* X2 */))) = uint8(i32(1))
func() {
- if (_p.X7) != i32(0) && (_p.X7) != _sqlite3DbMallocSize(tls, (*Xsqlite3)(_p.X9), (unsafe.Pointer)(_p.X6)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(3504)))
+ if int32(_pPage.X4) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45578), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PinPageØ00__func__Ø000))), unsafe.Pointer(str(2959)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X1)&i32(18)) == 0 || (_p.X4) <= i32(0) {
- goto _15
- }
-
func() {
- if (((func() int32 {
- if ((_p.X7) > i32(0)) && ((_p.X5) == (_p.X6)) {
- return i32(1)
- }
- return i32(0)
- }() + func() int32 {
- if (int32(_p.X1) & i32(1024)) != i32(0) {
- return i32(1)
- }
- return i32(0)
- }()) + func() int32 {
- if (int32(_p.X1) & i32(4096)) != i32(0) {
- return i32(1)
- }
- return i32(0)
- }()) + func() int32 {
- if (int32(_p.X1) & i32(2048)) != i32(0) {
- return i32(1)
- }
- return i32(0)
- }()) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69761), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(3576)))
+ if int32((*XPgHdr1)(unsafe.Pointer(uintptr(_pCache.X0)+uintptr(20 /* X5 */))).X4) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45579), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PinPageØ00__func__Ø000))), unsafe.Pointer(str(2978)))
crt.X__builtin_abort(tls)
}
}()
-_15:
- return i32(1)
-}
-
-var _sqlite3VdbeCheckMemInvariantsØ00__func__Ø000 [30]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000[0], str(3736), 30)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(36 /* X9 */))) -= 1
+ return _pPage
}
-var _sqlite3VdbeMemGrowØ00__func__Ø000 [19]int8 // -
+var _pcache1PinPageØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemGrowØ00__func__Ø000[0], str(3768), 19)
+ crt.Xstrncpy(nil, &_pcache1PinPageØ00__func__Ø000[0], str(3010), 15)
}
-func _sqlite3DbReallocOrFree(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24940:1
- var _pNew unsafe.Pointer // sqlite3.c:24941:8
- _ = _pNew
- _pNew = _sqlite3DbRealloc(tls, _db, _p, _n)
- if _pNew != nil {
- goto _0
- }
-
- _sqlite3DbFree(tls, _db, _p)
-_0:
- return _pNew
-}
-
-func _sqlite3DbMallocRaw(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24854:1
- var _p unsafe.Pointer // sqlite3.c:24855:8
- _ = _p
- if _db == nil {
- goto _0
- }
- return _sqlite3DbMallocRawNN(tls, _db, _n)
-
-_0:
- _p = _sqlite3Malloc(tls, _n)
- return _p
-}
-
-func _sqlite3VdbeMemSetNull(tls *crt.TLS, _pMem *XMem) { // sqlite3.c:70360:1
- if (int32(_pMem.X1) & i32(9312)) == i32(0) {
- goto _0
- }
-
- _vdbeMemClearExternAndSetNull(tls, _pMem)
- goto _1
-
-_0:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(1))
-_1:
-}
-
-func _vdbeMemClearExternAndSetNull(tls *crt.TLS, _p *XMem) { // sqlite3.c:70063:1
- var _4_pFrame *XVdbeFrame // sqlite3.c:70078:15
- _ = _4_pFrame
+// Free a page object allocated by pcache1AllocPage().
+func _pcache1FreePage(tls *crt.TLS, _p *XPgHdr1) {
+ var _pCache *XPCache1
func() {
- if (*Xsqlite3)(_p.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70064), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(3788)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45456), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FreePageØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
+ _pCache = (*XPCache1)(_p.X6)
func() {
- if (int32(_p.X1) & i32(9312)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70065), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(3836)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XPGroup)((*XPCache1)(_p.X6).X0).X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45458), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FreePageØ00__func__Ø000))), unsafe.Pointer(str(3025)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X1) & i32(8192)) == 0 {
+ if (_p.X3) != 0 {
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))))) = (*XPgHdr1)(_pCache.X13)
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(52 /* X13 */))))) = _p
goto _5
}
-
- _sqlite3VdbeMemFinalize(tls, _p, (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))))))
- func() {
- if (int32(_p.X1) & i32(8192)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70068), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(3856)))
- crt.X__builtin_abort(tls)
- }
- }()
+ _pcache1Free(tls, (*Xsqlite3_pcache_page)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))).X0)
_5:
- if (int32(_p.X1) & i32(1024)) == 0 {
- goto _8
+ if (_pCache.X4) != 0 {
+ *(*uint32)(unsafe.Pointer(uintptr(_pCache.X0) + uintptr(16 /* X4 */))) -= 1
}
+}
- func() {
- if (int32(_p.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70072), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(3880)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_p.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))})) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_p.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{nil})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70073), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(3908)))
- crt.X__builtin_abort(tls)
- }
- }()
- (_p.X10)(tls, (unsafe.Pointer)(_p.X5))
- goto _14
-
-_8:
- if (int32(_p.X1) & i32(32)) == 0 {
- goto _15
- }
+var _pcache1FreePageØ00__func__Ø000 [16]int8
- _sqlite3RowSetClear(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))))))
- goto _16
+func init() {
+ crt.Xstrncpy(nil, &_pcache1FreePageØ00__func__Ø000[0], str(3070), 16)
+}
-_15:
- if (int32(_p.X1) & i32(64)) == 0 {
- goto _17
+// Free an allocated buffer obtained from pcache1Alloc().
+func _pcache1Free(tls *crt.TLS, _p unsafe.Pointer) {
+ var _3_nFreed int32
+ var _1_pSlot *Xsqlite3_file
+ if _p == nil {
+ return
+ }
+ if (uint32(uintptr(_p)) >= uint32(uintptr(_pcache1_g.X7))) && (uint32(uintptr(_p)) < uint32(uintptr(_pcache1_g.X8))) {
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+ _sqlite3StatusDown(tls, i32(1), i32(1))
+ _1_pSlot = (*Xsqlite3_file)(_p)
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSlot)) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)(_pcache1_g.X10)
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(88 /* X10 */))))) = _1_pSlot
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(92 /* X11 */))) += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(96 /* X12 */))) = bool2int((_pcache1_g.X11) < (_pcache1_g.X6))
+ func() {
+ if (_pcache1_g.X11) > (_pcache1_g.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45365), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FreeØ00__func__Ø000))), unsafe.Pointer(str(3086)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+ goto _5
}
-
- _4_pFrame = (*XVdbeFrame)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
- *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFrame)) + uintptr(4 /* X1 */))))) = (*XVdbeFrame)((*TVdbe)(_4_pFrame.X0).X39)
- *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_4_pFrame.X0) + uintptr(184 /* X39 */))))) = _4_pFrame
-_17:
-_16:
-_14:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = uint16(i32(1))
+ i32(0)
+ _3_nFreed = i32(0)
+ _3_nFreed = _sqlite3MallocSize(tls, _p)
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+ _sqlite3StatusDown(tls, i32(2), _3_nFreed)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+ Xsqlite3_free(tls, _p)
+_5:
}
-var _vdbeMemClearExternAndSetNullØ00__func__Ø000 [29]int8 // -
+var _pcache1FreeØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeMemClearExternAndSetNullØ00__func__Ø000[0], str(3948), 29)
+ crt.Xstrncpy(nil, &_pcache1FreeØ00__func__Ø000[0], str(3119), 12)
}
-func _sqlite3VdbeMemFinalize(tls *crt.TLS, _pMem *XMem, _pFunc *XFuncDef) (r0 int32) { // sqlite3.c:70031:1
- var _rc int32 // sqlite3.c:70032:7
- _ = _rc
- var _1_ctx Xsqlite3_context // sqlite3.c:70034:21
- _ = _1_ctx
- var _1_t XMem // sqlite3.c:70035:9
- _ = _1_t
- _rc = i32(0)
- if func() int32 {
- if (_pFunc != nil) && ((*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_pFunc.X5)}))) != nil) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70033), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _3
- }
-
- func() {
- if (int32(_pMem.X1)&i32(1)) == i32(0) && _pFunc != (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70036), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(3980)))
- crt.X__builtin_abort(tls)
- }
- }()
+// If there are currently more than nMaxPage pages allocated, try
+// to recycle pages to reduce the number allocated to nMaxPage.
+func _pcache1EnforceMaxPage(tls *crt.TLS, _pCache *XPCache1) {
+ var _p *XPgHdr1
+ var _pGroup *XPGroup
+ _pGroup = (*XPGroup)(_pCache.X0)
func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pGroup.X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45613), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1EnforceMaxPageØ00__func__Ø000))), unsafe.Pointer(str(3131)))
crt.X__builtin_abort(tls)
}
}()
- crt.Xmemset(tls, (unsafe.Pointer)(&_1_ctx), i32(0), u32(32))
- crt.Xmemset(tls, (unsafe.Pointer)(&_1_t), i32(0), u32(48))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_t)) + uintptr(8 /* X1 */))) = uint16(i32(1))
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_t)) + uintptr(32 /* X9 */))))) = (*Xsqlite3)(_pMem.X9)
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_ctx)) + uintptr(0 /* X0 */))))) = &_1_t
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_ctx)) + uintptr(8 /* X2 */))))) = _pMem
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_ctx)) + uintptr(4 /* X1 */))))) = _pFunc
- (*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_pFunc.X5)})))(tls, &_1_ctx)
+_2:
+ if ((_pGroup.X4) > (_pGroup.X1)) && (int32(store10(&_p, (*XPgHdr1)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */))).X8)).X4) == i32(0)) {
+ func() {
+ if (*XPGroup)((*XPCache1)(_p.X6).X0) != _pGroup {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45617), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1EnforceMaxPageØ00__func__Ø000))), unsafe.Pointer(str(3165)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_p.X2) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45618), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1EnforceMaxPageØ00__func__Ø000))), unsafe.Pointer(str(3191)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pcache1PinPage(tls, _p)
+ _pcache1RemoveFromHash(tls, _p, i32(1))
+ goto _2
+ }
+ if ((_pCache.X10) == uint32(i32(0))) && ((_pCache.X14) != nil) {
+ Xsqlite3_free(tls, _pCache.X14)
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(56 /* X14 */))) = (unsafe.Pointer)(store10((**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache))+uintptr(52 /* X13 */))))), nil))
+ }
+}
+
+var _pcache1EnforceMaxPageØ00__func__Ø000 [22]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pcache1EnforceMaxPageØ00__func__Ø000[0], str(3206), 22)
+}
+
+// Remove the page supplied as an argument from the hash table
+// (PCache1.apHash structure) that it is currently stored in.
+// Also free the page if freePage is true.
+//
+// The PGroup mutex must be held when this function is called.
+func _pcache1RemoveFromHash(tls *crt.TLS, _pPage *XPgHdr1, _freeFlag int32) {
+ var _h uint32
+ var _pCache *XPCache1
+ var _pp **XPgHdr1
+ _pCache = (*XPCache1)(_pPage.X6)
func() {
- if (int32(_pMem.X1) & i32(1024)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(4032)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45597), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1RemoveFromHashØ00__func__Ø000))), unsafe.Pointer(str(2733)))
crt.X__builtin_abort(tls)
}
}()
- if (_pMem.X7) <= i32(0) {
- goto _12
+ _h = (_pPage.X1) % (_pCache.X11)
+ _pp = (**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_h)))
+_2:
+ if (*_pp) == _pPage {
+ goto _5
+ }
+ _pp = (**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_pp)) + uintptr(16 /* X5 */)))))
+ goto _2
+_5:
+ *_pp = (*XPgHdr1)((*_pp).X5)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(40 /* X10 */))) -= 1
+ if _freeFlag != 0 {
+ _pcache1FreePage(tls, _pPage)
}
-
- _sqlite3DbFreeNN(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
-_12:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pMem), (unsafe.Pointer)(&_1_t), u32(48))
- _rc = _1_ctx.X5
-_3:
- return _rc
}
-var _sqlite3VdbeMemFinalizeØ00__func__Ø000 [23]int8 // -
+var _pcache1RemoveFromHashØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemFinalizeØ00__func__Ø000[0], str(4060), 23)
+ crt.Xstrncpy(nil, &_pcache1RemoveFromHashØ00__func__Ø000[0], str(3228), 22)
}
-func _sqlite3RowSetClear(tls *crt.TLS, _p *XRowSet) { // sqlite3.c:46423:1
- var _pChunk *TRowSetChunk // sqlite3.c:46424:22
- _ = _pChunk
- var _pNextChunk *TRowSetChunk // sqlite3.c:46424:31
- _ = _pNextChunk
- _pChunk = (*TRowSetChunk)(_p.X0)
-_0:
- if _pChunk == nil {
- goto _3
+// Implementation of the sqlite3_pcache.xCachesize method.
+//
+// Configure the cache_size limit for a cache.
+func _pcache1Cachesize(tls *crt.TLS, _p unsafe.Pointer, _nMax int32) {
+ var _pCache *XPCache1
+ var _1_pGroup *XPGroup
+ _pCache = (*XPCache1)(_p)
+ if (_pCache.X4) != 0 {
+ _1_pGroup = (*XPGroup)(_pCache.X0)
+ func() {
+ if (*Xsqlite3_mutex)(_1_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45804), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1CachesizeØ00__func__Ø000))), unsafe.Pointer(str(2483)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pGroup)) + uintptr(4 /* X1 */)))
+ *p = (*p) + (uint32(_nMax) - (_pCache.X6))
+ sink5 = *p
+ }
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pGroup)) + uintptr(12 /* X3 */))) = ((_1_pGroup.X1) + uint32(i32(10))) - (_1_pGroup.X2)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(24 /* X6 */))) = uint32(_nMax)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(28 /* X7 */))) = ((_pCache.X6) * uint32(i32(9))) / uint32(i32(10))
+ _pcache1EnforceMaxPage(tls, _pCache)
+ func() {
+ if (*Xsqlite3_mutex)(_1_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45810), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1CachesizeØ00__func__Ø000))), unsafe.Pointer(str(2483)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
+}
- _pNextChunk = (*TRowSetChunk)(_pChunk.X0)
- _sqlite3DbFree(tls, (*Xsqlite3)(_p.X1), (unsafe.Pointer)(_pChunk))
- _pChunk = _pNextChunk
- goto _0
+var _pcache1CachesizeØ00__func__Ø000 [17]int8
-_3:
- *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = nil
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = uint16(i32(0))
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = nil
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = nil
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))))) = nil
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */))) = uint16(i32(1))
+func init() {
+ crt.Xstrncpy(nil, &_pcache1CachesizeØ00__func__Ø000[0], str(3250), 17)
}
-func _sqlite3VdbeChangeEncoding(tls *crt.TLS, _pMem *XMem, _desiredEnc int32) (r0 int32) { // sqlite3.c:69786:1
- var _rc int32 // sqlite3.c:69788:7
- _ = _rc
+// Implementation of the sqlite3_pcache.xPagecount method.
+func _pcache1Pagecount(tls *crt.TLS, _p unsafe.Pointer) (r0 int32) {
+ var _n int32
+ var _pCache *XPCache1
+ _pCache = (*XPCache1)(_p)
func() {
- if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69790), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(2964)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45839), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PagecountØ00__func__Ø000))), unsafe.Pointer(str(3267)))
crt.X__builtin_abort(tls)
}
}()
+ _n = int32(_pCache.X10)
func() {
- if _desiredEnc != i32(1) && _desiredEnc != i32(2) && _desiredEnc != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(4084)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45841), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1PagecountØ00__func__Ø000))), unsafe.Pointer(str(3267)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pMem.X1)&i32(2)) != 0 && int32(_pMem.X2) != _desiredEnc {
- goto _7
- }
- return i32(0)
+ return _n
+}
-_7:
+var _pcache1PagecountØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pcache1PagecountØ00__func__Ø000[0], str(3294), 17)
+}
+
+func _pcache1Fetch(tls *crt.TLS, _p unsafe.Pointer, _iKey uint32, _createFlag int32) (r0 *Xsqlite3_pcache_page) {
+ var _pCache *XPCache1
+ _pCache = (*XPCache1)(_p)
+ i32(0)
func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ if (_pCache.X4) == 0 && _createFlag == i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46037), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchØ00__func__Ø000))), unsafe.Pointer(str(3311)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _sqlite3VdbeMemTranslate(tls, _pMem, uint8(_desiredEnc))
func() {
- if _rc != i32(0) && _rc != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(4168)))
+ if (_pCache.X4) == 0 && (_pCache.X5) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46038), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchØ00__func__Ø000))), unsafe.Pointer(str(3347)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _rc != i32(0) && int32(_pMem.X2) == _desiredEnc {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69806), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(4204)))
+ if (_pCache.X4) != i32(0) && (_pCache.X5) != uint32(i32(10)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46039), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchØ00__func__Ø000))), unsafe.Pointer(str(3385)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _rc != i32(7) && int32(_pMem.X2) != _desiredEnc {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69807), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(4244)))
+ if (_pCache.X5) != uint32(i32(0)) && (_pCache.X4) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46040), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchØ00__func__Ø000))), unsafe.Pointer(str(3427)))
crt.X__builtin_abort(tls)
}
}()
- return _rc
+ func() {
+ if (_pCache.X11) <= uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46041), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchØ00__func__Ø000))), unsafe.Pointer(str(3465)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return (*Xsqlite3_pcache_page)(unsafe.Pointer(_pcache1FetchNoMutex(tls, _p, _iKey, _createFlag)))
}
-var _sqlite3VdbeChangeEncodingØ00__func__Ø000 [26]int8 // -
+var _pcache1FetchØ00__func__Ø000 [13]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pcache1FetchØ00__func__Ø000[0], str(3481), 13)
+}
+
+// Implementation of the sqlite3_pcache.xFetch method.
+//
+// Fetch a page by key value.
+//
+// Whether or not a new page may be allocated by this function depends on
+// the value of the createFlag argument. 0 means do not allocate a new
+// page. 1 means allocate a new page if space is easily available. 2
+// means to try really hard to allocate a new page.
+//
+// For a non-purgeable cache (a cache used as the storage for an in-memory
+// database) there is really no difference between createFlag 1 and 2. So
+// the calling function (pcache.c) will never have a createFlag of 1 on
+// a non-purgeable cache.
+//
+// There are three different approaches to obtaining space for a page,
+// depending on the value of parameter createFlag (which may be 0, 1 or 2).
+//
+// 1. Regardless of the value of createFlag, the cache is searched for a
+// copy of the requested page. If one is found, it is returned.
+//
+// 2. If createFlag==0 and the page is not already in the cache, NULL is
+// returned.
+//
+// 3. If createFlag is 1, and the page is not already in the cache, then
+// return NULL (do not allocate a new page) if any of the following
+// conditions are true:
+//
+// (a) the number of pages pinned by the cache is greater than
+// PCache1.nMax, or
+//
+// (b) the number of pages pinned by the cache is greater than
+// the sum of nMax for all purgeable caches, less the sum of
+// nMin for all other purgeable caches, or
+//
+// 4. If none of the first three conditions apply and the cache is marked
+// as purgeable, and if one of the following is true:
+//
+// (a) The number of pages allocated for the cache is already
+// PCache1.nMax, or
+//
+// (b) The number of pages allocated for all purgeable caches is
+// already equal to or greater than the sum of nMax for all
+// purgeable caches,
+//
+// (c) The system is under memory pressure and wants to avoid
+// unnecessary pages cache entry allocations
+//
+// then attempt to recycle a page from the LRU list. If it is the right
+// size, return the recycled buffer. Otherwise, free the buffer and
+// proceed to step 5.
+//
+// 5. Otherwise, allocate and return a new page buffer.
+//
+// There are two versions of this routine. pcache1FetchWithMutex() is
+// the general case. pcache1FetchNoMutex() is a faster implementation for
+// the common case where pGroup->mutex is NULL. The pcache1Fetch() wrapper
+// invokes the appropriate routine.
+func _pcache1FetchNoMutex(tls *crt.TLS, _p unsafe.Pointer, _iKey uint32, _createFlag int32) (r0 *XPgHdr1) {
+ var _pCache *XPCache1
+ var _pPage *XPgHdr1
+ _pCache = (*XPCache1)(_p)
+ _pPage = nil
+ _pPage = *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_iKey%(_pCache.X11))))
+_0:
+ if (_pPage != nil) && ((_pPage.X1) != _iKey) {
+ _pPage = (*XPgHdr1)(_pPage.X5)
+ goto _0
+ }
+ if _pPage == nil {
+ goto _3
+ }
+ if (_pPage.X2) == 0 {
+ return _pcache1PinPage(tls, _pPage)
+ }
+ return _pPage
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeChangeEncodingØ00__func__Ø000[0], str(4288), 26)
+_3:
+ if _createFlag != 0 {
+ return _pcache1FetchStage2(tls, _pCache, _iKey, _createFlag)
+ }
+ return nil
}
-func _sqlite3VdbeMemTranslate(tls *crt.TLS, _pMem *XMem, _desiredEnc uint8) (r0 int32) { // sqlite3.c:27325:1
- var _len int32 // sqlite3.c:27326:7
- _ = _len
- var _zOut *uint8 // sqlite3.c:27327:17
- _ = _zOut
- var _zIn *uint8 // sqlite3.c:27328:17
- _ = _zIn
- var _zTerm *uint8 // sqlite3.c:27329:17
- _ = _zTerm
- var _z *uint8 // sqlite3.c:27330:17
- _ = _z
- var _c uint32 // sqlite3.c:27331:16
- _ = _c
- var _1_temp uint8 // sqlite3.c:27352:8
- _ = _1_temp
- var _1_rc int32 // sqlite3.c:27353:9
- _ = _1_rc
- var _28_c2 int32 // sqlite3.c:27425:9
- _ = _28_c2
- var _37_c2 int32 // sqlite3.c:27431:9
- _ = _37_c2
+// Implement steps 3, 4, and 5 of the pcache1Fetch() algorithm described
+// in the header of the pcache1Fetch() procedure.
+//
+// This steps are broken out into a separate procedure because they are
+// usually not needed, and by avoiding the stack initialization required
+// for these steps, the main pcache1Fetch() procedure can run faster.
+func _pcache1FetchStage2(tls *crt.TLS, _pCache *XPCache1, _iKey uint32, _createFlag int32) (r0 *XPgHdr1) {
+ var _nPinned, _6_h uint32
+ var _2_pOther *XPCache1
+ var _pPage *XPgHdr1
+ var _pGroup *XPGroup
+ _pGroup = (*XPGroup)(_pCache.X0)
+ _pPage = nil
func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27333), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ if (_pCache.X10) < (_pCache.X9) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45864), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchStage2Ø00__func__Ø000))), unsafe.Pointer(str(3494)))
crt.X__builtin_abort(tls)
}
}()
+ _nPinned = (_pCache.X10) - (_pCache.X9)
func() {
- if (int32(_pMem.X1) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27334), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4316)))
+ if (_pGroup.X3) != (((_pGroup.X1) + uint32(i32(10))) - (_pGroup.X2)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45866), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchStage2Ø00__func__Ø000))), unsafe.Pointer(str(3531)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(_pMem.X2) == int32(_desiredEnc) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27335), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4336)))
+ if (_pCache.X7) != (((_pCache.X6) * uint32(i32(9))) / uint32(i32(10))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45867), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchStage2Ø00__func__Ø000))), unsafe.Pointer(str(3592)))
crt.X__builtin_abort(tls)
}
}()
+ if (_createFlag == i32(1)) && (((_nPinned >= (_pGroup.X3)) || (_nPinned >= (_pCache.X7))) || (_pcache1UnderMemoryPressure(tls, _pCache) != 0 && ((_pCache.X9) < _nPinned))) {
+ return nil
+ }
+ if (_pCache.X10) >= (_pCache.X11) {
+ _pcache1ResizeHash(tls, _pCache)
+ }
func() {
- if int32(_pMem.X2) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27336), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4360)))
+ if (_pCache.X11) <= uint32(i32(0)) || (**XPgHdr1)(unsafe.Pointer(_pCache.X12)) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45877), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchStage2Ø00__func__Ø000))), unsafe.Pointer(str(3628)))
crt.X__builtin_abort(tls)
}
}()
+ if (_pCache.X4) == 0 || ((*XPgHdr1)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */))).X8).X4) != 0 || ((_pCache.X10)+uint32(i32(1))) < (_pCache.X6) && _pcache1UnderMemoryPressure(tls, _pCache) == 0 {
+ goto _18
+ }
+ _pPage = (*XPgHdr1)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(20 /* X5 */))).X8)
func() {
- if (_pMem.X4) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4376)))
+ if int32(_pPage.X2) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45886), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FetchStage2Ø00__func__Ø000))), unsafe.Pointer(str(2908)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pMem.X2) == i32(1) || int32(_desiredEnc) == i32(1) {
- goto _12
- }
-
- _1_rc = _sqlite3VdbeMemMakeWriteable(tls, _pMem)
- if _1_rc == i32(0) {
- goto _13
- }
-
- func() {
- if _1_rc != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4388)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _sqlite3NomemError(tls, i32(27357))
-
-_13:
- _zIn = (*uint8)(unsafe.Pointer(_pMem.X5))
- _zTerm = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIn)) + 1*uintptr((_pMem.X4)&i32(-2))))
-_16:
- if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
- goto _17
- }
-
- _1_temp = *_zIn
- *_zIn = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zIn)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(1))))))))
- *(*uintptr)(unsafe.Pointer(&_zIn)) += uintptr(1)
- *postInc11(&_zIn, 1) = _1_temp
- goto _16
-
-_17:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = _desiredEnc
- goto _translate_out
-
-_12:
- if int32(_desiredEnc) != i32(1) {
- goto _18
+ _pcache1RemoveFromHash(tls, _pPage, i32(0))
+ _pcache1PinPage(tls, _pPage)
+ _2_pOther = (*XPCache1)(_pPage.X6)
+ if (_2_pOther.X3) != (_pCache.X3) {
+ _pcache1FreePage(tls, _pPage)
+ _pPage = nil
+ goto _22
}
-
{
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */)))
- *p = (*p) & i32(-2)
- sink1 = *p
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(16 /* X4 */)))
+ *p = (*p) - uint32((_2_pOther.X4)-(_pCache.X4))
+ sink5 = *p
}
- _len = ((_pMem.X4) * i32(2)) + i32(1)
- goto _19
-
+_22:
_18:
- _len = ((_pMem.X4) * i32(2)) + i32(2)
-_19:
- _zIn = (*uint8)(unsafe.Pointer(_pMem.X5))
- _zTerm = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIn)) + 1*uintptr(_pMem.X4)))
- _zOut = (*uint8)(_sqlite3DbMallocRaw(tls, (*Xsqlite3)(_pMem.X9), uint64(_len)))
- if _zOut != nil {
- goto _20
- }
- return _sqlite3NomemError(tls, i32(27399))
-
-_20:
- _z = _zOut
- if int32(_pMem.X2) != i32(1) {
- goto _21
- }
-
- if int32(_desiredEnc) != i32(2) {
- goto _22
+ if _pPage == nil {
+ _pPage = _pcache1AllocPage(tls, _pCache, bool2int(_createFlag == i32(1)))
}
-
-_23:
- if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
+ if _pPage == nil {
goto _24
}
-
- _c = uint32(*postInc11(&_zIn, 1))
- if _c < uint32(i32(192)) {
- goto _25
- }
-
- _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Utf8Trans1)) + 1*uintptr(_c-uint32(i32(192))))))
-_26:
- if _zIn == _zTerm || (int32(*_zIn)&i32(192)) != i32(128) {
- goto _27
- }
-
- _c = (_c << uint(i32(6))) + uint32(i32(63)&int32(*postInc11(&_zIn, 1)))
- goto _26
-
-_27:
- if _c >= uint32(i32(128)) && (_c&u32(4294965248)) != uint32(i32(55296)) && (_c&u32(4294967294)) != uint32(i32(65534)) {
- goto _31
- }
-
- _c = uint32(i32(65533))
-_31:
-_25:
- if _c > uint32(i32(65535)) {
- goto _32
+ _6_h = _iKey % (_pCache.X11)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(40 /* X10 */))) += 1
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(8 /* X1 */))) = _iKey
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(16 /* X5 */))))) = *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_6_h)))
+ *(**XPCache1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(20 /* X6 */))))) = _pCache
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(28 /* X8 */))))) = nil
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(24 /* X7 */))))) = nil
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(12 /* X2 */))) = uint8(i32(1))
+ *(*unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))).X1) = nil
+ *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_6_h))) = _pPage
+ if _iKey > (_pCache.X8) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(32 /* X8 */))) = _iKey
}
-
- *postInc11(&_z, 1) = uint8(_c & uint32(i32(255)))
- *postInc11(&_z, 1) = uint8((_c >> uint(i32(8))) & uint32(i32(255)))
- goto _33
-
-_32:
- *postInc11(&_z, 1) = uint8(((_c >> uint(i32(10))) & uint32(i32(63))) + (((_c - uint32(i32(65536))) >> uint(i32(10))) & uint32(i32(192))))
- *postInc11(&_z, 1) = uint8(uint32(i32(216)) + (((_c - uint32(i32(65536))) >> uint(i32(18))) & uint32(i32(3))))
- *postInc11(&_z, 1) = uint8(_c & uint32(i32(255)))
- *postInc11(&_z, 1) = uint8(uint32(i32(220)) + ((_c >> uint(i32(8))) & uint32(i32(3))))
-_33:
- goto _23
-
_24:
- goto _34
-
-_22:
- func() {
- if int32(_desiredEnc) != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4408)))
- crt.X__builtin_abort(tls)
- }
- }()
-_37:
- if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
- goto _38
- }
-
- _c = uint32(*postInc11(&_zIn, 1))
- if _c < uint32(i32(192)) {
- goto _39
- }
-
- _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Utf8Trans1)) + 1*uintptr(_c-uint32(i32(192))))))
-_40:
- if _zIn == _zTerm || (int32(*_zIn)&i32(192)) != i32(128) {
- goto _41
- }
+ return _pPage
+}
- _c = (_c << uint(i32(6))) + uint32(i32(63)&int32(*postInc11(&_zIn, 1)))
- goto _40
+var _pcache1FetchStage2Ø00__func__Ø000 [19]int8
-_41:
- if _c >= uint32(i32(128)) && (_c&u32(4294965248)) != uint32(i32(55296)) && (_c&u32(4294967294)) != uint32(i32(65534)) {
- goto _45
- }
+func init() {
+ crt.Xstrncpy(nil, &_pcache1FetchStage2Ø00__func__Ø000[0], str(3662), 19)
+}
- _c = uint32(i32(65533))
-_45:
-_39:
- if _c > uint32(i32(65535)) {
- goto _46
+// Return true if it desirable to avoid allocating a new page cache
+// entry.
+//
+// If memory was allocated specifically to the page cache using
+// SQLITE_CONFIG_PAGECACHE but that memory has all been used, then
+// it is desirable to avoid allocating a new page cache entry because
+// presumably SQLITE_CONFIG_PAGECACHE was suppose to be sufficient
+// for all page cache needs and we should not need to spill the
+// allocation onto the heap.
+//
+// Or, the heap is used for all page cache memory but the heap is
+// under memory pressure, then again it is desirable to avoid
+// allocating a new page cache entry in order to avoid stressing
+// the heap even further.
+func _pcache1UnderMemoryPressure(tls *crt.TLS, _pCache *XPCache1) (r0 int32) {
+ if (_pcache1_g.X5) != 0 && (((_pCache.X1) + (_pCache.X2)) <= (_pcache1_g.X4)) {
+ return _pcache1_g.X12
}
+ return _sqlite3HeapNearlyFull(tls)
+}
- *postInc11(&_z, 1) = uint8((_c >> uint(i32(8))) & uint32(i32(255)))
- *postInc11(&_z, 1) = uint8(_c & uint32(i32(255)))
- goto _47
-
-_46:
- *postInc11(&_z, 1) = uint8(uint32(i32(216)) + (((_c - uint32(i32(65536))) >> uint(i32(18))) & uint32(i32(3))))
- *postInc11(&_z, 1) = uint8(((_c >> uint(i32(10))) & uint32(i32(63))) + (((_c - uint32(i32(65536))) >> uint(i32(10))) & uint32(i32(192))))
- *postInc11(&_z, 1) = uint8(uint32(i32(220)) + ((_c >> uint(i32(8))) & uint32(i32(3))))
- *postInc11(&_z, 1) = uint8(_c & uint32(i32(255)))
-_47:
- goto _37
-
-_38:
-_34:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32((uintptr(unsafe.Pointer(_z)) - uintptr(unsafe.Pointer(_zOut))) / 1)
- *postInc11(&_z, 1) = uint8(i32(0))
- goto _48
+// Return true if the heap is currently under memory pressure - in other
+// words if the amount of heap used is close to the limit set by
+// sqlite3_soft_heap_limit().
+func _sqlite3HeapNearlyFull(tls *crt.TLS) (r0 int32) {
+ return _mem0.X5
+}
-_21:
+// Allocate a new page object initially associated with cache pCache.
+func _pcache1AllocPage(tls *crt.TLS, _pCache *XPCache1, _benignMalloc int32) (r0 *XPgHdr1) {
+ var _pPg unsafe.Pointer
+ var _p *XPgHdr1
+ _p = nil
func() {
- if int32(_desiredEnc) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27421), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4436)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45408), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1AllocPageØ00__func__Ø000))), unsafe.Pointer(str(2733)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pMem.X2) != i32(2) {
- goto _51
- }
-
-_52:
- if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
- goto _53
- }
-
- _c = uint32(*postInc11(&_zIn, 1))
- {
- p := &_c
- *p = (*p) + uint32(int32(*postInc11(&_zIn, 1))<= uint32(i32(57344)) || uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
- goto _56
+ if ((*XPgHdr1)(_pCache.X13) != nil) || (((_pCache.X10) == uint32(i32(0))) && _pcache1InitBulk(tls, _pCache) != 0) {
+ _p = (*XPgHdr1)(_pCache.X13)
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(52 /* X13 */))))) = (*XPgHdr1)(_p.X5)
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))))) = nil
+ goto _5
}
-
- _28_c2 = int32(*postInc11(&_zIn, 1))
- {
- p := &_28_c2
- *p = (*p) + (int32(*postInc11(&_zIn, 1)) << uint(i32(8)))
- sink1 = *p
+ if _benignMalloc != 0 {
+ _sqlite3BeginBenignMalloc(tls)
}
- _c = (uint32(_28_c2&i32(1023)) + ((_c & uint32(i32(63))) << uint(i32(10)))) + (((_c & uint32(i32(960))) + uint32(i32(64))) << uint(i32(10)))
-_56:
- if _c >= uint32(i32(128)) {
- goto _57
+ _pPg = _pcache1Alloc(tls, _pCache.X3)
+ _p = (*XPgHdr1)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pPg) + 1*uintptr(_pCache.X1)))))
+ if _benignMalloc != 0 {
+ _sqlite3EndBenignMalloc(tls)
}
-
- *postInc11(&_z, 1) = uint8(_c & uint32(i32(255)))
- goto _58
-
-_57:
- if _c >= uint32(i32(2048)) {
- goto _59
+ if _pPg == nil {
+ return nil
}
-
- *postInc11(&_z, 1) = uint8(i32(192) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(31)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
- goto _60
-
-_59:
- if _c >= uint32(i32(65536)) {
- goto _61
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))) + uintptr(0 /* X0 */))) = _pPg
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))) + uintptr(4 /* X1 */))) = (unsafe.Pointer)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 32*uintptr(i32(1)))))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(13 /* X3 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(14 /* X4 */))) = uint8(i32(0))
+_5:
+ if (_pCache.X4) != 0 {
+ *(*uint32)(unsafe.Pointer(uintptr(_pCache.X0) + uintptr(16 /* X4 */))) += 1
}
+ return _p
+}
- *postInc11(&_z, 1) = uint8(i32(224) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(15)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
- goto _62
-
-_61:
- *postInc11(&_z, 1) = uint8(i32(240) + int32(uint8((_c>>uint(i32(18)))&uint32(i32(7)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(63)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
-_62:
-_60:
-_58:
- goto _52
+var _pcache1AllocPageØ00__func__Ø000 [17]int8
-_53:
- goto _63
+func init() {
+ crt.Xstrncpy(nil, &_pcache1AllocPageØ00__func__Ø000[0], str(3681), 17)
+}
-_51:
-_64:
- if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
- goto _65
+// Try to initialize the pCache->pFree and pCache->pBulk fields. Return
+// true if pCache->pFree ends up containing one or more free pages.
+func _pcache1InitBulk(tls *crt.TLS, _pCache *XPCache1) (r0 int32) {
+ var _4_nBulk int32
+ var _szBulk int64
+ var _zBulk *int8
+ var _5_pX *XPgHdr1
+ if (_pcache1_g.X3) == i32(0) {
+ return i32(0)
}
-
- _c = uint32(int32(*postInc11(&_zIn, 1)) << uint(i32(8)))
- {
- p := &_c
- *p = (*p) + uint32(*postInc11(&_zIn, 1))
- sink5 = *p
+ if (_pCache.X6) < uint32(i32(3)) {
+ return i32(0)
}
- if _c < uint32(i32(55296)) || _c >= uint32(i32(57344)) || uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
- goto _68
+ _sqlite3BeginBenignMalloc(tls)
+ if (_pcache1_g.X3) > i32(0) {
+ _szBulk = int64(_pCache.X3) * int64(_pcache1_g.X3)
+ goto _3
}
-
- _37_c2 = int32(*postInc11(&_zIn, 1)) << uint(i32(8))
- {
- p := &_37_c2
- *p = (*p) + int32(*postInc11(&_zIn, 1))
- sink1 = *p
+ _szBulk = int64(i32(-1024)) * int64(_pcache1_g.X3)
+_3:
+ if _szBulk > (int64(_pCache.X3) * int64(_pCache.X6)) {
+ _szBulk = int64(_pCache.X3) * int64(_pCache.X6)
}
- _c = (uint32(_37_c2&i32(1023)) + ((_c & uint32(i32(63))) << uint(i32(10)))) + (((_c & uint32(i32(960))) + uint32(i32(64))) << uint(i32(10)))
-_68:
- if _c >= uint32(i32(128)) {
- goto _69
+ _zBulk = (*int8)(store11((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache))+uintptr(56 /* X14 */))), _sqlite3Malloc(tls, uint64(_szBulk))))
+ _sqlite3EndBenignMalloc(tls)
+ if _zBulk == nil {
+ goto _5
}
-
- *postInc11(&_z, 1) = uint8(_c & uint32(i32(255)))
- goto _70
-
-_69:
- if _c >= uint32(i32(2048)) {
- goto _71
+ _4_nBulk = _sqlite3MallocSize(tls, (unsafe.Pointer)(_zBulk)) / (_pCache.X3)
+_6:
+ _5_pX = (*XPgHdr1)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBulk)) + 1*uintptr(_pCache.X1)))))
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pX))+uintptr(0 /* X0 */))))) + uintptr(0 /* X0 */))) = (unsafe.Pointer)(_zBulk)
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pX))+uintptr(0 /* X0 */))))) + uintptr(4 /* X1 */))) = (unsafe.Pointer)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pX)) + 32*uintptr(i32(1)))))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pX)) + uintptr(13 /* X3 */))) = uint8(i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pX)) + uintptr(14 /* X4 */))) = uint8(i32(0))
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pX)) + uintptr(16 /* X5 */))))) = (*XPgHdr1)(_pCache.X13)
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(52 /* X13 */))))) = _5_pX
+ {
+ p := &_zBulk
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_pCache.X3)))
+ sink0 = *p
}
-
- *postInc11(&_z, 1) = uint8(i32(192) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(31)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
- goto _72
-
-_71:
- if _c >= uint32(i32(65536)) {
- goto _73
+ if preInc1(&_4_nBulk, -1) != 0 {
+ goto _6
}
+_5:
+ return bool2int((*XPgHdr1)(_pCache.X13) != nil)
- *postInc11(&_z, 1) = uint8(i32(224) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(15)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
- goto _74
-
-_73:
- *postInc11(&_z, 1) = uint8(i32(240) + int32(uint8((_c>>uint(i32(18)))&uint32(i32(7)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(63)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
- *postInc11(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
-_74:
-_72:
-_70:
- goto _64
-
-_65:
-_63:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32((uintptr(unsafe.Pointer(_z)) - uintptr(unsafe.Pointer(_zOut))) / 1)
-_48:
- *_z = uint8(i32(0))
+ _ = _4_nBulk
+ panic(0)
+}
+
+// Malloc function used within this file to allocate space from the buffer
+// configured using sqlite3_config(SQLITE_CONFIG_PAGECACHE) option. If no
+// such buffer exists or there is no space left in it, this function falls
+// back to sqlite3Malloc().
+//
+// Multiple threads can run this routine at the same time. Global variables
+// in pcache1 need to be protected via mutex.
+func _pcache1Alloc(tls *crt.TLS, _nByte int32) (r0 unsafe.Pointer) {
+ var _4_sz int32
+ var _p unsafe.Pointer
+ _p = nil
func() {
- if ((_pMem.X4) + func() int32 {
- if int32(_desiredEnc) == i32(1) {
- return i32(1)
- }
- return i32(2)
- }()) > _len {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27438), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4460)))
+ if Xsqlite3_mutex_notheld(tls, (*Xsqlite3_mutex)((*XPGroup)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g))+uintptr(0 /* X0 */))).X0)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45318), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1AllocØ00__func__Ø000))), unsafe.Pointer(str(3698)))
crt.X__builtin_abort(tls)
}
}()
- _c = uint32(_pMem.X1)
- _sqlite3VdbeMemRelease(tls, _pMem)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(uint32(i32(514)) | (_c & uint32(i32(32799))))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = _desiredEnc
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = (*int8)(unsafe.Pointer(_zOut))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = _pMem.X5
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X5))
-_translate_out:
- return i32(0)
-}
-
-var _sqlite3VdbeMemTranslateØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemTranslateØ00__func__Ø000[0], str(4508), 24)
+ if _nByte > (_pcache1_g.X4) {
+ goto _2
+ }
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+ _p = _pcache1_g.X10
+ if _p != nil {
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(88 /* X10 */))))) = (*Xsqlite3_file)((*Xsqlite3_file)(_pcache1_g.X10).X0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(92 /* X11 */))) -= 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(96 /* X12 */))) = bool2int((_pcache1_g.X11) < (_pcache1_g.X6))
+ func() {
+ if (_pcache1_g.X11) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45326), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1AllocØ00__func__Ø000))), unsafe.Pointer(str(3739)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3StatusHighwater(tls, i32(7), _nByte)
+ _sqlite3StatusUp(tls, i32(1), i32(1))
+ }
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+_2:
+ if _p != nil {
+ goto _6
+ }
+ _p = _sqlite3Malloc(tls, uint64(_nByte))
+ if _p != nil {
+ _4_sz = _sqlite3MallocSize(tls, _p)
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+ _sqlite3StatusHighwater(tls, i32(7), _nByte)
+ _sqlite3StatusUp(tls, i32(2), _4_sz)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
+ }
+_6:
+ return _p
}
-func _sqlite3VdbeMemMakeWriteable(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:69894:1
- func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69895), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMakeWriteableØ00__func__Ø000))), unsafe.Pointer(str(2992)))
- crt.X__builtin_abort(tls)
- }
- }()
+func Xsqlite3_mutex_notheld(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) {
func() {
- if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMakeWriteableØ00__func__Ø000))), unsafe.Pointer(str(2964)))
+ if _p != nil && (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X8)}))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_notheldØ00__func__Ø000))), unsafe.Pointer(str(3760)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pMem.X1) & i32(18)) == i32(0) {
- goto _5
- }
-
- if func() int32 {
- if (int32(_pMem.X1) & i32(16384)) != 0 {
- return _sqlite3VdbeMemExpandBlob(tls, _pMem)
- }
- return i32(0)
- }() == 0 {
- goto _8
- }
- return i32(7)
-
-_8:
- if (_pMem.X7) != i32(0) && (_pMem.X5) == (_pMem.X6) {
- goto _10
- }
-
- if _sqlite3VdbeMemGrow(tls, _pMem, (_pMem.X4)+i32(2), i32(1)) == 0 {
- goto _11
- }
- return _sqlite3NomemError(tls, i32(69901))
-
-_11:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_pMem.X4))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr((_pMem.X4)+i32(1)))) = int8(i32(0))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(512))
- sink12 = *p
- }
-_10:
-_5:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-4097))
- sink12 = *p
- }
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(40 /* X11 */))))) = nil
- return i32(0)
+ /* X11 */
+ return bool2int((_p == nil) || (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72))).X8)})))(tls, _p) != 0)
}
-var _sqlite3VdbeMemMakeWriteableØ00__func__Ø000 [28]int8 // -
+var _sqlite3_mutex_notheldØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemMakeWriteableØ00__func__Ø000[0], str(4532), 28)
+ crt.Xstrncpy(nil, &_sqlite3_mutex_notheldØ00__func__Ø000[0], str(3808), 22)
}
-var _sqlite3Utf8Trans1 [64]uint8 // sqlite3.c:27175:28
+var _pcache1AllocØ00__func__Ø000 [13]int8
func init() {
- _sqlite3Utf8Trans1 = [64]uint8{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 0, 1, 0, 0}
+ crt.Xstrncpy(nil, &_pcache1AllocØ00__func__Ø000[0], str(3830), 13)
}
-func _sqlite3VdbeMemRelease(tls *crt.TLS, _p *XMem) { // sqlite3.c:70114:1
+// Implementation of the sqlite3_pcache.xUnpin method.
+//
+// Mark a page as unpinned (eligible for asynchronous recycling).
+func _pcache1Unpin(tls *crt.TLS, _p unsafe.Pointer, _pPg *Xsqlite3_pcache_page, _reuseUnlikely int32) {
+ var _pCache *XPCache1
+ var _pPage *XPgHdr1
+ var _2_ppFirst **XPgHdr1
+ var _pGroup *XPGroup
+ _pCache = (*XPCache1)(_p)
+ _pPage = (*XPgHdr1)(unsafe.Pointer(_pPg))
+ _pGroup = (*XPGroup)(_pCache.X0)
func() {
- if _sqlite3VdbeCheckMemInvariants(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70115), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemReleaseØ00__func__Ø000))), unsafe.Pointer(str(4560)))
+ if (*XPCache1)(_pPage.X6) != _pCache {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46067), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1UnpinØ00__func__Ø000))), unsafe.Pointer(str(3843)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X1)&i32(9312)) == i32(0) && (_p.X7) == 0 {
- goto _3
- }
-
- _vdbeMemClear(tls, _p)
-_3:
-}
-
-var _sqlite3VdbeMemReleaseØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemReleaseØ00__func__Ø000[0], str(4596), 22)
-}
-
-func _vdbeMemClear(tls *crt.TLS, _p *XMem) { // sqlite3.c:70093:1
- if (int32(_p.X1) & i32(9312)) == i32(0) {
- goto _0
- }
-
- _vdbeMemClearExternAndSetNull(tls, _p)
-_0:
- if (_p.X7) == 0 {
- goto _1
- }
-
- _sqlite3DbFreeNN(tls, (*Xsqlite3)(_p.X9), (unsafe.Pointer)(_p.X6))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(0)
-_1:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = nil
-}
-
-func _sqlite3VdbeMemNulTerminate(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:69961:1
func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69962), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNulTerminateØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ if (*Xsqlite3_mutex)(_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46068), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1UnpinØ00__func__Ø000))), unsafe.Pointer(str(2483)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pMem.X1) & i32(514)) == i32(2) {
- goto _3
- }
- return i32(0)
-
-_3:
- return _vdbeMemAddTerminator(tls, _pMem)
-}
-
-var _sqlite3VdbeMemNulTerminateØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemNulTerminateØ00__func__Ø000[0], str(4620), 27)
-}
-
-func _vdbeMemAddTerminator(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:69948:1
- if _sqlite3VdbeMemGrow(tls, _pMem, (_pMem.X4)+i32(2), i32(1)) == 0 {
- goto _0
- }
- return _sqlite3NomemError(tls, i32(69950))
-
-_0:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_pMem.X4))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr((_pMem.X4)+i32(1)))) = int8(i32(0))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(512))
- sink12 = *p
- }
- return i32(0)
-}
-
-func _sqlite3VdbeMemStringify(tls *crt.TLS, _pMem *XMem, _enc uint8, _bForce uint8) (r0 int32) { // sqlite3.c:69986:1
- var _fg int32 // sqlite3.c:69987:7
- _ = _fg
- var _nByte int32 // sqlite3.c:69988:13
- _ = _nByte
- _fg = int32(_pMem.X1)
- _nByte = i32(32)
func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69990), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ if (*XPgHdr1)(_pPage.X8) != nil || (*XPgHdr1)(_pPage.X7) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46073), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1UnpinØ00__func__Ø000))), unsafe.Pointer(str(3865)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (_fg & i32(16384)) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69991), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(4648)))
+ if int32(_pPage.X2) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46074), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1UnpinØ00__func__Ø000))), unsafe.Pointer(str(3906)))
crt.X__builtin_abort(tls)
}
}()
+ if _reuseUnlikely != 0 || ((_pGroup.X4) > (_pGroup.X1)) {
+ _pcache1RemoveFromHash(tls, _pPage, i32(1))
+ goto _11
+ }
+ _2_ppFirst = (**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup))+uintptr(20 /* X5 */))))) + uintptr(24 /* X7 */)))))
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(28 /* X8 */))))) = (*XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroup)) + uintptr(20 /* X5 */)))
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(store10((**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage))+uintptr(24 /* X7 */))))), *_2_ppFirst))) + uintptr(28 /* X8 */))))) = _pPage
+ *_2_ppFirst = _pPage
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(36 /* X9 */))) += 1
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(12 /* X2 */))) = uint8(i32(0))
+_11:
func() {
- if (_fg & i32(18)) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69992), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(4664)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46088), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1UnpinØ00__func__Ø000))), unsafe.Pointer(str(3267)))
crt.X__builtin_abort(tls)
}
}()
+}
+
+var _pcache1UnpinØ00__func__Ø000 [13]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pcache1UnpinØ00__func__Ø000[0], str(3925), 13)
+}
+
+// Implementation of the sqlite3_pcache.xRekey method.
+func _pcache1Rekey(tls *crt.TLS, _p unsafe.Pointer, _pPg *Xsqlite3_pcache_page, _iOld uint32, _iNew uint32) {
+ var _h uint32
+ var _pCache *XPCache1
+ var _pPage *XPgHdr1
+ var _pp **XPgHdr1
+ _pCache = (*XPCache1)(_p)
+ _pPage = (*XPgHdr1)(unsafe.Pointer(_pPg))
func() {
- if (_fg & i32(12)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69993), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(4692)))
+ if (_pPage.X1) != _iOld {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46104), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1RekeyØ00__func__Ø000))), unsafe.Pointer(str(3938)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(2964)))
+ if (*XPCache1)(_pPage.X6) != _pCache {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46105), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1RekeyØ00__func__Ø000))), unsafe.Pointer(str(3843)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69995), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(4716)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46107), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1RekeyØ00__func__Ø000))), unsafe.Pointer(str(3267)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3VdbeMemClearAndResize(tls, _pMem, _nByte) == 0 {
- goto _13
+ _h = _iOld % (_pCache.X11)
+ _pp = (**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_h)))
+_6:
+ if (*_pp) != _pPage {
+ _pp = (**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_pp)) + uintptr(16 /* X5 */)))))
+ goto _6
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(0))
- return _sqlite3NomemError(tls, i32(70000))
-
-_13:
- if (_fg & i32(4)) == 0 {
- goto _14
+ *_pp = (*XPgHdr1)(_pPage.X5)
+ _h = _iNew % (_pCache.X11)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(8 /* X1 */))) = _iNew
+ *(**XPgHdr1)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(16 /* X5 */))))) = *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_h)))
+ *(**XPgHdr1)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache.X12)) + 4*uintptr(_h))) = _pPage
+ if _iNew > (_pCache.X8) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(32 /* X8 */))) = _iNew
}
-
- Xsqlite3_snprintf(tls, _nByte, _pMem.X5, str(4744), *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
- goto _15
-
-_14:
func() {
- if (_fg & i32(8)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(4752)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46124), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1RekeyØ00__func__Ø000))), unsafe.Pointer(str(3267)))
crt.X__builtin_abort(tls)
}
}()
- Xsqlite3_snprintf(tls, _nByte, _pMem.X5, str(4768), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
-_15:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _sqlite3Strlen30(tls, _pMem.X5)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(514))
- sink12 = *p
- }
- if _bForce == 0 {
- goto _18
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-13))
- sink12 = *p
- }
-_18:
- _sqlite3VdbeChangeEncoding(tls, _pMem, int32(_enc))
- return i32(0)
}
-var _sqlite3VdbeMemStringifyØ00__func__Ø000 [24]int8 // -
+var _pcache1RekeyØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemStringifyØ00__func__Ø000[0], str(4776), 24)
+ crt.Xstrncpy(nil, &_pcache1RekeyØ00__func__Ø000[0], str(3956), 13)
}
-func _sqlite3VdbeMemClearAndResize(tls *crt.TLS, _pMem *XMem, _szNew int32) (r0 int32) { // sqlite3.c:69876:1
- func() {
- if _szNew <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemClearAndResizeØ00__func__Ø000))), unsafe.Pointer(str(4800)))
- crt.X__builtin_abort(tls)
- }
- }()
+// Implementation of the sqlite3_pcache.xTruncate method.
+//
+// Discard all unpinned pages in the cache with a page number equal to
+// or greater than parameter iLimit. Any pinned pages with a page number
+// equal to or greater than iLimit are implicitly unpinned.
+func _pcache1Truncate(tls *crt.TLS, _p unsafe.Pointer, _iLimit uint32) {
+ var _pCache *XPCache1
+ _pCache = (*XPCache1)(_p)
func() {
- if (int32(_pMem.X1)&i32(1024)) != i32(0) && (_pMem.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69878), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemClearAndResizeØ00__func__Ø000))), unsafe.Pointer(str(4808)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46136), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1TruncateØ00__func__Ø000))), unsafe.Pointer(str(3267)))
crt.X__builtin_abort(tls)
}
}()
- if (_pMem.X7) >= _szNew {
- goto _5
+ if _iLimit <= (_pCache.X8) {
+ _pcache1TruncateUnsafe(tls, _pCache, _iLimit)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(32 /* X8 */))) = _iLimit - uint32(i32(1))
}
- return _sqlite3VdbeMemGrow(tls, _pMem, _szNew, i32(0))
-
-_5:
func() {
- if (int32(_pMem.X1) & i32(1024)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69882), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemClearAndResizeØ00__func__Ø000))), unsafe.Pointer(str(4032)))
+ if (*Xsqlite3_mutex)((*XPGroup)(_pCache.X0).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46141), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1TruncateØ00__func__Ø000))), unsafe.Pointer(str(3267)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _pMem.X6
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(13))
- sink12 = *p
- }
- return i32(0)
}
-var _sqlite3VdbeMemClearAndResizeØ00__func__Ø000 [29]int8 // -
+var _pcache1TruncateØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemClearAndResizeØ00__func__Ø000[0], str(4856), 29)
+ crt.Xstrncpy(nil, &_pcache1TruncateØ00__func__Ø000[0], str(3969), 16)
}
-func Xsqlite3_snprintf(tls *crt.TLS, _n int32, _zBuf *int8, _zFormat *int8, args ...interface{}) (r0 *int8) { // sqlite3.c:26097:12
- var _z *int8 // sqlite3.c:26098:8
- _ = _z
- var _ap []interface{} // sqlite3.c:26099:11
- _ = _ap
- _ap = args
- _z = Xsqlite3_vsnprintf(tls, _n, _zBuf, _zFormat, _ap)
- _ap = nil
- return _z
+// Implementation of the sqlite3_pcache.xShrink method.
+//
+// Free up as much memory as possible.
+func _pcache1Shrink(tls *crt.TLS, _p unsafe.Pointer) {
+ var _1_savedMaxPage int32
+ var _pCache *XPCache1
+ var _1_pGroup *XPGroup
+ _pCache = (*XPCache1)(_p)
+ if (_pCache.X4) != 0 {
+ _1_pGroup = (*XPGroup)(_pCache.X0)
+ func() {
+ if (*Xsqlite3_mutex)(_1_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45824), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1ShrinkØ00__func__Ø000))), unsafe.Pointer(str(2483)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _1_savedMaxPage = int32(_1_pGroup.X1)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pGroup)) + uintptr(4 /* X1 */))) = uint32(i32(0))
+ _pcache1EnforceMaxPage(tls, _pCache)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pGroup)) + uintptr(4 /* X1 */))) = uint32(_1_savedMaxPage)
+ func() {
+ if (*Xsqlite3_mutex)(_1_pGroup.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(45829), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1ShrinkØ00__func__Ø000))), unsafe.Pointer(str(2483)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ }
}
-func Xsqlite3_vsnprintf(tls *crt.TLS, _n int32, _zBuf *int8, _zFormat *int8, _ap []interface{}) (r0 *int8) { // sqlite3.c:26082:12
- var _acc XStrAccum // sqlite3.c:26083:12
- _ = _acc
- if _n > i32(0) {
- goto _0
- }
- return _zBuf
+var _pcache1ShrinkØ00__func__Ø000 [14]int8
-_0:
- if _zBuf != nil && _zFormat != nil {
- goto _2
- }
+func init() {
+ crt.Xstrncpy(nil, &_pcache1ShrinkØ00__func__Ø000[0], str(3985), 14)
+}
- _sqlite3MisuseError(tls, i32(26087))
- if _zBuf == nil {
- goto _3
+var _sqlite3MemSetDefaultØ00defaultMethodsØ001 Xsqlite3_mem_methods
+
+func init() {
+ _sqlite3MemSetDefaultØ00defaultMethodsØ001 = Xsqlite3_mem_methods{X0: _sqlite3MemMalloc, X1: _sqlite3MemFree, X2: _sqlite3MemRealloc, X3: _sqlite3MemSize, X4: _sqlite3MemRoundup, X5: _sqlite3MemInit, X6: _sqlite3MemShutdown, X7: nil}
+}
+
+// Like malloc(), but remember the size of the allocation
+// so that we can find it later using sqlite3MemSize().
+//
+// For this low-level routine, we are guaranteed that nByte>0 because
+// cases of nByte<=0 will be intercepted and dealt with by higher level
+// routines.
+func _sqlite3MemMalloc(tls *crt.TLS, _nByte int32) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
+ _p = crt.Xmalloc(tls, uint32(_nByte))
+ if _p == nil {
+ Xsqlite3_log(tls, i32(7), str(3999), _nByte)
}
+ return _p
+}
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(0)))) = int8(i32(0))
-_3:
- return _zBuf
+// Like free() but works for allocations obtained from sqlite3MemMalloc()
+// or sqlite3MemRealloc().
+//
+// For this low-level routine, we already know that pPrior!=0 since
+// cases where pPrior==0 will have been intecepted and dealt with
+// by higher-level routines.
+func _sqlite3MemFree(tls *crt.TLS, _pPrior unsafe.Pointer) {
+ crt.Xfree(tls, _pPrior)
+}
-_2:
- _sqlite3StrAccumInit(tls, &_acc, nil, _zBuf, _n, i32(0))
- _sqlite3VXPrintf(tls, &_acc, _zFormat, _ap)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(_acc.X3))) = int8(i32(0))
- return _zBuf
+// Like realloc(). Resize an allocation previously obtained from
+// sqlite3MemMalloc().
+//
+// For this low-level interface, we know that pPrior!=0. Cases where
+// pPrior==0 while have been intercepted by higher-level routine and
+// redirected to xMalloc. Similarly, we know that nByte>0 because
+// cases where nByte<=0 will have been intercepted by higher-level
+// routines and redirected to xFree.
+func _sqlite3MemRealloc(tls *crt.TLS, _pPrior unsafe.Pointer, _nByte int32) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
+ _p = crt.Xrealloc(tls, _pPrior, uint32(_nByte))
+ if _p == nil {
+ Xsqlite3_log(tls, i32(7), str(4037), crt.Xmalloc_usable_size(tls, _pPrior), _nByte)
+ }
+ return _p
}
-func Xsqlite3_context_db_handle(tls *crt.TLS, _p *Xsqlite3_context) (r0 *Xsqlite3) { // sqlite3.c:76813:12
+// Report the allocated size of a prior return from xMalloc()
+// or xRealloc().
+func _sqlite3MemSize(tls *crt.TLS, _pPrior unsafe.Pointer) (r0 int32) {
func() {
- if _p == nil || (*XMem)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_context_db_handleØ00__func__Ø000))), unsafe.Pointer(str(4888)))
+ if _pPrior == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(20827), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemSizeØ00__func__Ø000))), unsafe.Pointer(str(4073)))
crt.X__builtin_abort(tls)
}
}()
- return (*Xsqlite3)((*XMem)(_p.X0).X9)
+ return int32(crt.Xmalloc_usable_size(tls, _pPrior))
}
-var _sqlite3_context_db_handleØ00__func__Ø000 [26]int8 // -
+var _sqlite3MemSizeØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_context_db_handleØ00__func__Ø000[0], str(4904), 26)
+ crt.Xstrncpy(nil, &_sqlite3MemSizeØ00__func__Ø000[0], str(4083), 15)
}
-func _sqlite3GetToken(tls *crt.TLS, _z *uint8, _tokenType *int32) (r0 int32) { // sqlite3.c:139661:1
- var _i int32 // sqlite3.c:139662:7
- _ = _i
- var _c int32 // sqlite3.c:139662:10
- _ = _c
- var _35_delim int32 // sqlite3.c:139781:11
- _ = _35_delim
- var _58_n int32 // sqlite3.c:139863:11
- _ = _58_n
- switch int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiClass)) + 1*uintptr(*_z)))) {
- case i32(0):
- goto _26
- case i32(1):
- goto _25
- case i32(2):
- goto _27
- case i32(3):
- goto _20
- case i32(4):
- goto _23
- case i32(5):
- goto _24
- case i32(6):
- goto _22
- case i32(7):
- goto _1
- case i32(8):
- goto _18
- case i32(9):
- goto _21
- case i32(10):
- goto _14
- case i32(11):
- goto _2
- case i32(12):
- goto _11
- case i32(13):
- goto _12
- case i32(14):
- goto _10
- case i32(15):
- goto _13
- case i32(16):
- goto _8
- case i32(17):
- goto _3
- case i32(18):
- goto _4
- case i32(19):
- goto _5
- case i32(20):
- goto _6
- case i32(21):
- goto _7
- case i32(22):
- goto _9
- case i32(23):
- goto _15
- case i32(24):
- goto _16
- case i32(25):
- goto _17
- case i32(26):
- goto _19
- default:
- goto _28
- }
-
-_1:
- _i = i32(1)
-_29:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(1)) == 0 {
- goto _32
- }
-
- _i += 1
- goto _29
-
-_32:
- *_tokenType = i32(163)
- return _i
-
-_2:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(45) {
- goto _33
- }
-
- _i = i32(2)
-_34:
- if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) || _c == i32(10) {
- goto _38
- }
-
- _i += 1
- goto _34
-
-_38:
- *_tokenType = i32(163)
- return _i
+// Round up a request size to the next valid allocation size.
+func _sqlite3MemRoundup(tls *crt.TLS, _n int32) (r0 int32) {
+ return (_n + i32(7)) & i32(-8)
+}
-_33:
- *_tokenType = i32(89)
- return i32(1)
+// Initialize this module.
+func _sqlite3MemInit(tls *crt.TLS, _NotUsed unsafe.Pointer) (r0 int32) {
+ return i32(0)
+}
-_3:
- *_tokenType = i32(22)
- return i32(1)
+// Deinitialize this module.
+func _sqlite3MemShutdown(tls *crt.TLS, _NotUsed unsafe.Pointer) {
+}
-_4:
- *_tokenType = i32(23)
- return i32(1)
+func _sqlite3NomemError(tls *crt.TLS, _lineno int32) (r0 int32) {
+ return _reportError(tls, i32(7), _lineno, str(4098))
+}
-_5:
- *_tokenType = i32(1)
- return i32(1)
+var _sqlite3BuiltinFunctions XFuncDefHash
-_6:
- *_tokenType = i32(88)
- return i32(1)
+// All of the FuncDef structures in the aBuiltinFunc[] array above
+// to the global function hash table. This occurs at start-time (as
+// a consequence of calling sqlite3_initialize()).
+//
+// After this routine runs
+func _sqlite3RegisterBuiltinFunctions(tls *crt.TLS) {
+ _sqlite3AlterFunctions(tls)
+ _sqlite3RegisterDateTimeFunctions(tls)
+ _sqlite3InsertBuiltinFuncs(tls, (*XFuncDef)(unsafe.Pointer(&_sqlite3RegisterBuiltinFunctionsØ00aBuiltinFuncØ001)), i32(60))
+}
-_7:
- *_tokenType = i32(90)
- return i32(1)
+// Register built-in functions used to help implement ALTER TABLE
+func _sqlite3AlterFunctions(tls *crt.TLS) {
+ _sqlite3InsertBuiltinFuncs(tls, (*XFuncDef)(unsafe.Pointer(&_sqlite3AlterFunctionsØ00aAlterTableFuncsØ001)), i32(3))
+}
-_8:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) == i32(42) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(2))))) != i32(0) {
- goto _40
+// Insert a new FuncDef into a FuncDefHash hash table.
+func _sqlite3InsertBuiltinFuncs(tls *crt.TLS, _aDef *XFuncDef, _nDef int32) {
+ var _i, _1_nName, _1_h int32
+ var _1_zName *int8
+ var _1_pOther *XFuncDef
+ _i = i32(0)
+_0:
+ if _i >= _nDef {
+ goto _3
}
-
- *_tokenType = i32(91)
- return i32(1)
-
-_40:
- *func() *int32 { _i = i32(3); return &_c }() = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(2)))))
-_41:
- if _c == i32(42) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == i32(47) || store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
- goto _46
+ _1_zName = (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef)) + 28*uintptr(_i))).X6
+ _1_nName = _sqlite3Strlen30(tls, _1_zName)
+ _1_h = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_zName)) + 1*uintptr(i32(0))))))))) + _1_nName) % i32(23)
+ _1_pOther = _functionSearch(tls, _1_h, _1_zName)
+ if _1_pOther != nil {
+ func() {
+ if _1_pOther == (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))) || (*XFuncDef)(_1_pOther.X3) == (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104459), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertBuiltinFuncsØ00__func__Ø000))), unsafe.Pointer(str(4102)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))))) + uintptr(8 /* X3 */))))) = (*XFuncDef)(_1_pOther.X3)
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOther)) + uintptr(8 /* X3 */))))) = (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef)) + 28*uintptr(_i)))
+ goto _8
}
-
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))))) + uintptr(8 /* X3 */))))) = nil
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef))+28*uintptr(_i))))) + uintptr(24 /* X7 */))))))) = *(**XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[23]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3BuiltinFunctions))+uintptr(0 /* X0 */))))) + 4*uintptr(_1_h)))
+ *(**XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[23]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3BuiltinFunctions))+uintptr(0 /* X0 */))))) + 4*uintptr(_1_h))) = (*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aDef)) + 28*uintptr(_i)))
+_8:
_i += 1
- goto _41
+ goto _0
+_3:
+}
-_46:
- if _c == 0 {
- goto _47
+// Compute a string length that is limited to what can be stored in
+// lower 30 bits of a 32-bit signed integer.
+//
+// The value returned will never be negative. Nor will it ever be greater
+// than the actual length of the string. For very long strings (greater
+// than 1GiB) the value returned might be less than the true string length.
+func _sqlite3Strlen30(tls *crt.TLS, _z *int8) (r0 int32) {
+ if _z == nil {
+ return i32(0)
}
+ return i32(1073741823) & int32(crt.Xstrlen(tls, _z))
+}
- _i += 1
-_47:
- *_tokenType = i32(163)
- return _i
-
-_9:
- *_tokenType = i32(92)
- return i32(1)
-
-_10:
- *_tokenType = i32(78)
- return i32(1) + bool2int(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) == i32(61))
-
-_11:
- if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1)))))) != i32(61) {
- goto _48
- }
+var _sqlite3UpperToLower [256]uint8
- *_tokenType = i32(80)
- return i32(2)
+func init() {
+ _sqlite3UpperToLower = [256]uint8{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255}
+}
-_48:
- if _c != i32(62) {
- goto _50
+// Search a FuncDefHash for a function with the given name. Return
+// a pointer to the matching FuncDef if found, or 0 if there is no match.
+func _functionSearch(tls *crt.TLS, _h int32, _zFunc *int8) (r0 *XFuncDef) {
+ var _p *XFuncDef
+ _p = *(**XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[23]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3BuiltinFunctions))+uintptr(0 /* X0 */))))) + 4*uintptr(_h)))
+_0:
+ if _p == nil {
+ goto _3
}
-
- *_tokenType = i32(77)
- return i32(2)
-
-_50:
- if _c != i32(60) {
- goto _52
+ if _sqlite3StrICmp(tls, _p.X6, _zFunc) == i32(0) {
+ return _p
}
+ _p = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))))))
+ goto _0
+_3:
+ return nil
+}
- *_tokenType = i32(86)
- return i32(2)
-
-_52:
- *_tokenType = i32(81)
- return i32(1)
-
-_12:
- if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1)))))) != i32(61) {
- goto _54
+func _sqlite3StrICmp(tls *crt.TLS, _zLeft *int8, _zRight *int8) (r0 int32) {
+ var _c int32
+ var _a, _b *uint8
+ _a = (*uint8)(unsafe.Pointer(_zLeft))
+ _b = (*uint8)(unsafe.Pointer(_zRight))
+_0:
+ _c = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_a)))) - int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_b))))
+ if _c != 0 || (int32(*_a) == i32(0)) {
+ goto _2
}
+ *(*uintptr)(unsafe.Pointer(&_a)) += uintptr(1)
+ *(*uintptr)(unsafe.Pointer(&_b)) += uintptr(1)
+ goto _0
+_2:
+ return _c
+}
- *_tokenType = i32(82)
- return i32(2)
+var _sqlite3InsertBuiltinFuncsØ00__func__Ø000 [26]int8
-_54:
- if _c != i32(62) {
- goto _56
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3InsertBuiltinFuncsØ00__func__Ø000[0], str(4146), 26)
+}
- *_tokenType = i32(87)
- return i32(2)
+var _sqlite3AlterFunctionsØ00aAlterTableFuncsØ001 [3]XFuncDef
-_56:
- *_tokenType = i32(79)
- return i32(1)
+func init() {
+ _sqlite3AlterFunctionsØ00aAlterTableFuncsØ001 = [3]XFuncDef{XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_renameTableFunc})), X5: nil, X6: str(4172), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_renameTriggerFunc})), X5: nil, X6: str(4192), X7: t12{}}, XFuncDef{X0: i8(3), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_renameParentFunc})), X5: nil, X6: str(4214), X7: t12{}}}
+}
+
+// This function is used by SQL generated to implement the
+// ALTER TABLE command. The first argument is the text of a CREATE TABLE or
+// CREATE INDEX command. The second is a table name. The table name in
+// the CREATE TABLE or CREATE INDEX statement is replaced with the third
+// argument and the result returned. Examples:
+//
+// sqlite_rename_table('CREATE TABLE abc(a, b, c)', 'def')
+// -> 'CREATE TABLE def(a, b, c)'
+//
+// sqlite_rename_table('CREATE INDEX i ON abc(a)', 'def')
+// -> 'CREATE INDEX i ON def(a, b, c)'
+func _renameTableFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _argv **XMem) {
+ var _token, _len int32
+ var _zRet *int8
+ var _zSql, _zTableName, _zCsr *uint8
+ var _tname XToken
+ var _db *Xsqlite3
+ _zSql = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
+ _zTableName = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
+ _zCsr = _zSql
+ _len = i32(0)
+ _db = Xsqlite3_context_db_handle(tls, _context)
-_13:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) == i32(61) {
- goto _58
+ if _zSql == nil {
+ goto _0
}
-
- *_tokenType = i32(164)
- return i32(1)
-
-_58:
- *_tokenType = i32(77)
- return i32(2)
-
-_14:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) == i32(124) {
- goto _60
+_1:
+ if (*_zCsr) == 0 {
+ return
}
-
- *_tokenType = i32(85)
- return i32(1)
-
-_60:
- *_tokenType = i32(93)
- return i32(2)
-
-_15:
- *_tokenType = i32(26)
- return i32(1)
-
-_16:
- *_tokenType = i32(84)
- return i32(1)
-
-_17:
- *_tokenType = i32(95)
- return i32(1)
-
-_18:
- _35_delim = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))
- _i = i32(1)
-_62:
- if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
- goto _65
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer(_zCsr))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(4 /* X1 */))) = uint32(_len)
+_3:
+ {
+ p := &_zCsr
+ *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_len)))
+ sink13 = *p
}
-
- if _c != _35_delim {
- goto _66
+ _len = _sqlite3GetToken(tls, _zCsr, &_token)
+ if _token == i32(163) {
+ goto _3
}
-
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) != _35_delim {
- goto _67
+ func() {
+ if _len <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(96186), unsafe.Pointer((*int8)(unsafe.Pointer(&_renameTableFuncØ00__func__Ø000))), unsafe.Pointer(str(4235)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_token != i32(22)) && (_token != i32(125)) {
+ goto _1
}
+ _zRet = _sqlite3MPrintf(tls, _db, str(4241), int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_tname.X0))))-uintptr(unsafe.Pointer(_zSql)))/1), unsafe.Pointer(_zSql), unsafe.Pointer(_zTableName), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_tname.X0))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_tname.X1)))))))))
+ Xsqlite3_result_text(tls, _context, _zRet, i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))
+_0:
+ _ = _tname
+}
- _i += 1
- goto _68
-
-_67:
- goto _65
-
-_68:
-_66:
- _i += 1
- goto _62
+func Xsqlite3_value_text(tls *crt.TLS, _pVal *XMem) (r0 *uint8) {
+ return (*uint8)(_sqlite3ValueText(tls, _pVal, uint8(i32(1))))
+}
-_65:
- if _c != i32(39) {
- goto _69
+// This function is only available internally, it is not part of the
+// external API. It works in a similar way to sqlite3_value_text(),
+// except the data returned is in the encoding specified by the second
+// parameter, which must be one of SQLITE_UTF16BE, SQLITE_UTF16LE or
+// SQLITE_UTF8.
+//
+// (2006-02-16:) The enc value can be or-ed with SQLITE_UTF16_ALIGNED.
+// If that is the case, then the result must be aligned on an even byte
+// boundary.
+func _sqlite3ValueText(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 unsafe.Pointer) {
+ if _pVal == nil {
+ return nil
}
-
- *_tokenType = i32(97)
- return _i + i32(1)
-
-_69:
- if _c == i32(0) {
- goto _71
+ func() {
+ if (*Xsqlite3)(_pVal.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pVal.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70759), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueTextØ00__func__Ø000))), unsafe.Pointer(str(4252)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_enc) & i32(3)) != (int32(_enc) & i32(-9)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70760), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueTextØ00__func__Ø000))), unsafe.Pointer(str(4303)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pVal.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70761), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueTextØ00__func__Ø000))), unsafe.Pointer(str(4340)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((int32(_pVal.X1) & i32(514)) == i32(514)) && (int32(_pVal.X2) == int32(_enc)) {
+ return (unsafe.Pointer)(_pVal.X5)
}
-
- *_tokenType = i32(27)
- return _i + i32(1)
-
-_71:
- *_tokenType = i32(164)
- return _i
-
-_19:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1)))))))) & i32(4)) != 0 {
- goto _73
+ if (int32(_pVal.X1) & i32(1)) != 0 {
+ return nil
}
+ return _valueToText(tls, _pVal, _enc)
+}
- *_tokenType = i32(122)
- return i32(1)
+var _sqlite3ValueTextØ00__func__Ø000 [17]int8
-_73:
-_20:
- *_tokenType = i32(134)
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(48) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(120) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(88) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(2))))))))&i32(8)) == 0 {
- goto _77
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ValueTextØ00__func__Ø000[0], str(4370), 17)
+}
- _i = i32(3)
-_78:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(8)) == 0 {
- goto _81
+// The pVal argument is known to be a value other than NULL.
+// Convert it into a string with encoding enc and return a pointer
+// to a zero-terminated version of that string.
+func _valueToText(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 unsafe.Pointer) {
+ func() {
+ if _pVal == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70716), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4387)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*Xsqlite3)(_pVal.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pVal.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70717), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4252)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_enc) & i32(3)) != (int32(_enc) & i32(-9)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70718), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4303)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pVal.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70719), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4340)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pVal.X1) & i32(1)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70720), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4395)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32(_pVal.X1) & i32(18)) == 0 {
+ goto _11
}
-
- _i += 1
- goto _78
-
-_81:
- return _i
-
-_77:
- _i = i32(0)
-_82:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) == 0 {
- goto _85
+ if func() int32 {
+ if (int32(_pVal.X1) & i32(16384)) != 0 {
+ return _sqlite3VdbeMemExpandBlob(tls, _pVal)
+ }
+ return i32(0)
+ }() != 0 {
+ return nil
}
-
- _i += 1
- goto _82
-
-_85:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != i32(46) {
- goto _86
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(2))
+ sink14 = *p
}
-
- _i += 1
-_87:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) == 0 {
- goto _88
+ if int32(_pVal.X2) != (int32(_enc) & i32(-9)) {
+ _sqlite3VdbeChangeEncoding(tls, _pVal, int32(_enc)&i32(-9))
}
-
- _i += 1
- goto _87
-
-_88:
- *_tokenType = i32(132)
-_86:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != i32(101) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != i32(69) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))))))&i32(4)) == 0 && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) != i32(43) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) != i32(45) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(2))))))))&i32(4)) == 0) {
- goto _94
+ if (int32(_enc)&i32(8)) == i32(0) || i32(1) != (i32(1)&int32(uintptr(unsafe.Pointer(_pVal.X5)))) {
+ goto _17
}
-
- {
- p := &_i
- *p = (*p) + i32(2)
- sink1 = *p
+ func() {
+ if (int32(_pVal.X1) & i32(6144)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70728), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4425)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3VdbeMemMakeWriteable(tls, _pVal) != i32(0) {
+ return nil
}
-_95:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) == 0 {
- goto _96
+_17:
+ _sqlite3VdbeMemNulTerminate(tls, _pVal)
+ goto _21
+_11:
+ _sqlite3VdbeMemStringify(tls, _pVal, _enc, uint8(i32(0)))
+ func() {
+ if i32(0) != (i32(1) & int32(uintptr(unsafe.Pointer(_pVal.X5)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70736), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4467)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+_21:
+ func() {
+ if int32(_pVal.X2) != (int32(_enc)&i32(-9)) && (*Xsqlite3)(_pVal.X9) != nil && ((*Xsqlite3)(_pVal.X9).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70738), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueToTextØ00__func__Ø000))), unsafe.Pointer(str(4501)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_pVal.X2) == (int32(_enc) & i32(-9)) {
+ return (unsafe.Pointer)(_pVal.X5)
}
+ return nil
+}
- _i += 1
- goto _95
+var _valueToTextØ00__func__Ø000 [12]int8
-_96:
- *_tokenType = i32(132)
-_94:
-_97:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(70)) == i32(0) {
- goto _98
- }
+func init() {
+ crt.Xstrncpy(nil, &_valueToTextØ00__func__Ø000[0], str(4583), 12)
+}
- *_tokenType = i32(164)
- _i += 1
- goto _97
-
-_98:
- return _i
-
-_21:
- *func() *int32 { _i = i32(1); return &_c }() = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))
-_99:
- if _c == i32(93) || store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
- goto _103
- }
-
- _i += 1
- goto _99
-
-_103:
- *_tokenType = func() int32 {
- if _c == i32(93) {
- return i32(27)
+func _sqlite3VdbeMemExpandBlob(tls *crt.TLS, _pMem *XMem) (r0 int32) {
+ var _nByte int32
+ func() {
+ if (int32(_pMem.X1) & i32(16384)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(4595)))
+ crt.X__builtin_abort(tls)
}
- return i32(164)
}()
- return _i
-
-_22:
- *_tokenType = i32(135)
- _i = i32(1)
-_106:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) == 0 {
- goto _109
- }
-
- _i += 1
- goto _106
-
-_109:
- return _i
-
-_23:
-_24:
- _58_n = i32(0)
- *_tokenType = i32(135)
- _i = i32(1)
-_110:
- if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
- goto _113
- }
-
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_c))))) & i32(70)) == i32(0) {
- goto _114
- }
-
- _58_n += 1
- goto _115
-
-_114:
- if _c != i32(40) || _58_n <= i32(0) {
- goto _117
+ func() {
+ if (int32(_pMem.X1) & i32(16)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(4618)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pMem.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69925), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(4639)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemExpandBlobØ00__func__Ø000))), unsafe.Pointer(str(4667)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nByte = (_pMem.X4) + (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ if _nByte <= i32(0) {
+ _nByte = i32(1)
}
-
-_118:
- _i += 1
- if ((store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) != i32(0)) && ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_c))))) & i32(1)) == 0)) && (_c != i32(41)) {
- goto _118
+ if _sqlite3VdbeMemGrow(tls, _pMem, _nByte, i32(1)) != 0 {
+ return _sqlite3NomemError(tls, i32(69934))
}
-
- if _c != i32(41) {
- goto _121
+ crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5))+1*uintptr(_pMem.X4)))), i32(0), uint32(*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))))
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */)))
+ *p = (*p) + (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ sink1 = *p
}
-
- _i += 1
- goto _122
-
-_121:
- *_tokenType = i32(164)
-_122:
- goto _113
-
-_117:
- if _c != i32(58) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) != i32(58) {
- goto _125
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-16897))
+ sink14 = *p
}
+ return i32(0)
+}
- _i += 1
- goto _126
-
-_125:
- goto _113
+var _sqlite3VdbeMemExpandBlobØ00__func__Ø000 [25]int8
-_126:
-_115:
- _i += 1
- goto _110
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemExpandBlobØ00__func__Ø000[0], str(4718), 25)
+}
-_113:
- if _58_n != i32(0) {
- goto _127
+// Make sure pMem->z points to a writable allocation of at least
+// min(n,32) bytes.
+//
+// If the bPreserve argument is true, then copy of the content of
+// pMem->z into the new allocation. pMem must be either a string or
+// blob if bPreserve is true. If bPreserve is false, any prior content
+// in pMem->z is discarded.
+func _sqlite3VdbeMemGrow(tls *crt.TLS, _pMem *XMem, _n int32, _bPreserve int32) (r0 int32) {
+ func() {
+ if _sqlite3VdbeCheckMemInvariants(tls, _pMem) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(4743)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pMem.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69823), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(4639)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _bPreserve != i32(0) && (int32(_pMem.X1)&i32(18)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69828), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(4779)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pMem.X7) != i32(0) && (_pMem.X7) != _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69831), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(4826)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _n < i32(32) {
+ _n = i32(32)
}
-
- *_tokenType = i32(164)
-_127:
- return _i
-
-_25:
- _i = i32(1)
-_128:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiClass)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) > i32(1) {
- goto _131
+ if (_bPreserve != 0 && ((_pMem.X7) > i32(0))) && ((_pMem.X5) == (_pMem.X6)) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = store0((**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(20 /* X6 */))), (*int8)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X5), uint64(_n))))
+ _bPreserve = i32(0)
+ goto _14
}
-
- _i += 1
- goto _128
-
-_131:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(70)) == i32(0) {
- goto _132
+ if (_pMem.X7) > i32(0) {
+ _sqlite3DbFreeNN(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
}
-
- _i += 1
- goto _133
-
-_132:
- *_tokenType = i32(27)
- return _keywordCode(tls, (*int8)(unsafe.Pointer(_z)), _i, _tokenType)
-
-_26:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(39) {
- goto _134
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = (*int8)(_sqlite3DbMallocRaw(tls, (*Xsqlite3)(_pMem.X9), uint64(_n)))
+_14:
+ if (_pMem.X6) == nil {
+ _sqlite3VdbeMemSetNull(tls, _pMem)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = i32(0)
+ return _sqlite3NomemError(tls, i32(69845))
}
-
- *_tokenType = i32(133)
- _i = i32(2)
-_135:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(8)) == 0 {
- goto _138
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
+ if (_bPreserve != 0 && ((_pMem.X5) != nil)) && func() int32 {
+ if (_pMem.X5) != (_pMem.X6) {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69850), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pMem.X6), (unsafe.Pointer)(_pMem.X5), uint32(_pMem.X4))
}
-
- _i += 1
- goto _135
-
-_138:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == i32(39) && (_i%i32(2)) == 0 {
- goto _140
+ if (int32(_pMem.X1) & i32(1024)) != i32(0) {
+ func() {
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_pMem.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{nil})) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_pMem.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))})) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69854), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemGrowØ00__func__Ø000))), unsafe.Pointer(str(4910)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ (_pMem.X10)(tls, (unsafe.Pointer)(_pMem.X5))
}
-
- *_tokenType = i32(164)
-_141:
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == 0 || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == i32(39) {
- goto _142
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _pMem.X6
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-7169))
+ sink14 = *p
}
+ return i32(0)
+}
- _i += 1
- goto _141
-
-_142:
-_140:
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == 0 {
- goto _144
+// Check invariants on a Mem object.
+//
+// This routine is intended for use inside of assert() statements, like
+// this: assert( sqlite3VdbeCheckMemInvariants(pMem) );
+func _sqlite3VdbeCheckMemInvariants(tls *crt.TLS, _p *XMem) (r0 int32) {
+ func() {
+ if (int32(_p.X1)&i32(1024)) != i32(0) && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_p.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{nil})) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69733), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(4954)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_p.X1)&i32(1024)) != i32(0) && (_p.X7) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(4992)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_p.X1) & i32(12)) == i32(12) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69742), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(5034)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_p.X1)&i32(1)) != i32(0) && (int32(_p.X1)&i32(30)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69745), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(5086)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_p.X7) != i32(0) && (_p.X7) != _sqlite3DbMallocSize(tls, (*Xsqlite3)(_p.X9), (unsafe.Pointer)(_p.X6)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(5166)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32(_p.X1)&i32(18)) != 0 && ((_p.X4) > i32(0)) {
+ func() {
+ if (((func() int32 {
+ if ((_p.X7) > i32(0)) && ((_p.X5) == (_p.X6)) {
+ return i32(1)
+ }
+ return i32(0)
+ }() + func() int32 {
+ if (int32(_p.X1) & i32(1024)) != i32(0) {
+ return i32(1)
+ }
+ return i32(0)
+ }()) + func() int32 {
+ if (int32(_p.X1) & i32(4096)) != i32(0) {
+ return i32(1)
+ }
+ return i32(0)
+ }()) + func() int32 {
+ if (int32(_p.X1) & i32(2048)) != i32(0) {
+ return i32(1)
+ }
+ return i32(0)
+ }()) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69761), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000))), unsafe.Pointer(str(5235)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _i += 1
-_144:
- return _i
-
-_134:
-_27:
- _i = i32(1)
- goto _133
-
-_28:
- *_tokenType = i32(164)
return i32(1)
-
-_133:
-_145:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(70)) == i32(0) {
- goto _146
- }
-
- _i += 1
- goto _145
-
-_146:
- *_tokenType = i32(27)
- return _i
}
-var _aiClass [256]uint8 // sqlite3.c:139234:28
+var _sqlite3VdbeCheckMemInvariantsØ00__func__Ø000 [30]int8
func init() {
- _aiClass = [256]uint8{27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 27, 7, 7, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 15, 8, 5, 4, 22, 24, 8, 17, 18, 21, 20, 23, 11, 26, 16, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 19, 12, 14, 13, 6, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 9, 27, 27, 27, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 27, 10, 27, 25, 27, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
+ crt.Xstrncpy(nil, &_sqlite3VdbeCheckMemInvariantsØ00__func__Ø000[0], str(5392), 30)
}
-var _sqlite3CtypeMap [256]uint8 // sqlite3.c:17240:36
+var _sqlite3VdbeMemGrowØ00__func__Ø000 [19]int8
func init() {
- _sqlite3CtypeMap = [256]uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 128, 0, 64, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 128, 0, 0, 0, 64, 128, 42, 42, 42, 42, 42, 42, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemGrowØ00__func__Ø000[0], str(5422), 19)
}
-func _keywordCode(tls *crt.TLS, _z *int8, _n int32, _pType *int32) (r0 int32) { // sqlite3.c:139337:1
- var _i int32 // sqlite3.c:139457:7
- _ = _i
- var _j int32 // sqlite3.c:139457:10
- _ = _j
- var _zKW *int8 // sqlite3.c:139458:14
- _ = _zKW
- if _n < i32(2) {
- goto _0
- }
-
- _i = (((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))))))) * i32(4)) ^ (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))))))) * i32(3))) ^ _n) % i32(127)
- _i = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aHashØ002)) + 1*uintptr(_i)))) - i32(1)
-_1:
- if _i < i32(0) {
- goto _4
- }
-
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aLenØ004)) + 1*uintptr(_i)))) == _n {
- goto _5
- }
-
- goto _2
-
-_5:
- _j = i32(0)
- _zKW = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00zTextØ001)) + 1*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aOffsetØ005)) + 2*uintptr(_i))))))
-_6:
- if _j >= _n || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_j))))&i32(-33)) != int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zKW)) + 1*uintptr(_j)))) {
- goto _7
- }
-
- _j += 1
- goto _6
-
-_7:
- if _j >= _n {
- goto _9
+// Attempt to reallocate p. If the reallocation fails, then free p
+// and set the mallocFailed flag in the database connection.
+func _sqlite3DbReallocOrFree(tls *crt.TLS, _db *Xsqlite3, _p unsafe.Pointer, _n uint64) (r0 unsafe.Pointer) {
+ var _pNew unsafe.Pointer
+ _pNew = _sqlite3DbRealloc(tls, _db, _p, _n)
+ if _pNew == nil {
+ _sqlite3DbFree(tls, _db, _p)
}
-
- goto _2
-
-_9:
- *_pType = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aCodeØ006)) + 1*uintptr(_i))))
- goto _4
-
-_2:
- _i = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aNextØ003)) + 1*uintptr(_i)))) - i32(1)
- goto _1
-
-_4:
-_0:
- r0 = _n
- return
-}
-
-var _keywordCodeØ00aHashØ002 [127]uint8 // sqlite3.c:139382:30
-
-func init() {
- _keywordCodeØ00aHashØ002 = [127]uint8{76, 105, 117, 74, 0, 45, 0, 0, 82, 0, 77, 0, 0, 42, 12, 78, 15, 0, 116, 85, 54, 112, 0, 19, 0, 0, 121, 0, 119, 115, 0, 22, 93, 0, 9, 0, 0, 70, 71, 0, 69, 6, 0, 48, 90, 102, 0, 118, 101, 0, 0, 44, 0, 103, 24, 0, 17, 0, 122, 53, 23, 0, 5, 110, 25, 96, 0, 0, 124, 106, 60, 123, 57, 28, 55, 0, 91, 0, 100, 26, 0, 99, 0, 0, 0, 95, 92, 97, 88, 109, 14, 39, 108, 0, 81, 0, 18, 89, 111, 32, 0, 120, 80, 113, 62, 46, 84, 0, 0, 94, 40, 59, 114, 0, 36, 0, 0, 29, 0, 86, 63, 64, 0, 20, 61, 0, 56}
-}
-
-var _keywordCodeØ00aLenØ004 [124]uint8 // sqlite3.c:139406:30
-
-func init() {
- _keywordCodeØ00aLenØ004 = [124]uint8{7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6, 7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 9, 9, 7, 10, 10, 4, 6, 2, 3, 9, 4, 2, 6, 5, 7, 4, 5, 7, 6, 6, 5, 6, 5, 5, 9, 7, 7, 3, 2, 4, 4, 7, 3, 6, 4, 7, 6, 12, 6, 9, 4, 6, 5, 4, 7, 6, 5, 6, 7, 5, 4, 5, 6, 5, 7, 3, 7, 13, 2, 2, 4, 6, 6, 8, 5, 17, 12, 7, 8, 8, 2, 4, 4, 4, 4, 4, 2, 2, 6, 5, 8, 5, 8, 3, 5, 5, 6, 4, 9, 3}
-}
-
-var _keywordCodeØ00zTextØ001 [553]int8 // sqlite3.c:139349:21
-
-func init() {
- _keywordCodeØ00zTextØ001 = [553]int8{82, 69, 73, 78, 68, 69, 88, 69, 68, 69, 83, 67, 65, 80, 69, 65, 67, 72, 69, 67, 75, 69, 89, 66, 69, 70, 79, 82, 69, 73, 71, 78, 79, 82, 69, 71, 69, 88, 80, 76, 65, 73, 78, 83, 84, 69, 65, 68, 68, 65, 84, 65, 66, 65, 83, 69, 76, 69, 67, 84, 65, 66, 76, 69, 70, 84, 72, 69, 78, 68, 69, 70, 69, 82, 82, 65, 66, 76, 69, 76, 83, 69, 88, 67, 69, 80, 84, 82, 65, 78, 83, 65, 67, 84, 73, 79, 78, 65, 84, 85, 82, 65, 76, 84, 69, 82, 65, 73, 83, 69, 88, 67, 76, 85, 83, 73, 86, 69, 88, 73, 83, 84, 83, 65, 86, 69, 80, 79, 73, 78, 84, 69, 82, 83, 69, 67, 84, 82, 73, 71, 71, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 83, 67, 79, 78, 83, 84, 82, 65, 73, 78, 84, 79, 70, 70, 83, 69, 84, 69, 77, 80, 79, 82, 65, 82, 89, 85, 78, 73, 81, 85, 69, 82, 89, 87, 73, 84, 72, 79, 85, 84, 69, 82, 69, 76, 69, 65, 83, 69, 65, 84, 84, 65, 67, 72, 65, 86, 73, 78, 71, 82, 79, 85, 80, 68, 65, 84, 69, 66, 69, 71, 73, 78, 78, 69, 82, 69, 67, 85, 82, 83, 73, 86, 69, 66, 69, 84, 87, 69, 69, 78, 79, 84, 78, 85, 76, 76, 73, 75, 69, 67, 65, 83, 67, 65, 68, 69, 76, 69, 84, 69, 67, 65, 83, 69, 67, 79, 76, 76, 65, 84, 69, 67, 82, 69, 65, 84, 69, 67, 85, 82, 82, 69, 78, 84, 95, 68, 65, 84, 69, 68, 69, 84, 65, 67, 72, 73, 77, 77, 69, 68, 73, 65, 84, 69, 74, 79, 73, 78, 83, 69, 82, 84, 77, 65, 84, 67, 72, 80, 76, 65, 78, 65, 76, 89, 90, 69, 80, 82, 65, 71, 77, 65, 66, 79, 82, 84, 86, 65, 76, 85, 69, 83, 86, 73, 82, 84, 85, 65, 76, 73, 77, 73, 84, 87, 72, 69, 78, 87, 72, 69, 82, 69, 78, 65, 77, 69, 65, 70, 84, 69, 82, 69, 80, 76, 65, 67, 69, 65, 78, 68, 69, 70, 65, 85, 76, 84, 65, 85, 84, 79, 73, 78, 67, 82, 69, 77, 69, 78, 84, 67, 65, 83, 84, 67, 79, 76, 85, 77, 78, 67, 79, 77, 77, 73, 84, 67, 79, 78, 70, 76, 73, 67, 84, 67, 82, 79, 83, 83, 67, 85, 82, 82, 69, 78, 84, 95, 84, 73, 77, 69, 83, 84, 65, 77, 80, 82, 73, 77, 65, 82, 89, 68, 69, 70, 69, 82, 82, 69, 68, 73, 83, 84, 73, 78, 67, 84, 68, 82, 79, 80, 70, 65, 73, 76, 70, 82, 79, 77, 70, 85, 76, 76, 71, 76, 79, 66, 89, 73, 70, 73, 83, 78, 85, 76, 76, 79, 82, 68, 69, 82, 69, 83, 84, 82, 73, 67, 84, 82, 73, 71, 72, 84, 82, 79, 76, 76, 66, 65, 67, 75, 82, 79, 87, 85, 78, 73, 79, 78, 85, 83, 73, 78, 71, 86, 65, 67, 85, 85, 77, 86, 73, 69, 87, 73, 78, 73, 84, 73, 65, 76, 76, 89}
-}
-
-var _keywordCodeØ00aOffsetØ005 [124]uint16 // sqlite3.c:139418:35
-
-func init() {
- _keywordCodeØ00aOffsetØ005 = [124]uint16{u16(0), u16(2), u16(2), u16(8), u16(9), u16(14), u16(16), u16(20), u16(23), u16(25), u16(25), u16(29), u16(33), u16(36), u16(41), u16(46), u16(48), u16(53), u16(54), u16(59), u16(62), u16(65), u16(67), u16(69), u16(78), u16(81), u16(86), u16(91), u16(95), u16(96), u16(101), u16(105), u16(109), u16(117), u16(122), u16(128), u16(136), u16(142), u16(152), u16(159), u16(162), u16(162), u16(165), u16(167), u16(167), u16(171), u16(176), u16(179), u16(184), u16(184), u16(188), u16(192), u16(199), u16(204), u16(209), u16(212), u16(218), u16(221), u16(225), u16(234), u16(240), u16(240), u16(240), u16(243), u16(246), u16(250), u16(251), u16(255), u16(261), u16(265), u16(272), u16(278), u16(290), u16(296), u16(305), u16(307), u16(313), u16(318), u16(320), u16(327), u16(332), u16(337), u16(343), u16(349), u16(354), u16(358), u16(361), u16(367), u16(371), u16(378), u16(380), u16(387), u16(389), u16(391), u16(400), u16(404), u16(410), u16(416), u16(424), u16(429), u16(429), u16(445), u16(452), u16(459), u16(460), u16(467), u16(471), u16(475), u16(479), u16(483), u16(486), u16(488), u16(490), u16(496), u16(500), u16(508), u16(513), u16(521), u16(524), u16(529), u16(534), u16(540), u16(544), u16(549)}
-}
-
-var _keywordCodeØ00aCodeØ006 [124]uint8 // sqlite3.c:139430:30
-
-func init() {
- _keywordCodeØ00aCodeØ006 = [124]uint8{66, 96, 140, 41, 83, 43, 104, 52, 34, 113, 45, 46, 49, 2, 48, 142, 40, 24, 119, 16, 98, 138, 11, 112, 139, 117, 6, 29, 107, 98, 141, 56, 9, 20, 13, 118, 61, 105, 99, 131, 54, 53, 111, 21, 21, 70, 103, 3, 25, 65, 98, 14, 33, 128, 127, 110, 5, 98, 57, 73, 76, 19, 51, 101, 49, 36, 32, 109, 136, 94, 17, 68, 42, 8, 124, 108, 50, 4, 31, 55, 28, 120, 64, 129, 137, 130, 67, 30, 58, 71, 100, 106, 15, 74, 37, 38, 10, 39, 98, 68, 68, 102, 7, 121, 72, 114, 44, 123, 98, 49, 35, 18, 75, 126, 59, 98, 12, 60, 115, 125, 62, 63, 47, 116}
-}
-
-var _keywordCodeØ00aNextØ003 [124]uint8 // sqlite3.c:139394:30
-
-func init() {
- _keywordCodeØ00aNextØ003 = [124]uint8{0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 21, 0, 0, 0, 0, 0, 50, 0, 43, 3, 47, 0, 0, 0, 0, 30, 0, 58, 0, 38, 0, 0, 0, 1, 66, 0, 0, 67, 0, 41, 0, 0, 0, 0, 0, 0, 49, 65, 0, 0, 0, 0, 31, 52, 16, 34, 10, 0, 0, 0, 0, 0, 0, 0, 11, 72, 79, 0, 8, 0, 104, 98, 0, 107, 0, 87, 0, 75, 51, 0, 27, 37, 73, 83, 0, 35, 68, 0, 0}
+ return _pNew
}
-var _renameTableFuncØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_renameTableFuncØ00__func__Ø000[0], str(4932), 16)
+// Allocate memory, either lookaside (if possible) or heap.
+// If the allocation fails, set the mallocFailed flag in
+// the connection pointer.
+//
+// If db!=0 and db->mallocFailed is true (indicating a prior malloc
+// failure on the same database connection) then always return 0.
+// Hence for a particular database connection, once malloc starts
+// failing, it fails consistently until mallocFailed is reset.
+// This is an important assumption. There are many places in the
+// code that do things like this:
+//
+// int *a = (int*)sqlite3DbMallocRaw(db, 100);
+// int *b = (int*)sqlite3DbMallocRaw(db, 200);
+// if( b ) a[10] = 9;
+//
+// In other words, if a subsequent malloc (ex: "b") worked, it is assumed
+// that all prior mallocs (ex: "a") worked too.
+//
+// The sqlite3MallocRawNN() variant guarantees that the "db" parameter is
+// not a NULL pointer.
+func _sqlite3DbMallocRaw(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
+ if _db != nil {
+ return _sqlite3DbMallocRawNN(tls, _db, _n)
+ }
+ _p = _sqlite3Malloc(tls, _n)
+ return _p
}
-func _sqlite3MPrintf(tls *crt.TLS, _db *Xsqlite3, _zFormat *int8, args ...interface{}) (r0 *int8) { // sqlite3.c:26020:1
- var _ap []interface{} // sqlite3.c:26021:11
- _ = _ap
- var _z *int8 // sqlite3.c:26022:8
- _ = _z
- _ap = args
- _z = _sqlite3VMPrintf(tls, _db, _zFormat, _ap)
- _ap = nil
- return _z
+// Delete any previous value and set the value stored in *pMem to NULL.
+//
+// This routine calls the Mem.xDel destructor to dispose of values that
+// require the destructor. But it preserves the Mem.zMalloc memory allocation.
+// To free all resources, use sqlite3VdbeMemRelease(), which both calls this
+// routine to invoke the destructor and deallocates Mem.zMalloc.
+//
+// Use this routine to reset the Mem prior to insert a new value.
+//
+// Use sqlite3VdbeMemRelease() to complete erase the Mem prior to abandoning it.
+func _sqlite3VdbeMemSetNull(tls *crt.TLS, _pMem *XMem) {
+ if (int32(_pMem.X1) & i32(9312)) != i32(0) {
+ _vdbeMemClearExternAndSetNull(tls, _pMem)
+ goto _1
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(1))
+_1:
}
-func _sqlite3VMPrintf(tls *crt.TLS, _db *Xsqlite3, _zFormat *int8, _ap []interface{}) (r0 *int8) { // sqlite3.c:26000:1
- var _z *int8 // sqlite3.c:26001:8
- _ = _z
- var _zBase [70]int8 // sqlite3.c:26002:8
- _ = _zBase
- var _acc XStrAccum // sqlite3.c:26003:12
- _ = _acc
+// If the memory cell contains a value that must be freed by
+// invoking the external callback in Mem.xDel, then this routine
+// will free that value. It also sets Mem.flags to MEM_Null.
+//
+// This is a helper routine for sqlite3VdbeMemSetNull() and
+// for sqlite3VdbeMemRelease(). Use those other routines as the
+// entry point for releasing Mem resources.
+func _vdbeMemClearExternAndSetNull(tls *crt.TLS, _p *XMem) {
+ var _4_pFrame *XVdbeFrame
func() {
- if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26004), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VMPrintfØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ if (*Xsqlite3)(_p.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70064), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(5441)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3StrAccumInit(tls, &_acc, _db, (*int8)(unsafe.Pointer(&_zBase)), int32(u32(70)), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0)))))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_acc)) + uintptr(25 /* X7 */))) = uint8(i32(1))
- _sqlite3VXPrintf(tls, &_acc, _zFormat, _ap)
- _z = _sqlite3StrAccumFinish(tls, &_acc)
- if int32(_acc.X6) != i32(1) {
- goto _2
+ func() {
+ if (int32(_p.X1) & i32(9312)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70065), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(5486)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32(_p.X1) & i32(8192)) != 0 {
+ _sqlite3VdbeMemFinalize(tls, _p, (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))))))
+ func() {
+ if (int32(_p.X1) & i32(8192)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70068), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(5504)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _sqlite3OomFault(tls, _db)
-_2:
- return _z
+ if (int32(_p.X1) & i32(1024)) != 0 {
+ func() {
+ if (int32(_p.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70072), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(5528)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_p.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))})) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_p.X10)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{nil})) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70073), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMemClearExternAndSetNullØ00__func__Ø000))), unsafe.Pointer(str(5553)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ (_p.X10)(tls, (unsafe.Pointer)(_p.X5))
+ goto _14
+ }
+ if (int32(_p.X1) & i32(32)) != 0 {
+ _sqlite3RowSetClear(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))))))
+ goto _16
+ }
+ if (int32(_p.X1) & i32(64)) != 0 {
+ _4_pFrame = (*XVdbeFrame)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
+ *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFrame)) + uintptr(4 /* X1 */))))) = (*XVdbeFrame)((*TVdbe)(_4_pFrame.X0).X39)
+ *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_4_pFrame.X0) + uintptr(184 /* X39 */))))) = _4_pFrame
+ }
+_16:
+_14:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = uint16(i32(1))
}
-var _sqlite3VMPrintfØ00__func__Ø000 [16]int8 // -
+var _vdbeMemClearExternAndSetNullØ00__func__Ø000 [29]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VMPrintfØ00__func__Ø000[0], str(4948), 16)
+ crt.Xstrncpy(nil, &_vdbeMemClearExternAndSetNullØ00__func__Ø000[0], str(5591), 29)
}
-func _sqlite3StrAccumFinish(tls *crt.TLS, _p *XStrAccum) (r0 *int8) { // sqlite3.c:25949:1
- if (_p.X2) == nil {
- goto _0
+// Memory cell pMem contains the context of an aggregate function.
+// This routine calls the finalize method for that function. The
+// result of the aggregate is stored back into pMem.
+//
+// Return SQLITE_ERROR if the finalizer reports an error. SQLITE_OK
+// otherwise.
+func _sqlite3VdbeMemFinalize(tls *crt.TLS, _pMem *XMem, _pFunc *XFuncDef) (r0 int32) {
+ var _rc int32
+ var _1_ctx Xsqlite3_context
+ var _1_t XMem
+ _rc = i32(0)
+ if func() int32 {
+ if (_pFunc != nil) && ((*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_pFunc.X5)}))) != nil) {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70033), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _3
}
-
func() {
- if ((_p.X2) == (_p.X1)) != ((int32(_p.X7) & i32(4)) == i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25951), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumFinishØ00__func__Ø000))), unsafe.Pointer(str(4964)))
+ if (int32(_pMem.X1)&i32(1)) == i32(0) && _pFunc != (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70036), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(5620)))
crt.X__builtin_abort(tls)
}
}()
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2)) + 1*uintptr(_p.X3))) = int8(i32(0))
- if (_p.X5) <= uint32(i32(0)) || (int32(_p.X7)&i32(4)) != i32(0) {
- goto _4
- }
- return _strAccumFinishRealloc(tls, _p)
-
-_4:
-_0:
- r0 = _p.X2
- return
-}
-
-var _sqlite3StrAccumFinishØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3StrAccumFinishØ00__func__Ø000[0], str(5004), 22)
-}
-
-func _strAccumFinishRealloc(tls *crt.TLS, _p *XStrAccum) (r0 *int8) { // sqlite3.c:25938:1
func() {
- if (_p.X5) <= uint32(i32(0)) || (int32(_p.X7)&i32(4)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25939), unsafe.Pointer((*int8)(unsafe.Pointer(&_strAccumFinishReallocØ00__func__Ø000))), unsafe.Pointer(str(5028)))
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = (*int8)(_sqlite3DbMallocRaw(tls, (*Xsqlite3)(_p.X0), uint64((_p.X3)+uint32(i32(1)))))
- if (_p.X2) == nil {
- goto _3
- }
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_p.X2), (unsafe.Pointer)(_p.X1), (_p.X3)+uint32(i32(1)))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(25 /* X7 */)))
- *p = uint8(int32(*p) | i32(4))
- sink2 = *p
- }
- goto _4
-
-_3:
- _setStrAccumError(tls, _p, uint8(i32(1)))
-_4:
- return _p.X2
-}
-
-var _strAccumFinishReallocØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_strAccumFinishReallocØ00__func__Ø000[0], str(5060), 22)
-}
-
-func Xsqlite3_result_text(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32, _xDel func(*crt.TLS, unsafe.Pointer)) { // sqlite3.c:76482:12
+ crt.Xmemset(tls, (unsafe.Pointer)(&_1_ctx), i32(0), u32(32))
+ crt.Xmemset(tls, (unsafe.Pointer)(&_1_t), i32(0), u32(48))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_t)) + uintptr(8 /* X1 */))) = uint16(i32(1))
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_t)) + uintptr(32 /* X9 */))))) = (*Xsqlite3)(_pMem.X9)
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_ctx)) + uintptr(0 /* X0 */))))) = &_1_t
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_ctx)) + uintptr(8 /* X2 */))))) = _pMem
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_ctx)) + uintptr(4 /* X1 */))))) = _pFunc
+ (*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_pFunc.X5)})))(tls, &_1_ctx)
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76488), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_textØ00__func__Ø000))), unsafe.Pointer(str(5084)))
+ if (int32(_pMem.X1) & i32(1024)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFinalizeØ00__func__Ø000))), unsafe.Pointer(str(5671)))
crt.X__builtin_abort(tls)
}
}()
- _setResultStrOrError(tls, _pCtx, _z, _n, uint8(i32(1)), _xDel)
+ if (_pMem.X7) > i32(0) {
+ _sqlite3DbFreeNN(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
+ }
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pMem), (unsafe.Pointer)(&_1_t), u32(48))
+ _rc = _1_ctx.X5
+_3:
+ return _rc
+
+ _ = _1_ctx
+ _ = _1_t
+ panic(0)
}
-var _sqlite3_result_textØ00__func__Ø000 [20]int8 // -
+var _sqlite3VdbeMemFinalizeØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_result_textØ00__func__Ø000[0], str(5128), 20)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemFinalizeØ00__func__Ø000[0], str(5698), 23)
}
-func _setResultStrOrError(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32, _enc uint8, _xDel func(*crt.TLS, unsafe.Pointer)) { // sqlite3.c:76395:1
- if _sqlite3VdbeMemSetStr(tls, (*XMem)(_pCtx.X0), _z, _n, _enc, _xDel) != i32(18) {
- goto _0
- }
-
- Xsqlite3_result_error_toobig(tls, _pCtx)
+// Deallocate all chunks from a RowSet. This frees all memory that
+// the RowSet has allocated over its lifetime. This routine is
+// the destructor for the RowSet.
+func _sqlite3RowSetClear(tls *crt.TLS, _p *XRowSet) {
+ var _pChunk, _pNextChunk *TRowSetChunk
+ _pChunk = (*TRowSetChunk)(_p.X0)
_0:
+ if _pChunk == nil {
+ goto _3
+ }
+ _pNextChunk = (*TRowSetChunk)(_pChunk.X0)
+ _sqlite3DbFree(tls, (*Xsqlite3)(_p.X1), (unsafe.Pointer)(_pChunk))
+ _pChunk = _pNextChunk
+ goto _0
+_3:
+ *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = nil
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = uint16(i32(0))
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = nil
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = nil
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))))) = nil
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */))) = uint16(i32(1))
}
-func _sqlite3VdbeMemSetStr(tls *crt.TLS, _pMem *XMem, _z *int8, _n int32, _enc uint8, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:70560:1
- var _nByte int32 // sqlite3.c:70567:7
- _ = _nByte
- var _iLimit int32 // sqlite3.c:70568:7
- _ = _iLimit
- var _flags uint16 // sqlite3.c:70569:7
- _ = _flags
- var _8_nAlloc int32 // sqlite3.c:70602:9
- _ = _8_nAlloc
- _nByte = _n
- _flags = u16(0)
+// If pMem is an object with a valid string representation, this routine
+// ensures the internal encoding for the string representation is
+// 'desiredEnc', one of SQLITE_UTF8, SQLITE_UTF16LE or SQLITE_UTF16BE.
+//
+// If pMem is not a string object, or the encoding of the string
+// representation is already stored using the requested encoding, then this
+// routine is a no-op.
+//
+// SQLITE_OK is returned if the conversion is successful (or not required).
+// SQLITE_NOMEM may be returned if a malloc() fails during conversion
+// between formats.
+func _sqlite3VdbeChangeEncoding(tls *crt.TLS, _pMem *XMem, _desiredEnc int32) (r0 int32) {
+ var _rc int32
func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetStrØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ if (int32(_pMem.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69790), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(4639)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetStrØ00__func__Ø000))), unsafe.Pointer(str(5148)))
+ if _desiredEnc != i32(1) && _desiredEnc != i32(2) && _desiredEnc != i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(5721)))
crt.X__builtin_abort(tls)
}
}()
- if _z != nil {
- goto _5
+ if ((int32(_pMem.X1) & i32(2)) == 0) || (int32(_pMem.X2) == _desiredEnc) {
+ return i32(0)
}
+ func() {
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(4667)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3VdbeMemTranslate(tls, _pMem, uint8(_desiredEnc))
+ func() {
+ if _rc != i32(0) && _rc != i32(7) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(5805)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _rc != i32(0) && int32(_pMem.X2) == _desiredEnc {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69806), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(5839)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _rc != i32(7) && int32(_pMem.X2) != _desiredEnc {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69807), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeEncodingØ00__func__Ø000))), unsafe.Pointer(str(5878)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _rc
+}
- _sqlite3VdbeMemSetNull(tls, _pMem)
- return i32(0)
-
-_5:
- if (*Xsqlite3)(_pMem.X9) == nil {
- goto _6
- }
+var _sqlite3VdbeChangeEncodingØ00__func__Ø000 [26]int8
- _iLimit = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pMem.X9)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))
- goto _7
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeChangeEncodingØ00__func__Ø000[0], str(5920), 26)
+}
-_6:
- _iLimit = i32(1000000000)
-_7:
- _flags = uint16(func() int32 {
- if int32(_enc) == i32(0) {
- return i32(16)
+// This routine transforms the internal text encoding used by pMem to
+// desiredEnc. It is an error if the string is already of the desired
+// encoding, or if *pMem does not contain a string value.
+func _sqlite3VdbeMemTranslate(tls *crt.TLS, _pMem *XMem, _desiredEnc uint8) (r0 int32) {
+ var _len, _1_rc, _28_c2, _37_c2 int32
+ var _c uint32
+ var _1_temp uint8
+ var _zOut, _zIn, _zTerm, _z *uint8
+ func() {
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27333), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(4667)))
+ crt.X__builtin_abort(tls)
}
- return i32(2)
- }())
- if _nByte >= i32(0) {
- goto _10
- }
-
+ }()
func() {
- if int32(_enc) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetStrØ00__func__Ø000))), unsafe.Pointer(str(5180)))
+ if (int32(_pMem.X1) & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27334), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(5946)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_enc) != i32(1) {
- goto _13
+ func() {
+ if int32(_pMem.X2) == int32(_desiredEnc) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27335), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(5966)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pMem.X2) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27336), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(5988)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pMem.X4) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(6001)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_pMem.X2) == i32(1) || int32(_desiredEnc) == i32(1) {
+ goto _12
}
-
- _nByte = _sqlite3Strlen30(tls, _z)
- if _nByte <= _iLimit {
- goto _14
+ _1_rc = _sqlite3VdbeMemMakeWriteable(tls, _pMem)
+ if _1_rc != i32(0) {
+ func() {
+ if _1_rc != i32(7) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(6012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _sqlite3NomemError(tls, i32(27357))
}
-
- _nByte = _iLimit + i32(1)
-_14:
- goto _15
-
-_13:
- _nByte = i32(0)
+ _zIn = (*uint8)(unsafe.Pointer(_pMem.X5))
+ _zTerm = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIn)) + 1*uintptr((_pMem.X4)&i32(-2))))
_16:
- if _nByte > _iLimit || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_nByte))))|int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_nByte+i32(1)))))) == 0 {
- goto _20
+ if uintptr(unsafe.Pointer(_zIn)) < uintptr(unsafe.Pointer(_zTerm)) {
+ _1_temp = *_zIn
+ *_zIn = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zIn)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(1))))))))
+ *(*uintptr)(unsafe.Pointer(&_zIn)) += uintptr(1)
+ *postInc13(&_zIn, 1) = _1_temp
+ goto _16
}
-
- {
- p := &_nByte
- *p = (*p) + i32(2)
- sink1 = *p
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = _desiredEnc
+ goto _translate_out
+_12:
+ if int32(_desiredEnc) == i32(1) {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */)))
+ *p = (*p) & i32(-2)
+ sink1 = *p
+ }
+ _len = ((_pMem.X4) * i32(2)) + i32(1)
+ goto _19
}
- goto _16
-
-_20:
-_15:
- {
- p := &_flags
- *p = uint16(int32(*p) | i32(512))
- sink12 = *p
+ _len = ((_pMem.X4) * i32(2)) + i32(2)
+_19:
+ _zIn = (*uint8)(unsafe.Pointer(_pMem.X5))
+ _zTerm = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIn)) + 1*uintptr(_pMem.X4)))
+ _zOut = (*uint8)(_sqlite3DbMallocRaw(tls, (*Xsqlite3)(_pMem.X9), uint64(_len)))
+ if _zOut == nil {
+ return _sqlite3NomemError(tls, i32(27399))
}
-_10:
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{_xDel})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))})) {
+ _z = _zOut
+ if int32(_pMem.X2) != i32(1) {
goto _21
}
-
- _8_nAlloc = _nByte
- if (int32(_flags) & i32(512)) == 0 {
+ if int32(_desiredEnc) != i32(2) {
goto _22
}
-
- {
- p := &_8_nAlloc
- *p = (*p) + func() int32 {
- if int32(_enc) == i32(1) {
- return i32(1)
- }
- return i32(2)
- }()
- sink1 = *p
+_23:
+ if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
+ goto _24
}
-_22:
- if _nByte <= _iLimit {
+ _c = uint32(*postInc13(&_zIn, 1))
+ if _c < uint32(i32(192)) {
goto _25
}
- return i32(18)
-
+ _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Utf8Trans1)) + 1*uintptr(_c-uint32(i32(192))))))
+_26:
+ if (_zIn != _zTerm) && ((int32(*_zIn) & i32(192)) == i32(128)) {
+ _c = (_c << uint(i32(6))) + uint32(i32(63)&int32(*postInc13(&_zIn, 1)))
+ goto _26
+ }
+ if ((_c < uint32(i32(128))) || ((_c & u32(4294965248)) == uint32(i32(55296)))) || ((_c & u32(4294967294)) == uint32(i32(65534))) {
+ _c = uint32(i32(65533))
+ }
_25:
- if _sqlite3VdbeMemClearAndResize(tls, _pMem, func() int32 {
- if _8_nAlloc > i32(32) {
- return _8_nAlloc
+ if _c <= uint32(i32(65535)) {
+ *postInc13(&_z, 1) = uint8(_c & uint32(i32(255)))
+ *postInc13(&_z, 1) = uint8((_c >> uint(i32(8))) & uint32(i32(255)))
+ goto _33
+ }
+ *postInc13(&_z, 1) = uint8(((_c >> uint(i32(10))) & uint32(i32(63))) + (((_c - uint32(i32(65536))) >> uint(i32(10))) & uint32(i32(192))))
+ *postInc13(&_z, 1) = uint8(uint32(i32(216)) + (((_c - uint32(i32(65536))) >> uint(i32(18))) & uint32(i32(3))))
+ *postInc13(&_z, 1) = uint8(_c & uint32(i32(255)))
+ *postInc13(&_z, 1) = uint8(uint32(i32(220)) + ((_c >> uint(i32(8))) & uint32(i32(3))))
+_33:
+ goto _23
+_24:
+ goto _34
+_22:
+ func() {
+ if int32(_desiredEnc) != i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(6029)))
+ crt.X__builtin_abort(tls)
}
- return i32(32)
- }()) == 0 {
- goto _28
+ }()
+_37:
+ if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
+ goto _38
}
- return _sqlite3NomemError(tls, i32(70613))
-
-_28:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pMem.X5), (unsafe.Pointer)(_z), uint32(_8_nAlloc))
- goto _29
-
+ _c = uint32(*postInc13(&_zIn, 1))
+ if _c < uint32(i32(192)) {
+ goto _39
+ }
+ _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Utf8Trans1)) + 1*uintptr(_c-uint32(i32(192))))))
+_40:
+ if (_zIn != _zTerm) && ((int32(*_zIn) & i32(192)) == i32(128)) {
+ _c = (_c << uint(i32(6))) + uint32(i32(63)&int32(*postInc13(&_zIn, 1)))
+ goto _40
+ }
+ if ((_c < uint32(i32(128))) || ((_c & u32(4294965248)) == uint32(i32(55296)))) || ((_c & u32(4294967294)) == uint32(i32(65534))) {
+ _c = uint32(i32(65533))
+ }
+_39:
+ if _c <= uint32(i32(65535)) {
+ *postInc13(&_z, 1) = uint8((_c >> uint(i32(8))) & uint32(i32(255)))
+ *postInc13(&_z, 1) = uint8(_c & uint32(i32(255)))
+ goto _47
+ }
+ *postInc13(&_z, 1) = uint8(uint32(i32(216)) + (((_c - uint32(i32(65536))) >> uint(i32(18))) & uint32(i32(3))))
+ *postInc13(&_z, 1) = uint8(((_c >> uint(i32(10))) & uint32(i32(63))) + (((_c - uint32(i32(65536))) >> uint(i32(10))) & uint32(i32(192))))
+ *postInc13(&_z, 1) = uint8(uint32(i32(220)) + ((_c >> uint(i32(8))) & uint32(i32(3))))
+ *postInc13(&_z, 1) = uint8(_c & uint32(i32(255)))
+_47:
+ goto _37
+_38:
+_34:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32((uintptr(unsafe.Pointer(_z)) - uintptr(unsafe.Pointer(_zOut))) / 1)
+ *postInc13(&_z, 1) = uint8(i32(0))
+ goto _48
_21:
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{_xDel})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))})) {
- goto _30
+ func() {
+ if int32(_desiredEnc) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27421), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(6056)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_pMem.X2) != i32(2) {
+ goto _51
}
-
- _sqlite3VdbeMemRelease(tls, _pMem)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = store0((**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(16 /* X5 */))), _z)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
- goto _31
-
-_30:
- _sqlite3VdbeMemRelease(tls, _pMem)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _z
- *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(36 /* X10 */))) = _xDel
+_52:
+ if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
+ goto _53
+ }
+ _c = uint32(*postInc13(&_zIn, 1))
{
- p := &_flags
- *p = uint16(int32(*p) | func() int32 {
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{_xDel})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{nil})) {
- return i32(2048)
- }
- return i32(1024)
- }())
- sink12 = *p
+ p := &_c
+ *p = (*p) + uint32(int32(*postInc13(&_zIn, 1))<= uint32(i32(55296))) && (_c < uint32(i32(57344)))) && (uintptr(unsafe.Pointer(_zIn)) < uintptr(unsafe.Pointer(_zTerm))) {
+ _28_c2 = int32(*postInc13(&_zIn, 1))
+ {
+ p := &_28_c2
+ *p = (*p) + (int32(*postInc13(&_zIn, 1)) << uint(i32(8)))
+ sink1 = *p
}
- return int32(_enc)
- }())
- if int32(_pMem.X2) == i32(1) || _sqlite3VdbeMemHandleBom(tls, _pMem) == 0 {
- goto _37
+ _c = (uint32(_28_c2&i32(1023)) + ((_c & uint32(i32(63))) << uint(i32(10)))) + (((_c & uint32(i32(960))) + uint32(i32(64))) << uint(i32(10)))
}
- return _sqlite3NomemError(tls, i32(70633))
-
-_37:
- if _nByte <= _iLimit {
- goto _38
+ if _c < uint32(i32(128)) {
+ *postInc13(&_z, 1) = uint8(_c & uint32(i32(255)))
+ goto _58
}
- return i32(18)
-
-_38:
+ if _c < uint32(i32(2048)) {
+ *postInc13(&_z, 1) = uint8(i32(192) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(31)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
+ goto _60
+ }
+ if _c < uint32(i32(65536)) {
+ *postInc13(&_z, 1) = uint8(i32(224) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(15)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
+ goto _62
+ }
+ *postInc13(&_z, 1) = uint8(i32(240) + int32(uint8((_c>>uint(i32(18)))&uint32(i32(7)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(63)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
+_62:
+_60:
+_58:
+ goto _52
+_53:
+ goto _63
+_51:
+_64:
+ if uintptr(unsafe.Pointer(_zIn)) >= uintptr(unsafe.Pointer(_zTerm)) {
+ goto _65
+ }
+ _c = uint32(int32(*postInc13(&_zIn, 1)) << uint(i32(8)))
+ {
+ p := &_c
+ *p = (*p) + uint32(*postInc13(&_zIn, 1))
+ sink5 = *p
+ }
+ if ((_c >= uint32(i32(55296))) && (_c < uint32(i32(57344)))) && (uintptr(unsafe.Pointer(_zIn)) < uintptr(unsafe.Pointer(_zTerm))) {
+ _37_c2 = int32(*postInc13(&_zIn, 1)) << uint(i32(8))
+ {
+ p := &_37_c2
+ *p = (*p) + int32(*postInc13(&_zIn, 1))
+ sink1 = *p
+ }
+ _c = (uint32(_37_c2&i32(1023)) + ((_c & uint32(i32(63))) << uint(i32(10)))) + (((_c & uint32(i32(960))) + uint32(i32(64))) << uint(i32(10)))
+ }
+ if _c < uint32(i32(128)) {
+ *postInc13(&_z, 1) = uint8(_c & uint32(i32(255)))
+ goto _70
+ }
+ if _c < uint32(i32(2048)) {
+ *postInc13(&_z, 1) = uint8(i32(192) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(31)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
+ goto _72
+ }
+ if _c < uint32(i32(65536)) {
+ *postInc13(&_z, 1) = uint8(i32(224) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(15)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
+ goto _74
+ }
+ *postInc13(&_z, 1) = uint8(i32(240) + int32(uint8((_c>>uint(i32(18)))&uint32(i32(7)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(12)))&uint32(i32(63)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8((_c>>uint(i32(6)))&uint32(i32(63)))))
+ *postInc13(&_z, 1) = uint8(i32(128) + int32(uint8(_c&uint32(i32(63)))))
+_74:
+_72:
+_70:
+ goto _64
+_65:
+_63:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32((uintptr(unsafe.Pointer(_z)) - uintptr(unsafe.Pointer(_zOut))) / 1)
+_48:
+ *_z = uint8(i32(0))
+ func() {
+ if ((_pMem.X4) + func() int32 {
+ if int32(_desiredEnc) == i32(1) {
+ return i32(1)
+ }
+ return i32(2)
+ }()) > _len {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27438), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTranslateØ00__func__Ø000))), unsafe.Pointer(str(6080)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _c = uint32(_pMem.X1)
+ _sqlite3VdbeMemRelease(tls, _pMem)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(uint32(i32(514)) | (_c & uint32(i32(32799))))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = _desiredEnc
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = (*int8)(unsafe.Pointer(_zOut))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = _pMem.X5
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X5))
+_translate_out:
return i32(0)
}
-var _sqlite3VdbeMemSetStrØ00__func__Ø000 [21]int8 // -
+var _sqlite3VdbeMemTranslateØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemSetStrØ00__func__Ø000[0], str(5188), 21)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemTranslateØ00__func__Ø000[0], str(6125), 24)
}
-func _sqlite3VdbeMemHandleBom(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:27468:1
- var _rc int32 // sqlite3.c:27469:7
- _ = _rc
- var _bom uint8 // sqlite3.c:27470:6
- _ = _bom
- var _1_b1 uint8 // sqlite3.c:27474:8
- _ = _1_b1
- var _1_b2 uint8 // sqlite3.c:27475:8
- _ = _1_b2
- _rc = i32(0)
- _bom = u8(0)
+// Change pMem so that its MEM_Str or MEM_Blob value is stored in
+// MEM.zMalloc, where it can be safely written.
+//
+// Return SQLITE_OK on success or SQLITE_NOMEM if malloc fails.
+func _sqlite3VdbeMemMakeWriteable(tls *crt.TLS, _pMem *XMem) (r0 int32) {
func() {
- if (_pMem.X4) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27472), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemHandleBomØ00__func__Ø000))), unsafe.Pointer(str(4376)))
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69895), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMakeWriteableØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
- if (_pMem.X4) <= i32(1) {
- goto _2
- }
-
- _1_b1 = *(*uint8)(unsafe.Pointer(_pMem.X5))
- _1_b2 = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_pMem.X5)))) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(1))))))))
- if int32(_1_b1) != i32(254) || int32(_1_b2) != i32(255) {
- goto _4
- }
-
- _bom = uint8(i32(3))
-_4:
- if int32(_1_b1) != i32(255) || int32(_1_b2) != i32(254) {
- goto _6
+ func() {
+ if (int32(_pMem.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMakeWriteableØ00__func__Ø000))), unsafe.Pointer(str(4639)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32(_pMem.X1) & i32(18)) == i32(0) {
+ goto _5
}
-
- _bom = uint8(i32(2))
-_6:
-_2:
- if _bom == 0 {
- goto _7
+ if func() int32 {
+ if (int32(_pMem.X1) & i32(16384)) != 0 {
+ return _sqlite3VdbeMemExpandBlob(tls, _pMem)
+ }
+ return i32(0)
+ }() != 0 {
+ return i32(7)
}
-
- _rc = _sqlite3VdbeMemMakeWriteable(tls, _pMem)
- if _rc != i32(0) {
- goto _8
+ if (_pMem.X7) != i32(0) && (_pMem.X5) == (_pMem.X6) {
+ goto _10
}
-
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */)))
- *p = (*p) - i32(2)
- sink1 = *p
+ if _sqlite3VdbeMemGrow(tls, _pMem, (_pMem.X4)+i32(2), i32(1)) != 0 {
+ return _sqlite3NomemError(tls, i32(69901))
}
- crt.Xmemmove(tls, (unsafe.Pointer)(_pMem.X5), (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5))+1*uintptr(i32(2))))), uint32(_pMem.X4))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_pMem.X4))) = int8(i32(0))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr((_pMem.X4)+i32(1)))) = int8(i32(0))
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) | i32(512))
- sink12 = *p
+ sink14 = *p
}
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = _bom
-_8:
-_7:
- r0 = _rc
- return
+_10:
+_5:
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-4097))
+ sink14 = *p
+ }
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(40 /* X11 */))))) = nil
+ return i32(0)
+}
+
+var _sqlite3VdbeMemMakeWriteableØ00__func__Ø000 [28]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemMakeWriteableØ00__func__Ø000[0], str(6149), 28)
}
-var _sqlite3VdbeMemHandleBomØ00__func__Ø000 [24]int8 // -
+var _sqlite3Utf8Trans1 [64]uint8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemHandleBomØ00__func__Ø000[0], str(5212), 24)
+ _sqlite3Utf8Trans1 = [64]uint8{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 0, 1, 0, 0}
}
-func Xsqlite3_result_error_toobig(tls *crt.TLS, _pCtx *Xsqlite3_context) { // sqlite3.c:76566:12
+// Release any memory resources held by the Mem. Both the memory that is
+// free by Mem.xDel and the Mem.zMalloc allocation are freed.
+//
+// Use this routine prior to clean up prior to abandoning a Mem, or to
+// reset a Mem back to its minimum memory utilization.
+//
+// Use sqlite3VdbeMemSetNull() to release just the Mem.xDel space
+// prior to inserting new content into the Mem.
+func _sqlite3VdbeMemRelease(tls *crt.TLS, _p *XMem) {
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_error_toobigØ00__func__Ø000))), unsafe.Pointer(str(5084)))
+ if _sqlite3VdbeCheckMemInvariants(tls, _p) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70115), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemReleaseØ00__func__Ø000))), unsafe.Pointer(str(6177)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(20 /* X5 */))) = i32(18)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(25 /* X7 */))) = uint8(i32(1))
- _sqlite3VdbeMemSetStr(tls, (*XMem)(_pCtx.X0), str(5236), i32(-1), uint8(i32(1)), nil)
+ if ((int32(_p.X1) & i32(9312)) != i32(0)) || (_p.X7) != 0 {
+ _vdbeMemClear(tls, _p)
+ }
}
-var _sqlite3_result_error_toobigØ00__func__Ø000 [28]int8 // -
+var _sqlite3VdbeMemReleaseØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_result_error_toobigØ00__func__Ø000[0], str(5260), 28)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemReleaseØ00__func__Ø000[0], str(6210), 22)
}
-func _renameTriggerFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _argv **XMem) { // sqlite3.c:96268:1
- var _zSql *uint8 // sqlite3.c:96273:23
- _ = _zSql
- var _zTableName *uint8 // sqlite3.c:96274:23
- _ = _zTableName
- var _token int32 // sqlite3.c:96276:7
- _ = _token
- var _tname XToken // sqlite3.c:96277:9
- _ = _tname
- var _dist int32 // sqlite3.c:96278:7
- _ = _dist
- var _zCsr *uint8 // sqlite3.c:96279:23
- _ = _zCsr
- var _len int32 // sqlite3.c:96280:7
- _ = _len
- var _zRet *int8 // sqlite3.c:96281:8
- _ = _zRet
- var _db *Xsqlite3 // sqlite3.c:96282:11
- _ = _db
- _zSql = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
- _zTableName = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
- _dist = i32(3)
- _zCsr = _zSql
- _len = i32(0)
- _db = Xsqlite3_context_db_handle(tls, _context)
-
- if _zSql == nil {
- goto _0
- }
-
-_1:
- if (*_zCsr) != 0 {
- goto _2
- }
- return
-
-_2:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer(_zCsr))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(4 /* X1 */))) = uint32(_len)
-_3:
- {
- p := &_zCsr
- *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_len)))
- sink11 = *p
+// Release memory held by the Mem p, both external memory cleared
+// by p->xDel and memory in p->zMalloc.
+//
+// This is a helper routine invoked by sqlite3VdbeMemRelease() in
+// the unusual case where there really is memory in p that needs
+// to be freed.
+func _vdbeMemClear(tls *crt.TLS, _p *XMem) {
+ if (int32(_p.X1) & i32(9312)) != i32(0) {
+ _vdbeMemClearExternAndSetNull(tls, _p)
}
- _len = _sqlite3GetToken(tls, _zCsr, &_token)
- if _token == i32(163) {
- goto _3
+ if (_p.X7) != 0 {
+ _sqlite3DbFreeNN(tls, (*Xsqlite3)(_p.X9), (unsafe.Pointer)(_p.X6))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(0)
}
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = nil
+}
+// Make sure the given Mem is \u0000 terminated.
+func _sqlite3VdbeMemNulTerminate(tls *crt.TLS, _pMem *XMem) (r0 int32) {
func() {
- if _len <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(96310), unsafe.Pointer((*int8)(unsafe.Pointer(&_renameTriggerFuncØ00__func__Ø000))), unsafe.Pointer(str(2536)))
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69962), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNulTerminateØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
- _dist += 1
- if _token != i32(122) && _token != i32(107) {
- goto _7
- }
-
- _dist = i32(0)
-_7:
- if (_dist != i32(2)) || (((_token != i32(137)) && (_token != i32(45))) && (_token != i32(5))) {
- goto _1
+ if (int32(_pMem.X1) & i32(514)) != i32(2) {
+ return i32(0)
}
-
- _zRet = _sqlite3MPrintf(tls, _db, str(2544), int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_tname.X0))))-uintptr(unsafe.Pointer(_zSql)))/1), unsafe.Pointer(_zSql), unsafe.Pointer(_zTableName), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_tname.X0))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_tname.X1)))))))))
- Xsqlite3_result_text(tls, _context, _zRet, i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))
-_0:
+ return _vdbeMemAddTerminator(tls, _pMem)
}
-var _renameTriggerFuncØ00__func__Ø000 [18]int8 // -
+var _sqlite3VdbeMemNulTerminateØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_renameTriggerFuncØ00__func__Ø000[0], str(5288), 18)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemNulTerminateØ00__func__Ø000[0], str(6232), 27)
}
-func _renameParentFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _argv **XMem) { // sqlite3.c:96211:1
- var _db *Xsqlite3 // sqlite3.c:96216:11
- _ = _db
- var _zOutput *int8 // sqlite3.c:96217:8
- _ = _zOutput
- var _zResult *int8 // sqlite3.c:96218:8
- _ = _zResult
- var _zInput *uint8 // sqlite3.c:96219:23
- _ = _zInput
- var _zOld *uint8 // sqlite3.c:96220:23
- _ = _zOld
- var _zNew *uint8 // sqlite3.c:96221:23
- _ = _zNew
- var _z *uint8 // sqlite3.c:96223:23
- _ = _z
- var _n int32 // sqlite3.c:96224:7
- _ = _n
- var _token int32 // sqlite3.c:96225:7
- _ = _token
- var _2_zParent *int8 // sqlite3.c:96232:12
- _ = _2_zParent
- var _4_zOut *int8 // sqlite3.c:96243:14
- _ = _4_zOut
- _db = Xsqlite3_context_db_handle(tls, _context)
- _zOutput = nil
- _zInput = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
- _zOld = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
- _zNew = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2)))))
-
- if _zInput != nil && _zOld != nil {
- goto _1
- }
- return
-
-_1:
- _z = _zInput
-_2:
- if (*_z) == 0 {
- goto _5
- }
-
- _n = _sqlite3GetToken(tls, _z, &_token)
- if _token != i32(105) {
- goto _6
+// It is already known that pMem contains an unterminated string.
+// Add the zero terminator.
+func _vdbeMemAddTerminator(tls *crt.TLS, _pMem *XMem) (r0 int32) {
+ if _sqlite3VdbeMemGrow(tls, _pMem, (_pMem.X4)+i32(2), i32(1)) != 0 {
+ return _sqlite3NomemError(tls, i32(69950))
}
-
-_7:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_pMem.X4))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr((_pMem.X4)+i32(1)))) = int8(i32(0))
{
- p := &_z
- *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
- sink11 = *p
- }
- _n = _sqlite3GetToken(tls, _z, &_token)
- if _token == i32(163) {
- goto _7
- }
-
- if _token != i32(164) {
- goto _8
- }
-
- goto _5
-
-_8:
- _2_zParent = _sqlite3DbStrNDup(tls, _db, (*int8)(unsafe.Pointer(_z)), uint64(_n))
- if _2_zParent != nil {
- goto _9
- }
-
- goto _5
-
-_9:
- _sqlite3Dequote(tls, _2_zParent)
- if i32(0) != _sqlite3StrICmp(tls, (*int8)(unsafe.Pointer(_zOld)), _2_zParent) {
- goto _10
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(512))
+ sink14 = *p
}
-
- _4_zOut = _sqlite3MPrintf(tls, _db, str(5308), unsafe.Pointer(func() *int8 {
- if _zOutput != nil {
- return _zOutput
- }
- return str(196)
- }()), int32((uintptr(unsafe.Pointer(_z))-uintptr(unsafe.Pointer(_zInput)))/1), unsafe.Pointer(_zInput), unsafe.Pointer((*int8)(unsafe.Pointer(_zNew))))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zOutput))
- _zOutput = _4_zOut
- _zInput = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))
-_10:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_2_zParent))
-_6:
- _z = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_n)))))))
- goto _2
-
-_5:
- Xsqlite3_result_text(tls, func() *Xsqlite3_context {
- _zResult = _sqlite3MPrintf(tls, _db, str(5320), unsafe.Pointer(func() *int8 {
- if _zOutput != nil {
- return _zOutput
- }
- return str(196)
- }()), unsafe.Pointer(_zInput))
- return _context
- }(), _zResult, i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zOutput))
+ return i32(0)
}
-func _sqlite3DbStrNDup(tls *crt.TLS, _db *Xsqlite3, _z *int8, _n uint64) (r0 *int8) { // sqlite3.c:24969:1
- var _zNew *int8 // sqlite3.c:24970:8
- _ = _zNew
+// Add MEM_Str to the set of representations for the given Mem. Numbers
+// are converted using sqlite3_snprintf(). Converting a BLOB to a string
+// is a no-op.
+//
+// Existing representations MEM_Int and MEM_Real are invalidated if
+// bForce is true but are retained if bForce is false.
+//
+// A MEM_Null value will never be passed to this function. This function is
+// used for converting values to text for returning to the user (i.e. via
+// sqlite3_value_text()), or for ensuring that values to be used as btree
+// keys are strings. In the former case a NULL pointer is returned the
+// user and the latter is an internal programming error.
+func _sqlite3VdbeMemStringify(tls *crt.TLS, _pMem *XMem, _enc uint8, _bForce uint8) (r0 int32) {
+ var _fg, _nByte int32
+ _fg = int32(_pMem.X1)
+ _nByte = i32(32)
func() {
- if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24971), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbStrNDupØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69990), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
- if _z != nil {
- goto _2
- }
- return nil
-
-_2:
func() {
- if (_n & uint64(i32(2147483647))) != _n {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbStrNDupØ00__func__Ø000))), unsafe.Pointer(str(5328)))
+ if (_fg & i32(16384)) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69991), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(6259)))
crt.X__builtin_abort(tls)
}
}()
- _zNew = (*int8)(_sqlite3DbMallocRawNN(tls, _db, _n+uint64(i32(1))))
- if _zNew == nil {
- goto _5
- }
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zNew), (unsafe.Pointer)(_z), uint32(_n))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNew)) + 1*uintptr(_n))) = int8(i32(0))
-_5:
- return _zNew
-}
-
-var _sqlite3DbStrNDupØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3DbStrNDupØ00__func__Ø000[0], str(5348), 17)
-}
-
-func _sqlite3Dequote(tls *crt.TLS, _z *int8) { // sqlite3.c:27901:1
- var _quote int8 // sqlite3.c:27902:8
- _ = _quote
- var _i int32 // sqlite3.c:27903:7
- _ = _i
- var _j int32 // sqlite3.c:27903:10
- _ = _j
- if _z != nil {
- goto _0
- }
- return
-
-_0:
- _quote = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_quote))))) & i32(128)) != 0 {
- goto _1
+ func() {
+ if (_fg & i32(18)) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69992), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(6274)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_fg & i32(12)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69993), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(6299)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pMem.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(4639)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69995), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(6321)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3VdbeMemClearAndResize(tls, _pMem, _nByte) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(0))
+ return _sqlite3NomemError(tls, i32(70000))
}
- return
-
-_1:
- if int32(_quote) != i32(91) {
- goto _2
+ if (_fg & i32(4)) != 0 {
+ Xsqlite3_snprintf(tls, _nByte, _pMem.X5, str(6348), *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ goto _15
}
-
- _quote = int8(i32(93))
-_2:
- *func() *int32 { _i = i32(1); return &_j }() = i32(0)
-_3:
func() {
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27909), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DequoteØ00__func__Ø000))), unsafe.Pointer(str(5368)))
+ if (_fg & i32(8)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemStringifyØ00__func__Ø000))), unsafe.Pointer(str(6353)))
crt.X__builtin_abort(tls)
}
}()
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != int32(_quote) {
- goto _8
+ Xsqlite3_snprintf(tls, _nByte, _pMem.X5, str(6367), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+_15:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _sqlite3Strlen30(tls, _pMem.X5)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(514))
+ sink14 = *p
}
-
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) != int32(_quote) {
- goto _9
+ if _bForce != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-13))
+ sink14 = *p
+ }
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_j, int32(1))))) = _quote
- _i += 1
- goto _10
-
-_9:
- goto _5
-
-_10:
- goto _11
-
-_8:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_j, int32(1))))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))
-_11:
- _i += 1
- goto _3
-
-_5:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_j))) = int8(i32(0))
+ _sqlite3VdbeChangeEncoding(tls, _pMem, int32(_enc))
+ return i32(0)
}
-var _sqlite3DequoteØ00__func__Ø000 [15]int8 // -
+var _sqlite3VdbeMemStringifyØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DequoteØ00__func__Ø000[0], str(5376), 15)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemStringifyØ00__func__Ø000[0], str(6374), 24)
}
-func _sqlite3RegisterDateTimeFunctions(tls *crt.TLS) { // sqlite3.c:20057:1
- _sqlite3InsertBuiltinFuncs(tls, (*XFuncDef)(unsafe.Pointer(&_sqlite3RegisterDateTimeFunctionsØ00aDateTimeFuncsØ001)), i32(8))
+// Change the pMem->zMalloc allocation to be at least szNew bytes.
+// If pMem->zMalloc already meets or exceeds the requested size, this
+// routine is a no-op.
+//
+// Any prior string or blob content in the pMem object may be discarded.
+// The pMem->xDel destructor is called, if it exists. Though MEM_Str
+// and MEM_Blob values may be discarded, MEM_Int, MEM_Real, and MEM_Null
+// values are preserved.
+//
+// Return SQLITE_OK on success or an error code (probably SQLITE_NOMEM)
+// if unable to complete the resizing.
+func _sqlite3VdbeMemClearAndResize(tls *crt.TLS, _pMem *XMem, _szNew int32) (r0 int32) {
+ func() {
+ if _szNew <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemClearAndResizeØ00__func__Ø000))), unsafe.Pointer(str(6398)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pMem.X1)&i32(1024)) != i32(0) && (_pMem.X7) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69878), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemClearAndResizeØ00__func__Ø000))), unsafe.Pointer(str(6406)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pMem.X7) < _szNew {
+ return _sqlite3VdbeMemGrow(tls, _pMem, _szNew, i32(0))
+ }
+ func() {
+ if (int32(_pMem.X1) & i32(1024)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69882), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemClearAndResizeØ00__func__Ø000))), unsafe.Pointer(str(5671)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _pMem.X6
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(13))
+ sink14 = *p
+ }
+ return i32(0)
}
-var _sqlite3RegisterDateTimeFunctionsØ00aDateTimeFuncsØ001 [8]XFuncDef // sqlite3.c:20058:18
+var _sqlite3VdbeMemClearAndResizeØ00__func__Ø000 [29]int8
func init() {
- _sqlite3RegisterDateTimeFunctionsØ00aDateTimeFuncsØ001 = [8]XFuncDef{XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_juliandayFunc})), X5: nil, X6: str(5392), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_dateFunc})), X5: nil, X6: str(5404), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_timeFunc})), X5: nil, X6: str(5412), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_datetimeFunc})), X5: nil, X6: str(5420), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_strftimeFunc})), X5: nil, X6: str(5432), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_ctimeFunc})), X5: nil, X6: str(5444), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_ctimestampFunc})), X5: nil, X6: str(5460), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_cdateFunc})), X5: nil, X6: str(5480), X7: t10{}}}
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemClearAndResizeØ00__func__Ø000[0], str(6454), 29)
}
-func _juliandayFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) { // sqlite3.c:19742:1
- var _x XDateTime // sqlite3.c:19747:12
- _ = _x
- if _isDate(tls, _context, _argc, _argv, &_x) != i32(0) {
- goto _0
- }
-
- _computeJD(tls, &_x)
- Xsqlite3_result_double(tls, _context, float64(_x.X0)/(8.64e+07))
-_0:
+func Xsqlite3_snprintf(tls *crt.TLS, _n int32, _zBuf *int8, _zFormat *int8, args ...interface{}) (r0 *int8) {
+ var _z *int8
+ var _ap []interface{}
+ _ap = args
+ _z = Xsqlite3_vsnprintf(tls, _n, _zBuf, _zFormat, _ap)
+ _ap = nil
+ return _z
}
-func _isDate(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem, _p *XDateTime) (r0 int32) { // sqlite3.c:19699:1
- var _i int32 // sqlite3.c:19705:7
- _ = _i
- var _n int32 // sqlite3.c:19705:10
- _ = _n
- var _z *uint8 // sqlite3.c:19706:23
- _ = _z
- var _eType int32 // sqlite3.c:19707:7
- _ = _eType
- crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
- if _argc != i32(0) {
- goto _0
+// sqlite3_snprintf() works like snprintf() except that it ignores the
+// current locale settings. This is important for SQLite because we
+// are not able to use a "," as the decimal point in place of "." as
+// specified by some locales.
+//
+// Oops: The first two arguments of sqlite3_snprintf() are backwards
+// from the snprintf() standard. Unfortunately, it is too late to change
+// this without breaking compatibility, so we just have to live with the
+// mistake.
+//
+// sqlite3_vsnprintf() is the varargs version.
+func Xsqlite3_vsnprintf(tls *crt.TLS, _n int32, _zBuf *int8, _zFormat *int8, _ap []interface{}) (r0 *int8) {
+ var _acc XStrAccum
+ if _n <= i32(0) {
+ return _zBuf
}
- return _setDateTimeToCurrent(tls, _context, _p)
-
-_0:
- if store1(&_eType, Xsqlite3_value_type(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))) != i32(2) && _eType != i32(1) {
+ if _zBuf != nil && _zFormat != nil {
goto _2
}
-
- _setRawDateNumber(tls, _p, Xsqlite3_value_double(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0))))))
- goto _3
-
-_2:
- _z = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
- if _z != nil && _parseDateOrTime(tls, _context, (*int8)(unsafe.Pointer(_z)), _p) == 0 {
- goto _5
- }
- return i32(1)
-
-_5:
-_3:
- _i = i32(1)
-_6:
- if _i >= _argc {
- goto _9
- }
-
- _z = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(_i))))
- _n = Xsqlite3_value_bytes(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(_i))))
- if _z != nil && _parseModifier(tls, _context, (*int8)(unsafe.Pointer(_z)), _n, _p) == 0 {
- goto _11
- }
- return i32(1)
-
-_11:
- _i += 1
- goto _6
-
-_9:
- _computeJD(tls, _p)
- if (_p.X14) == 0 && _validJulianDay(tls, _p.X0) != 0 {
- goto _13
- }
- return i32(1)
-
-_13:
- return i32(0)
-}
-
-func _setDateTimeToCurrent(tls *crt.TLS, _context *Xsqlite3_context, _p *XDateTime) (r0 int32) { // sqlite3.c:19164:1
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3StmtCurrentTime(tls, _context)
- if (_p.X0) <= int64(i32(0)) {
- goto _0
+ _sqlite3MisuseError(tls, i32(26087))
+ if _zBuf != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(0)))) = int8(i32(0))
}
+ return _zBuf
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
- return i32(0)
+_2:
+ _sqlite3StrAccumInit(tls, &_acc, nil, _zBuf, _n, i32(0))
+ _sqlite3VXPrintf(tls, &_acc, _zFormat, _ap)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(_acc.X3))) = int8(i32(0))
+ return _zBuf
-_0:
- return i32(1)
+ _ = _acc
+ panic(0)
}
-func _sqlite3StmtCurrentTime(tls *crt.TLS, _p *Xsqlite3_context) (r0 int64) { // sqlite3.c:76825:1
- var _rc int32 // sqlite3.c:76826:7
- _ = _rc
- var _piTime *int64 // sqlite3.c:76828:17
- _ = _piTime
- _piTime = (*int64)(unsafe.Pointer(uintptr(_p.X3) + uintptr(52 /* X13 */)))
+// Extract the user data from a sqlite3_context structure and return a
+// pointer to it.
+//
+// IMPLEMENTATION-OF: R-46798-50301 The sqlite3_context_db_handle() interface
+// returns a copy of the pointer to the database connection (the 1st
+// parameter) of the sqlite3_create_function() and
+// sqlite3_create_function16() routines that originally registered the
+// application defined function.
+func Xsqlite3_context_db_handle(tls *crt.TLS, _p *Xsqlite3_context) (r0 *Xsqlite3) {
func() {
- if (*TVdbe)(_p.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76829), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StmtCurrentTimeØ00__func__Ø000))), unsafe.Pointer(str(5496)))
+ if _p == nil || (*XMem)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_context_db_handleØ00__func__Ø000))), unsafe.Pointer(str(6483)))
crt.X__builtin_abort(tls)
}
}()
- if (*_piTime) != int64(i32(0)) {
- goto _2
- }
-
- _rc = _sqlite3OsCurrentTimeInt64(tls, (*Xsqlite3_vfs)((*Xsqlite3)((*XMem)(_p.X0).X9).X0), _piTime)
- if _rc == 0 {
- goto _3
- }
-
- *_piTime = int64(i32(0))
-_3:
-_2:
- r0 = *_piTime
- return
+ return (*Xsqlite3)((*XMem)(_p.X0).X9)
}
-var _sqlite3StmtCurrentTimeØ00__func__Ø000 [23]int8 // -
+var _sqlite3_context_db_handleØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StmtCurrentTimeØ00__func__Ø000[0], str(5508), 23)
+ crt.Xstrncpy(nil, &_sqlite3_context_db_handleØ00__func__Ø000[0], str(6496), 26)
}
-func _sqlite3OsCurrentTimeInt64(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pTimeOut *int64) (r0 int32) { // sqlite3.c:20342:1
- var _rc int32 // sqlite3.c:20343:7
- _ = _rc
- var _2_r float64 // sqlite3.c:20353:12
- _ = _2_r
- if (_pVfs.X0) < i32(2) || (*(*func(*crt.TLS, *Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *int64) int32
- }{(_pVfs.X18)}))) == nil {
+// Return the length (in bytes) of the token that begins at z[0].
+// Store the token type in *tokenType before returning.
+func _sqlite3GetToken(tls *crt.TLS, _z *uint8, _tokenType *int32) (r0 int32) {
+ var _i, _c, _35_delim, _58_n int32
+ switch int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiClass)) + 1*uintptr(*_z)))) {
+ case i32(0):
+ goto _26
+ case i32(1):
+ goto _25
+ case i32(2):
+ goto _27
+ case i32(3):
+ goto _20
+ case i32(4):
+ goto _23
+ case i32(5):
+ goto _24
+ case i32(6):
+ goto _22
+ case i32(7):
goto _1
+ case i32(8):
+ goto _18
+ case i32(9):
+ goto _21
+ case i32(10):
+ goto _14
+ case i32(11):
+ goto _2
+ case i32(12):
+ goto _11
+ case i32(13):
+ goto _12
+ case i32(14):
+ goto _10
+ case i32(15):
+ goto _13
+ case i32(16):
+ goto _8
+ case i32(17):
+ goto _3
+ case i32(18):
+ goto _4
+ case i32(19):
+ goto _5
+ case i32(20):
+ goto _6
+ case i32(21):
+ goto _7
+ case i32(22):
+ goto _9
+ case i32(23):
+ goto _15
+ case i32(24):
+ goto _16
+ case i32(25):
+ goto _17
+ case i32(26):
+ goto _19
+ default:
+ goto _28
}
- _rc = (*(*func(*crt.TLS, *Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *int64) int32
- }{(_pVfs.X18)})))(tls, _pVfs, _pTimeOut)
- goto _2
-
_1:
- _rc = (*(*func(*crt.TLS, *Xsqlite3_vfs, *float64) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *float64) int32
- }{(_pVfs.X16)})))(tls, _pVfs, &_2_r)
- *_pTimeOut = int64(_2_r * (8.64e+07))
-_2:
- return _rc
-}
-
-func Xsqlite3_value_type(tls *crt.TLS, _pVal *XMem) (r0 int32) { // sqlite3.c:76316:12
- return int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3_value_typeØ00aTypeØ001)) + 1*uintptr(int32(_pVal.X1)&i32(31)))))
-}
-
-var _sqlite3_value_typeØ00aTypeØ001 [32]uint8 // sqlite3.c:76317:19
-
-func init() {
- _sqlite3_value_typeØ00aTypeØ001 = [32]uint8{4, 5, 3, 5, 1, 5, 1, 5, 2, 5, 2, 5, 1, 5, 1, 5, 4, 5, 3, 5, 1, 5, 1, 5, 2, 5, 2, 5, 1, 5, 1, 5}
-}
-
-func _setRawDateNumber(tls *crt.TLS, _p *XDateTime, _r float64) { // sqlite3.c:19180:1
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = _r
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(1))
- if _r < float64(0) || _r >= (5.3734845e+06) {
- goto _1
+ _i = i32(1)
+_29:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(1)) == 0 {
+ goto _32
}
+ _i += 1
+ goto _29
+_32:
+ *_tokenType = i32(163)
+ return _i
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = int64((_r * (8.64e+07)) + (0.5))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
-_1:
-}
-
-func Xsqlite3_value_double(tls *crt.TLS, _pVal *XMem) (r0 float64) { // sqlite3.c:76285:12
- return _sqlite3VdbeRealValue(tls, _pVal)
-}
-
-func _sqlite3VdbeRealValue(tls *crt.TLS, _pMem *XMem) (r0 float64) { // sqlite3.c:70196:1
- func() {
- if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRealValueØ00__func__Ø000))), unsafe.Pointer(str(2992)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70198), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRealValueØ00__func__Ø000))), unsafe.Pointer(str(4716)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (int32(_pMem.X1) & i32(8)) == 0 {
- goto _5
+_2:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(45) {
+ goto _33
}
-
- /* X0 */
- return *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0)))))
-
-_5:
- if (int32(_pMem.X1) & i32(4)) == 0 {
- goto _7
+ _i = i32(2)
+_34:
+ if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) || _c == i32(10) {
+ goto _38
}
+ _i += 1
+ goto _34
+_38:
+ *_tokenType = i32(163)
+ return _i
- /* X0 */
- return float64(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0))))))
+_33:
+ *_tokenType = i32(89)
+ return i32(1)
-_7:
- if (int32(_pMem.X1) & i32(18)) == 0 {
- goto _9
- }
- return _memRealValue(tls, _pMem)
+_3:
+ *_tokenType = i32(22)
+ return i32(1)
-_9:
- return float64(0)
-}
+_4:
+ *_tokenType = i32(23)
+ return i32(1)
-var _sqlite3VdbeRealValueØ00__func__Ø000 [21]int8 // -
+_5:
+ *_tokenType = i32(1)
+ return i32(1)
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeRealValueØ00__func__Ø000[0], str(5532), 21)
-}
+_6:
+ *_tokenType = i32(88)
+ return i32(1)
-func _memRealValue(tls *crt.TLS, _pMem *XMem) (r0 float64) { // sqlite3.c:70190:1
- var _val float64 // sqlite3.c:70192:10
- _ = _val
- _val = 0
- _sqlite3AtoF(tls, _pMem.X5, &_val, _pMem.X4, _pMem.X2)
- return _val
-}
+_7:
+ *_tokenType = i32(90)
+ return i32(1)
-func _sqlite3AtoF(tls *crt.TLS, _z *int8, _pResult *float64, _length int32, _enc uint8) (r0 int32) { // sqlite3.c:28001:1
- var _incr int32 // sqlite3.c:28003:7
- _ = _incr
- var _zEnd *int8 // sqlite3.c:28004:14
- _ = _zEnd
- var _sign int32 // sqlite3.c:28006:7
- _ = _sign
- var _s int64 // sqlite3.c:28007:7
- _ = _s
- var _d int32 // sqlite3.c:28008:7
- _ = _d
- var _esign int32 // sqlite3.c:28009:7
- _ = _esign
- var _e int32 // sqlite3.c:28010:7
- _ = _e
- var _eValid int32 // sqlite3.c:28011:7
- _ = _eValid
- var _result float64 // sqlite3.c:28012:10
- _ = _result
- var _nDigits int32 // sqlite3.c:28013:7
- _ = _nDigits
- var _nonNum int32 // sqlite3.c:28014:7
- _ = _nonNum
- var _2_i int32 // sqlite3.c:28022:9
- _ = _2_i
- var _22_scale float64 // sqlite3.c:28134:23
- _ = _22_scale
- _zEnd = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z)) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_length)))))))
- _sign = i32(1)
- _s = i64(0)
- _d = i32(0)
- _esign = i32(1)
- _e = i32(0)
- _eValid = i32(1)
- _nDigits = i32(0)
- _nonNum = i32(0)
- func() {
- if int32(_enc) != i32(1) && int32(_enc) != i32(2) && int32(_enc) != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28016), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AtoFØ00__func__Ø000))), unsafe.Pointer(str(5556)))
- crt.X__builtin_abort(tls)
- }
- }()
- *_pResult = float64(0)
- if int32(_enc) != i32(1) {
- goto _4
+_8:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(42)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(2))))) == i32(0)) {
+ *_tokenType = i32(91)
+ return i32(1)
}
-
- _incr = i32(1)
- goto _5
-
-_4:
- _incr = i32(2)
- i32(0)
- _2_i = i32(3) - int32(_enc)
-_6:
- if _2_i >= _length || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_2_i)))) != i32(0) {
- goto _10
+ *func() *int32 { _i = i32(3); return &_c }() = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(2)))))
+_41:
+ if _c == i32(42) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == i32(47) || store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
+ goto _46
}
-
- {
- p := &_2_i
- *p = (*p) + i32(2)
- sink1 = *p
+ _i += 1
+ goto _41
+_46:
+ if _c != 0 {
+ _i += 1
}
- goto _6
+ *_tokenType = i32(163)
+ return _i
+
+_9:
+ *_tokenType = i32(92)
+ return i32(1)
_10:
- _nonNum = bool2int(_2_i < _length)
- _zEnd = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_2_i^i32(1))))
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(int32(_enc)&i32(1))))
- sink0 = *p
- }
-_5:
+ *_tokenType = i32(78)
+ return i32(1) + bool2int(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) == i32(61))
+
_11:
- if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(1)) == 0 {
- goto _12
+ if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1)))))) == i32(61) {
+ *_tokenType = i32(80)
+ return i32(2)
}
-
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+ if _c == i32(62) {
+ *_tokenType = i32(77)
+ return i32(2)
}
- goto _11
+ if _c == i32(60) {
+ *_tokenType = i32(86)
+ return i32(2)
+ }
+ *_tokenType = i32(81)
+ return i32(1)
_12:
- if uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd)) {
- goto _14
+ if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1)))))) == i32(61) {
+ *_tokenType = i32(82)
+ return i32(2)
}
- return i32(0)
+ if _c == i32(62) {
+ *_tokenType = i32(87)
+ return i32(2)
+ }
+ *_tokenType = i32(79)
+ return i32(1)
-_14:
- if int32(*_z) != i32(45) {
- goto _15
+_13:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(61) {
+ *_tokenType = i32(164)
+ return i32(1)
}
+ *_tokenType = i32(77)
+ return i32(2)
- _sign = i32(-1)
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+_14:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(124) {
+ *_tokenType = i32(85)
+ return i32(1)
}
- goto _16
+ *_tokenType = i32(93)
+ return i32(2)
_15:
- if int32(*_z) != i32(43) {
- goto _17
- }
+ *_tokenType = i32(26)
+ return i32(1)
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
- }
-_17:
_16:
-_18:
- if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) == 0 || _s >= i64(922337203685477579) {
- goto _19
- }
+ *_tokenType = i32(84)
+ return i32(1)
- _s = (_s * int64(i32(10))) + int64(int32(*_z)-i32(48))
- *func() *int32 {
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
- }
- return &_nDigits
- }() += 1
- goto _18
+_17:
+ *_tokenType = i32(95)
+ return i32(1)
-_19:
-_22:
- if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) == 0 {
- goto _23
+_18:
+ _35_delim = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))
+ _i = i32(1)
+_62:
+ if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
+ goto _65
}
-
- *func() *int32 {
- *func() *int32 {
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
- }
- return &_nDigits
- }() += 1
- return &_d
- }() += 1
- goto _22
-
-_23:
- if uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd)) {
- goto _25
+ if _c != _35_delim {
+ goto _66
}
-
- goto _do_atof_calc
-
-_25:
- if int32(*_z) != i32(46) {
- goto _26
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) == _35_delim {
+ _i += 1
+ goto _68
}
-
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+ goto _65
+_68:
+_66:
+ _i += 1
+ goto _62
+_65:
+ if _c == i32(39) {
+ *_tokenType = i32(97)
+ return _i + i32(1)
}
-_27:
- if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) == 0 {
- goto _28
+ if _c != i32(0) {
+ *_tokenType = i32(27)
+ return _i + i32(1)
}
+ *_tokenType = i32(164)
+ return _i
- if _s >= i64(922337203685477579) {
- goto _30
+_19:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1)))))))) & i32(4)) == 0 {
+ *_tokenType = i32(122)
+ return i32(1)
}
-
- _s = (_s * int64(i32(10))) + int64(int32(*_z)-i32(48))
- _d -= 1
-_30:
- *func() *int32 {
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
- }
- return &_nDigits
- }() += 1
- goto _27
-
-_28:
-_26:
- if uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd)) {
- goto _31
- }
-
- goto _do_atof_calc
-
-_31:
- if int32(*_z) != i32(101) && int32(*_z) != i32(69) {
- goto _33
- }
-
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
- }
- _eValid = i32(0)
- if uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd)) {
- goto _34
- }
-
- goto _do_atof_calc
-
-_34:
- if int32(*_z) != i32(45) {
- goto _35
- }
-
- _esign = i32(-1)
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+_20:
+ *_tokenType = i32(134)
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(48) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(120) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(88) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(2))))))))&i32(8)) == 0 {
+ goto _77
}
- goto _36
-
-_35:
- if int32(*_z) != i32(43) {
- goto _37
+ _i = i32(3)
+_78:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(8)) == 0 {
+ goto _81
}
+ _i += 1
+ goto _78
+_81:
+ return _i
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+_77:
+ _i = i32(0)
+_82:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) == 0 {
+ goto _85
}
-_37:
-_36:
-_38:
- if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) == 0 {
- goto _39
+ _i += 1
+ goto _82
+_85:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != i32(46) {
+ goto _86
}
-
- _e = func() int32 {
- if _e < i32(10000) {
- return ((_e * i32(10)) + (int32(*_z) - i32(48)))
- }
- return i32(10000)
- }()
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+ _i += 1
+_87:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) != 0 {
+ _i += 1
+ goto _87
}
- _eValid = i32(1)
- goto _38
-
-_39:
-_33:
-_43:
- if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(1)) == 0 {
- goto _44
+ *_tokenType = i32(132)
+_86:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != i32(101) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != i32(69) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))))))&i32(4)) == 0 && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) != i32(43) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) != i32(45) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(2))))))))&i32(4)) == 0) {
+ goto _94
}
-
{
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+ p := &_i
+ *p = (*p) + i32(2)
+ sink1 = *p
}
- goto _43
-
-_44:
-_do_atof_calc:
- _e = (_e * _esign) + _d
- if _e >= i32(0) {
- goto _46
+_95:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) != 0 {
+ _i += 1
+ goto _95
}
-
- _esign = i32(-1)
- {
- p := &_e
- *p = (*p) * i32(-1)
- sink1 = *p
+ *_tokenType = i32(132)
+_94:
+_97:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(70)) != i32(0) {
+ *_tokenType = i32(164)
+ _i += 1
+ goto _97
}
- goto _47
+ return _i
-_46:
- _esign = i32(1)
-_47:
- if _s != int64(i32(0)) {
- goto _48
+_21:
+ *func() *int32 { _i = i32(1); return &_c }() = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))
+_99:
+ if _c == i32(93) || store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
+ goto _103
}
-
- _result = func() float64 {
- if _sign < i32(0) {
- return (-0)
+ _i += 1
+ goto _99
+_103:
+ *_tokenType = func() int32 {
+ if _c == i32(93) {
+ return i32(27)
}
- return float64(0)
+ return i32(164)
}()
- goto _51
+ return _i
-_48:
-_52:
- if _e <= i32(0) {
- goto _53
+_22:
+ *_tokenType = i32(135)
+ _i = i32(1)
+_106:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(4)) == 0 {
+ goto _109
}
+ _i += 1
+ goto _106
+_109:
+ return _i
- if _esign <= i32(0) {
- goto _54
+_23:
+_24:
+ _58_n = i32(0)
+ *_tokenType = i32(135)
+ _i = i32(1)
+_110:
+ if store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) == i32(0) {
+ goto _113
}
-
- if _s < i64(922337203685477580) {
- goto _55
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_c))))) & i32(70)) != i32(0) {
+ _58_n += 1
+ goto _115
}
-
- goto _53
-
-_55:
- {
- p := &_s
- *p = (*p) * int64(i32(10))
- sink6 = *p
+ if _c != i32(40) || _58_n <= i32(0) {
+ goto _117
}
- goto _56
-
-_54:
- if (_s % int64(i32(10))) == int64(i32(0)) {
- goto _57
+_118:
+ _i += 1
+ if ((store1(&_c, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))) != i32(0)) && ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_c))))) & i32(1)) == 0)) && (_c != i32(41)) {
+ goto _118
}
-
- goto _53
-
-_57:
- {
- p := &_s
- *p = (*p) / int64(i32(10))
- sink6 = *p
+ if _c == i32(41) {
+ _i += 1
+ goto _122
}
-_56:
- _e -= 1
- goto _52
-
-_53:
- _s = func() int64 {
- if _sign < i32(0) {
- return (-_s)
- }
- return _s
- }()
- if _e != i32(0) {
- goto _60
+ *_tokenType = i32(164)
+_122:
+ goto _113
+_117:
+ if (_c == i32(58)) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) == i32(58)) {
+ _i += 1
+ goto _126
}
-
- _result = float64(_s)
- goto _61
-
-_60:
- _22_scale = 1
- if _e <= i32(307) {
- goto _62
+ goto _113
+_126:
+_115:
+ _i += 1
+ goto _110
+_113:
+ if _58_n == i32(0) {
+ *_tokenType = i32(164)
}
+ return _i
- if _e >= i32(342) {
- goto _63
+_25:
+ _i = i32(1)
+_128:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiClass)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) > i32(1) {
+ goto _131
}
-
-_64:
- if (_e % i32(308)) == 0 {
- goto _65
+ _i += 1
+ goto _128
+_131:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(70)) != i32(0) {
+ _i += 1
+ goto _133
}
+ *_tokenType = i32(27)
+ return _keywordCode(tls, (*int8)(unsafe.Pointer(_z)), _i, _tokenType)
- {
- p := &_22_scale
- *p = (*p) * float64(10)
- sink4 = *p
+_26:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(39) {
+ goto _134
}
- {
- p := &_e
- *p = (*p) - i32(1)
- sink1 = *p
+ *_tokenType = i32(133)
+ _i = i32(2)
+_135:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(8)) == 0 {
+ goto _138
}
- goto _64
-
-_65:
- if _esign >= i32(0) {
- goto _66
+ _i += 1
+ goto _135
+_138:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == i32(39) && (_i%i32(2)) == 0 {
+ goto _140
}
-
- _result = float64(_s) / _22_scale
- {
- p := &_result
- *p = (*p) / float64(1e+308)
- sink4 = *p
+ *_tokenType = i32(164)
+_141:
+ if ((*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != 0) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != i32(39)) {
+ _i += 1
+ goto _141
}
- goto _67
-
-_66:
- _result = float64(_s) * _22_scale
- {
- p := &_result
- *p = (*p) * float64(1e+308)
- sink4 = *p
+_140:
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != 0 {
+ _i += 1
}
-_67:
- goto _68
+ return _i
-_63:
- func() {
- if _e < i32(342) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AtoFØ00__func__Ø000))), unsafe.Pointer(str(5620)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _esign >= i32(0) {
- goto _71
+_134:
+_27:
+ _i = i32(1)
+ goto _133
+_28:
+ *_tokenType = i32(164)
+ return i32(1)
+
+_133:
+_145:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))))))) & i32(70)) != i32(0) {
+ _i += 1
+ goto _145
}
+ *_tokenType = i32(27)
+ return _i
+}
- _result = float64(0) * float64(_s)
- goto _72
+var _aiClass [256]uint8
-_71:
- _result = inf * float64(_s)
-_72:
-_68:
- goto _73
+func init() {
+ _aiClass = [256]uint8{27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 27, 7, 7, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 15, 8, 5, 4, 22, 24, 8, 17, 18, 21, 20, 23, 11, 26, 16, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 19, 12, 14, 13, 6, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 9, 27, 27, 27, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 27, 10, 27, 25, 27, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
+}
-_62:
-_74:
- if (_e % i32(22)) == 0 {
- goto _75
- }
+var _sqlite3CtypeMap [256]uint8
- {
- p := &_22_scale
- *p = (*p) * float64(10)
- sink4 = *p
- }
- {
- p := &_e
- *p = (*p) - i32(1)
- sink1 = *p
- }
- goto _74
+func init() {
+ _sqlite3CtypeMap = [256]uint8{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 128, 0, 64, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 128, 0, 0, 0, 64, 128, 42, 42, 42, 42, 42, 42, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}
+}
-_75:
-_76:
- if _e <= i32(0) {
- goto _77
+// The sqlite3KeywordCode function looks up an identifier to determine if
+// it is a keyword. If it is a keyword, the token code of that keyword is
+// returned. If the input is not a keyword, TK_ID is returned.
+//
+// The implementation of this routine was generated by a program,
+// mkkeywordhash.c, located in the tool subdirectory of the distribution.
+// The output of the mkkeywordhash.c program is written into a file
+// named keywordhash.h and then included into this source file by
+// the #include below.
+
+// ************* Include keywordhash.h in the middle of tokenize.c ***********
+
+// ************* Begin file keywordhash.h ************************************
+
+// **** This file contains automatically generated code ******
+//
+// The code in this file has been automatically generated by
+//
+// sqlite/tool/mkkeywordhash.c
+//
+// The code in this file implements a function that determines whether
+// or not a given identifier is really an SQL keyword. The same thing
+// might be implemented more directly using a hand-written hash table.
+// But by using this automatically generated code, the size of the code
+// is substantially reduced. This is important for embedded applications
+// on platforms with limited memory.
+
+// Hash score: 182
+func _keywordCode(tls *crt.TLS, _z *int8, _n int32, _pType *int32) (r0 int32) {
+ var _i, _j int32
+ var _zKW *int8
+ if _n < i32(2) {
+ goto _0
}
-
- {
- p := &_22_scale
- *p = (*p) * float64(1e+22)
- sink4 = *p
+ _i = (((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))))))) * i32(4)) ^ (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))))))) * i32(3))) ^ _n) % i32(127)
+ _i = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aHashØ002)) + 1*uintptr(_i)))) - i32(1)
+_1:
+ if _i < i32(0) {
+ goto _4
}
- {
- p := &_e
- *p = (*p) - i32(22)
- sink1 = *p
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aLenØ004)) + 1*uintptr(_i)))) != _n {
+ goto _2
}
- goto _76
-
-_77:
- if _esign >= i32(0) {
- goto _78
+ _j = i32(0)
+ _zKW = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00zTextØ001)) + 1*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aOffsetØ005)) + 2*uintptr(_i))))))
+_6:
+ if (_j < _n) && ((int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_j)))) & i32(-33)) == int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zKW)) + 1*uintptr(_j))))) {
+ _j += 1
+ goto _6
}
+ if _j < _n {
+ goto _2
+ }
+ *_pType = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aCodeØ006)) + 1*uintptr(_i))))
+ goto _4
+_2:
+ _i = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_keywordCodeØ00aNextØ003)) + 1*uintptr(_i)))) - i32(1)
+ goto _1
+_4:
+_0:
+ return _n
+}
- _result = float64(_s) / _22_scale
- goto _79
+var _keywordCodeØ00aHashØ002 [127]uint8
-_78:
- _result = float64(_s) * _22_scale
-_79:
-_73:
-_61:
-_51:
- *_pResult = _result
- return bool2int((((_z == _zEnd) && (_nDigits > i32(0))) && _eValid != 0) && (_nonNum == i32(0)))
+func init() {
+ _keywordCodeØ00aHashØ002 = [127]uint8{76, 105, 117, 74, 0, 45, 0, 0, 82, 0, 77, 0, 0, 42, 12, 78, 15, 0, 116, 85, 54, 112, 0, 19, 0, 0, 121, 0, 119, 115, 0, 22, 93, 0, 9, 0, 0, 70, 71, 0, 69, 6, 0, 48, 90, 102, 0, 118, 101, 0, 0, 44, 0, 103, 24, 0, 17, 0, 122, 53, 23, 0, 5, 110, 25, 96, 0, 0, 124, 106, 60, 123, 57, 28, 55, 0, 91, 0, 100, 26, 0, 99, 0, 0, 0, 95, 92, 97, 88, 109, 14, 39, 108, 0, 81, 0, 18, 89, 111, 32, 0, 120, 80, 113, 62, 46, 84, 0, 0, 94, 40, 59, 114, 0, 36, 0, 0, 29, 0, 86, 63, 64, 0, 20, 61, 0, 56}
}
-var _sqlite3AtoFØ00__func__Ø000 [12]int8 // -
+var _keywordCodeØ00aLenØ004 [124]uint8
func init() {
- crt.Xstrncpy(nil, &_sqlite3AtoFØ00__func__Ø000[0], str(5628), 12)
+ _keywordCodeØ00aLenØ004 = [124]uint8{7, 7, 5, 4, 6, 4, 5, 3, 6, 7, 3, 6, 6, 7, 7, 3, 8, 2, 6, 5, 4, 4, 3, 10, 4, 6, 11, 6, 2, 7, 5, 5, 9, 6, 9, 9, 7, 10, 10, 4, 6, 2, 3, 9, 4, 2, 6, 5, 7, 4, 5, 7, 6, 6, 5, 6, 5, 5, 9, 7, 7, 3, 2, 4, 4, 7, 3, 6, 4, 7, 6, 12, 6, 9, 4, 6, 5, 4, 7, 6, 5, 6, 7, 5, 4, 5, 6, 5, 7, 3, 7, 13, 2, 2, 4, 6, 6, 8, 5, 17, 12, 7, 8, 8, 2, 4, 4, 4, 4, 4, 2, 2, 6, 5, 8, 5, 8, 3, 5, 5, 6, 4, 9, 3}
}
-func _parseDateOrTime(tls *crt.TLS, _context *Xsqlite3_context, _zDate *int8, _p *XDateTime) (r0 int32) { // sqlite3.c:19205:1
- var _r float64 // sqlite3.c:19210:10
- _ = _r
- if _parseYyyyMmDd(tls, _zDate, _p) != i32(0) {
- goto _0
- }
- return i32(0)
+var _keywordCodeØ00zTextØ001 [553]int8
-_0:
- if _parseHhMmSs(tls, _zDate, _p) != i32(0) {
- goto _2
- }
- return i32(0)
+func init() {
+ _keywordCodeØ00zTextØ001 = [553]int8{82, 69, 73, 78, 68, 69, 88, 69, 68, 69, 83, 67, 65, 80, 69, 65, 67, 72, 69, 67, 75, 69, 89, 66, 69, 70, 79, 82, 69, 73, 71, 78, 79, 82, 69, 71, 69, 88, 80, 76, 65, 73, 78, 83, 84, 69, 65, 68, 68, 65, 84, 65, 66, 65, 83, 69, 76, 69, 67, 84, 65, 66, 76, 69, 70, 84, 72, 69, 78, 68, 69, 70, 69, 82, 82, 65, 66, 76, 69, 76, 83, 69, 88, 67, 69, 80, 84, 82, 65, 78, 83, 65, 67, 84, 73, 79, 78, 65, 84, 85, 82, 65, 76, 84, 69, 82, 65, 73, 83, 69, 88, 67, 76, 85, 83, 73, 86, 69, 88, 73, 83, 84, 83, 65, 86, 69, 80, 79, 73, 78, 84, 69, 82, 83, 69, 67, 84, 82, 73, 71, 71, 69, 82, 69, 70, 69, 82, 69, 78, 67, 69, 83, 67, 79, 78, 83, 84, 82, 65, 73, 78, 84, 79, 70, 70, 83, 69, 84, 69, 77, 80, 79, 82, 65, 82, 89, 85, 78, 73, 81, 85, 69, 82, 89, 87, 73, 84, 72, 79, 85, 84, 69, 82, 69, 76, 69, 65, 83, 69, 65, 84, 84, 65, 67, 72, 65, 86, 73, 78, 71, 82, 79, 85, 80, 68, 65, 84, 69, 66, 69, 71, 73, 78, 78, 69, 82, 69, 67, 85, 82, 83, 73, 86, 69, 66, 69, 84, 87, 69, 69, 78, 79, 84, 78, 85, 76, 76, 73, 75, 69, 67, 65, 83, 67, 65, 68, 69, 76, 69, 84, 69, 67, 65, 83, 69, 67, 79, 76, 76, 65, 84, 69, 67, 82, 69, 65, 84, 69, 67, 85, 82, 82, 69, 78, 84, 95, 68, 65, 84, 69, 68, 69, 84, 65, 67, 72, 73, 77, 77, 69, 68, 73, 65, 84, 69, 74, 79, 73, 78, 83, 69, 82, 84, 77, 65, 84, 67, 72, 80, 76, 65, 78, 65, 76, 89, 90, 69, 80, 82, 65, 71, 77, 65, 66, 79, 82, 84, 86, 65, 76, 85, 69, 83, 86, 73, 82, 84, 85, 65, 76, 73, 77, 73, 84, 87, 72, 69, 78, 87, 72, 69, 82, 69, 78, 65, 77, 69, 65, 70, 84, 69, 82, 69, 80, 76, 65, 67, 69, 65, 78, 68, 69, 70, 65, 85, 76, 84, 65, 85, 84, 79, 73, 78, 67, 82, 69, 77, 69, 78, 84, 67, 65, 83, 84, 67, 79, 76, 85, 77, 78, 67, 79, 77, 77, 73, 84, 67, 79, 78, 70, 76, 73, 67, 84, 67, 82, 79, 83, 83, 67, 85, 82, 82, 69, 78, 84, 95, 84, 73, 77, 69, 83, 84, 65, 77, 80, 82, 73, 77, 65, 82, 89, 68, 69, 70, 69, 82, 82, 69, 68, 73, 83, 84, 73, 78, 67, 84, 68, 82, 79, 80, 70, 65, 73, 76, 70, 82, 79, 77, 70, 85, 76, 76, 71, 76, 79, 66, 89, 73, 70, 73, 83, 78, 85, 76, 76, 79, 82, 68, 69, 82, 69, 83, 84, 82, 73, 67, 84, 82, 73, 71, 72, 84, 82, 79, 76, 76, 66, 65, 67, 75, 82, 79, 87, 85, 78, 73, 79, 78, 85, 83, 73, 78, 71, 86, 65, 67, 85, 85, 77, 86, 73, 69, 87, 73, 78, 73, 84, 73, 65, 76, 76, 89}
+}
-_2:
- if _sqlite3StrICmp(tls, _zDate, str(5640)) != i32(0) {
- goto _4
- }
- return _setDateTimeToCurrent(tls, _context, _p)
+var _keywordCodeØ00aOffsetØ005 [124]uint16
-_4:
- if _sqlite3AtoF(tls, _zDate, &_r, _sqlite3Strlen30(tls, _zDate), uint8(i32(1))) == 0 {
- goto _6
- }
+func init() {
+ _keywordCodeØ00aOffsetØ005 = [124]uint16{u16(0), u16(2), u16(2), u16(8), u16(9), u16(14), u16(16), u16(20), u16(23), u16(25), u16(25), u16(29), u16(33), u16(36), u16(41), u16(46), u16(48), u16(53), u16(54), u16(59), u16(62), u16(65), u16(67), u16(69), u16(78), u16(81), u16(86), u16(91), u16(95), u16(96), u16(101), u16(105), u16(109), u16(117), u16(122), u16(128), u16(136), u16(142), u16(152), u16(159), u16(162), u16(162), u16(165), u16(167), u16(167), u16(171), u16(176), u16(179), u16(184), u16(184), u16(188), u16(192), u16(199), u16(204), u16(209), u16(212), u16(218), u16(221), u16(225), u16(234), u16(240), u16(240), u16(240), u16(243), u16(246), u16(250), u16(251), u16(255), u16(261), u16(265), u16(272), u16(278), u16(290), u16(296), u16(305), u16(307), u16(313), u16(318), u16(320), u16(327), u16(332), u16(337), u16(343), u16(349), u16(354), u16(358), u16(361), u16(367), u16(371), u16(378), u16(380), u16(387), u16(389), u16(391), u16(400), u16(404), u16(410), u16(416), u16(424), u16(429), u16(429), u16(445), u16(452), u16(459), u16(460), u16(467), u16(471), u16(475), u16(479), u16(483), u16(486), u16(488), u16(490), u16(496), u16(500), u16(508), u16(513), u16(521), u16(524), u16(529), u16(534), u16(540), u16(544), u16(549)}
+}
- _setRawDateNumber(tls, _p, _r)
- return i32(0)
+var _keywordCodeØ00aCodeØ006 [124]uint8
-_6:
- return i32(1)
+func init() {
+ _keywordCodeØ00aCodeØ006 = [124]uint8{66, 96, 140, 41, 83, 43, 104, 52, 34, 113, 45, 46, 49, 2, 48, 142, 40, 24, 119, 16, 98, 138, 11, 112, 139, 117, 6, 29, 107, 98, 141, 56, 9, 20, 13, 118, 61, 105, 99, 131, 54, 53, 111, 21, 21, 70, 103, 3, 25, 65, 98, 14, 33, 128, 127, 110, 5, 98, 57, 73, 76, 19, 51, 101, 49, 36, 32, 109, 136, 94, 17, 68, 42, 8, 124, 108, 50, 4, 31, 55, 28, 120, 64, 129, 137, 130, 67, 30, 58, 71, 100, 106, 15, 74, 37, 38, 10, 39, 98, 68, 68, 102, 7, 121, 72, 114, 44, 123, 98, 49, 35, 18, 75, 126, 59, 98, 12, 60, 115, 125, 62, 63, 47, 116}
}
-func _parseYyyyMmDd(tls *crt.TLS, _zDate *int8, _p *XDateTime) (r0 int32) { // sqlite3.c:19127:1
- var _Y int32 // sqlite3.c:19128:7
- _ = _Y
- var _M int32 // sqlite3.c:19128:10
- _ = _M
- var _D int32 // sqlite3.c:19128:13
- _ = _D
- var _neg int32 // sqlite3.c:19128:16
- _ = _neg
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zDate)) + 1*uintptr(i32(0))))) != i32(45) {
- goto _0
- }
+var _keywordCodeØ00aNextØ003 [124]uint8
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- _neg = i32(1)
- goto _1
+func init() {
+ _keywordCodeØ00aNextØ003 = [124]uint8{0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 21, 0, 0, 0, 0, 0, 50, 0, 43, 3, 47, 0, 0, 0, 0, 30, 0, 58, 0, 38, 0, 0, 0, 1, 66, 0, 0, 67, 0, 41, 0, 0, 0, 0, 0, 0, 49, 65, 0, 0, 0, 0, 31, 52, 16, 34, 10, 0, 0, 0, 0, 0, 0, 0, 11, 72, 79, 0, 8, 0, 104, 98, 0, 107, 0, 87, 0, 75, 51, 0, 27, 37, 73, 83, 0, 35, 68, 0, 0}
+}
-_0:
- _neg = i32(0)
-_1:
- if _getDigits(tls, _zDate, str(5644), unsafe.Pointer(&_Y), unsafe.Pointer(&_M), unsafe.Pointer(&_D)) == i32(3) {
- goto _2
- }
- return i32(1)
+var _renameTableFuncØ00__func__Ø000 [16]int8
-_2:
- {
- p := &_zDate
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(10))))
- sink0 = *p
- }
-_3:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate)))))&i32(1)) == 0 && i32(84) != int32(*(*uint8)(unsafe.Pointer(_zDate))) {
- goto _4
- }
+func init() {
+ crt.Xstrncpy(nil, &_renameTableFuncØ00__func__Ø000[0], str(6522), 16)
+}
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- goto _3
+// Print into memory obtained from sqliteMalloc(). Use the internal
+// %-conversion extensions.
+func _sqlite3MPrintf(tls *crt.TLS, _db *Xsqlite3, _zFormat *int8, args ...interface{}) (r0 *int8) {
+ var _z *int8
+ var _ap []interface{}
+ _ap = args
+ _z = _sqlite3VMPrintf(tls, _db, _zFormat, _ap)
+ _ap = nil
+ return _z
+}
-_4:
- if _parseHhMmSs(tls, _zDate, _p) != i32(0) {
- goto _6
+// Print into memory obtained from sqliteMalloc(). Use the internal
+// %-conversion extensions.
+func _sqlite3VMPrintf(tls *crt.TLS, _db *Xsqlite3, _zFormat *int8, _ap []interface{}) (r0 *int8) {
+ var _z *int8
+ var _acc XStrAccum
+ var _zBase [70]int8
+ func() {
+ if _db == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26004), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VMPrintfØ00__func__Ø000))), unsafe.Pointer(str(1201)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3StrAccumInit(tls, &_acc, _db, (*int8)(unsafe.Pointer(&_zBase)), int32(u32(70)), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0)))))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_acc)) + uintptr(25 /* X7 */))) = uint8(i32(1))
+ _sqlite3VXPrintf(tls, &_acc, _zFormat, _ap)
+ _z = _sqlite3StrAccumFinish(tls, &_acc)
+ if int32(_acc.X6) == i32(1) {
+ _sqlite3OomFault(tls, _db)
}
+ return _z
- goto _7
-
-_6:
- if int32(*_zDate) != i32(0) {
- goto _8
- }
+ _ = _zBase
+ _ = _acc
+ panic(0)
+}
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(0))
- goto _9
+var _sqlite3VMPrintfØ00__func__Ø000 [16]int8
-_8:
- return i32(1)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VMPrintfØ00__func__Ø000[0], str(6538), 16)
+}
-_9:
-_7:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = func() int32 {
- if _neg != 0 {
- return (-_Y)
+func _sqlite3StrAccumFinish(tls *crt.TLS, _p *XStrAccum) (r0 *int8) {
+ if (_p.X2) == nil {
+ goto _0
+ }
+ func() {
+ if ((_p.X2) == (_p.X1)) != ((int32(_p.X7) & i32(4)) == i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25951), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StrAccumFinishØ00__func__Ø000))), unsafe.Pointer(str(6554)))
+ crt.X__builtin_abort(tls)
}
- return _Y
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = _M
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = _D
- if (_p.X12) == 0 {
- goto _12
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2)) + 1*uintptr(_p.X3))) = int8(i32(0))
+ if ((_p.X5) > uint32(i32(0))) && ((int32(_p.X7) & i32(4)) == i32(0)) {
+ return _strAccumFinishRealloc(tls, _p)
}
+_0:
+ return _p.X2
+}
- _computeJD(tls, _p)
-_12:
- return i32(0)
+var _sqlite3StrAccumFinishØ00__func__Ø000 [22]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3StrAccumFinishØ00__func__Ø000[0], str(6591), 22)
}
-func _getDigits(tls *crt.TLS, _zDate *int8, _zFormat *int8, args ...interface{}) (r0 int32) { // sqlite3.c:18936:1
- var _ap []interface{} // sqlite3.c:18940:11
- _ = _ap
- var _cnt int32 // sqlite3.c:18941:7
- _ = _cnt
- var _nextC int8 // sqlite3.c:18942:8
- _ = _nextC
- var _1_N int8 // sqlite3.c:18945:10
- _ = _1_N
- var _1_min int8 // sqlite3.c:18946:10
- _ = _1_min
- var _1_val int32 // sqlite3.c:18947:9
- _ = _1_val
- var _1_max uint16 // sqlite3.c:18948:9
- _ = _1_max
- _cnt = i32(0)
- _ap = args
-_0:
- _1_N = int8(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(0))))) - i32(48))
- _1_min = int8(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(1))))) - i32(48))
- _1_val = i32(0)
+// Finish off a string by making sure it is zero-terminated.
+// Return a pointer to the resulting string. Return a NULL
+// pointer if any kind of error was encountered.
+func _strAccumFinishRealloc(tls *crt.TLS, _p *XStrAccum) (r0 *int8) {
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(2))))) < i32(97) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(2))))) > i32(102) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(18950), unsafe.Pointer((*int8)(unsafe.Pointer(&_getDigitsØ00__func__Ø000))), unsafe.Pointer(str(5656)))
+ if (_p.X5) <= uint32(i32(0)) || (int32(_p.X7)&i32(4)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25939), unsafe.Pointer((*int8)(unsafe.Pointer(&_strAccumFinishReallocØ00__func__Ø000))), unsafe.Pointer(str(6613)))
crt.X__builtin_abort(tls)
}
}()
- _1_max = *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getDigitsØ00aMxØ001)) + 2*uintptr(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(2)))))-i32(97))))
- _nextC = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(3))))
- _1_val = i32(0)
-_4:
- if postInc3(&_1_N, int8(-1)) == 0 {
- goto _5
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = (*int8)(_sqlite3DbMallocRaw(tls, (*Xsqlite3)(_p.X0), uint64((_p.X3)+uint32(i32(1)))))
+ if (_p.X2) != nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_p.X2), (unsafe.Pointer)(_p.X1), (_p.X3)+uint32(i32(1)))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(25 /* X7 */)))
+ *p = uint8(int32(*p) | i32(4))
+ sink2 = *p
+ }
+ goto _4
}
+ _setStrAccumError(tls, _p, uint8(i32(1)))
+_4:
+ return _p.X2
+}
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(4)) != 0 {
- goto _6
- }
+var _strAccumFinishReallocØ00__func__Ø000 [22]int8
- goto _end_getDigits
+func init() {
+ crt.Xstrncpy(nil, &_strAccumFinishReallocØ00__func__Ø000[0], str(6644), 22)
+}
-_6:
- _1_val = ((_1_val * i32(10)) + int32(*_zDate)) - i32(48)
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- goto _4
+func Xsqlite3_result_text(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32, _xDel func(*crt.TLS, unsafe.Pointer)) {
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76488), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_textØ00__func__Ø000))), unsafe.Pointer(str(6666)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _setResultStrOrError(tls, _pCtx, _z, _n, uint8(i32(1)), _xDel)
+}
-_5:
- if _1_val >= int32(_1_min) && _1_val <= int32(_1_max) && (int32(_nextC) == i32(0) || int32(_nextC) == int32(*_zDate)) {
+var _sqlite3_result_textØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_result_textØ00__func__Ø000[0], str(6708), 20)
+}
+
+// *************************** sqlite3_result_ *******************************
+// The following routines are used by user-defined functions to specify
+// the function result.
+//
+// The setStrOrError() function calls sqlite3VdbeMemSetStr() to store the
+// result as a string or blob but if the string or blob is too large, it
+// then sets the error code to SQLITE_TOOBIG
+//
+// The invokeValueDestructor(P,X) routine invokes destructor function X()
+// on value P is not going to be used and need to be destroyed.
+func _setResultStrOrError(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32, _enc uint8, _xDel func(*crt.TLS, unsafe.Pointer)) {
+ if _sqlite3VdbeMemSetStr(tls, (*XMem)(_pCtx.X0), _z, _n, _enc, _xDel) == i32(18) {
+ Xsqlite3_result_error_toobig(tls, _pCtx)
+ }
+}
+
+// Change the value of a Mem to be a string or a BLOB.
+//
+// The memory management strategy depends on the value of the xDel
+// parameter. If the value passed is SQLITE_TRANSIENT, then the
+// string is copied into a (possibly existing) buffer managed by the
+// Mem structure. Otherwise, any existing buffer is freed and the
+// pointer copied.
+//
+// If the string is too large (if it exceeds the SQLITE_LIMIT_LENGTH
+// size limit) then no memory allocation occurs. If the string can be
+// stored without allocating memory, then it is. If a memory allocation
+// is required to store the string, then value of pMem is unchanged. In
+// either case, SQLITE_TOOBIG is returned.
+func _sqlite3VdbeMemSetStr(tls *crt.TLS, _pMem *XMem, _z *int8, _n int32, _enc uint8, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
+ var _nByte, _iLimit, _8_nAlloc int32
+ var _flags uint16
+ _nByte = _n
+ _flags = u16(0)
+ func() {
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetStrØ00__func__Ø000))), unsafe.Pointer(str(4667)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pMem.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetStrØ00__func__Ø000))), unsafe.Pointer(str(6728)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _z == nil {
+ _sqlite3VdbeMemSetNull(tls, _pMem)
+ return i32(0)
+ }
+ if (*Xsqlite3)(_pMem.X9) != nil {
+ _iLimit = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pMem.X9)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))
+ goto _7
+ }
+ _iLimit = i32(1000000000)
+_7:
+ _flags = uint16(func() int32 {
+ if int32(_enc) == i32(0) {
+ return i32(16)
+ }
+ return i32(2)
+ }())
+ if _nByte >= i32(0) {
goto _10
}
-
- goto _end_getDigits
-
-_10:
- *(*int32)(crt.VAPointer(&_ap)) = _1_val
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- _cnt += 1
- {
- p := &_zFormat
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(4))))
- sink0 = *p
+ func() {
+ if int32(_enc) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetStrØ00__func__Ø000))), unsafe.Pointer(str(6758)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_enc) != i32(1) {
+ goto _13
}
- if _nextC != 0 {
- goto _0
+ _nByte = _sqlite3Strlen30(tls, _z)
+ if _nByte > _iLimit {
+ _nByte = _iLimit + i32(1)
}
-
-_end_getDigits:
- _ap = nil
- return _cnt
-}
-
-var _getDigitsØ00__func__Ø000 [10]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_getDigitsØ00__func__Ø000[0], str(5692), 10)
-}
-
-var _getDigitsØ00aMxØ001 [6]uint16 // sqlite3.c:18939:20
-
-func init() {
- _getDigitsØ00aMxØ001 = [6]uint16{u16(12), u16(14), u16(24), u16(31), u16(59), u16(9999)}
-}
-
-func _parseHhMmSs(tls *crt.TLS, _zDate *int8, _p *XDateTime) (r0 int32) { // sqlite3.c:19026:1
- var _h int32 // sqlite3.c:19027:7
- _ = _h
- var _m int32 // sqlite3.c:19027:10
- _ = _m
- var _s int32 // sqlite3.c:19027:13
- _ = _s
- var _ms float64 // sqlite3.c:19028:10
- _ = _ms
- var _4_rScale float64 // sqlite3.c:19040:14
- _ = _4_rScale
- _ms = 0
- if _getDigits(tls, _zDate, str(5704), unsafe.Pointer(&_h), unsafe.Pointer(&_m)) == i32(2) {
- goto _0
+ goto _15
+_13:
+ _nByte = i32(0)
+_16:
+ if _nByte > _iLimit || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_nByte))))|int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_nByte+i32(1)))))) == 0 {
+ goto _20
}
- return i32(1)
-
-_0:
{
- p := &_zDate
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(5))))
- sink0 = *p
+ p := &_nByte
+ *p = (*p) + i32(2)
+ sink1 = *p
}
- if int32(*_zDate) != i32(58) {
- goto _1
+ goto _16
+_20:
+_15:
+ {
+ p := &_flags
+ *p = uint16(int32(*p) | i32(512))
+ sink14 = *p
}
-
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- if _getDigits(tls, _zDate, str(5712), unsafe.Pointer(&_s)) == i32(1) {
- goto _2
+_10:
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{_xDel})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))})) {
+ goto _21
}
- return i32(1)
-
-_2:
- {
- p := &_zDate
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(2))))
- sink0 = *p
+ _8_nAlloc = _nByte
+ if (int32(_flags) & i32(512)) != 0 {
+ {
+ p := &_8_nAlloc
+ *p = (*p) + func() int32 {
+ if int32(_enc) == i32(1) {
+ return i32(1)
+ }
+ return i32(2)
+ }()
+ sink1 = *p
+ }
}
- if int32(*_zDate) != i32(46) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zDate)) + 1*uintptr(i32(1)))))))))&i32(4)) == 0 {
- goto _4
+ if _nByte > _iLimit {
+ return i32(18)
}
-
- _4_rScale = 1
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
-_5:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(4)) == 0 {
- goto _6
+ if _sqlite3VdbeMemClearAndResize(tls, _pMem, func() int32 {
+ if _8_nAlloc > i32(32) {
+ return _8_nAlloc
+ }
+ return i32(32)
+ }()) != 0 {
+ return _sqlite3NomemError(tls, i32(70613))
}
-
- _ms = ((_ms * float64(10)) + float64(*_zDate)) - float64(i32(48))
- {
- p := &_4_rScale
- *p = (*p) * float64(10)
- sink4 = *p
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pMem.X5), (unsafe.Pointer)(_z), uint32(_8_nAlloc))
+ goto _29
+_21:
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{_xDel})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))})) {
+ _sqlite3VdbeMemRelease(tls, _pMem)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = store0((**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(16 /* X5 */))), _z)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_pMem.X9), (unsafe.Pointer)(_pMem.X6))
+ goto _31
}
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- goto _5
-
-_6:
+ _sqlite3VdbeMemRelease(tls, _pMem)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _z
+ *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(36 /* X10 */))) = _xDel
{
- p := &_ms
- *p = (*p) / _4_rScale
- sink4 = *p
- }
-_4:
- goto _7
-
-_1:
- _s = i32(0)
-_7:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X4 */))) = _h
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X5 */))) = _m
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = float64(_s) + _ms
- if _parseTimezone(tls, _zDate, _p) == 0 {
- goto _8
+ p := &_flags
+ *p = uint16(int32(*p) | func() int32 {
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{_xDel})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{nil})) {
+ return i32(2048)
+ }
+ return i32(1024)
+ }())
+ sink14 = *p
}
- return i32(1)
-
-_8:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(func() int32 {
- if (_p.X6) != i32(0) {
+_31:
+_29:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _nByte
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = _flags
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(func() int32 {
+ if int32(_enc) == i32(0) {
return i32(1)
}
- return i32(0)
+ return int32(_enc)
}())
+ if (int32(_pMem.X2) != i32(1)) && _sqlite3VdbeMemHandleBom(tls, _pMem) != 0 {
+ return _sqlite3NomemError(tls, i32(70633))
+ }
+ if _nByte > _iLimit {
+ return i32(18)
+ }
return i32(0)
}
-func _parseTimezone(tls *crt.TLS, _zDate *int8, _p *XDateTime) (r0 int32) { // sqlite3.c:18990:1
- var _sgn int32 // sqlite3.c:18991:7
- _ = _sgn
- var _nHr int32 // sqlite3.c:18992:7
- _ = _nHr
- var _nMn int32 // sqlite3.c:18992:12
- _ = _nMn
- var _c int32 // sqlite3.c:18993:7
- _ = _c
- _sgn = i32(0)
-_0:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(1)) == 0 {
- goto _1
- }
+var _sqlite3VdbeMemSetStrØ00__func__Ø000 [21]int8
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- goto _0
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemSetStrØ00__func__Ø000[0], str(6765), 21)
+}
-_1:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X6 */))) = i32(0)
- _c = int32(*_zDate)
- if _c != i32(45) {
+// This routine checks for a byte-order mark at the beginning of the
+// UTF-16 string stored in *pMem. If one is present, it is removed and
+// the encoding of the Mem adjusted. This routine does not do any
+// byte-swapping, it just sets Mem.enc appropriately.
+//
+// The allocation (static, dynamic etc.) and encoding of the Mem may be
+// changed by this function.
+func _sqlite3VdbeMemHandleBom(tls *crt.TLS, _pMem *XMem) (r0 int32) {
+ var _rc int32
+ var _bom, _1_b1, _1_b2 uint8
+ _rc = i32(0)
+ _bom = u8(0)
+ func() {
+ if (_pMem.X4) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27472), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemHandleBomØ00__func__Ø000))), unsafe.Pointer(str(6001)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pMem.X4) <= i32(1) {
goto _2
}
-
- _sgn = i32(-1)
- goto _3
-
+ _1_b1 = *(*uint8)(unsafe.Pointer(_pMem.X5))
+ _1_b2 = *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_pMem.X5)))) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(1))))))))
+ if (int32(_1_b1) == i32(254)) && (int32(_1_b2) == i32(255)) {
+ _bom = uint8(i32(3))
+ }
+ if (int32(_1_b1) == i32(255)) && (int32(_1_b2) == i32(254)) {
+ _bom = uint8(i32(2))
+ }
_2:
- if _c != i32(43) {
- goto _4
+ if _bom == 0 {
+ goto _7
+ }
+ _rc = _sqlite3VdbeMemMakeWriteable(tls, _pMem)
+ if _rc == i32(0) {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */)))
+ *p = (*p) - i32(2)
+ sink1 = *p
+ }
+ crt.Xmemmove(tls, (unsafe.Pointer)(_pMem.X5), (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5))+1*uintptr(i32(2))))), uint32(_pMem.X4))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_pMem.X4))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr((_pMem.X4)+i32(1)))) = int8(i32(0))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(512))
+ sink14 = *p
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = _bom
}
+_7:
+ return _rc
+}
- _sgn = i32(1)
- goto _5
+var _sqlite3VdbeMemHandleBomØ00__func__Ø000 [24]int8
-_4:
- if _c != i32(90) && _c != i32(122) {
- goto _7
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemHandleBomØ00__func__Ø000[0], str(6786), 24)
+}
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- goto _zulu_time
+// Force an SQLITE_TOOBIG error.
+func Xsqlite3_result_error_toobig(tls *crt.TLS, _pCtx *Xsqlite3_context) {
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_error_toobigØ00__func__Ø000))), unsafe.Pointer(str(6666)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(20 /* X5 */))) = i32(18)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(25 /* X7 */))) = uint8(i32(1))
+ _sqlite3VdbeMemSetStr(tls, (*XMem)(_pCtx.X0), str(6810), i32(-1), uint8(i32(1)), nil)
+}
-_7:
- return bool2int(_c != i32(0))
+var _sqlite3_result_error_toobigØ00__func__Ø000 [28]int8
-_5:
-_3:
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- if _getDigits(tls, _zDate, str(5716), unsafe.Pointer(&_nHr), unsafe.Pointer(&_nMn)) == i32(2) {
- goto _9
- }
- return i32(1)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_result_error_toobigØ00__func__Ø000[0], str(6833), 28)
+}
-_9:
+// This function is used by SQL generated to implement the
+// ALTER TABLE command. The first argument is the text of a CREATE TRIGGER
+// statement. The second is a table name. The table name in the CREATE
+// TRIGGER statement is replaced with the third argument and the result
+// returned. This is analagous to renameTableFunc() above, except for CREATE
+// TRIGGER, not CREATE INDEX and CREATE TABLE.
+func _renameTriggerFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _argv **XMem) {
+ var _token, _dist, _len int32
+ var _zRet *int8
+ var _zSql, _zTableName, _zCsr *uint8
+ var _tname XToken
+ var _db *Xsqlite3
+ _zSql = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
+ _zTableName = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
+ _dist = i32(3)
+ _zCsr = _zSql
+ _len = i32(0)
+ _db = Xsqlite3_context_db_handle(tls, _context)
+
+ if _zSql == nil {
+ goto _0
+ }
+_1:
+ if (*_zCsr) == 0 {
+ return
+ }
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer(_zCsr))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tname)) + uintptr(4 /* X1 */))) = uint32(_len)
+_3:
{
- p := &_zDate
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(5))))
- sink0 = *p
+ p := &_zCsr
+ *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_len)))
+ sink13 = *p
}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X6 */))) = _sgn * (_nMn + (_nHr * i32(60)))
-_zulu_time:
-_10:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(1)) == 0 {
- goto _11
+ _len = _sqlite3GetToken(tls, _zCsr, &_token)
+ if _token == i32(163) {
+ goto _3
+ }
+ func() {
+ if _len <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(96310), unsafe.Pointer((*int8)(unsafe.Pointer(&_renameTriggerFuncØ00__func__Ø000))), unsafe.Pointer(str(4235)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _dist += 1
+ if (_token == i32(122)) || (_token == i32(107)) {
+ _dist = i32(0)
+ }
+ if (_dist != i32(2)) || (((_token != i32(137)) && (_token != i32(45))) && (_token != i32(5))) {
+ goto _1
}
+ _zRet = _sqlite3MPrintf(tls, _db, str(4241), int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_tname.X0))))-uintptr(unsafe.Pointer(_zSql)))/1), unsafe.Pointer(_zSql), unsafe.Pointer(_zTableName), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_tname.X0))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_tname.X1)))))))))
+ Xsqlite3_result_text(tls, _context, _zRet, i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))
+_0:
+ _ = _tname
+}
- *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
- goto _10
+var _renameTriggerFuncØ00__func__Ø000 [18]int8
-_11:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(45 /* X13 */))) = int8(i32(1))
- return bool2int(int32(*_zDate) != i32(0))
+func init() {
+ crt.Xstrncpy(nil, &_renameTriggerFuncØ00__func__Ø000[0], str(6861), 18)
}
-func _computeJD(tls *crt.TLS, _p *XDateTime) { // sqlite3.c:19077:1
- var _Y int32 // sqlite3.c:19078:7
- _ = _Y
- var _M int32 // sqlite3.c:19078:10
- _ = _M
- var _D int32 // sqlite3.c:19078:13
- _ = _D
- var _A int32 // sqlite3.c:19078:16
- _ = _A
- var _B int32 // sqlite3.c:19078:19
- _ = _B
- var _X1 int32 // sqlite3.c:19078:22
- _ = _X1
- var _X2 int32 // sqlite3.c:19078:26
- _ = _X2
- if (_p.X8) == 0 {
- goto _0
- }
- return
+func _renameParentFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _argv **XMem) {
+ var _n, _token int32
+ var _zOutput, _zResult, _2_zParent, _4_zOut *int8
+ var _zInput, _zOld, _zNew, _z *uint8
+ var _db *Xsqlite3
+ _db = Xsqlite3_context_db_handle(tls, _context)
+ _zOutput = nil
+ _zInput = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
+ _zOld = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
+ _zNew = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2)))))
-_0:
- if (_p.X10) == 0 {
- goto _1
+ if (_zInput == nil) || (_zOld == nil) {
+ return
}
-
- _Y = _p.X1
- _M = _p.X2
- _D = _p.X3
- goto _2
-
-_1:
- _Y = i32(2000)
- _M = i32(1)
- _D = i32(1)
+ _z = _zInput
_2:
- if _Y >= i32(-4713) && _Y <= i32(9999) && (_p.X9) == 0 {
+ if (*_z) == 0 {
goto _5
}
-
- _datetimeError(tls, _p)
- return
-
-_5:
- if _M > i32(2) {
+ _n = _sqlite3GetToken(tls, _z, &_token)
+ if _token != i32(105) {
goto _6
}
-
- _Y -= 1
+_7:
{
- p := &_M
- *p = (*p) + i32(12)
- sink1 = *p
+ p := &_z
+ *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
+ sink13 = *p
}
-_6:
- _A = _Y / i32(100)
- _B = (i32(2) - _A) + (_A / i32(4))
- _X1 = (i32(36525) * (_Y + i32(4716))) / i32(100)
- _X2 = (i32(306001) * (_M + i32(1))) / i32(10000)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = int64((float64(((_X1+_X2)+_D)+_B) - (1524.5)) * float64(i32(86400000)))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
- if (_p.X11) == 0 {
+ _n = _sqlite3GetToken(tls, _z, &_token)
+ if _token == i32(163) {
goto _7
}
-
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + (int64(((_p.X4)*i32(3600000))+((_p.X5)*i32(60000))) + int64((_p.X7)*float64(i32(1000))))
- sink6 = *p
+ if _token == i32(164) {
+ goto _5
}
- if (_p.X12) == 0 {
- goto _8
+ _2_zParent = _sqlite3DbStrNDup(tls, _db, (*int8)(unsafe.Pointer(_z)), uint64(_n))
+ if _2_zParent == nil {
+ goto _5
}
-
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) - int64((_p.X6)*i32(60000))
- sink6 = *p
+ _sqlite3Dequote(tls, _2_zParent)
+ if i32(0) == _sqlite3StrICmp(tls, (*int8)(unsafe.Pointer(_zOld)), _2_zParent) {
+ _4_zOut = _sqlite3MPrintf(tls, _db, str(6879), unsafe.Pointer(func() *int8 {
+ if _zOutput != nil {
+ return _zOutput
+ }
+ return str(0)
+ }()), int32((uintptr(unsafe.Pointer(_z))-uintptr(unsafe.Pointer(_zInput)))/1), unsafe.Pointer(_zInput), unsafe.Pointer((*int8)(unsafe.Pointer(_zNew))))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zOutput))
+ _zOutput = _4_zOut
+ _zInput = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))
}
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
-_8:
-_7:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_2_zParent))
+_6:
+ _z = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_n)))))))
+ goto _2
+_5:
+ Xsqlite3_result_text(tls, func() *Xsqlite3_context {
+ _zResult = _sqlite3MPrintf(tls, _db, str(6890), unsafe.Pointer(func() *int8 {
+ if _zOutput != nil {
+ return _zOutput
+ }
+ return str(0)
+ }()), unsafe.Pointer(_zInput))
+ return _context
+ }(), _zResult, i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zOutput))
}
-func _datetimeError(tls *crt.TLS, _p *XDateTime) { // sqlite3.c:19066:1
- crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(46 /* X14 */))) = int8(i32(1))
+func _sqlite3DbStrNDup(tls *crt.TLS, _db *Xsqlite3, _z *int8, _n uint64) (r0 *int8) {
+ var _zNew *int8
+ func() {
+ if _db == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24971), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbStrNDupØ00__func__Ø000))), unsafe.Pointer(str(1201)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _z == nil {
+ return nil
+ }
+ func() {
+ if (_n & uint64(i32(2147483647))) != _n {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DbStrNDupØ00__func__Ø000))), unsafe.Pointer(str(6895)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _zNew = (*int8)(_sqlite3DbMallocRawNN(tls, _db, _n+uint64(i32(1))))
+ if _zNew != nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zNew), (unsafe.Pointer)(_z), uint32(_n))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNew)) + 1*uintptr(_n))) = int8(i32(0))
+ }
+ return _zNew
}
-func Xsqlite3_value_bytes(tls *crt.TLS, _pVal *XMem) (r0 int32) { // sqlite3.c:76279:12
- return _sqlite3ValueBytes(tls, _pVal, uint8(i32(1)))
+var _sqlite3DbStrNDupØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3DbStrNDupØ00__func__Ø000[0], str(6913), 17)
}
-func _sqlite3ValueBytes(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 int32) { // sqlite3.c:71402:1
- var _p *XMem // sqlite3.c:71403:7
- _ = _p
- _p = _pVal
+// Convert an SQL-style quoted string into a normal string by removing
+// the quote characters. The conversion is done in-place. If the
+// input does not begin with a quote character, then this routine
+// is a no-op.
+//
+// The input string must be zero-terminated. A new zero-terminator
+// is added to the dequoted string.
+//
+// The return value is -1 if no dequoting occurs or the length of the
+// dequoted string, exclusive of the zero terminator, if dequoting does
+// occur.
+//
+// 2002-Feb-14: This routine is extended to remove MS-Access style
+// brackets from around identifiers. For example: "[a-b-c]" becomes
+// "a-b-c".
+func _sqlite3Dequote(tls *crt.TLS, _z *int8) {
+ var _i, _j int32
+ var _quote int8
+ if _z == nil {
+ return
+ }
+ _quote = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_quote))))) & i32(128)) == 0 {
+ return
+ }
+ if int32(_quote) == i32(91) {
+ _quote = int8(i32(93))
+ }
+ *func() *int32 { _i = i32(1); return &_j }() = i32(0)
+_3:
func() {
- if (int32(_p.X1)&i32(1)) != i32(0) && (int32(_p.X1)&i32(18)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueBytesØ00__func__Ø000))), unsafe.Pointer(str(5724)))
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27909), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DequoteØ00__func__Ø000))), unsafe.Pointer(str(6930)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X1)&i32(2)) == i32(0) || int32(_pVal.X2) != int32(_enc) {
- goto _4
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != int32(_quote) {
+ goto _8
}
- return _p.X4
-
-_4:
- if (int32(_p.X1) & i32(16)) == i32(0) {
- goto _5
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))) == int32(_quote) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_j, int32(1))))) = _quote
+ _i += 1
+ goto _10
}
+ goto _5
+_10:
+ goto _11
+_8:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_j, int32(1))))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))
+_11:
+ _i += 1
+ goto _3
+_5:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_j))) = int8(i32(0))
+}
- if (int32(_p.X1) & i32(16384)) == 0 {
- goto _6
- }
+var _sqlite3DequoteØ00__func__Ø000 [15]int8
- /* X0 */
- return (_p.X4) + (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0))))))
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3DequoteØ00__func__Ø000[0], str(6935), 15)
+}
-_6:
- return _p.X4
+// This function registered all of the above C functions as SQL
+// functions. This should be the only routine in this file with
+// external linkage.
+func _sqlite3RegisterDateTimeFunctions(tls *crt.TLS) {
+ _sqlite3InsertBuiltinFuncs(tls, (*XFuncDef)(unsafe.Pointer(&_sqlite3RegisterDateTimeFunctionsØ00aDateTimeFuncsØ001)), i32(8))
+}
-_5:
- if (int32(_p.X1) & i32(1)) == 0 {
- goto _8
- }
- return i32(0)
+var _sqlite3RegisterDateTimeFunctionsØ00aDateTimeFuncsØ001 [8]XFuncDef
-_8:
- return _valueBytes(tls, _pVal, _enc)
+func init() {
+ _sqlite3RegisterDateTimeFunctionsØ00aDateTimeFuncsØ001 = [8]XFuncDef{XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_juliandayFunc})), X5: nil, X6: str(6950), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_dateFunc})), X5: nil, X6: str(6960), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_timeFunc})), X5: nil, X6: str(6965), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_datetimeFunc})), X5: nil, X6: str(6970), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_strftimeFunc})), X5: nil, X6: str(6979), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_ctimeFunc})), X5: nil, X6: str(6988), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_ctimestampFunc})), X5: nil, X6: str(7001), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{_cdateFunc})), X5: nil, X6: str(7019), X7: t12{}}}
}
-var _sqlite3ValueBytesØ00__func__Ø000 [18]int8 // -
+// julianday( TIMESTRING, MOD, MOD, ...)
+//
+// Return the julian day number of the date specified in the arguments
+func _juliandayFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) {
+ var _x XDateTime
+ if _isDate(tls, _context, _argc, _argv, &_x) == i32(0) {
+ _computeJD(tls, &_x)
+ Xsqlite3_result_double(tls, _context, float64(_x.X0)/(8.64e+07))
+ }
+ _ = _x
+}
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ValueBytesØ00__func__Ø000[0], str(5788), 18)
+// Process time function arguments. argv[0] is a date-time stamp.
+// argv[1] and following are modifiers. Parse them all and write
+// the resulting time into the DateTime structure p. Return 0
+// on success and 1 if there are any errors.
+//
+// If there are zero parameters (if even argv[0] is undefined)
+// then assume a default value of "now" for argv[0].
+func _isDate(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem, _p *XDateTime) (r0 int32) {
+ var _i, _n, _eType int32
+ var _z *uint8
+ crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
+ if _argc == i32(0) {
+ return _setDateTimeToCurrent(tls, _context, _p)
+ }
+ if (store1(&_eType, Xsqlite3_value_type(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))) == i32(2)) || (_eType == i32(1)) {
+ _setRawDateNumber(tls, _p, Xsqlite3_value_double(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0))))))
+ goto _3
+ }
+ _z = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))
+ if (_z == nil) || _parseDateOrTime(tls, _context, (*int8)(unsafe.Pointer(_z)), _p) != 0 {
+ return i32(1)
+ }
+_3:
+ _i = i32(1)
+_6:
+ if _i >= _argc {
+ goto _9
+ }
+ _z = Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(_i))))
+ _n = Xsqlite3_value_bytes(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(_i))))
+ if (_z == nil) || _parseModifier(tls, _context, (*int8)(unsafe.Pointer(_z)), _n, _p) != 0 {
+ return i32(1)
+ }
+ _i += 1
+ goto _6
+_9:
+ _computeJD(tls, _p)
+ if ((_p.X14) != 0) || (_validJulianDay(tls, _p.X0) == 0) {
+ return i32(1)
+ }
+ return i32(0)
}
-func _valueBytes(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 int32) { // sqlite3.c:71399:1
- return func() int32 {
- if _valueToText(tls, _pVal, _enc) != nil {
- return (_pVal.X4)
- }
+// Set the time to the current time reported by the VFS.
+//
+// Return the number of errors.
+func _setDateTimeToCurrent(tls *crt.TLS, _context *Xsqlite3_context, _p *XDateTime) (r0 int32) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3StmtCurrentTime(tls, _context)
+ if (_p.X0) > int64(i32(0)) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
return i32(0)
- }()
+ }
+ return i32(1)
}
-func _parseModifier(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32, _p *XDateTime) (r0 int32) { // sqlite3.c:19482:1
- var _rc int32 // sqlite3.c:19488:7
- _ = _rc
- var _r float64 // sqlite3.c:19489:10
- _ = _r
- var _8_c1 int64 // sqlite3.c:19526:25
- _ = _8_c1
- var _12_Z int64 // sqlite3.c:19553:23
- _ = _12_Z
- var _17_rRounder float64 // sqlite3.c:19607:14
- _ = _17_rRounder
- var _17_i int32 // sqlite3.c:19608:11
- _ = _17_i
- var _20_z2 *int8 // sqlite3.c:19620:20
- _ = _20_z2
- var _20_tx XDateTime // sqlite3.c:19621:18
- _ = _20_tx
- var _20_day int64 // sqlite3.c:19622:23
- _ = _20_day
- var _24_x int32 // sqlite3.c:19655:19
- _ = _24_x
- var _25_y int32 // sqlite3.c:19666:19
- _ = _25_y
- _rc = i32(1)
- switch int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))))))) {
- case i32(43):
- goto _5
- case i32(45):
- goto _6
- case i32(48):
- goto _7
- case i32(49):
- goto _8
- case i32(50):
- goto _9
- case i32(51):
- goto _10
- case i32(52):
- goto _11
- case i32(53):
- goto _12
- case i32(54):
- goto _13
- case i32(55):
- goto _14
- case i32(56):
- goto _15
- case i32(57):
- goto _16
- case i32(108):
- goto _1
- case i32(115):
- goto _4
- case i32(117):
+// Return the current time for a statement. If the current time
+// is requested more than once within the same run of a single prepared
+// statement, the exact same time is returned for each invocation regardless
+// of the amount of time that elapses between invocations. In other words,
+// the time returned is always the time of the first call.
+func _sqlite3StmtCurrentTime(tls *crt.TLS, _p *Xsqlite3_context) (r0 int64) {
+ var _rc int32
+ var _piTime *int64
+ _piTime = (*int64)(unsafe.Pointer(uintptr(_p.X3) + uintptr(52 /* X13 */)))
+ func() {
+ if (*TVdbe)(_p.X3) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76829), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StmtCurrentTimeØ00__func__Ø000))), unsafe.Pointer(str(7032)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (*_piTime) != int64(i32(0)) {
goto _2
- case i32(119):
- goto _3
- default:
- goto _17
}
-
-_1:
- if Xsqlite3_stricmp(tls, _z, str(5808)) != i32(0) {
- goto _18
- }
-
- _computeJD(tls, _p)
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + _localtimeOffset(tls, _p, _pCtx, &_rc)
- sink6 = *p
+ _rc = _sqlite3OsCurrentTimeInt64(tls, (*Xsqlite3_vfs)((*Xsqlite3)((*XMem)(_p.X0).X9).X0), _piTime)
+ if _rc != 0 {
+ *_piTime = int64(i32(0))
}
- _clearYMD_HMS_TZ(tls, _p)
-_18:
- goto _19
-
_2:
- if Xsqlite3_stricmp(tls, _z, str(5820)) != i32(0) || (_p.X9) == 0 {
- goto _21
- }
+ return *_piTime
+}
- _r = ((_p.X7) * float64(1000)) + (2.1086676e+14)
- if _r < float64(0) || _r >= (4.642690608e+14) {
- goto _23
- }
+var _sqlite3StmtCurrentTimeØ00__func__Ø000 [23]int8
- _clearYMD_HMS_TZ(tls, _p)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = int64(_r)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(0))
- _rc = i32(0)
-_23:
- goto _24
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3StmtCurrentTimeØ00__func__Ø000[0], str(7044), 23)
+}
-_21:
- if Xsqlite3_stricmp(tls, _z, str(5832)) != i32(0) {
- goto _25
+func _sqlite3OsCurrentTimeInt64(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pTimeOut *int64) (r0 int32) {
+ var _rc int32
+ var _2_r float64
+ if ((_pVfs.X0) >= i32(2)) && ((*(*func(*crt.TLS, *Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *int64) int32
+ }{(_pVfs.X18)}))) != nil) {
+ _rc = (*(*func(*crt.TLS, *Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *int64) int32
+ }{(_pVfs.X18)})))(tls, _pVfs, _pTimeOut)
+ goto _2
}
+ _rc = (*(*func(*crt.TLS, *Xsqlite3_vfs, *float64) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *float64) int32
+ }{(_pVfs.X16)})))(tls, _pVfs, &_2_r)
+ *_pTimeOut = int64(_2_r * (8.64e+07))
+_2:
+ return _rc
+}
- if int32(_p.X13) != i32(0) {
- goto _26
- }
+// SQLITE_OMIT_UTF16
- _computeJD(tls, _p)
- _8_c1 = _localtimeOffset(tls, _p, _pCtx, &_rc)
- if _rc != i32(0) {
- goto _27
- }
+// EVIDENCE-OF: R-12793-43283 Every value in SQLite has one of five
+// fundamental datatypes: 64-bit signed integer 64-bit IEEE floating
+// point number string BLOB NULL
+func Xsqlite3_value_type(tls *crt.TLS, _pVal *XMem) (r0 int32) {
+ return int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3_value_typeØ00aTypeØ001)) + 1*uintptr(int32(_pVal.X1)&i32(31)))))
+}
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) - _8_c1
- sink6 = *p
- }
- _clearYMD_HMS_TZ(tls, _p)
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + (_8_c1 - _localtimeOffset(tls, _p, _pCtx, &_rc))
- sink6 = *p
- }
-_27:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(45 /* X13 */))) = int8(i32(1))
- goto _28
+var _sqlite3_value_typeØ00aTypeØ001 [32]uint8
-_26:
- _rc = i32(0)
-_28:
-_25:
-_24:
- goto _19
+func init() {
+ _sqlite3_value_typeØ00aTypeØ001 = [32]uint8{4, 5, 3, 5, 1, 5, 1, 5, 2, 5, 2, 5, 1, 5, 1, 5, 4, 5, 3, 5, 1, 5, 1, 5, 2, 5, 2, 5, 1, 5, 1, 5}
+}
-_3:
- if Xsqlite3_strnicmp(tls, _z, str(5836), i32(8)) != i32(0) || _sqlite3AtoF(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(i32(8)))), &_r, _sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(i32(8))))), uint8(i32(1))) == 0 || float64(store1(&_n, int32(_r))) != _r || _n < i32(0) || _r >= float64(i32(7)) {
- goto _33
+// Input "r" is a numeric quantity which might be a julian day number,
+// or the number of seconds since 1970. If the value if r is within
+// range of a julian day number, install it as such and set validJD.
+// If the value is a valid unix timestamp, put it in p->s and set p->rawS.
+func _setRawDateNumber(tls *crt.TLS, _p *XDateTime, _r float64) {
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = _r
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(1))
+ if (_r >= float64(0)) && (_r < (5.3734845e+06)) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = int64((_r * (8.64e+07)) + (0.5))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
}
+}
- _computeYMD_HMS(tls, _p)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
- _computeJD(tls, _p)
- _12_Z = (((_p.X0) + int64(i32(129600000))) / int64(i32(86400000))) % int64(i32(7))
- if _12_Z <= int64(_n) {
- goto _34
- }
+func Xsqlite3_value_double(tls *crt.TLS, _pVal *XMem) (r0 float64) {
+ return _sqlite3VdbeRealValue(tls, _pVal)
+}
- {
- p := &_12_Z
- *p = (*p) - int64(i32(7))
- sink6 = *p
+func _sqlite3VdbeRealValue(tls *crt.TLS, _pMem *XMem) (r0 float64) {
+ func() {
+ if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRealValueØ00__func__Ø000))), unsafe.Pointer(str(4667)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70198), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRealValueØ00__func__Ø000))), unsafe.Pointer(str(6321)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32(_pMem.X1) & i32(8)) != 0 {
+ /* X0 */
+ return *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0)))))
}
-_34:
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + ((int64(_n) - _12_Z) * int64(i32(86400000)))
- sink6 = *p
+ if (int32(_pMem.X1) & i32(4)) != 0 {
+ /* X0 */
+ return float64(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0))))))
}
- _clearYMD_HMS_TZ(tls, _p)
- _rc = i32(0)
-_33:
- goto _19
-
-_4:
- if Xsqlite3_strnicmp(tls, _z, str(5848), i32(9)) == i32(0) {
- goto _35
+ if (int32(_pMem.X1) & i32(18)) != 0 {
+ return _memRealValue(tls, _pMem)
}
+ return float64(0)
+}
- goto _19
+var _sqlite3VdbeRealValueØ00__func__Ø000 [21]int8
-_35:
- if (_p.X8) != 0 || (_p.X10) != 0 || (_p.X11) != 0 {
- goto _38
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeRealValueØ00__func__Ø000[0], str(7067), 21)
+}
- goto _19
+// Return the best representation of pMem that we can get into a
+// double. If pMem is already a double or an integer, return its
+// value. If it is a string or blob, try to convert it to a double.
+// If it is a NULL, return 0.0.
+func _memRealValue(tls *crt.TLS, _pMem *XMem) (r0 float64) {
+ var _val float64
+ _val = 0
+ _sqlite3AtoF(tls, _pMem.X5, &_val, _pMem.X4, _pMem.X2)
+ return _val
+}
-_38:
+// The string z[] is an text representation of a real number.
+// Convert this string to a double and write it into *pResult.
+//
+// The string z[] is length bytes in length (bytes, not characters) and
+// uses the encoding enc. The string is not necessarily zero-terminated.
+//
+// Return TRUE if the result is a valid real number (or integer) and FALSE
+// if the string is empty or contains extraneous text. Valid numbers
+// are in one of these formats:
+//
+// [+-]digits[E[+-]digits]
+// [+-]digits.[digits][E[+-]digits]
+// [+-].digits[E[+-]digits]
+//
+// Leading and trailing whitespace is ignored for the purpose of determining
+// validity.
+//
+// If some prefix of the input string is a valid number, this routine
+// returns FALSE but it still converts the prefix and writes the result
+// into *pResult.
+func _sqlite3AtoF(tls *crt.TLS, _z *int8, _pResult *float64, _length int32, _enc uint8) (r0 int32) {
+ var _incr, _sign, _d, _esign, _e, _eValid, _nDigits, _nonNum, _2_i int32
+ var _s int64
+ var _zEnd *int8
+ var _result, _22_scale float64
+ _zEnd = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z)) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_length)))))))
+ _sign = i32(1)
+ _s = i64(0)
+ _d = i32(0)
+ _esign = i32(1)
+ _e = i32(0)
+ _eValid = i32(1)
+ _nDigits = i32(0)
+ _nonNum = i32(0)
+ func() {
+ if int32(_enc) != i32(1) && int32(_enc) != i32(2) && int32(_enc) != i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28016), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AtoFØ00__func__Ø000))), unsafe.Pointer(str(7088)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_pResult = float64(0)
+ if int32(_enc) == i32(1) {
+ _incr = i32(1)
+ goto _5
+ }
+ _incr = i32(2)
+ i32(0)
+ _2_i = i32(3) - int32(_enc)
+_6:
+ if _2_i >= _length || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_2_i)))) != i32(0) {
+ goto _10
+ }
+ {
+ p := &_2_i
+ *p = (*p) + i32(2)
+ sink1 = *p
+ }
+ goto _6
+_10:
+ _nonNum = bool2int(_2_i < _length)
+ _zEnd = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_2_i^i32(1))))
{
p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(9))))
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(int32(_enc)&i32(1))))
sink0 = *p
}
- _computeYMD(tls, _p)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X4 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(24 /* X5 */))), i32(0))
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = float64(0)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
- if Xsqlite3_stricmp(tls, _z, str(5860)) != i32(0) {
- goto _39
+_5:
+_11:
+ if (uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(1)) != 0 {
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ goto _11
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = i32(1)
- _rc = i32(0)
- goto _40
-
-_39:
- if Xsqlite3_stricmp(tls, _z, str(5868)) != i32(0) {
- goto _41
+ if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) {
+ return i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = i32(1)
- _rc = i32(0)
- goto _42
-
-_41:
- if Xsqlite3_stricmp(tls, _z, str(5876)) != i32(0) {
- goto _43
+ if int32(*_z) == i32(45) {
+ _sign = i32(-1)
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ goto _16
}
-
- _rc = i32(0)
-_43:
-_42:
-_40:
- goto _19
-
-_5:
-_6:
-_7:
-_8:
-_9:
-_10:
-_11:
-_12:
-_13:
-_14:
-_15:
-_16:
- _n = i32(1)
-_44:
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))) == 0 || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))) == i32(58) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n))))))))&i32(1)) != 0 {
- goto _49
+ if int32(*_z) == i32(43) {
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
}
-
- _n += 1
- goto _44
-
-_49:
- if _sqlite3AtoF(tls, _z, &_r, _n, uint8(i32(1))) != 0 {
- goto _50
+_16:
+_18:
+ if ((uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) != 0) && (_s < i64(922337203685477579)) {
+ _s = (_s * int64(i32(10))) + int64(int32(*_z)-i32(48))
+ *func() *int32 {
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ return &_nDigits
+ }() += 1
+ goto _18
}
-
- _rc = i32(1)
- goto _19
-
-_50:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))) != i32(58) {
- goto _51
+_22:
+ if (uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) != 0 {
+ *func() *int32 {
+ *func() *int32 {
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ return &_nDigits
+ }() += 1
+ return &_d
+ }() += 1
+ goto _22
}
-
- _20_z2 = _z
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_20_z2))))) & i32(4)) != 0 {
- goto _52
+ if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) {
+ goto _do_atof_calc
}
-
- *(*uintptr)(unsafe.Pointer(&_20_z2)) += uintptr(1)
-_52:
- crt.Xmemset(tls, (unsafe.Pointer)(&_20_tx), i32(0), u32(48))
- if _parseHhMmSs(tls, _20_z2, &_20_tx) == 0 {
- goto _53
+ if int32(*_z) != i32(46) {
+ goto _26
}
-
- goto _19
-
-_53:
- _computeJD(tls, &_20_tx)
{
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_20_tx)) + uintptr(0 /* X0 */)))
- *p = (*p) - int64(i32(43200000))
- sink6 = *p
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
}
- _20_day = (_20_tx.X0) / int64(i32(86400000))
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_20_tx)) + uintptr(0 /* X0 */)))
- *p = (*p) - (_20_day * int64(i32(86400000)))
- sink6 = *p
+_27:
+ if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) == 0 {
+ goto _28
}
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(45) {
- goto _54
+ if _s < i64(922337203685477579) {
+ _s = (_s * int64(i32(10))) + int64(int32(*_z)-i32(48))
+ _d -= 1
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_20_tx)) + uintptr(0 /* X0 */))) = -(_20_tx.X0)
-_54:
- _computeJD(tls, _p)
- _clearYMD_HMS_TZ(tls, _p)
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + (_20_tx.X0)
- sink6 = *p
+ *func() *int32 {
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ return &_nDigits
+ }() += 1
+ goto _27
+_28:
+_26:
+ if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) {
+ goto _do_atof_calc
+ }
+ if int32(*_z) != i32(101) && int32(*_z) != i32(69) {
+ goto _33
}
- _rc = i32(0)
- goto _19
-
-_51:
{
p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
sink0 = *p
}
-_55:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z))))) & i32(1)) == 0 {
- goto _56
+ _eValid = i32(0)
+ if uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zEnd)) {
+ goto _do_atof_calc
}
-
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
- goto _55
-
-_56:
- _n = _sqlite3Strlen30(tls, _z)
- if _n <= i32(10) && _n >= i32(3) {
- goto _58
+ if int32(*_z) == i32(45) {
+ _esign = i32(-1)
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ goto _36
}
-
- goto _19
-
-_58:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))))))) != i32(115) {
- goto _59
+ if int32(*_z) == i32(43) {
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
}
-
- _n -= 1
-_59:
- _computeJD(tls, _p)
- _rc = i32(1)
- _17_rRounder = func() float64 {
- if _r < float64(i32(0)) {
- return (-0.5)
+_36:
+_38:
+ if (uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(4)) != 0 {
+ _e = func() int32 {
+ if _e < i32(10000) {
+ return ((_e * i32(10)) + (int32(*_z) - i32(48)))
+ }
+ return i32(10000)
+ }()
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
}
- return (0.5)
- }()
- _17_i = i32(0)
-_62:
- if _17_i >= i32(6) {
- goto _65
+ _eValid = i32(1)
+ goto _38
}
-
- if int32((*t14)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X1) != _n || Xsqlite3_strnicmp(tls, (*t14)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X2, _z, _n) != i32(0) || _r <= (-((*t14)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType)) + 24*uintptr(_17_i))).X3)) || _r >= ((*t14)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X3) {
- goto _69
+_33:
+_43:
+ if (uintptr(unsafe.Pointer(_z)) < uintptr(unsafe.Pointer(_zEnd))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z)))))&i32(1)) != 0 {
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ goto _43
}
-
- switch int32((*t14)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType)) + 24*uintptr(_17_i))).X0) {
- case i32(1):
- goto _71
- case i32(2):
- goto _72
- default:
- goto _73
+_do_atof_calc:
+ _e = (_e * _esign) + _d
+ if _e < i32(0) {
+ _esign = i32(-1)
+ {
+ p := &_e
+ *p = (*p) * i32(-1)
+ sink1 = *p
+ }
+ goto _47
}
-
-_71:
- _computeYMD_HMS(tls, _p)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */)))
- *p = (*p) + int32(_r)
- sink1 = *p
+ _esign = i32(1)
+_47:
+ if _s == int64(i32(0)) {
+ _result = func() float64 {
+ if _sign < i32(0) {
+ return (-0)
+ }
+ return float64(0)
+ }()
+ goto _51
}
- _24_x = func() int32 {
- if (_p.X2) > i32(0) {
- return (((_p.X2) - i32(1)) / i32(12))
- }
- return (((_p.X2) - i32(12)) / i32(12))
- }()
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */)))
- *p = (*p) + _24_x
- sink1 = *p
+_52:
+ if _e <= i32(0) {
+ goto _53
}
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */)))
- *p = (*p) - (_24_x * i32(12))
- sink1 = *p
+ if _esign <= i32(0) {
+ goto _54
}
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
- {
- p := &_r
- *p = (*p) - float64(int32(_r))
- sink4 = *p
+ if _s >= i64(922337203685477580) {
+ goto _53
}
- goto _73
-
-_72:
- _25_y = int32(_r)
- _computeYMD_HMS(tls, _p)
{
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */)))
- *p = (*p) + _25_y
- sink1 = *p
+ p := &_s
+ *p = (*p) * int64(i32(10))
+ sink6 = *p
}
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
- {
- p := &_r
- *p = (*p) - float64(int32(_r))
- sink4 = *p
+ goto _56
+_54:
+ if (_s % int64(i32(10))) != int64(i32(0)) {
+ goto _53
}
- goto _73
-
-_73:
- _computeJD(tls, _p)
{
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + int64((_r*((*t14)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X4))+_17_rRounder)
+ p := &_s
+ *p = (*p) / int64(i32(10))
sink6 = *p
}
- _rc = i32(0)
- goto _65
-
-_69:
- _17_i += 1
- goto _62
-
-_65:
- _clearYMD_HMS_TZ(tls, _p)
- goto _19
-
-_17:
- goto _19
-
-_19:
- return _rc
-}
-
-func Xsqlite3_stricmp(tls *crt.TLS, _zLeft *int8, _zRight *int8) (r0 int32) { // sqlite3.c:27945:12
- if _zLeft != nil {
- goto _0
- }
- return func() int32 {
- if _zRight != nil {
- return i32(-1)
+_56:
+ _e -= 1
+ goto _52
+_53:
+ _s = func() int64 {
+ if _sign < i32(0) {
+ return (-_s)
}
- return i32(0)
+ return _s
}()
-
-_0:
- if _zRight != nil {
- goto _4
+ if _e == i32(0) {
+ _result = float64(_s)
+ goto _61
}
- return i32(1)
-
-_4:
- return _sqlite3StrICmp(tls, _zLeft, _zRight)
-}
-
-func _localtimeOffset(tls *crt.TLS, _p *XDateTime, _pCtx *Xsqlite3_context, _pRc *int32) (r0 int64) { // sqlite3.c:19378:1
- var _x XDateTime // sqlite3.c:19383:12
- _ = _x
- var _y XDateTime // sqlite3.c:19383:15
- _ = _y
- var _t int32 // sqlite3.c:19384:10
- _ = _t
- var _sLocal crt.Xtm // sqlite3.c:19385:13
- _ = _sLocal
- var _2_s int32 // sqlite3.c:19405:9
- _ = _2_s
- crt.Xmemset(tls, (unsafe.Pointer)(&_sLocal), i32(0), u32(44))
- _x = *_p
- _computeYMD_HMS(tls, &_x)
- if (_x.X1) >= i32(1971) && (_x.X1) < i32(2038) {
- goto _1
+ _22_scale = 1
+ if _e <= i32(307) {
+ goto _62
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(8 /* X1 */))) = i32(2000)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(12 /* X2 */))) = i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(16 /* X3 */))) = i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(20 /* X4 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(24 /* X5 */))) = i32(0)
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(32 /* X7 */))) = float64(0)
- goto _2
-
-_1:
- _2_s = int32((_x.X7) + (0.5))
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(32 /* X7 */))) = float64(_2_s)
-_2:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(28 /* X6 */))) = i32(0)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(40 /* X8 */))) = int8(i32(0))
- _computeJD(tls, &_x)
- _t = int32(((_x.X0) / int64(i32(1000))) - i64(210866760000))
- if _osLocaltime(tls, &_t, &_sLocal) == 0 {
- goto _3
+ if _e >= i32(342) {
+ goto _63
}
-
- Xsqlite3_result_error(tls, _pCtx, str(5880), i32(-1))
- *_pRc = i32(1)
- return int64(i32(0))
-
-_3:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(8 /* X1 */))) = (_sLocal.X5) + i32(1900)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(12 /* X2 */))) = (_sLocal.X4) + i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(16 /* X3 */))) = _sLocal.X3
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(20 /* X4 */))) = _sLocal.X2
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(24 /* X5 */))) = _sLocal.X1
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(32 /* X7 */))) = float64(_sLocal.X0)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(42 /* X10 */))) = int8(i32(1))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(43 /* X11 */))) = int8(i32(1))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(40 /* X8 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(41 /* X9 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(44 /* X12 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(46 /* X14 */))) = int8(i32(0))
- _computeJD(tls, &_y)
- *_pRc = i32(0)
- return (_y.X0) - (_x.X0)
+_64:
+ if (_e % i32(308)) != 0 {
+ {
+ p := &_22_scale
+ *p = (*p) * float64(10)
+ sink4 = *p
+ }
+ {
+ p := &_e
+ *p = (*p) - i32(1)
+ sink1 = *p
+ }
+ goto _64
+ }
+ if _esign < i32(0) {
+ _result = float64(_s) / _22_scale
+ {
+ p := &_result
+ *p = (*p) / float64(1e+308)
+ sink4 = *p
+ }
+ goto _67
+ }
+ _result = float64(_s) * _22_scale
+ {
+ p := &_result
+ *p = (*p) * float64(1e+308)
+ sink4 = *p
+ }
+_67:
+ goto _68
+_63:
+ func() {
+ if _e < i32(342) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AtoFØ00__func__Ø000))), unsafe.Pointer(str(7151)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _esign < i32(0) {
+ _result = float64(0) * float64(_s)
+ goto _72
+ }
+ _result = inf * float64(_s)
+_72:
+_68:
+ goto _73
+_62:
+_74:
+ if (_e % i32(22)) != 0 {
+ {
+ p := &_22_scale
+ *p = (*p) * float64(10)
+ sink4 = *p
+ }
+ {
+ p := &_e
+ *p = (*p) - i32(1)
+ sink1 = *p
+ }
+ goto _74
+ }
+_76:
+ if _e > i32(0) {
+ {
+ p := &_22_scale
+ *p = (*p) * float64(1e+22)
+ sink4 = *p
+ }
+ {
+ p := &_e
+ *p = (*p) - i32(22)
+ sink1 = *p
+ }
+ goto _76
+ }
+ if _esign < i32(0) {
+ _result = float64(_s) / _22_scale
+ goto _79
+ }
+ _result = float64(_s) * _22_scale
+_79:
+_73:
+_61:
+_51:
+ *_pResult = _result
+ return bool2int((((_z == _zEnd) && (_nDigits > i32(0))) && _eValid != 0) && (_nonNum == i32(0)))
}
-func _computeYMD_HMS(tls *crt.TLS, _p *XDateTime) { // sqlite3.c:19293:1
- _computeYMD(tls, _p)
- _computeHMS(tls, _p)
+var _sqlite3AtoFØ00__func__Ø000 [12]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3AtoFØ00__func__Ø000[0], str(7158), 12)
}
-func _computeYMD(tls *crt.TLS, _p *XDateTime) { // sqlite3.c:19245:1
- var _Z int32 // sqlite3.c:19246:7
- _ = _Z
- var _A int32 // sqlite3.c:19246:10
- _ = _A
- var _B int32 // sqlite3.c:19246:13
- _ = _B
- var _C int32 // sqlite3.c:19246:16
- _ = _C
- var _D int32 // sqlite3.c:19246:19
- _ = _D
- var _E int32 // sqlite3.c:19246:22
- _ = _E
- var _X1 int32 // sqlite3.c:19246:25
- _ = _X1
- if (_p.X10) == 0 {
- goto _0
+// Attempt to parse the given string into a julian day number. Return
+// the number of errors.
+//
+// The following are acceptable forms for the input string:
+//
+// YYYY-MM-DD HH:MM:SS.FFF +/-HH:MM
+// DDDD.DD
+// now
+//
+// In the first form, the +/-HH:MM is always optional. The fractional
+// seconds extension (the ".FFF") is optional. The seconds portion
+// (":SS.FFF") is option. The year and date can be omitted as long
+// as there is a time string. The time string can be omitted as long
+// as there is a year and date.
+func _parseDateOrTime(tls *crt.TLS, _context *Xsqlite3_context, _zDate *int8, _p *XDateTime) (r0 int32) {
+ var _r float64
+ if _parseYyyyMmDd(tls, _zDate, _p) == i32(0) {
+ return i32(0)
}
- return
+ if _parseHhMmSs(tls, _zDate, _p) == i32(0) {
+ return i32(0)
+ }
+ if _sqlite3StrICmp(tls, _zDate, str(7170)) == i32(0) {
+ return _setDateTimeToCurrent(tls, _context, _p)
+ }
+ if _sqlite3AtoF(tls, _zDate, &_r, _sqlite3Strlen30(tls, _zDate), uint8(i32(1))) != 0 {
+ _setRawDateNumber(tls, _p, _r)
+ return i32(0)
+ }
+ return i32(1)
+}
-_0:
- if (_p.X8) != 0 {
+// Parse dates of the form
+//
+// YYYY-MM-DD HH:MM:SS.FFF
+// YYYY-MM-DD HH:MM:SS
+// YYYY-MM-DD HH:MM
+// YYYY-MM-DD
+//
+// Write the result into the DateTime structure and return 0
+// on success and 1 if the input string is not a well-formed
+// date.
+func _parseYyyyMmDd(tls *crt.TLS, _zDate *int8, _p *XDateTime) (r0 int32) {
+ var _Y, _M, _D, _neg int32
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zDate)) + 1*uintptr(i32(0))))) == i32(45) {
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ _neg = i32(1)
goto _1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = i32(2000)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = i32(1)
- goto _2
-
+ _neg = i32(0)
_1:
- if _validJulianDay(tls, _p.X0) != 0 {
+ if _getDigits(tls, _zDate, str(7174), unsafe.Pointer(&_Y), unsafe.Pointer(&_M), unsafe.Pointer(&_D)) != i32(3) {
+ return i32(1)
+ }
+ {
+ p := &_zDate
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(10))))
+ sink0 = *p
+ }
+_3:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate)))))&i32(1)) != 0 || (i32(84) == int32(*(*uint8)(unsafe.Pointer(_zDate)))) {
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
goto _3
}
+ if _parseHhMmSs(tls, _zDate, _p) == i32(0) {
+ goto _7
+ }
+ if int32(*_zDate) == i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(0))
+ goto _9
+ }
+ return i32(1)
- _datetimeError(tls, _p)
- return
-
-_3:
- _Z = int32(((_p.X0) + int64(i32(43200000))) / int64(i32(86400000)))
- _A = int32((float64(_Z) - (1.86721625e+06)) / (36524.25))
- _A = ((_Z + i32(1)) + _A) - (_A / i32(4))
- _B = _A + i32(1524)
- _C = int32((float64(_B) - (122.1)) / (365.25))
- _D = (i32(36525) * (_C & i32(32767))) / i32(100)
- _E = int32(float64(_B-_D) / (30.6001))
- _X1 = int32((30.6001) * float64(_E))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = (_B - _D) - _X1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = func() int32 {
- if _E < i32(14) {
- return (_E - i32(1))
+_9:
+_7:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = func() int32 {
+ if _neg != 0 {
+ return (-_Y)
}
- return (_E - i32(13))
+ return _Y
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = func() int32 {
- if (_p.X2) > i32(2) {
- return (_C - i32(4716))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = _M
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = _D
+ if (_p.X12) != 0 {
+ _computeJD(tls, _p)
+ }
+ return i32(0)
+}
+
+// Convert zDate into one or more integers according to the conversion
+// specifier zFormat.
+//
+// zFormat[] contains 4 characters for each integer converted, except for
+// the last integer which is specified by three characters. The meaning
+// of a four-character format specifiers ABCD is:
+//
+// A: number of digits to convert. Always "2" or "4".
+// B: minimum value. Always "0" or "1".
+// C: maximum value, decoded as:
+// a: 12
+// b: 14
+// c: 24
+// d: 31
+// e: 59
+// f: 9999
+// D: the separator character, or \000 to indicate this is the
+// last number to convert.
+//
+// Example: To translate an ISO-8601 date YYYY-MM-DD, the format would
+// be "40f-21a-20c". The "40f-" indicates the 4-digit year followed by "-".
+// The "21a-" indicates the 2-digit month followed by "-". The "20c" indicates
+// the 2-digit day which is the last integer in the set.
+//
+// The function returns the number of successful conversions.
+func _getDigits(tls *crt.TLS, _zDate *int8, _zFormat *int8, args ...interface{}) (r0 int32) {
+ var _cnt, _1_val int32
+ var _nextC, _1_N, _1_min int8
+ var _1_max uint16
+ var _ap []interface{}
+ _cnt = i32(0)
+ _ap = args
+_0:
+ _1_N = int8(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(0))))) - i32(48))
+ _1_min = int8(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(1))))) - i32(48))
+ _1_val = i32(0)
+ func() {
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(2))))) < i32(97) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(2))))) > i32(102) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(18950), unsafe.Pointer((*int8)(unsafe.Pointer(&_getDigitsØ00__func__Ø000))), unsafe.Pointer(str(7186)))
+ crt.X__builtin_abort(tls)
}
- return (_C - i32(4715))
}()
-_2:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(1))
+ _1_max = *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getDigitsØ00aMxØ001)) + 2*uintptr(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(2)))))-i32(97))))
+ _nextC = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFormat)) + 1*uintptr(i32(3))))
+ _1_val = i32(0)
+_4:
+ if postInc3(&_1_N, int8(-1)) == 0 {
+ goto _5
+ }
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(4)) == 0 {
+ goto _end_getDigits
+ }
+ _1_val = ((_1_val * i32(10)) + int32(*_zDate)) - i32(48)
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ goto _4
+_5:
+ if ((_1_val < int32(_1_min)) || (_1_val > int32(_1_max))) || ((int32(_nextC) != i32(0)) && (int32(_nextC) != int32(*_zDate))) {
+ goto _end_getDigits
+ }
+ *(*int32)(crt.VAPointer(&_ap)) = _1_val
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ _cnt += 1
+ {
+ p := &_zFormat
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(4))))
+ sink0 = *p
+ }
+ if _nextC != 0 {
+ goto _0
+ }
+_end_getDigits:
+ _ap = nil
+ return _cnt
+
+ _ = _1_N
+ panic(0)
}
-func _validJulianDay(tls *crt.TLS, _iJD int64) (r0 int32) { // sqlite3.c:19238:1
- return bool2int((_iJD >= int64(i32(0))) && (_iJD <= i64(464269060799999)))
+var _getDigitsØ00__func__Ø000 [10]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_getDigitsØ00__func__Ø000[0], str(7221), 10)
}
-func _computeHMS(tls *crt.TLS, _p *XDateTime) { // sqlite3.c:19274:1
- var _s int32 // sqlite3.c:19275:7
- _ = _s
- if (_p.X11) == 0 {
- goto _0
- }
- return
+var _getDigitsØ00aMxØ001 [6]uint16
-_0:
- _computeJD(tls, _p)
- _s = int32(((_p.X0) + int64(i32(43200000))) % int64(i32(86400000)))
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = float64(_s) / float64(1000)
- _s = int32(_p.X7)
+func init() {
+ _getDigitsØ00aMxØ001 = [6]uint16{u16(12), u16(14), u16(24), u16(31), u16(59), u16(9999)}
+}
+
+// Parse times of the form HH:MM or HH:MM:SS or HH:MM:SS.FFFF.
+// The HH, MM, and SS must each be exactly 2 digits. The
+// fractional seconds FFFF can be one or more digits.
+//
+// Return 1 if there is a parsing error and 0 on success.
+func _parseHhMmSs(tls *crt.TLS, _zDate *int8, _p *XDateTime) (r0 int32) {
+ var _h, _m, _s int32
+ var _ms, _4_rScale float64
+ _ms = 0
+ if _getDigits(tls, _zDate, str(7231), unsafe.Pointer(&_h), unsafe.Pointer(&_m)) != i32(2) {
+ return i32(1)
+ }
{
- p := (*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */)))
- *p = (*p) - float64(_s)
- sink4 = *p
+ p := &_zDate
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(5))))
+ sink0 = *p
+ }
+ if int32(*_zDate) != i32(58) {
+ goto _1
+ }
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ if _getDigits(tls, _zDate, str(7239), unsafe.Pointer(&_s)) != i32(1) {
+ return i32(1)
}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X4 */))) = _s / i32(3600)
{
- p := &_s
- *p = (*p) - ((_p.X4) * i32(3600))
- sink1 = *p
+ p := &_zDate
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(2))))
+ sink0 = *p
+ }
+ if int32(*_zDate) != i32(46) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zDate)) + 1*uintptr(i32(1)))))))))&i32(4)) == 0 {
+ goto _4
+ }
+ _4_rScale = 1
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+_5:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(4)) != 0 {
+ _ms = ((_ms * float64(10)) + float64(*_zDate)) - float64(i32(48))
+ {
+ p := &_4_rScale
+ *p = (*p) * float64(10)
+ sink4 = *p
+ }
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ goto _5
}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X5 */))) = _s / i32(60)
{
- p := (*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */)))
- *p = (*p) + float64(_s-((_p.X5)*i32(60)))
+ p := &_ms
+ *p = (*p) / _4_rScale
sink4 = *p
}
+_4:
+ goto _7
+_1:
+ _s = i32(0)
+_7:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(0))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X4 */))) = _h
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X5 */))) = _m
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = float64(_s) + _ms
+ if _parseTimezone(tls, _zDate, _p) != 0 {
+ return i32(1)
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(func() int32 {
+ if (_p.X6) != i32(0) {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+ return i32(0)
}
-func _osLocaltime(tls *crt.TLS, _t *int32, _pTm *crt.Xtm) (r0 int32) { // sqlite3.c:19339:1
- var _rc int32 // sqlite3.c:19340:7
- _ = _rc
- var _pX *crt.Xtm // sqlite3.c:19342:13
- _ = _pX
- var _mutex *Xsqlite3_mutex // sqlite3.c:19344:17
- _ = _mutex
- _mutex = _sqlite3MutexAlloc(tls, i32(2))
- Xsqlite3_mutex_enter(tls, _mutex)
- _pX = crt.Xlocaltime(tls, _t)
- if (_sqlite3Config.X38) == 0 {
+// Parse a timezone extension on the end of a date-time.
+// The extension is of the form:
+//
+// (+/-)HH:MM
+//
+// Or the "zulu" notation:
+//
+// Z
+//
+// If the parse is successful, write the number of minutes
+// of change in p->tz and return 0. If a parser error occurs,
+// return non-zero.
+//
+// A missing specifier is not considered an error.
+func _parseTimezone(tls *crt.TLS, _zDate *int8, _p *XDateTime) (r0 int32) {
+ var _sgn, _nHr, _nMn, _c int32
+ _sgn = i32(0)
+_0:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(1)) != 0 {
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
goto _0
}
-
- _pX = nil
-_0:
- if _pX == nil {
- goto _1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X6 */))) = i32(0)
+ _c = int32(*_zDate)
+ if _c == i32(45) {
+ _sgn = i32(-1)
+ goto _3
+ }
+ if _c == i32(43) {
+ _sgn = i32(1)
+ goto _5
+ }
+ if (_c == i32(90)) || (_c == i32(122)) {
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ goto _zulu_time
}
+ return bool2int(_c != i32(0))
- *_pTm = *_pX
-_1:
- Xsqlite3_mutex_leave(tls, _mutex)
- _rc = bool2int(_pX == nil)
- return _rc
+_5:
+_3:
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ if _getDigits(tls, _zDate, str(7243), unsafe.Pointer(&_nHr), unsafe.Pointer(&_nMn)) != i32(2) {
+ return i32(1)
+ }
+ {
+ p := &_zDate
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(5))))
+ sink0 = *p
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X6 */))) = _sgn * (_nMn + (_nHr * i32(60)))
+_zulu_time:
+_10:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zDate))))) & i32(1)) != 0 {
+ *(*uintptr)(unsafe.Pointer(&_zDate)) += uintptr(1)
+ goto _10
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(45 /* X13 */))) = int8(i32(1))
+ return bool2int(int32(*_zDate) != i32(0))
}
-func Xsqlite3_result_error(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32) { // sqlite3.c:76450:12
- func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_errorØ00__func__Ø000))), unsafe.Pointer(str(5084)))
- crt.X__builtin_abort(tls)
+// Convert from YYYY-MM-DD HH:MM:SS to julian day. We always assume
+// that the YYYY-MM-DD is according to the Gregorian calendar.
+//
+// Reference: Meeus page 61
+func _computeJD(tls *crt.TLS, _p *XDateTime) {
+ var _Y, _M, _D, _A, _B, _X1, _X2 int32
+ if (_p.X8) != 0 {
+ return
+ }
+ if (_p.X10) != 0 {
+ _Y = _p.X1
+ _M = _p.X2
+ _D = _p.X3
+ goto _2
+ }
+ _Y = i32(2000)
+ _M = i32(1)
+ _D = i32(1)
+_2:
+ if ((_Y < i32(-4713)) || (_Y > i32(9999))) || ((_p.X9) != 0) {
+ _datetimeError(tls, _p)
+ return
+ }
+ if _M <= i32(2) {
+ _Y -= 1
+ {
+ p := &_M
+ *p = (*p) + i32(12)
+ sink1 = *p
}
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(20 /* X5 */))) = i32(1)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(25 /* X7 */))) = uint8(i32(1))
- _sqlite3VdbeMemSetStr(tls, (*XMem)(_pCtx.X0), _z, _n, uint8(i32(1)), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+ }
+ _A = _Y / i32(100)
+ _B = (i32(2) - _A) + (_A / i32(4))
+ _X1 = (i32(36525) * (_Y + i32(4716))) / i32(100)
+ _X2 = (i32(306001) * (_M + i32(1))) / i32(10000)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = int64((float64(((_X1+_X2)+_D)+_B) - (1524.5)) * float64(i32(86400000)))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
+ if (_p.X11) == 0 {
+ goto _7
+ }
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + (int64(((_p.X4)*i32(3600000))+((_p.X5)*i32(60000))) + int64((_p.X7)*float64(i32(1000))))
+ sink6 = *p
+ }
+ if (_p.X12) != 0 {
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) - int64((_p.X6)*i32(60000))
+ sink6 = *p
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
+ }
+_7:
}
-var _sqlite3_result_errorØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3_result_errorØ00__func__Ø000[0], str(5904), 21)
+// Put the DateTime object into its error state.
+func _datetimeError(tls *crt.TLS, _p *XDateTime) {
+ crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(46 /* X14 */))) = int8(i32(1))
}
-func _clearYMD_HMS_TZ(tls *crt.TLS, _p *XDateTime) { // sqlite3.c:19301:1
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
+func Xsqlite3_value_bytes(tls *crt.TLS, _pVal *XMem) (r0 int32) {
+ return _sqlite3ValueBytes(tls, _pVal, uint8(i32(1)))
}
-func Xsqlite3_strnicmp(tls *crt.TLS, _zLeft *int8, _zRight *int8, _N int32) (r0 int32) { // sqlite3.c:27966:12
- var _a *uint8 // sqlite3.c:27967:26
- _ = _a
- var _b *uint8 // sqlite3.c:27967:30
- _ = _b
- if _zLeft != nil {
- goto _0
- }
- return func() int32 {
- if _zRight != nil {
- return i32(-1)
+func _sqlite3ValueBytes(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 int32) {
+ var _p *XMem
+ _p = _pVal
+ func() {
+ if (int32(_p.X1)&i32(1)) != i32(0) && (int32(_p.X1)&i32(18)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ValueBytesØ00__func__Ø000))), unsafe.Pointer(str(7251)))
+ crt.X__builtin_abort(tls)
}
- return i32(0)
}()
-
-_0:
- if _zRight != nil {
- goto _4
+ if ((int32(_p.X1) & i32(2)) != i32(0)) && (int32(_pVal.X2) == int32(_enc)) {
+ return _p.X4
}
- return i32(1)
+ if (int32(_p.X1) & i32(16)) == i32(0) {
+ goto _5
+ }
+ if (int32(_p.X1) & i32(16384)) != 0 {
+ /* X0 */
+ return (_p.X4) + (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0))))))
+ }
+ return _p.X4
-_4:
- _a = (*uint8)(unsafe.Pointer(_zLeft))
- _b = (*uint8)(unsafe.Pointer(_zRight))
_5:
- if postInc1(&_N, int32(-1)) <= i32(0) || int32(*_a) == i32(0) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_a)))) != int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_b)))) {
- goto _6
+ if (int32(_p.X1) & i32(1)) != 0 {
+ return i32(0)
}
-
- *(*uintptr)(unsafe.Pointer(&_a)) += uintptr(1)
- *(*uintptr)(unsafe.Pointer(&_b)) += uintptr(1)
- goto _5
-
-_6:
- return func() int32 {
- if _N < i32(0) {
- return i32(0)
- }
- return (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_a)))) - int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_b)))))
- }()
+ return _valueBytes(tls, _pVal, _enc)
}
-var _aXformType [6]struct {
- X0 uint8
- X1 uint8
- X2 *int8
- X3 float64
- X4 float64
-} // sqlite3.c:19449:3
+var _sqlite3ValueBytesØ00__func__Ø000 [18]int8
func init() {
- _aXformType = [6]struct {
- X0 uint8
- X1 uint8
- X2 *int8
- X3 float64
- X4 float64
- }{t14{X0: u8(0), X1: u8(6), X2: str(5928), X3: 4.642690608e+11, X4: 1000}, t14{X0: u8(0), X1: u8(6), X2: str(5936), X3: 7.73781768e+09, X4: 60000}, t14{X0: u8(0), X1: u8(4), X2: str(5944), X3: 1.28963628e+08, X4: 3.6e+06}, t14{X0: u8(0), X1: u8(3), X2: str(5876), X3: 5.373485e+06, X4: 8.64e+07}, t14{X0: u8(1), X1: u8(5), X2: str(5860), X3: 176546, X4: 2.592e+09}, t14{X0: u8(2), X1: u8(4), X2: str(5868), X3: 14713, X4: 3.1536e+10}}
+ crt.Xstrncpy(nil, &_sqlite3ValueBytesØ00__func__Ø000[0], str(7314), 18)
}
-func Xsqlite3_result_double(tls *crt.TLS, _pCtx *Xsqlite3_context, _rVal float64) { // sqlite3.c:76446:12
- func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_doubleØ00__func__Ø000))), unsafe.Pointer(str(5084)))
- crt.X__builtin_abort(tls)
+// The sqlite3ValueBytes() routine returns the number of bytes in the
+// sqlite3_value object assuming that it uses the encoding "enc".
+// The valueBytes() routine is a helper function.
+func _valueBytes(tls *crt.TLS, _pVal *XMem, _enc uint8) (r0 int32) {
+ return func() int32 {
+ if _valueToText(tls, _pVal, _enc) != nil {
+ return (_pVal.X4)
}
+ return i32(0)
}()
- _sqlite3VdbeMemSetDouble(tls, (*XMem)(_pCtx.X0), _rVal)
-}
-
-var _sqlite3_result_doubleØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3_result_doubleØ00__func__Ø000[0], str(5952), 22)
}
-func _sqlite3VdbeMemSetDouble(tls *crt.TLS, _pMem *XMem, _val float64) { // sqlite3.c:70414:1
- _sqlite3VdbeMemSetNull(tls, _pMem)
- if _sqlite3IsNaN(tls, _val) != 0 {
- goto _0
+// Process a modifier to a date-time stamp. The modifiers are
+// as follows:
+//
+// NNN days
+// NNN hours
+// NNN minutes
+// NNN.NNNN seconds
+// NNN months
+// NNN years
+// start of month
+// start of year
+// start of week
+// start of day
+// weekday N
+// unixepoch
+// localtime
+// utc
+//
+// Return 0 on success and 1 if there is any kind of error. If the error
+// is in a system call (i.e. localtime()), then an error message is written
+// to context pCtx. If the error is an unrecognized modifier, no error is
+// written to pCtx.
+func _parseModifier(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32, _p *XDateTime) (r0 int32) {
+ var _rc, _17_i, _24_x, _25_y int32
+ var _8_c1, _12_Z, _20_day int64
+ var _20_z2 *int8
+ var _r, _17_rRounder float64
+ var _20_tx XDateTime
+ _rc = i32(1)
+ switch int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))))))) {
+ case i32(43):
+ goto _5
+ case i32(45):
+ goto _6
+ case i32(48):
+ goto _7
+ case i32(49):
+ goto _8
+ case i32(50):
+ goto _9
+ case i32(51):
+ goto _10
+ case i32(52):
+ goto _11
+ case i32(53):
+ goto _12
+ case i32(54):
+ goto _13
+ case i32(55):
+ goto _14
+ case i32(56):
+ goto _15
+ case i32(57):
+ goto _16
+ case i32(108):
+ goto _1
+ case i32(115):
+ goto _4
+ case i32(117):
+ goto _2
+ case i32(119):
+ goto _3
+ default:
+ goto _17
}
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _val
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(8))
-_0:
-}
-
-func _sqlite3IsNaN(tls *crt.TLS, _x float64) (r0 int32) { // sqlite3.c:27715:1
- var _rc int32 // sqlite3.c:27716:7
- _ = _rc
- var _y float64 // sqlite3.c:27744:19
- _ = _y
- var _z float64 // sqlite3.c:27745:19
- _ = _z
- _y = _x
- _z = _y
- _rc = bool2int(_y != _z)
- return _rc
-}
-
-func _dateFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) { // sqlite3.c:19798:1
- var _x XDateTime // sqlite3.c:19803:12
- _ = _x
- var _1_zBuf [100]int8 // sqlite3.c:19805:10
- _ = _1_zBuf
- if _isDate(tls, _context, _argc, _argv, &_x) != i32(0) {
- goto _0
+_1:
+ if Xsqlite3_stricmp(tls, _z, str(7332)) == i32(0) {
+ _computeJD(tls, _p)
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + _localtimeOffset(tls, _p, _pCtx, &_rc)
+ sink6 = *p
+ }
+ _clearYMD_HMS_TZ(tls, _p)
}
-
- _computeYMD(tls, &_x)
- Xsqlite3_snprintf(tls, int32(u32(100)), (*int8)(unsafe.Pointer(&_1_zBuf)), str(5976), _x.X1, _x.X2, _x.X3)
- Xsqlite3_result_text(tls, _context, (*int8)(unsafe.Pointer(&_1_zBuf)), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
-_0:
-}
-
-func _timeFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) { // sqlite3.c:19779:1
- var _x XDateTime // sqlite3.c:19784:12
- _ = _x
- var _1_zBuf [100]int8 // sqlite3.c:19786:10
- _ = _1_zBuf
- if _isDate(tls, _context, _argc, _argv, &_x) != i32(0) {
- goto _0
+ goto _19
+_2:
+ if Xsqlite3_stricmp(tls, _z, str(7342)) != i32(0) || (_p.X9) == 0 {
+ goto _21
}
-
- _computeHMS(tls, &_x)
- Xsqlite3_snprintf(tls, int32(u32(100)), (*int8)(unsafe.Pointer(&_1_zBuf)), str(5992), _x.X4, _x.X5, int32(_x.X7))
- Xsqlite3_result_text(tls, _context, (*int8)(unsafe.Pointer(&_1_zBuf)), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
-_0:
-}
-
-func _datetimeFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) { // sqlite3.c:19759:1
- var _x XDateTime // sqlite3.c:19764:12
- _ = _x
- var _1_zBuf [100]int8 // sqlite3.c:19766:10
- _ = _1_zBuf
- if _isDate(tls, _context, _argc, _argv, &_x) != i32(0) {
- goto _0
+ _r = ((_p.X7) * float64(1000)) + (2.1086676e+14)
+ if (_r >= float64(0)) && (_r < (4.642690608e+14)) {
+ _clearYMD_HMS_TZ(tls, _p)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = int64(_r)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(1))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(0))
+ _rc = i32(0)
}
-
- _computeYMD_HMS(tls, &_x)
- Xsqlite3_snprintf(tls, int32(u32(100)), (*int8)(unsafe.Pointer(&_1_zBuf)), str(6008), _x.X1, _x.X2, _x.X3, _x.X4, _x.X5, int32(_x.X7))
- Xsqlite3_result_text(tls, _context, (*int8)(unsafe.Pointer(&_1_zBuf)), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
-_0:
-}
-
-func _strftimeFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) { // sqlite3.c:19831:1
- var _x XDateTime // sqlite3.c:19836:12
- _ = _x
- var _n uint64 // sqlite3.c:19837:7
- _ = _n
- var _i uint32 // sqlite3.c:19838:10
- _ = _i
- var _j uint32 // sqlite3.c:19838:12
- _ = _j
- var _z *int8 // sqlite3.c:19839:8
- _ = _z
- var _db *Xsqlite3 // sqlite3.c:19840:11
- _ = _db
- var _zFmt *int8 // sqlite3.c:19841:14
- _ = _zFmt
- var _zBuf [100]int8 // sqlite3.c:19842:8
- _ = _zBuf
- var _12_s float64 // sqlite3.c:19906:18
- _ = _12_s
- var _13_nDay int32 // sqlite3.c:19915:15
- _ = _13_nDay
- var _13_y XDateTime // sqlite3.c:19916:20
- _ = _13_y
- var _14_wd int32 // sqlite3.c:19923:17
- _ = _14_wd
- if _argc != i32(0) {
- goto _0
+ goto _24
+_21:
+ if Xsqlite3_stricmp(tls, _z, str(7352)) != i32(0) {
+ goto _25
+ }
+ if int32(_p.X13) != i32(0) {
+ goto _26
+ }
+ _computeJD(tls, _p)
+ _8_c1 = _localtimeOffset(tls, _p, _pCtx, &_rc)
+ if _rc == i32(0) {
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) - _8_c1
+ sink6 = *p
+ }
+ _clearYMD_HMS_TZ(tls, _p)
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + (_8_c1 - _localtimeOffset(tls, _p, _pCtx, &_rc))
+ sink6 = *p
+ }
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(45 /* X13 */))) = int8(i32(1))
+ goto _28
+_26:
+ _rc = i32(0)
+_28:
+_25:
+_24:
+ goto _19
+_3:
+ if Xsqlite3_strnicmp(tls, _z, str(7356), i32(8)) != i32(0) || _sqlite3AtoF(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(i32(8)))), &_r, _sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(i32(8))))), uint8(i32(1))) == 0 || float64(store1(&_n, int32(_r))) != _r || _n < i32(0) || _r >= float64(i32(7)) {
+ goto _33
+ }
+ _computeYMD_HMS(tls, _p)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
+ _computeJD(tls, _p)
+ _12_Z = (((_p.X0) + int64(i32(129600000))) / int64(i32(86400000))) % int64(i32(7))
+ if _12_Z > int64(_n) {
+ {
+ p := &_12_Z
+ *p = (*p) - int64(i32(7))
+ sink6 = *p
+ }
+ }
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + ((int64(_n) - _12_Z) * int64(i32(86400000)))
+ sink6 = *p
+ }
+ _clearYMD_HMS_TZ(tls, _p)
+ _rc = i32(0)
+_33:
+ goto _19
+_4:
+ if Xsqlite3_strnicmp(tls, _z, str(7365), i32(9)) != i32(0) {
+ goto _19
+ }
+ if (((_p.X8) == 0) && ((_p.X10) == 0)) && ((_p.X11) == 0) {
+ goto _19
+ }
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(9))))
+ sink0 = *p
+ }
+ _computeYMD(tls, _p)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X4 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(24 /* X5 */))), i32(0))
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = float64(0)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
+ if Xsqlite3_stricmp(tls, _z, str(7375)) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = i32(1)
+ _rc = i32(0)
+ goto _40
+ }
+ if Xsqlite3_stricmp(tls, _z, str(7381)) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = i32(1)
+ _rc = i32(0)
+ goto _42
+ }
+ if Xsqlite3_stricmp(tls, _z, str(7386)) == i32(0) {
+ _rc = i32(0)
+ }
+_42:
+_40:
+ goto _19
+_5:
+_6:
+_7:
+_8:
+_9:
+_10:
+_11:
+_12:
+_13:
+_14:
+_15:
+_16:
+ _n = i32(1)
+_44:
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))) == 0 || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))) == i32(58) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n))))))))&i32(1)) != 0 {
+ goto _49
+ }
+ _n += 1
+ goto _44
+_49:
+ if _sqlite3AtoF(tls, _z, &_r, _n, uint8(i32(1))) == 0 {
+ _rc = i32(1)
+ goto _19
+ }
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n)))) != i32(58) {
+ goto _51
+ }
+ _20_z2 = _z
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_20_z2))))) & i32(4)) == 0 {
+ *(*uintptr)(unsafe.Pointer(&_20_z2)) += uintptr(1)
+ }
+ crt.Xmemset(tls, (unsafe.Pointer)(&_20_tx), i32(0), u32(48))
+ if _parseHhMmSs(tls, _20_z2, &_20_tx) != 0 {
+ goto _19
+ }
+ _computeJD(tls, &_20_tx)
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_20_tx)) + uintptr(0 /* X0 */)))
+ *p = (*p) - int64(i32(43200000))
+ sink6 = *p
+ }
+ _20_day = (_20_tx.X0) / int64(i32(86400000))
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_20_tx)) + uintptr(0 /* X0 */)))
+ *p = (*p) - (_20_day * int64(i32(86400000)))
+ sink6 = *p
+ }
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) == i32(45) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_20_tx)) + uintptr(0 /* X0 */))) = -(_20_tx.X0)
+ }
+ _computeJD(tls, _p)
+ _clearYMD_HMS_TZ(tls, _p)
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + (_20_tx.X0)
+ sink6 = *p
+ }
+ _rc = i32(0)
+ goto _19
+_51:
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
+ sink0 = *p
+ }
+_55:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z))))) & i32(1)) != 0 {
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
+ goto _55
+ }
+ _n = _sqlite3Strlen30(tls, _z)
+ if (_n > i32(10)) || (_n < i32(3)) {
+ goto _19
+ }
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))))))) == i32(115) {
+ _n -= 1
+ }
+ _computeJD(tls, _p)
+ _rc = i32(1)
+ _17_rRounder = func() float64 {
+ if _r < float64(i32(0)) {
+ return (-0.5)
+ }
+ return (0.5)
+ }()
+ _17_i = i32(0)
+_62:
+ if _17_i >= i32(6) {
+ goto _65
+ }
+ if int32((*t16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X1) != _n || Xsqlite3_strnicmp(tls, (*t16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X2, _z, _n) != i32(0) || _r <= (-((*t16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType)) + 24*uintptr(_17_i))).X3)) || _r >= ((*t16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X3) {
+ goto _69
+ }
+ switch int32((*t16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType)) + 24*uintptr(_17_i))).X0) {
+ case i32(1):
+ goto _71
+ case i32(2):
+ goto _72
+ default:
+ goto _73
}
- return
-_0:
- _zFmt = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))))
- if _zFmt != nil && _isDate(tls, _context, _argc-i32(1), (**XMem)(unsafe.Pointer(uintptr(unsafe.Pointer(_argv))+uintptr(unsafe.Pointer((**XMem)(unsafe.Pointer(uintptr(unsafe.Pointer((**XMem)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((**XMem)(unsafe.Pointer(uintptr(4))))))))))), &_x) == 0 {
+_71:
+ _computeYMD_HMS(tls, _p)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */)))
+ *p = (*p) + int32(_r)
+ sink1 = *p
+ }
+ _24_x = func() int32 {
+ if (_p.X2) > i32(0) {
+ return (((_p.X2) - i32(1)) / i32(12))
+ }
+ return (((_p.X2) - i32(12)) / i32(12))
+ }()
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */)))
+ *p = (*p) + _24_x
+ sink1 = *p
+ }
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */)))
+ *p = (*p) - (_24_x * i32(12))
+ sink1 = *p
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
+ {
+ p := &_r
+ *p = (*p) - float64(int32(_r))
+ sink4 = *p
+ }
+ goto _73
+_72:
+ _25_y = int32(_r)
+ _computeYMD_HMS(tls, _p)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */)))
+ *p = (*p) + _25_y
+ sink1 = *p
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))) = int8(i32(0))
+ {
+ p := &_r
+ *p = (*p) - float64(int32(_r))
+ sink4 = *p
+ }
+ goto _73
+_73:
+ _computeJD(tls, _p)
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + int64((_r*((*t16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aXformType))+24*uintptr(_17_i))).X4))+_17_rRounder)
+ sink6 = *p
+ }
+ _rc = i32(0)
+ goto _65
+_69:
+ _17_i += 1
+ goto _62
+_65:
+ _clearYMD_HMS_TZ(tls, _p)
+ goto _19
+_17:
+ goto _19
+_19:
+ return _rc
+
+ _ = _20_tx
+ panic(0)
+}
+
+// Some systems have stricmp(). Others have strcasecmp(). Because
+// there is no consistency, we will define our own.
+//
+// IMPLEMENTATION-OF: R-30243-02494 The sqlite3_stricmp() and
+// sqlite3_strnicmp() APIs allow applications and extensions to compare
+// the contents of two buffers containing UTF-8 strings in a
+// case-independent fashion, using the same definition of "case
+// independence" that SQLite uses internally when comparing identifiers.
+func Xsqlite3_stricmp(tls *crt.TLS, _zLeft *int8, _zRight *int8) (r0 int32) {
+ if _zLeft == nil {
+ return func() int32 {
+ if _zRight != nil {
+ return i32(-1)
+ }
+ return i32(0)
+ }()
+ }
+ if _zRight == nil {
+ return i32(1)
+ }
+ return _sqlite3StrICmp(tls, _zLeft, _zRight)
+}
+
+// Compute the difference (in milliseconds) between localtime and UTC
+// (a.k.a. GMT) for the time value p where p is in UTC. If no error occurs,
+// return this value and set *pRc to SQLITE_OK.
+//
+// Or, if an error does occur, set *pRc to SQLITE_ERROR. The returned value
+// is undefined in this case.
+func _localtimeOffset(tls *crt.TLS, _p *XDateTime, _pCtx *Xsqlite3_context, _pRc *int32) (r0 int64) {
+ var _t, _2_s int32
+ var _sLocal crt.Xtm
+ var _x, _y XDateTime
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sLocal), i32(0), u32(44))
+ _x = *_p
+ _computeYMD_HMS(tls, &_x)
+ if ((_x.X1) < i32(1971)) || ((_x.X1) >= i32(2038)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(8 /* X1 */))) = i32(2000)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(12 /* X2 */))) = i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(16 /* X3 */))) = i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(20 /* X4 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(24 /* X5 */))) = i32(0)
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(32 /* X7 */))) = float64(0)
goto _2
}
- return
+ _2_s = int32((_x.X7) + (0.5))
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(32 /* X7 */))) = float64(_2_s)
+_2:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(28 /* X6 */))) = i32(0)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(40 /* X8 */))) = int8(i32(0))
+ _computeJD(tls, &_x)
+ _t = int32(((_x.X0) / int64(i32(1000))) - i64(210866760000))
+ if _osLocaltime(tls, &_t, &_sLocal) != 0 {
+ Xsqlite3_result_error(tls, _pCtx, str(7390), i32(-1))
+ *_pRc = i32(1)
+ return int64(i32(0))
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(8 /* X1 */))) = (_sLocal.X5) + i32(1900)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(12 /* X2 */))) = (_sLocal.X4) + i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(16 /* X3 */))) = _sLocal.X3
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(20 /* X4 */))) = _sLocal.X2
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(24 /* X5 */))) = _sLocal.X1
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(32 /* X7 */))) = float64(_sLocal.X0)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(42 /* X10 */))) = int8(i32(1))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(43 /* X11 */))) = int8(i32(1))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(40 /* X8 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(41 /* X9 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(44 /* X12 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_y)) + uintptr(46 /* X14 */))) = int8(i32(0))
+ _computeJD(tls, &_y)
+ *_pRc = i32(0)
+ return (_y.X0) - (_x.X0)
+
+ _ = _x
+ _ = _y
+ _ = _t
+ _ = _sLocal
+ panic(0)
+}
+// Compute both YMD and HMS
+func _computeYMD_HMS(tls *crt.TLS, _p *XDateTime) {
+ _computeYMD(tls, _p)
+ _computeHMS(tls, _p)
+}
+
+// Compute the Year, Month, and Day from the julian day number.
+func _computeYMD(tls *crt.TLS, _p *XDateTime) {
+ var _Z, _A, _B, _C, _D, _E, _X1 int32
+ if (_p.X10) != 0 {
+ return
+ }
+ if (_p.X8) == 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = i32(2000)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = i32(1)
+ goto _2
+ }
+ if _validJulianDay(tls, _p.X0) == 0 {
+ _datetimeError(tls, _p)
+ return
+ }
+ _Z = int32(((_p.X0) + int64(i32(43200000))) / int64(i32(86400000)))
+ _A = int32((float64(_Z) - (1.86721625e+06)) / (36524.25))
+ _A = ((_Z + i32(1)) + _A) - (_A / i32(4))
+ _B = _A + i32(1524)
+ _C = int32((float64(_B) - (122.1)) / (365.25))
+ _D = (i32(36525) * (_C & i32(32767))) / i32(100)
+ _E = int32(float64(_B-_D) / (30.6001))
+ _X1 = int32((30.6001) * float64(_E))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X3 */))) = (_B - _D) - _X1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))) = func() int32 {
+ if _E < i32(14) {
+ return (_E - i32(1))
+ }
+ return (_E - i32(13))
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = func() int32 {
+ if (_p.X2) > i32(2) {
+ return (_C - i32(4716))
+ }
+ return (_C - i32(4715))
+ }()
_2:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(1))
+}
+
+// Return TRUE if the given julian day number is within range.
+//
+// The input is the JulianDay times 86400000.
+func _validJulianDay(tls *crt.TLS, _iJD int64) (r0 int32) {
+ return bool2int((_iJD >= int64(i32(0))) && (_iJD <= i64(464269060799999)))
+}
+
+// Compute the Hour, Minute, and Seconds from the julian day number.
+func _computeHMS(tls *crt.TLS, _p *XDateTime) {
+ var _s int32
+ if (_p.X11) != 0 {
+ return
+ }
+ _computeJD(tls, _p)
+ _s = int32(((_p.X0) + int64(i32(43200000))) % int64(i32(86400000)))
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */))) = float64(_s) / float64(1000)
+ _s = int32(_p.X7)
+ {
+ p := (*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */)))
+ *p = (*p) - float64(_s)
+ sink4 = *p
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X4 */))) = _s / i32(3600)
+ {
+ p := &_s
+ *p = (*p) - ((_p.X4) * i32(3600))
+ sink1 = *p
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X5 */))) = _s / i32(60)
+ {
+ p := (*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X7 */)))
+ *p = (*p) + float64(_s-((_p.X5)*i32(60)))
+ sink4 = *p
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(41 /* X9 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(1))
+}
+
+// The following routine implements the rough equivalent of localtime_r()
+// using whatever operating-system specific localtime facility that
+// is available. This routine returns 0 on success and
+// non-zero on any kind of error.
+//
+// If the sqlite3GlobalConfig.bLocaltimeFault variable is true then this
+// routine will always fail.
+//
+// EVIDENCE-OF: R-62172-00036 In this implementation, the standard C
+// library function localtime_r() is used to assist in the calculation of
+// local time.
+func _osLocaltime(tls *crt.TLS, _t *int32, _pTm *crt.Xtm) (r0 int32) {
+ var _rc int32
+ var _mutex *Xsqlite3_mutex
+ var _pX *crt.Xtm
+ _mutex = _sqlite3MutexAlloc(tls, i32(2))
+ Xsqlite3_mutex_enter(tls, _mutex)
+ _pX = crt.Xlocaltime(tls, _t)
+ if (_sqlite3Config.X38) != 0 {
+ _pX = nil
+ }
+ if _pX != nil {
+ *_pTm = *_pX
+ }
+ Xsqlite3_mutex_leave(tls, _mutex)
+ _rc = bool2int(_pX == nil)
+ return _rc
+}
+
+func Xsqlite3_result_error(tls *crt.TLS, _pCtx *Xsqlite3_context, _z *int8, _n int32) {
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_errorØ00__func__Ø000))), unsafe.Pointer(str(6666)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(20 /* X5 */))) = i32(1)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(25 /* X7 */))) = uint8(i32(1))
+ _sqlite3VdbeMemSetStr(tls, (*XMem)(_pCtx.X0), _z, _n, uint8(i32(1)), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+}
+
+var _sqlite3_result_errorØ00__func__Ø000 [21]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_result_errorØ00__func__Ø000[0], str(7413), 21)
+}
+
+// Clear the YMD and HMS and the TZ
+func _clearYMD_HMS_TZ(tls *crt.TLS, _p *XDateTime) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X10 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(43 /* X11 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X12 */))) = int8(i32(0))
+}
+
+func Xsqlite3_strnicmp(tls *crt.TLS, _zLeft *int8, _zRight *int8, _N int32) (r0 int32) {
+ var _a, _b *uint8
+ if _zLeft == nil {
+ return func() int32 {
+ if _zRight != nil {
+ return i32(-1)
+ }
+ return i32(0)
+ }()
+ }
+ if _zRight == nil {
+ return i32(1)
+ }
+ _a = (*uint8)(unsafe.Pointer(_zLeft))
+ _b = (*uint8)(unsafe.Pointer(_zRight))
+_5:
+ if ((postInc1(&_N, int32(-1)) > i32(0)) && (int32(*_a) != i32(0))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_a)))) == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_b))))) {
+ *(*uintptr)(unsafe.Pointer(&_a)) += uintptr(1)
+ *(*uintptr)(unsafe.Pointer(&_b)) += uintptr(1)
+ goto _5
+ }
+ return func() int32 {
+ if _N < i32(0) {
+ return i32(0)
+ }
+ return (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_a)))) - int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_b)))))
+ }()
+}
+
+var _aXformType [6]struct {
+ X0 uint8
+ X1 uint8
+ X2 *int8
+ X3 float64
+ X4 float64
+}
+
+func init() {
+ _aXformType = [6]struct {
+ X0 uint8
+ X1 uint8
+ X2 *int8
+ X3 float64
+ X4 float64
+ }{t16{X0: u8(0), X1: u8(6), X2: str(7434), X3: 4.642690608e+11, X4: 1000}, t16{X0: u8(0), X1: u8(6), X2: str(7441), X3: 7.73781768e+09, X4: 60000}, t16{X0: u8(0), X1: u8(4), X2: str(7448), X3: 1.28963628e+08, X4: 3.6e+06}, t16{X0: u8(0), X1: u8(3), X2: str(7386), X3: 5.373485e+06, X4: 8.64e+07}, t16{X0: u8(1), X1: u8(5), X2: str(7375), X3: 176546, X4: 2.592e+09}, t16{X0: u8(2), X1: u8(4), X2: str(7381), X3: 14713, X4: 3.1536e+10}}
+}
+
+func Xsqlite3_result_double(tls *crt.TLS, _pCtx *Xsqlite3_context, _rVal float64) {
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_doubleØ00__func__Ø000))), unsafe.Pointer(str(6666)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeMemSetDouble(tls, (*XMem)(_pCtx.X0), _rVal)
+}
+
+var _sqlite3_result_doubleØ00__func__Ø000 [22]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_result_doubleØ00__func__Ø000[0], str(7453), 22)
+}
+
+// Delete any previous value and set the value stored in *pMem to val,
+// manifest type REAL.
+func _sqlite3VdbeMemSetDouble(tls *crt.TLS, _pMem *XMem, _val float64) {
+ _sqlite3VdbeMemSetNull(tls, _pMem)
+ if _sqlite3IsNaN(tls, _val) == 0 {
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _val
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(8))
+ }
+}
+
+// Return true if the floating point value is Not a Number (NaN).
+//
+// Use the math library isnan() function if compiled with SQLITE_HAVE_ISNAN.
+// Otherwise, we have our own implementation that works on most systems.
+func _sqlite3IsNaN(tls *crt.TLS, _x float64) (r0 int32) {
+ var _rc int32
+ var _y, _z float64
+ _y = _x
+ _z = _y
+ _rc = bool2int(_y != _z)
+ return _rc
+}
+
+// date( TIMESTRING, MOD, MOD, ...)
+//
+// Return YYYY-MM-DD
+func _dateFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) {
+ var _x XDateTime
+ var _1_zBuf [100]int8
+ if _isDate(tls, _context, _argc, _argv, &_x) == i32(0) {
+ _computeYMD(tls, &_x)
+ Xsqlite3_snprintf(tls, int32(u32(100)), (*int8)(unsafe.Pointer(&_1_zBuf)), str(7475), _x.X1, _x.X2, _x.X3)
+ Xsqlite3_result_text(tls, _context, (*int8)(unsafe.Pointer(&_1_zBuf)), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+ }
+ _ = _x
+ _ = _1_zBuf
+}
+
+// time( TIMESTRING, MOD, MOD, ...)
+//
+// Return HH:MM:SS
+func _timeFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) {
+ var _x XDateTime
+ var _1_zBuf [100]int8
+ if _isDate(tls, _context, _argc, _argv, &_x) == i32(0) {
+ _computeHMS(tls, &_x)
+ Xsqlite3_snprintf(tls, int32(u32(100)), (*int8)(unsafe.Pointer(&_1_zBuf)), str(7490), _x.X4, _x.X5, int32(_x.X7))
+ Xsqlite3_result_text(tls, _context, (*int8)(unsafe.Pointer(&_1_zBuf)), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+ }
+ _ = _x
+ _ = _1_zBuf
+}
+
+// datetime( TIMESTRING, MOD, MOD, ...)
+//
+// Return YYYY-MM-DD HH:MM:SS
+func _datetimeFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) {
+ var _x XDateTime
+ var _1_zBuf [100]int8
+ if _isDate(tls, _context, _argc, _argv, &_x) == i32(0) {
+ _computeYMD_HMS(tls, &_x)
+ Xsqlite3_snprintf(tls, int32(u32(100)), (*int8)(unsafe.Pointer(&_1_zBuf)), str(7505), _x.X1, _x.X2, _x.X3, _x.X4, _x.X5, int32(_x.X7))
+ Xsqlite3_result_text(tls, _context, (*int8)(unsafe.Pointer(&_1_zBuf)), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+ }
+ _ = _x
+ _ = _1_zBuf
+}
+
+// strftime( FORMAT, TIMESTRING, MOD, MOD, ...)
+//
+// Return a string described by FORMAT. Conversions as follows:
+//
+// %d day of month
+// %f ** fractional seconds SS.SSS
+// %H hour 00-24
+// %j day of year 000-366
+// %J ** julian day number
+// %m month 01-12
+// %M minute 00-59
+// %s seconds since 1970-01-01
+// %S seconds 00-59
+// %w day of week 0-6 sunday==0
+// %W week of year 00-53
+// %Y year 0000-9999
+// %% %
+func _strftimeFunc(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) {
+ var _13_nDay, _14_wd int32
+ var _i, _j uint32
+ var _n uint64
+ var _z, _zFmt *int8
+ var _12_s float64
+ var _db *Xsqlite3
+ var _x, _13_y XDateTime
+ var _zBuf [100]int8
+ if _argc == i32(0) {
+ return
+ }
+ _zFmt = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))))
+ if (_zFmt == nil) || _isDate(tls, _context, _argc-i32(1), (**XMem)(unsafe.Pointer(uintptr(unsafe.Pointer(_argv))+uintptr(unsafe.Pointer((**XMem)(unsafe.Pointer(uintptr(unsafe.Pointer((**XMem)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((**XMem)(unsafe.Pointer(uintptr(4))))))))))), &_x) != 0 {
+ return
+ }
_db = Xsqlite3_context_db_handle(tls, _context)
*func() *uint64 { _i = uint32(i32(0)); return &_n }() = uint64(i32(1))
_3:
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) == 0 {
goto _6
}
-
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) != i32(37) {
goto _7
}
-
switch int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i+uint32(i32(1)))))) {
case i32(37):
goto _16
@@ -9163,75 +9498,56 @@ _14:
_15:
_16:
goto _23
-
_17:
{
p := &_n
*p = (*p) + uint64(i32(8))
- sink15 = *p
+ sink17 = *p
}
goto _23
-
_18:
{
p := &_n
*p = (*p) + uint64(i32(3))
- sink15 = *p
+ sink17 = *p
}
goto _23
-
_19:
{
p := &_n
*p = (*p) + uint64(i32(8))
- sink15 = *p
+ sink17 = *p
}
goto _23
-
_20:
_21:
{
p := &_n
*p = (*p) + uint64(i32(50))
- sink15 = *p
+ sink17 = *p
}
goto _23
-
_22:
return
-
_23:
_i += 1
_7:
*func() *uint64 { _i += 1; return &_n }() += 1
goto _3
-
_6:
- if _n >= uint64(u32(100)) {
- goto _24
+ if _n < uint64(u32(100)) {
+ _z = (*int8)(unsafe.Pointer(&_zBuf))
+ goto _25
}
-
- _z = (*int8)(unsafe.Pointer(&_zBuf))
- goto _25
-
-_24:
- if _n <= uint64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
- goto _26
+ if _n > uint64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
+ Xsqlite3_result_error_toobig(tls, _context)
+ return
}
-
- Xsqlite3_result_error_toobig(tls, _context)
- return
-
-_26:
_z = (*int8)(_sqlite3DbMallocRawNN(tls, _db, uint64(int32(_n))))
- if _z != nil {
- goto _28
+ if _z == nil {
+ Xsqlite3_result_error_nomem(tls, _context)
+ return
}
-
- Xsqlite3_result_error_nomem(tls, _context)
- return
-
-_28:
_25:
_computeJD(tls, &_x)
_computeYMD_HMS(tls, &_x)
@@ -9240,15 +9556,10 @@ _29:
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) == 0 {
goto _32
}
-
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) == i32(37) {
- goto _33
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) != i32(37) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc5(&_j, uint32(1))))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))
+ goto _34
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc5(&_j, uint32(1))))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))
- goto _34
-
-_33:
_i += 1
switch int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) {
case i32(72):
@@ -9280,39 +9591,33 @@ _33:
}
_36:
- Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6040), _x.X3)
+ Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7535), _x.X3)
{
p := &_j
*p = (*p) + uint32(i32(2))
sink5 = *p
}
goto _49
-
_37:
_12_s = _x.X7
- if _12_s <= (59.999) {
- goto _50
+ if _12_s > (59.999) {
+ _12_s = 59.999
}
-
- _12_s = 59.999
-_50:
- Xsqlite3_snprintf(tls, i32(7), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6048), _12_s)
+ Xsqlite3_snprintf(tls, i32(7), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7540), _12_s)
{
p := &_j
*p = (*p) + uint32(_sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j)))))
sink5 = *p
}
goto _49
-
_38:
- Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6040), _x.X4)
+ Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7535), _x.X4)
{
p := &_j
*p = (*p) + uint32(i32(2))
sink5 = *p
}
goto _49
-
_39:
_40:
_13_y = _x
@@ -9321,21 +9626,17 @@ _40:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_13_y)) + uintptr(16 /* X3 */))) = i32(1)
_computeJD(tls, &_13_y)
_13_nDay = int32((((_x.X0) - (_13_y.X0)) + int64(i32(43200000))) / int64(i32(86400000)))
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) != i32(87) {
- goto _51
- }
-
- _14_wd = int32((((_x.X0) + int64(i32(43200000))) / int64(i32(86400000))) % int64(i32(7)))
- Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6040), ((_13_nDay+i32(7))-_14_wd)/i32(7))
- {
- p := &_j
- *p = (*p) + uint32(i32(2))
- sink5 = *p
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFmt)) + 1*uintptr(_i)))) == i32(87) {
+ _14_wd = int32((((_x.X0) + int64(i32(43200000))) / int64(i32(86400000))) % int64(i32(7)))
+ Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7535), ((_13_nDay+i32(7))-_14_wd)/i32(7))
+ {
+ p := &_j
+ *p = (*p) + uint32(i32(2))
+ sink5 = *p
+ }
+ goto _52
}
- goto _52
-
-_51:
- Xsqlite3_snprintf(tls, i32(4), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6056), _13_nDay+i32(1))
+ Xsqlite3_snprintf(tls, i32(4), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7547), _13_nDay+i32(1))
{
p := &_j
*p = (*p) + uint32(i32(3))
@@ -9343,74 +9644,64 @@ _51:
}
_52:
goto _49
-
_41:
- Xsqlite3_snprintf(tls, i32(20), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6064), float64(_x.X0)/(8.64e+07))
+ Xsqlite3_snprintf(tls, i32(20), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7552), float64(_x.X0)/(8.64e+07))
{
p := &_j
*p = (*p) + uint32(_sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j)))))
sink5 = *p
}
goto _49
-
_42:
- Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6040), _x.X2)
+ Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7535), _x.X2)
{
p := &_j
*p = (*p) + uint32(i32(2))
sink5 = *p
}
goto _49
-
_43:
- Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6040), _x.X5)
+ Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7535), _x.X5)
{
p := &_j
*p = (*p) + uint32(i32(2))
sink5 = *p
}
goto _49
-
_44:
- Xsqlite3_snprintf(tls, i32(30), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(4744), ((_x.X0)/int64(i32(1000)))-i64(210866760000))
+ Xsqlite3_snprintf(tls, i32(30), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6348), ((_x.X0)/int64(i32(1000)))-i64(210866760000))
{
p := &_j
*p = (*p) + uint32(_sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j)))))
sink5 = *p
}
goto _49
-
_45:
- Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6040), int32(_x.X7))
+ Xsqlite3_snprintf(tls, i32(3), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7535), int32(_x.X7))
{
p := &_j
*p = (*p) + uint32(i32(2))
sink5 = *p
}
goto _49
-
_46:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc5(&_j, uint32(1))))) = int8(int32(int8((((_x.X0)+int64(i32(129600000)))/int64(i32(86400000)))%int64(i32(7)))) + i32(48))
goto _49
-
_47:
- Xsqlite3_snprintf(tls, i32(5), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(6072), _x.X1)
+ Xsqlite3_snprintf(tls, i32(5), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j))), str(7558), _x.X1)
{
p := &_j
*p = (*p) + uint32(_sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_j)))))
sink5 = *p
}
goto _49
-
_48:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc5(&_j, uint32(1))))) = int8(i32(37))
goto _49
-
_49:
_34:
_i += 1
goto _29
-
_32:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_j))) = int8(i32(0))
Xsqlite3_result_text(tls, _context, _z, i32(-1), func() func(*crt.TLS, unsafe.Pointer) {
@@ -9421,12 +9712,15 @@ _32:
f func(*crt.TLS, unsafe.Pointer) int32
}{_sqlite3MallocSize})))
}())
+ _ = _zBuf
+ _ = _13_y
}
-func Xsqlite3_result_error_nomem(tls *crt.TLS, _pCtx *Xsqlite3_context) { // sqlite3.c:76575:12
+// An SQLITE_NOMEM error.
+func Xsqlite3_result_error_nomem(tls *crt.TLS, _pCtx *Xsqlite3_context) {
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_error_nomemØ00__func__Ø000))), unsafe.Pointer(str(5084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_error_nomemØ00__func__Ø000))), unsafe.Pointer(str(6666)))
crt.X__builtin_abort(tls)
}
}()
@@ -9436,208 +9730,200 @@ func Xsqlite3_result_error_nomem(tls *crt.TLS, _pCtx *Xsqlite3_context) { // sql
_sqlite3OomFault(tls, (*Xsqlite3)((*XMem)(_pCtx.X0).X9))
}
-var _sqlite3_result_error_nomemØ00__func__Ø000 [27]int8 // -
+var _sqlite3_result_error_nomemØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_result_error_nomemØ00__func__Ø000[0], str(6080), 27)
+ crt.Xstrncpy(nil, &_sqlite3_result_error_nomemØ00__func__Ø000[0], str(7563), 27)
}
-func _ctimeFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _NotUsed2 **XMem) { // sqlite3.c:19969:1
+// current_time()
+//
+// This function returns the same value as time('now').
+func _ctimeFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _NotUsed2 **XMem) {
_ = _NotUsed2
_timeFunc(tls, _context, i32(0), nil)
}
-func _ctimestampFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _NotUsed2 **XMem) { // sqlite3.c:19997:1
+// current_timestamp()
+//
+// This function returns the same value as datetime('now').
+func _ctimestampFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _NotUsed2 **XMem) {
_ = _NotUsed2
_datetimeFunc(tls, _context, i32(0), nil)
}
-func _cdateFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _NotUsed2 **XMem) { // sqlite3.c:19983:1
+// current_date()
+//
+// This function returns the same value as date('now').
+func _cdateFunc(tls *crt.TLS, _context *Xsqlite3_context, _NotUsed int32, _NotUsed2 **XMem) {
_ = _NotUsed2
_dateFunc(tls, _context, i32(0), nil)
}
-var _sqlite3RegisterBuiltinFunctionsØ00aBuiltinFuncØ001 [60]XFuncDef // sqlite3.c:107298:18
+var _sqlite3RegisterBuiltinFunctionsØ00aBuiltinFuncØ001 [60]XFuncDef
func init() {
_sqlite3RegisterBuiltinFunctionsØ00aBuiltinFuncØ001 = [60]XFuncDef{XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_loadExt})), X5: nil, X6: str(6108), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_loadExt})), X5: nil, X6: str(7590), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_loadExt})), X5: nil, X6: str(6108), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_loadExt})), X5: nil, X6: str(7590), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_compileoptionusedFunc})), X5: nil, X6: str(6124), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_compileoptionusedFunc})), X5: nil, X6: str(7605), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_compileoptiongetFunc})), X5: nil, X6: str(6152), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(3073), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_compileoptiongetFunc})), X5: nil, X6: str(7631), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(3073), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_versionFunc})), X5: nil, X6: str(6180), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(3073), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_versionFunc})), X5: nil, X6: str(7656), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(3073), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_versionFunc})), X5: nil, X6: str(6192), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(3073), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_versionFunc})), X5: nil, X6: str(7665), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(3073), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_versionFunc})), X5: nil, X6: str(6204), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(18433), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_versionFunc})), X5: nil, X6: str(7676), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(18433), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_versionFunc})), X5: nil, X6: str(6212), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_versionFunc})), X5: nil, X6: str(7683), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_trimFunc})), X5: nil, X6: str(6224), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_trimFunc})), X5: nil, X6: str(7692), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_trimFunc})), X5: nil, X6: str(6224), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(2)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_trimFunc})), X5: nil, X6: str(7692), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(2)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_trimFunc})), X5: nil, X6: str(6232), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(2)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_trimFunc})), X5: nil, X6: str(7698), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(2)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_trimFunc})), X5: nil, X6: str(6232), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(3)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_trimFunc})), X5: nil, X6: str(7698), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(3)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_trimFunc})), X5: nil, X6: str(6240), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(3)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_trimFunc})), X5: nil, X6: str(7704), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: (unsafe.Pointer)(uintptr(3)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_trimFunc})), X5: nil, X6: str(6240), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(2081), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_trimFunc})), X5: nil, X6: str(7704), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(2081), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_minmaxFunc})), X5: nil, X6: str(6248), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(2081), X2: nil, X3: nil, X4: nil, X5: nil, X6: str(6248), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(4129), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_minmaxFunc})), X5: nil, X6: str(7709), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(2081), X2: nil, X3: nil, X4: nil, X5: nil, X6: str(7709), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(4129), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_minmaxStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_minMaxFinalize})), X6: str(6248), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(2081), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_minMaxFinalize})), X6: str(7709), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(2081), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_minmaxFunc})), X5: nil, X6: str(6252), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(2081), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: nil, X5: nil, X6: str(6252), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(4129), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_minmaxFunc})), X5: nil, X6: str(7713), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(2081), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: nil, X5: nil, X6: str(7713), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(4129), X2: (unsafe.Pointer)(uintptr(1)), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_minmaxStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_minMaxFinalize})), X6: str(6252), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2177), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_minMaxFinalize})), X6: str(7713), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2177), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_typeofFunc})), X5: nil, X6: str(6256), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2113), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_typeofFunc})), X5: nil, X6: str(7717), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2113), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_lengthFunc})), X5: nil, X6: str(6264), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_lengthFunc})), X5: nil, X6: str(7724), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_instrFunc})), X5: nil, X6: str(6272), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_instrFunc})), X5: nil, X6: str(7731), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_printfFunc})), X5: nil, X6: str(6280), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_printfFunc})), X5: nil, X6: str(7737), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_unicodeFunc})), X5: nil, X6: str(6288), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_unicodeFunc})), X5: nil, X6: str(7744), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_charFunc})), X5: nil, X6: str(6296), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_charFunc})), X5: nil, X6: str(7752), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_absFunc})), X5: nil, X6: str(6304), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_absFunc})), X5: nil, X6: str(7757), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_roundFunc})), X5: nil, X6: str(6308), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_roundFunc})), X5: nil, X6: str(7761), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_roundFunc})), X5: nil, X6: str(6308), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_roundFunc})), X5: nil, X6: str(7761), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_upperFunc})), X5: nil, X6: str(6316), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_upperFunc})), X5: nil, X6: str(7767), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_lowerFunc})), X5: nil, X6: str(6324), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_lowerFunc})), X5: nil, X6: str(7773), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_hexFunc})), X5: nil, X6: str(6332), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2561), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_hexFunc})), X5: nil, X6: str(7779), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2561), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_versionFunc})), X5: nil, X6: str(6336), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_versionFunc})), X5: nil, X6: str(7783), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_randomFunc})), X5: nil, X6: str(6344), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_randomFunc})), X5: nil, X6: str(7790), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_randomBlob})), X5: nil, X6: str(6352), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2081), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_randomBlob})), X5: nil, X6: str(7797), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2081), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_nullifFunc})), X5: nil, X6: str(6364), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_nullifFunc})), X5: nil, X6: str(7808), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_versionFunc})), X5: nil, X6: str(6372), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_versionFunc})), X5: nil, X6: str(7815), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(8193), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_sourceidFunc})), X5: nil, X6: str(6388), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_sourceidFunc})), X5: nil, X6: str(7830), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_errlogFunc})), X5: nil, X6: str(6408), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_errlogFunc})), X5: nil, X6: str(7847), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_quoteFunc})), X5: nil, X6: str(6420), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_quoteFunc})), X5: nil, X6: str(7858), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_last_insert_rowid})), X5: nil, X6: str(6428), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_last_insert_rowid})), X5: nil, X6: str(7864), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_changes})), X5: nil, X6: str(6448), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_changes})), X5: nil, X6: str(7882), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_total_changes})), X5: nil, X6: str(6456), X7: t10{}}, XFuncDef{X0: i8(3), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_total_changes})), X5: nil, X6: str(7890), X7: t12{}}, XFuncDef{X0: i8(3), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_replaceFunc})), X5: nil, X6: str(6472), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_replaceFunc})), X5: nil, X6: str(7904), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_zeroblobFunc})), X5: nil, X6: str(6480), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_zeroblobFunc})), X5: nil, X6: str(7912), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_substrFunc})), X5: nil, X6: str(6492), X7: t10{}}, XFuncDef{X0: i8(3), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_substrFunc})), X5: nil, X6: str(7921), X7: t12{}}, XFuncDef{X0: i8(3), X1: u16(2049), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_substrFunc})), X5: nil, X6: str(6492), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_substrFunc})), X5: nil, X6: str(7921), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_sumStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_sumFinalize})), X6: str(6500), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_sumFinalize})), X6: str(7928), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_sumStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_totalFinalize})), X6: str(6504), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_totalFinalize})), X6: str(7932), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_sumStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_avgFinalize})), X6: str(6512), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(257), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_avgFinalize})), X6: str(7938), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(257), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_countStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_countFinalize})), X6: str(6516), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_countFinalize})), X6: str(7942), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_countStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_countFinalize})), X6: str(6516), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_countFinalize})), X6: str(7942), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_groupConcatStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_groupConcatFinalize})), X6: str(6524), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_groupConcatFinalize})), X6: str(7948), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(1), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
}{_groupConcatStep})), X5: *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{_groupConcatFinalize})), X6: str(6524), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2061), X2: unsafe.Pointer(&_globInfo), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_groupConcatFinalize})), X6: str(7948), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2061), X2: unsafe.Pointer(&_globInfo), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_likeFunc})), X5: nil, X6: str(6540), X7: t10{}}, XFuncDef{X0: i8(2), X1: u16(2053), X2: unsafe.Pointer(&_likeInfoNorm), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_likeFunc})), X5: nil, X6: str(7961), X7: t12{}}, XFuncDef{X0: i8(2), X1: u16(2053), X2: unsafe.Pointer(&_likeInfoNorm), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_likeFunc})), X5: nil, X6: str(6548), X7: t10{}}, XFuncDef{X0: i8(3), X1: u16(2053), X2: unsafe.Pointer(&_likeInfoNorm), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_likeFunc})), X5: nil, X6: str(7966), X7: t12{}}, XFuncDef{X0: i8(3), X1: u16(2053), X2: unsafe.Pointer(&_likeInfoNorm), X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_likeFunc})), X5: nil, X6: str(6548), X7: t10{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: nil, X5: nil, X6: str(6556), X7: t10{}}, XFuncDef{X0: i8(0), X1: u16(2049), X2: nil, X3: nil, X4: nil, X5: nil, X6: str(6556), X7: t10{}}, XFuncDef{X0: i8(-1), X1: u16(2561), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
+ }{_likeFunc})), X5: nil, X6: str(7966), X7: t12{}}, XFuncDef{X0: i8(1), X1: u16(2049), X2: nil, X3: nil, X4: nil, X5: nil, X6: str(7971), X7: t12{}}, XFuncDef{X0: i8(0), X1: u16(2049), X2: nil, X3: nil, X4: nil, X5: nil, X6: str(7971), X7: t12{}}, XFuncDef{X0: i8(-1), X1: u16(2561), X2: nil, X3: nil, X4: *(*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{_versionFunc})), X5: nil, X6: str(6556), X7: t10{}}}
-}
-
-func _loadExt(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) { // sqlite3.c:106963:1
- var _zFile *int8 // sqlite3.c:106964:14
- _ = _zFile
- var _zProc *int8 // sqlite3.c:106965:14
- _ = _zProc
- var _db *Xsqlite3 // sqlite3.c:106966:11
- _ = _db
- var _zErrMsg *int8 // sqlite3.c:106967:8
- _ = _zErrMsg
+ }{_versionFunc})), X5: nil, X6: str(7971), X7: t12{}}}
+}
+
+// A function that loads a shared-library extension then returns NULL.
+func _loadExt(tls *crt.TLS, _context *Xsqlite3_context, _argc int32, _argv **XMem) {
+ var _zFile, _zProc, _zErrMsg *int8
+ var _db *Xsqlite3
_zFile = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))))))
_db = Xsqlite3_context_db_handle(tls, _context)
_zErrMsg = nil
- if ((_db.X6) & i32(8388608)) != i32(0) {
- goto _0
+ if ((_db.X6) & i32(8388608)) == i32(0) {
+ Xsqlite3_result_error(tls, _context, str(7980), i32(-1))
+ return
}
-
- Xsqlite3_result_error(tls, _context, str(6568), i32(-1))
- return
-
-_0:
- if _argc != i32(2) {
- goto _1
+ if _argc == i32(2) {
+ _zProc = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))))
+ goto _2
}
-
- _zProc = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))))
- goto _2
-
-_1:
_zProc = nil
_2:
- if _zFile == nil || Xsqlite3_load_extension(tls, _db, _zFile, _zProc, &_zErrMsg) == 0 {
- goto _4
+ if (_zFile != nil) && Xsqlite3_load_extension(tls, _db, _zFile, _zProc, &_zErrMsg) != 0 {
+ Xsqlite3_result_error(tls, _context, _zErrMsg, i32(-1))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_zErrMsg))
}
-
- Xsqlite3_result_error(tls, _context, _zErrMsg, i32(-1))
- Xsqlite3_free(tls, (unsafe.Pointer)(_zErrMsg))
-_4:
}
-func Xsqlite3_load_extension(tls *crt.TLS, _db *Xsqlite3, _zFile *int8, _zProc *int8, _pzErrMsg **int8) (r0 int32) { // sqlite3.c:112396:12
- var _rc int32 // sqlite3.c:112402:7
- _ = _rc
+func Xsqlite3_load_extension(tls *crt.TLS, _db *Xsqlite3, _zFile *int8, _zProc *int8, _pzErrMsg **int8) (r0 int32) {
+ var _rc int32
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
_rc = _sqlite3LoadExtension(tls, _db, _zFile, _zProc, _pzErrMsg)
_rc = _sqlite3ApiExit(tls, _db, _rc)
@@ -9645,57 +9931,37 @@ func Xsqlite3_load_extension(tls *crt.TLS, _db *Xsqlite3, _zFile *int8, _zProc *
return _rc
}
-func _sqlite3LoadExtension(tls *crt.TLS, _db *Xsqlite3, _zFile *int8, _zProc *int8, _pzErrMsg **int8) (r0 int32) { // sqlite3.c:112255:1
- var _pVfs *Xsqlite3_vfs // sqlite3.c:112261:15
- _ = _pVfs
- var _handle unsafe.Pointer // sqlite3.c:112262:8
- _ = _handle
- var _xInit func(*crt.TLS, *Xsqlite3, **int8, *Xsqlite3_api_routines) int32 // sqlite3.c:112263:25
- _ = _xInit
- var _zErrmsg *int8 // sqlite3.c:112264:8
- _ = _zErrmsg
- var _zEntry *int8 // sqlite3.c:112265:14
- _ = _zEntry
- var _zAltEntry *int8 // sqlite3.c:112266:8
- _ = _zAltEntry
- var _aHandle *unsafe.Pointer // sqlite3.c:112267:8
- _ = _aHandle
- var _nMsg uint64 // sqlite3.c:112268:7
- _ = _nMsg
- var _ii int32 // sqlite3.c:112269:7
- _ = _ii
- var _rc int32 // sqlite3.c:112270:7
- _ = _rc
- var _3_zAltFile *int8 // sqlite3.c:112305:10
- _ = _3_zAltFile
- var _7_iFile int32 // sqlite3.c:112336:9
- _ = _7_iFile
- var _7_iEntry int32 // sqlite3.c:112336:16
- _ = _7_iEntry
- var _7_c int32 // sqlite3.c:112336:24
- _ = _7_c
- var _7_ncFile int32 // sqlite3.c:112337:9
- _ = _7_ncFile
+// Attempt to load an SQLite extension library contained in the file
+// zFile. The entry point is zProc. zProc may be 0 in which case a
+// default entry point name (sqlite3_extension_init) is used. Use
+// of the default name is recommended.
+//
+// Return SQLITE_OK on success and SQLITE_ERROR if something goes wrong.
+//
+// If an error occurs and pzErrMsg is not 0, then fill *pzErrMsg with
+// error message text. The calling function should free this memory
+// by calling sqlite3DbFree(db, ).
+func _sqlite3LoadExtension(tls *crt.TLS, _db *Xsqlite3, _zFile *int8, _zProc *int8, _pzErrMsg **int8) (r0 int32) {
+ var _ii, _rc, _7_iFile, _7_iEntry, _7_c, _7_ncFile int32
+ var _nMsg uint64
+ var _zErrmsg, _zEntry, _zAltEntry, _3_zAltFile *int8
+ var _handle unsafe.Pointer
+ var _aHandle *unsafe.Pointer
+ var _pVfs *Xsqlite3_vfs
+ var _xInit func(*crt.TLS, *Xsqlite3, **int8, *Xsqlite3_api_routines) int32
_pVfs = (*Xsqlite3_vfs)(_db.X0)
_zErrmsg = nil
_zAltEntry = nil
_nMsg = uint64(i32(300) + _sqlite3Strlen30(tls, _zFile))
- if _pzErrMsg == nil {
- goto _0
+ if _pzErrMsg != nil {
+ *_pzErrMsg = nil
}
-
- *_pzErrMsg = nil
-_0:
if ((_db.X6) & i32(4194304)) != i32(0) {
goto _1
}
-
- if _pzErrMsg == nil {
- goto _2
+ if _pzErrMsg != nil {
+ *_pzErrMsg = Xsqlite3_mprintf(tls, str(7980))
}
-
- *_pzErrMsg = Xsqlite3_mprintf(tls, str(6568))
-_2:
return i32(1)
_1:
@@ -9703,7 +9969,7 @@ _1:
if _zProc != nil {
return _zProc
}
- return str(6584)
+ return str(7995)
}()
_handle = _sqlite3OsDlOpen(tls, _pVfs, _zFile)
_ii = i32(0)
@@ -9711,39 +9977,28 @@ _5:
if _ii >= i32(1) || _handle != nil {
goto _9
}
-
- _3_zAltFile = Xsqlite3_mprintf(tls, str(6608), unsafe.Pointer(_zFile), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LoadExtensionØ00azEndingsØ001)) + 4*uintptr(_ii)))))
- if _3_zAltFile != nil {
- goto _10
+ _3_zAltFile = Xsqlite3_mprintf(tls, str(8018), unsafe.Pointer(_zFile), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LoadExtensionØ00azEndingsØ001)) + 4*uintptr(_ii)))))
+ if _3_zAltFile == nil {
+ return _sqlite3NomemError(tls, i32(112306))
}
- return _sqlite3NomemError(tls, i32(112306))
-
-_10:
_handle = _sqlite3OsDlOpen(tls, _pVfs, _3_zAltFile)
Xsqlite3_free(tls, (unsafe.Pointer)(_3_zAltFile))
_ii += 1
goto _5
-
_9:
if _handle != nil {
goto _11
}
-
if _pzErrMsg == nil {
goto _12
}
-
*_pzErrMsg = store0(&_zErrmsg, (*int8)(Xsqlite3_malloc64(tls, _nMsg)))
- if _zErrmsg == nil {
- goto _13
+ if _zErrmsg != nil {
+ Xsqlite3_snprintf(tls, int32(_nMsg), _zErrmsg, str(8024), unsafe.Pointer(_zFile))
+ _sqlite3OsDlError(tls, _pVfs, int32(_nMsg-uint64(i32(1))), _zErrmsg)
}
-
- Xsqlite3_snprintf(tls, int32(_nMsg), _zErrmsg, str(6616), unsafe.Pointer(_zFile))
- _sqlite3OsDlError(tls, _pVfs, int32(_nMsg-uint64(i32(1))), _zErrmsg)
-_13:
_12:
- r0 = i32(1)
- return
+ return i32(1)
_11:
_xInit = *(*func(*crt.TLS, *Xsqlite3, **int8, *Xsqlite3_api_routines) int32)(unsafe.Pointer(&struct{ f func(*crt.TLS) }{_sqlite3OsDlSym(tls, _pVfs, _handle, _zEntry)}))
@@ -9754,56 +10009,41 @@ _11:
}{nil})) || _zProc != nil {
goto _15
}
-
_7_ncFile = _sqlite3Strlen30(tls, _zFile)
_zAltEntry = (*int8)(Xsqlite3_malloc64(tls, uint64(_7_ncFile+i32(30))))
- if _zAltEntry != nil {
- goto _16
+ if _zAltEntry == nil {
+ _sqlite3OsDlClose(tls, _pVfs, _handle)
+ return _sqlite3NomemError(tls, i32(112341))
}
-
- _sqlite3OsDlClose(tls, _pVfs, _handle)
- return _sqlite3NomemError(tls, i32(112341))
-
-_16:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zAltEntry), (unsafe.Pointer)(str(6652)), uint32(i32(8)))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zAltEntry), (unsafe.Pointer)(str(8059)), uint32(i32(8)))
_7_iFile = _7_ncFile - i32(1)
_17:
if _7_iFile < i32(0) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFile)) + 1*uintptr(_7_iFile)))) == i32(47) {
goto _21
}
-
_7_iFile -= 1
goto _17
-
_21:
_7_iFile += 1
- if Xsqlite3_strnicmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zFile))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_7_iFile))))))), str(6664), i32(3)) != i32(0) {
- goto _22
- }
-
- {
- p := &_7_iFile
- *p = (*p) + i32(3)
- sink1 = *p
+ if Xsqlite3_strnicmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zFile))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_7_iFile))))))), str(8068), i32(3)) == i32(0) {
+ {
+ p := &_7_iFile
+ *p = (*p) + i32(3)
+ sink1 = *p
+ }
}
-_22:
_7_iEntry = i32(8)
_23:
if store1(&_7_c, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFile)) + 1*uintptr(_7_iFile))))) == i32(0) || _7_c == i32(46) {
goto _27
}
-
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_7_c))))) & i32(2)) == 0 {
- goto _28
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_7_c))))) & i32(2)) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAltEntry)) + 1*uintptr(postInc1(&_7_iEntry, int32(1))))) = int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint32(_7_c)))))
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAltEntry)) + 1*uintptr(postInc1(&_7_iEntry, int32(1))))) = int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint32(_7_c)))))
-_28:
_7_iFile += 1
goto _23
-
_27:
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zAltEntry))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_7_iEntry)))))))), (unsafe.Pointer)(str(6668)), uint32(i32(6)))
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zAltEntry))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_7_iEntry)))))))), (unsafe.Pointer)(str(8072)), uint32(i32(6)))
_zEntry = _zAltEntry
_xInit = *(*func(*crt.TLS, *Xsqlite3, **int8, *Xsqlite3_api_routines) int32)(unsafe.Pointer(&struct{ f func(*crt.TLS) }{_sqlite3OsDlSym(tls, _pVfs, _handle, _zEntry)}))
_15:
@@ -9814,24 +10054,19 @@ _15:
}{nil})) {
goto _29
}
-
if _pzErrMsg == nil {
goto _30
}
-
{
p := &_nMsg
*p = (*p) + uint64(_sqlite3Strlen30(tls, _zEntry))
- sink15 = *p
+ sink17 = *p
}
*_pzErrMsg = store0(&_zErrmsg, (*int8)(Xsqlite3_malloc64(tls, _nMsg)))
- if _zErrmsg == nil {
- goto _31
+ if _zErrmsg != nil {
+ Xsqlite3_snprintf(tls, int32(_nMsg), _zErrmsg, str(8078), unsafe.Pointer(_zEntry), unsafe.Pointer(_zFile))
+ _sqlite3OsDlError(tls, _pVfs, int32(_nMsg-uint64(i32(1))), _zErrmsg)
}
-
- Xsqlite3_snprintf(tls, int32(_nMsg), _zErrmsg, str(6676), unsafe.Pointer(_zEntry), unsafe.Pointer(_zFile))
- _sqlite3OsDlError(tls, _pVfs, int32(_nMsg-uint64(i32(1))), _zErrmsg)
-_31:
_30:
_sqlite3OsDlClose(tls, _pVfs, _handle)
Xsqlite3_free(tls, (unsafe.Pointer)(_zAltEntry))
@@ -9843,128 +10078,105 @@ _29:
if _rc == 0 {
goto _32
}
-
- if _rc != i32(256) {
- goto _33
+ if _rc == i32(256) {
+ return i32(0)
}
- return i32(0)
-
-_33:
- if _pzErrMsg == nil {
- goto _34
+ if _pzErrMsg != nil {
+ *_pzErrMsg = Xsqlite3_mprintf(tls, str(8121), unsafe.Pointer(_zErrmsg))
}
-
- *_pzErrMsg = Xsqlite3_mprintf(tls, str(6720), unsafe.Pointer(_zErrmsg))
-_34:
Xsqlite3_free(tls, (unsafe.Pointer)(_zErrmsg))
_sqlite3OsDlClose(tls, _pVfs, _handle)
return i32(1)
_32:
_aHandle = (*unsafe.Pointer)(_sqlite3DbMallocZero(tls, _db, uint64(u32(4)*uint32((_db.X39)+i32(1)))))
- if _aHandle != nil {
- goto _35
+ if _aHandle == nil {
+ return _sqlite3NomemError(tls, i32(112385))
}
- return _sqlite3NomemError(tls, i32(112385))
-
-_35:
- if (_db.X39) <= i32(0) {
- goto _36
+ if (_db.X39) > i32(0) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_aHandle), (unsafe.Pointer)(_db.X40), u32(4)*uint32(_db.X39))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_aHandle), (unsafe.Pointer)(_db.X40), u32(4)*uint32(_db.X39))
-_36:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_db.X40))
*(**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(176 /* X40 */))) = _aHandle
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db.X40)) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(172 /* X39 */))), int32(1))))) = _handle
return i32(0)
}
-func Xsqlite3_mprintf(tls *crt.TLS, _zFormat *int8, args ...interface{}) (r0 *int8) { // sqlite3.c:26057:12
- var _ap []interface{} // sqlite3.c:26058:11
- _ = _ap
- var _z *int8 // sqlite3.c:26059:8
- _ = _z
- if Xsqlite3_initialize(tls) == 0 {
- goto _0
+// Print into memory obtained from sqlite3_malloc()(). Omit the internal
+// %-conversion extensions.
+func Xsqlite3_mprintf(tls *crt.TLS, _zFormat *int8, args ...interface{}) (r0 *int8) {
+ var _z *int8
+ var _ap []interface{}
+ if Xsqlite3_initialize(tls) != 0 {
+ return nil
}
- return nil
-
-_0:
_ap = args
_z = Xsqlite3_vmprintf(tls, _zFormat, _ap)
_ap = nil
return _z
}
-func Xsqlite3_vmprintf(tls *crt.TLS, _zFormat *int8, _ap []interface{}) (r0 *int8) { // sqlite3.c:26033:12
- var _z *int8 // sqlite3.c:26034:8
- _ = _z
- var _zBase [70]int8 // sqlite3.c:26035:8
- _ = _zBase
- var _acc XStrAccum // sqlite3.c:26036:12
- _ = _acc
- if _zFormat != nil {
- goto _0
+// Print into memory obtained from sqlite3_malloc(). Omit the internal
+// %-conversion extensions.
+func Xsqlite3_vmprintf(tls *crt.TLS, _zFormat *int8, _ap []interface{}) (r0 *int8) {
+ var _z *int8
+ var _acc XStrAccum
+ var _zBase [70]int8
+ if _zFormat == nil {
+ _sqlite3MisuseError(tls, i32(26040))
+ return nil
}
-
- _sqlite3MisuseError(tls, i32(26040))
- return nil
-
-_0:
- if Xsqlite3_initialize(tls) == 0 {
- goto _1
+ if Xsqlite3_initialize(tls) != 0 {
+ return nil
}
- return nil
-
-_1:
_sqlite3StrAccumInit(tls, &_acc, nil, (*int8)(unsafe.Pointer(&_zBase)), int32(u32(70)), i32(1000000000))
_sqlite3VXPrintf(tls, &_acc, _zFormat, _ap)
_z = _sqlite3StrAccumFinish(tls, &_acc)
return _z
+
+ _ = _zBase
+ _ = _acc
+ panic(0)
}
-func _sqlite3OsDlOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8) (r0 unsafe.Pointer) { // sqlite3.c:20320:1
+func _sqlite3OsDlOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8) (r0 unsafe.Pointer) {
return (*(*func(*crt.TLS, *Xsqlite3_vfs, *int8) unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int8) unsafe.Pointer
}{(_pVfs.X10)})))(tls, _pVfs, _zPath)
}
-var _sqlite3LoadExtensionØ00azEndingsØ001 [1]*int8 // sqlite3.c:112273:21
+var _sqlite3LoadExtensionØ00azEndingsØ001 [1]*int8
func init() {
- _sqlite3LoadExtensionØ00azEndingsØ001 = [1]*int8{str(6752)}
+ _sqlite3LoadExtensionØ00azEndingsØ001 = [1]*int8{str(8153)}
}
-func Xsqlite3_malloc64(tls *crt.TLS, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24514:12
- if Xsqlite3_initialize(tls) == 0 {
- goto _0
+func Xsqlite3_malloc64(tls *crt.TLS, _n uint64) (r0 unsafe.Pointer) {
+ if Xsqlite3_initialize(tls) != 0 {
+ return nil
}
- return nil
-
-_0:
return _sqlite3Malloc(tls, _n)
}
-func _sqlite3OsDlError(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _nByte int32, _zBufOut *int8) { // sqlite3.c:20323:1
+func _sqlite3OsDlError(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _nByte int32, _zBufOut *int8) {
(*(*func(*crt.TLS, *Xsqlite3_vfs, int32, *int8))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *int8)
}{(_pVfs.X11)})))(tls, _pVfs, _nByte, _zBufOut)
}
-func _sqlite3OsDlSym(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pHdle unsafe.Pointer, _zSym *int8) (r0 func(*crt.TLS)) { // sqlite3.c:20326:1
+func _sqlite3OsDlSym(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pHdle unsafe.Pointer, _zSym *int8) (r0 func(*crt.TLS)) {
return (*(*func(*crt.TLS, *Xsqlite3_vfs, unsafe.Pointer, *int8) func(*crt.TLS))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, *int8) func(*crt.TLS)
}{(_pVfs.X12)})))(tls, _pVfs, _pHdle, _zSym)
}
-func _sqlite3OsDlClose(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pHandle unsafe.Pointer) { // sqlite3.c:20329:1
+func _sqlite3OsDlClose(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pHandle unsafe.Pointer) {
(*(*func(*crt.TLS, *Xsqlite3_vfs, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer)
}{(_pVfs.X13)})))(tls, _pVfs, _pHandle)
}
-var _sqlite3Apis Xsqlite3_api_routines // sqlite3.c:111945:35
+var _sqlite3Apis Xsqlite3_api_routines
func init() {
_sqlite3Apis = Xsqlite3_api_routines{X0: *(*func(*crt.TLS, unsafe.Pointer, int32) unsafe.Pointer)(unsafe.Pointer(&struct {
@@ -10192,183 +10404,170 @@ func init() {
}{Xsqlite3_set_last_insert_rowid}))}
}
-func Xsqlite3_aggregate_context(tls *crt.TLS, _p *Xsqlite3_context, _nByte int32) (r0 unsafe.Pointer) { // sqlite3.c:76889:12
+// Allocate or return the aggregate context for a user function. A new
+// context is allocated on the first call. Subsequent calls return the
+// same context that was returned on prior calls.
+func Xsqlite3_aggregate_context(tls *crt.TLS, _p *Xsqlite3_context, _nByte int32) (r0 unsafe.Pointer) {
func() {
if _p == nil || (*XFuncDef)(_p.X1) == nil || (*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
}{((*XFuncDef)(_p.X1).X5)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76890), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_aggregate_contextØ00__func__Ø000))), unsafe.Pointer(str(6756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76890), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_aggregate_contextØ00__func__Ø000))), unsafe.Pointer(str(8156)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_p.X0).X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_aggregate_contextØ00__func__Ø000))), unsafe.Pointer(str(6796)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_aggregate_contextØ00__func__Ø000))), unsafe.Pointer(str(8193)))
crt.X__builtin_abort(tls)
}
}()
- if (int32((*XMem)(_p.X2).X1) & i32(8192)) != i32(0) {
- goto _6
+ if (int32((*XMem)(_p.X2).X1) & i32(8192)) == i32(0) {
+ return _createAggContext(tls, _p, _nByte)
}
- return _createAggContext(tls, _p, _nByte)
-
-_6:
return (unsafe.Pointer)((*XMem)(_p.X2).X5)
}
-var _sqlite3_aggregate_contextØ00__func__Ø000 [26]int8 // -
+var _sqlite3_aggregate_contextØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_aggregate_contextØ00__func__Ø000[0], str(6836), 26)
+ crt.Xstrncpy(nil, &_sqlite3_aggregate_contextØ00__func__Ø000[0], str(8232), 26)
}
-func _createAggContext(tls *crt.TLS, _p *Xsqlite3_context, _nByte int32) (r0 unsafe.Pointer) { // sqlite3.c:76867:1
- var _pMem *XMem // sqlite3.c:76868:7
- _ = _pMem
+// Create a new aggregate context for p and return a pointer to
+// its pMem->z element.
+func _createAggContext(tls *crt.TLS, _p *Xsqlite3_context, _nByte int32) (r0 unsafe.Pointer) {
+ var _pMem *XMem
_pMem = (*XMem)(_p.X2)
func() {
if (int32(_pMem.X1) & i32(8192)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76869), unsafe.Pointer((*int8)(unsafe.Pointer(&_createAggContextØ00__func__Ø000))), unsafe.Pointer(str(6864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76869), unsafe.Pointer((*int8)(unsafe.Pointer(&_createAggContextØ00__func__Ø000))), unsafe.Pointer(str(8258)))
crt.X__builtin_abort(tls)
}
}()
- if _nByte > i32(0) {
- goto _2
+ if _nByte <= i32(0) {
+ _sqlite3VdbeMemSetNull(tls, _pMem)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = nil
+ goto _3
}
-
- _sqlite3VdbeMemSetNull(tls, _pMem)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = nil
- goto _3
-
-_2:
_sqlite3VdbeMemClearAndResize(tls, _pMem, _nByte)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(8192))
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))) = (*XFuncDef)(_p.X1)
- if (_pMem.X5) == nil {
- goto _4
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))) = (*XFuncDef)(_p.X1)
+ if (_pMem.X5) != nil {
+ crt.Xmemset(tls, (unsafe.Pointer)(_pMem.X5), i32(0), uint32(_nByte))
}
-
- crt.Xmemset(tls, (unsafe.Pointer)(_pMem.X5), i32(0), uint32(_nByte))
-_4:
_3:
- r0 = (unsafe.Pointer)(_pMem.X5)
- return
+ return (unsafe.Pointer)(_pMem.X5)
}
-var _createAggContextØ00__func__Ø000 [17]int8 // -
+var _createAggContextØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_createAggContextØ00__func__Ø000[0], str(6892), 17)
+ crt.Xstrncpy(nil, &_createAggContextØ00__func__Ø000[0], str(8285), 17)
}
-func Xsqlite3_aggregate_count(tls *crt.TLS, _p *Xsqlite3_context) (r0 int32) { // sqlite3.c:76994:12
+// Return the number of times the Step function of an aggregate has been
+// called.
+//
+// This function is deprecated. Do not use it for new code. It is
+// provide only to avoid breaking legacy code. New aggregate function
+// implementations should keep their own counts within their aggregate
+// context.
+func Xsqlite3_aggregate_count(tls *crt.TLS, _p *Xsqlite3_context) (r0 int32) {
func() {
if _p == nil || (*XMem)(_p.X2) == nil || (*XFuncDef)(_p.X1) == nil || (*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
}{((*XFuncDef)(_p.X1).X5)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76995), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_aggregate_countØ00__func__Ø000))), unsafe.Pointer(str(6912)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76995), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_aggregate_countØ00__func__Ø000))), unsafe.Pointer(str(8302)))
crt.X__builtin_abort(tls)
}
}()
return (*XMem)(_p.X2).X4
}
-var _sqlite3_aggregate_countØ00__func__Ø000 [24]int8 // -
+var _sqlite3_aggregate_countØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_aggregate_countØ00__func__Ø000[0], str(6960), 24)
+ crt.Xstrncpy(nil, &_sqlite3_aggregate_countØ00__func__Ø000[0], str(8350), 24)
}
-func Xsqlite3_bind_blob(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData unsafe.Pointer, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:77416:12
- if _nData >= i32(0) {
- goto _0
+// Bind a blob value to an SQL statement variable.
+func Xsqlite3_bind_blob(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData unsafe.Pointer, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
+ if _nData < i32(0) {
+ return _sqlite3MisuseError(tls, i32(77424))
}
- return _sqlite3MisuseError(tls, i32(77424))
-
-_0:
return _bindText(tls, _pStmt, _i, _zData, _nData, _xDel, uint8(i32(0)))
}
-func _bindText(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData unsafe.Pointer, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer), _encoding uint8) (r0 int32) { // sqlite3.c:77382:1
- var _p *TVdbe // sqlite3.c:77390:8
- _ = _p
- var _pVar *XMem // sqlite3.c:77391:7
- _ = _pVar
- var _rc int32 // sqlite3.c:77392:7
- _ = _rc
+// Bind a text or BLOB value.
+func _bindText(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData unsafe.Pointer, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer), _encoding uint8) (r0 int32) {
+ var _rc int32
+ var _p *TVdbe
+ var _pVar *XMem
_p = (*TVdbe)(_pStmt)
_rc = _vdbeUnbind(tls, _p, _i)
if _rc != i32(0) {
goto _0
}
-
if _zData == nil {
goto _1
}
-
_pVar = (*XMem)(unsafe.Pointer(uintptr(_p.X24) + 48*uintptr(_i-i32(1))))
_rc = _sqlite3VdbeMemSetStr(tls, _pVar, (*int8)(_zData), _nData, _encoding, _xDel)
- if _rc != i32(0) || int32(_encoding) == i32(0) {
- goto _3
+ if (_rc == i32(0)) && (int32(_encoding) != i32(0)) {
+ _rc = _sqlite3VdbeChangeEncoding(tls, _pVar, int32((*Xsqlite3)(_p.X0).X14))
}
-
- _rc = _sqlite3VdbeChangeEncoding(tls, _pVar, int32((*Xsqlite3)(_p.X0).X14))
-_3:
_sqlite3Error(tls, (*Xsqlite3)(_p.X0), _rc)
_rc = _sqlite3ApiExit(tls, (*Xsqlite3)(_p.X0), _rc)
_1:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
goto _4
-
_0:
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ if (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{_xDel})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{_xDel})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{nil})) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{nil}))) && (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{_xDel})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{_xDel})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))})) {
- goto _6
+ }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))}))) {
+ _xDel(tls, _zData)
}
-
- _xDel(tls, _zData)
-_6:
_4:
- r0 = _rc
- return
+ return _rc
}
-func _vdbeUnbind(tls *crt.TLS, _p *TVdbe, _i int32) (r0 int32) { // sqlite3.c:77339:1
- var _pVar *XMem // sqlite3.c:77340:7
- _ = _pVar
- if _vdbeSafetyNotNull(tls, _p) == 0 {
- goto _0
+// ****************************** sqlite3_bind_ ***************************
+//
+// Routines used to attach values to wildcards in a compiled SQL statement.
+
+// Unbind the value bound to variable i in virtual machine p. This is the
+// the same as binding a NULL value to the column. If the "i" parameter is
+// out of range, then SQLITE_RANGE is returned. Othewise SQLITE_OK.
+//
+// A successful evaluation of this routine acquires the mutex on p.
+// the mutex is released if any kind of error occurs.
+//
+// The error code stored in database p->db is overwritten with the return
+// value in any case.
+func _vdbeUnbind(tls *crt.TLS, _p *TVdbe, _i int32) (r0 int32) {
+ var _pVar *XMem
+ if _vdbeSafetyNotNull(tls, _p) != 0 {
+ return _sqlite3MisuseError(tls, i32(77342))
}
- return _sqlite3MisuseError(tls, i32(77342))
-
-_0:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
- if (_p.X5) == uint32(i32(770837923)) && (_p.X9) < i32(0) {
- goto _2
+ if ((_p.X5) != uint32(i32(770837923))) || ((_p.X9) >= i32(0)) {
+ _sqlite3Error(tls, (*Xsqlite3)(_p.X0), i32(21))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
+ Xsqlite3_log(tls, i32(21), str(8374), unsafe.Pointer(_p.X36))
+ return _sqlite3MisuseError(tls, i32(77350))
}
-
- _sqlite3Error(tls, (*Xsqlite3)(_p.X0), i32(21))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
- Xsqlite3_log(tls, i32(21), str(6984), unsafe.Pointer(_p.X36))
- return _sqlite3MisuseError(tls, i32(77350))
-
-_2:
- if _i >= i32(1) && _i <= int32(_p.X4) {
- goto _4
+ if (_i < i32(1)) || (_i > int32(_p.X4)) {
+ _sqlite3Error(tls, (*Xsqlite3)(_p.X0), i32(25))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
+ return i32(25)
}
-
- _sqlite3Error(tls, (*Xsqlite3)(_p.X0), i32(25))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
- return i32(25)
-
-_4:
_i -= 1
_pVar = (*XMem)(unsafe.Pointer(uintptr(_p.X24) + 48*uintptr(_i)))
_sqlite3VdbeMemRelease(tls, _pVar)
@@ -10376,105 +10575,93 @@ _4:
_sqlite3Error(tls, (*Xsqlite3)(_p.X0), i32(0))
func() {
if ((uint32((_p.X32)>>uint(i32(9)))<>uint(i32(31))) == 0 && (_p.X41) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77372), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeUnbindØ00__func__Ø000))), unsafe.Pointer(str(7024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77372), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeUnbindØ00__func__Ø000))), unsafe.Pointer(str(8414)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X41) == uint32(i32(0)) || ((_p.X41)&func() uint32 {
+ if ((_p.X41) != uint32(i32(0))) && (((_p.X41) & func() uint32 {
if _i >= i32(31) {
return u32(2147483648)
}
return (u32(1) << uint(_i))
- }()) == uint32(i32(0)) {
- goto _11
+ }()) != uint32(i32(0))) {
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
}
-
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
-_11:
return i32(0)
}
-func _vdbeSafetyNotNull(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:76143:1
- if _p != nil {
- goto _0
+func _vdbeSafetyNotNull(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ if _p == nil {
+ Xsqlite3_log(tls, i32(21), str(8446))
+ return i32(1)
}
-
- Xsqlite3_log(tls, i32(21), str(7056))
- return i32(1)
-
-_0:
return _vdbeSafety(tls, _p)
}
-func _vdbeSafety(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:76135:1
- if (*Xsqlite3)(_p.X0) != nil {
- goto _0
+// Check on a Vdbe to make sure it has not been finalized. Log
+// an error and return true if it has been finalized (or is otherwise
+// invalid). Return false if it is ok.
+func _vdbeSafety(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ if (*Xsqlite3)(_p.X0) == nil {
+ Xsqlite3_log(tls, i32(21), str(8486))
+ return i32(1)
}
-
- Xsqlite3_log(tls, i32(21), str(7096))
- return i32(1)
-
-_0:
return i32(0)
}
-func _sqlite3Error(tls *crt.TLS, _db *Xsqlite3, _err_code int32) { // sqlite3.c:27795:1
+// Set the current error code to err_code and clear any prior error message.
+// Also set iSysErrno (by calling sqlite3System) if the err_code indicates
+// that would be appropriate.
+func _sqlite3Error(tls *crt.TLS, _db *Xsqlite3, _err_code int32) {
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ErrorØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ErrorØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(48 /* X10 */))) = _err_code
- if _err_code == 0 && (*XMem)(_db.X56) == nil {
- goto _3
+ if _err_code != 0 || ((*XMem)(_db.X56) != nil) {
+ _sqlite3ErrorFinish(tls, _db, _err_code)
}
-
- _sqlite3ErrorFinish(tls, _db, _err_code)
-_3:
}
-var _sqlite3ErrorØ00__func__Ø000 [13]int8 // -
+var _sqlite3ErrorØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ErrorØ00__func__Ø000[0], str(7144), 13)
+ crt.Xstrncpy(nil, &_sqlite3ErrorØ00__func__Ø000[0], str(8531), 13)
}
-func _sqlite3ErrorFinish(tls *crt.TLS, _db *Xsqlite3, _err_code int32) { // sqlite3.c:27785:1
- if (*XMem)(_db.X56) == nil {
- goto _0
+// Helper function for sqlite3Error() - called rarely. Broken out into
+// a separate routine to avoid unnecessary register saves on entry to
+// sqlite3Error().
+func _sqlite3ErrorFinish(tls *crt.TLS, _db *Xsqlite3, _err_code int32) {
+ if (*XMem)(_db.X56) != nil {
+ _sqlite3ValueSetNull(tls, (*XMem)(_db.X56))
}
-
- _sqlite3ValueSetNull(tls, (*XMem)(_db.X56))
-_0:
_sqlite3SystemError(tls, _db, _err_code)
}
-func _sqlite3ValueSetNull(tls *crt.TLS, _p *XMem) { // sqlite3.c:70367:1
+func _sqlite3ValueSetNull(tls *crt.TLS, _p *XMem) {
_sqlite3VdbeMemSetNull(tls, _p)
}
-func _sqlite3SystemError(tls *crt.TLS, _db *Xsqlite3, _rc int32) { // sqlite3.c:27805:1
- if _rc != i32(3082) {
- goto _0
+// Load the sqlite3.iSysErrno field if that is an appropriate thing
+// to do based on the SQLite error code in rc.
+func _sqlite3SystemError(tls *crt.TLS, _db *Xsqlite3, _rc int32) {
+ if _rc == i32(3082) {
+ return
}
- return
-
-_0:
{
p := &_rc
*p = (*p) & i32(255)
sink1 = *p
}
- if _rc != i32(14) && _rc != i32(10) {
- goto _2
+ if (_rc == i32(14)) || (_rc == i32(10)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(56 /* X12 */))) = _sqlite3OsGetLastError(tls, (*Xsqlite3_vfs)(_db.X0))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(56 /* X12 */))) = _sqlite3OsGetLastError(tls, (*Xsqlite3_vfs)(_db.X0))
-_2:
}
-func _sqlite3OsGetLastError(tls *crt.TLS, _pVfs *Xsqlite3_vfs) (r0 int32) { // sqlite3.c:20339:1
+func _sqlite3OsGetLastError(tls *crt.TLS, _pVfs *Xsqlite3_vfs) (r0 int32) {
return func() int32 {
if (*(*func(*crt.TLS, *Xsqlite3_vfs, int32, *int8) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *int8) int32
@@ -10487,146 +10674,143 @@ func _sqlite3OsGetLastError(tls *crt.TLS, _pVfs *Xsqlite3_vfs) (r0 int32) { // s
}()
}
-var _vdbeUnbindØ00__func__Ø000 [11]int8 // -
+var _vdbeUnbindØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeUnbindØ00__func__Ø000[0], str(7160), 11)
+ crt.Xstrncpy(nil, &_vdbeUnbindØ00__func__Ø000[0], str(8544), 11)
}
-func _sqlite3ApiExit(tls *crt.TLS, _db *Xsqlite3, _rc int32) (r0 int32) { // sqlite3.c:25045:1
+// This function must be called before exiting any API function (i.e.
+// returning control to the user) that has called sqlite3_malloc or
+// sqlite3_realloc.
+//
+// The returned value is normally a copy of the second argument to this
+// function. However, if a malloc() failure has occurred since the previous
+// invocation SQLITE_NOMEM is returned instead.
+//
+// If an OOM as occurred, then the connection error-code (the value
+// returned by sqlite3_errcode()) is set to SQLITE_NOMEM.
+func _sqlite3ApiExit(tls *crt.TLS, _db *Xsqlite3, _rc int32) (r0 int32) {
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25050), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ApiExitØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25050), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ApiExitØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ApiExitØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ApiExitØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
- if (_db.X17) == 0 && _rc != i32(3082) {
- goto _5
+ if ((_db.X17) != 0) || (_rc == i32(3082)) {
+ return _apiOomError(tls, _db)
}
- return _apiOomError(tls, _db)
-
-_5:
return _rc & (_db.X11)
}
-var _sqlite3ApiExitØ00__func__Ø000 [15]int8 // -
+var _sqlite3ApiExitØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ApiExitØ00__func__Ø000[0], str(7172), 15)
+ crt.Xstrncpy(nil, &_sqlite3ApiExitØ00__func__Ø000[0], str(8555), 15)
}
-func _apiOomError(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:25027:1
+// Take actions at the end of an API call to indicate an OOM error
+func _apiOomError(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
_sqlite3OomClear(tls, _db)
_sqlite3Error(tls, _db, i32(7))
return _sqlite3NomemError(tls, i32(25030))
}
-func _sqlite3OomClear(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:25015:1
- if (_db.X17) == 0 || (_db.X37) != i32(0) {
- goto _1
+// This routine reactivates the memory allocator and clears the
+// db->mallocFailed flag as necessary.
+//
+// The memory allocator is not restarted if there are running
+// VDBEs.
+func _sqlite3OomClear(tls *crt.TLS, _db *Xsqlite3) {
+ if ((_db.X17) != 0) && ((_db.X37) == i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(65 /* X17 */))) = uint8(i32(0))
+ *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(0)
+ func() {
+ if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X0) <= uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(25019), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OomClearØ00__func__Ø000))), unsafe.Pointer(str(8570)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) -= 1
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(65 /* X17 */))) = uint8(i32(0))
- *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(0)
- func() {
- if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X0) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(25019), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OomClearØ00__func__Ø000))), unsafe.Pointer(str(7188)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) -= 1
-_1:
}
-var _sqlite3OomClearØ00__func__Ø000 [16]int8 // -
+var _sqlite3OomClearØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3OomClearØ00__func__Ø000[0], str(7216), 16)
+ crt.Xstrncpy(nil, &_sqlite3OomClearØ00__func__Ø000[0], str(8595), 16)
}
-func Xsqlite3_bind_double(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _rValue float64) (r0 int32) { // sqlite3.c:77442:12
- var _rc int32 // sqlite3.c:77443:7
- _ = _rc
- var _p *TVdbe // sqlite3.c:77444:8
- _ = _p
+func Xsqlite3_bind_double(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _rValue float64) (r0 int32) {
+ var _rc int32
+ var _p *TVdbe
_p = (*TVdbe)(_pStmt)
_rc = _vdbeUnbind(tls, _p, _i)
- if _rc != i32(0) {
- goto _0
+ if _rc == i32(0) {
+ _sqlite3VdbeMemSetDouble(tls, (*XMem)(unsafe.Pointer(uintptr(_p.X24)+48*uintptr(_i-i32(1)))), _rValue)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
}
-
- _sqlite3VdbeMemSetDouble(tls, (*XMem)(unsafe.Pointer(uintptr(_p.X24)+48*uintptr(_i-i32(1)))), _rValue)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_0:
return _rc
}
-func Xsqlite3_bind_int(tls *crt.TLS, _p unsafe.Pointer, _i int32, _iValue int32) (r0 int32) { // sqlite3.c:77452:12
+func Xsqlite3_bind_int(tls *crt.TLS, _p unsafe.Pointer, _i int32, _iValue int32) (r0 int32) {
return Xsqlite3_bind_int64(tls, _p, _i, int64(_iValue))
}
-func Xsqlite3_bind_int64(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _iValue int64) (r0 int32) { // sqlite3.c:77455:12
- var _rc int32 // sqlite3.c:77456:7
- _ = _rc
- var _p *TVdbe // sqlite3.c:77457:8
- _ = _p
+func Xsqlite3_bind_int64(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _iValue int64) (r0 int32) {
+ var _rc int32
+ var _p *TVdbe
_p = (*TVdbe)(_pStmt)
_rc = _vdbeUnbind(tls, _p, _i)
- if _rc != i32(0) {
- goto _0
+ if _rc == i32(0) {
+ _sqlite3VdbeMemSetInt64(tls, (*XMem)(unsafe.Pointer(uintptr(_p.X24)+48*uintptr(_i-i32(1)))), _iValue)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
}
-
- _sqlite3VdbeMemSetInt64(tls, (*XMem)(unsafe.Pointer(uintptr(_p.X24)+48*uintptr(_i-i32(1)))), _iValue)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_0:
return _rc
}
-func _sqlite3VdbeMemSetInt64(tls *crt.TLS, _pMem *XMem, _val int64) { // sqlite3.c:70400:1
- if (int32(_pMem.X1) & i32(9312)) == i32(0) {
- goto _0
+// Delete any previous value and set the value stored in *pMem to val,
+// manifest type INTEGER.
+func _sqlite3VdbeMemSetInt64(tls *crt.TLS, _pMem *XMem, _val int64) {
+ if (int32(_pMem.X1) & i32(9312)) != i32(0) {
+ _vdbeReleaseAndSetInt64(tls, _pMem, _val)
+ goto _1
}
-
- _vdbeReleaseAndSetInt64(tls, _pMem, _val)
- goto _1
-
-_0:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _val
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _val
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
_1:
}
-func _vdbeReleaseAndSetInt64(tls *crt.TLS, _pMem *XMem, _val int64) { // sqlite3.c:70390:1
+// The pMem is known to contain content that needs to be destroyed prior
+// to a value change. So invoke the destructor, then set the value to
+// a 64-bit integer.
+func _vdbeReleaseAndSetInt64(tls *crt.TLS, _pMem *XMem, _val int64) {
_sqlite3VdbeMemSetNull(tls, _pMem)
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _val
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _val
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
}
-func Xsqlite3_bind_null(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) { // sqlite3.c:77465:12
- var _rc int32 // sqlite3.c:77466:7
- _ = _rc
- var _p *TVdbe // sqlite3.c:77467:8
- _ = _p
+func Xsqlite3_bind_null(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) {
+ var _rc int32
+ var _p *TVdbe
_p = (*TVdbe)(_pStmt)
_rc = _vdbeUnbind(tls, _p, _i)
- if _rc != i32(0) {
- goto _0
+ if _rc == i32(0) {
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
}
-
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_0:
return _rc
}
-func Xsqlite3_bind_parameter_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:77570:12
- var _p *TVdbe // sqlite3.c:77571:8
- _ = _p
+// Return the number of wildcards that can be potentially bound to.
+// This routine is added to support DBD::SQLite.
+func Xsqlite3_bind_parameter_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) {
+ var _p *TVdbe
_p = (*TVdbe)(_pStmt)
return func() int32 {
if _p != nil {
@@ -10636,43 +10820,35 @@ func Xsqlite3_bind_parameter_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int3
}()
}
-func Xsqlite3_bind_parameter_index(tls *crt.TLS, _pStmt unsafe.Pointer, _zName *int8) (r0 int32) { // sqlite3.c:77596:12
+func Xsqlite3_bind_parameter_index(tls *crt.TLS, _pStmt unsafe.Pointer, _zName *int8) (r0 int32) {
return _sqlite3VdbeParameterIndex(tls, (*TVdbe)(_pStmt), _zName, _sqlite3Strlen30(tls, _zName))
}
-func _sqlite3VdbeParameterIndex(tls *crt.TLS, _p *TVdbe, _zName *int8, _nName int32) (r0 int32) { // sqlite3.c:77592:1
- if _p != nil && _zName != nil {
- goto _1
+// Given a wildcard parameter name, return the index of the variable
+// with that name. If there is no variable with the given name,
+// return 0.
+func _sqlite3VdbeParameterIndex(tls *crt.TLS, _p *TVdbe, _zName *int8, _nName int32) (r0 int32) {
+ if (_p == nil) || (_zName == nil) {
+ return i32(0)
}
- return i32(0)
-
-_1:
return _sqlite3VListNameToNum(tls, _p.X25, _zName, _nName)
}
-func _sqlite3VListNameToNum(tls *crt.TLS, _pIn *int32, _zName *int8, _nName int32) (r0 int32) { // sqlite3.c:29212:1
- var _i int32 // sqlite3.c:29213:7
- _ = _i
- var _mx int32 // sqlite3.c:29213:10
- _ = _mx
- var _1_z *int8 // sqlite3.c:29218:16
- _ = _1_z
- if _pIn != nil {
- goto _0
+// Return the number of the variable named zName, if it is in VList.
+// or return 0 if there is no such variable.
+func _sqlite3VListNameToNum(tls *crt.TLS, _pIn *int32, _zName *int8, _nName int32) (r0 int32) {
+ var _i, _mx int32
+ var _1_z *int8
+ if _pIn == nil {
+ return i32(0)
}
- return i32(0)
-
-_0:
_mx = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(1))))
_i = i32(2)
_1:
_1_z = (*int8)(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i+i32(2))))))
- if crt.Xstrncmp(tls, _1_z, _zName, uint32(_nName)) != i32(0) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_z)) + 1*uintptr(_nName)))) != i32(0) {
- goto _3
+ if (crt.Xstrncmp(tls, _1_z, _zName, uint32(_nName)) == i32(0)) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_z)) + 1*uintptr(_nName)))) == i32(0)) {
+ return *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i)))
}
- return *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i)))
-
-_3:
{
p := &_i
*p = (*p) + (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i+i32(1)))))
@@ -10684,39 +10860,33 @@ _3:
return i32(0)
}
-func Xsqlite3_bind_parameter_name(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *int8) { // sqlite3.c:77581:12
- var _p *TVdbe // sqlite3.c:77582:8
- _ = _p
+// Return the name of a wildcard parameter. Return NULL if the index
+// is out of range or if the wildcard is unnamed.
+//
+// The result is always UTF-8.
+func Xsqlite3_bind_parameter_name(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *int8) {
+ var _p *TVdbe
_p = (*TVdbe)(_pStmt)
- if _p != nil {
- goto _0
+ if _p == nil {
+ return nil
}
- return nil
-
-_0:
return _sqlite3VListNumToName(tls, _p.X25, _i)
}
-func _sqlite3VListNumToName(tls *crt.TLS, _pIn *int32, _iVal int32) (r0 *int8) { // sqlite3.c:29196:1
- var _i int32 // sqlite3.c:29197:7
- _ = _i
- var _mx int32 // sqlite3.c:29197:10
- _ = _mx
- if _pIn != nil {
- goto _0
+// Return a pointer to the name of a variable in the given VList that
+// has the value iVal. Or return a NULL if there is no such variable in
+// the list
+func _sqlite3VListNumToName(tls *crt.TLS, _pIn *int32, _iVal int32) (r0 *int8) {
+ var _i, _mx int32
+ if _pIn == nil {
+ return nil
}
- return nil
-
-_0:
_mx = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(1))))
_i = i32(2)
_1:
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i)))) != _iVal {
- goto _2
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i)))) == _iVal {
+ return (*int8)(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i+i32(2))))))
}
- return (*int8)(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i+i32(2))))))
-
-_2:
{
p := &_i
*p = (*p) + (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i+i32(1)))))
@@ -10728,17 +10898,17 @@ _2:
return nil
}
-func Xsqlite3_bind_text(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData *int8, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:77474:12
+func Xsqlite3_bind_text(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData *int8, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
return _bindText(tls, _pStmt, _i, (unsafe.Pointer)(_zData), _nData, _xDel, uint8(i32(1)))
}
-func Xsqlite3_bind_text16(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData unsafe.Pointer, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:77500:12
+func Xsqlite3_bind_text16(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _zData unsafe.Pointer, _nData int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
return _bindText(tls, _pStmt, _i, _zData, _nData, _xDel, uint8(i32(2)))
}
-func Xsqlite3_bind_value(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _pValue *XMem) (r0 int32) { // sqlite3.c:77510:12
- var _rc int32 // sqlite3.c:77511:7
- _ = _rc
+// SQLITE_OMIT_UTF16
+func Xsqlite3_bind_value(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _pValue *XMem) (r0 int32) {
+ var _rc int32
switch Xsqlite3_value_type(tls, _pValue) {
case i32(1):
goto _1
@@ -10753,361 +10923,274 @@ func Xsqlite3_bind_value(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _pValue
}
_1:
- _rc = Xsqlite3_bind_int64(tls, _pStmt, _i, *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pValue)) + uintptr(0 /* X0 */))))))
+ _rc = Xsqlite3_bind_int64(tls, _pStmt, _i, *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pValue)) + uintptr(0 /* X0 */))))))
goto _6
-
_2:
- _rc = Xsqlite3_bind_double(tls, _pStmt, _i, *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pValue)) + uintptr(0 /* X0 */))))))
+ _rc = Xsqlite3_bind_double(tls, _pStmt, _i, *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pValue)) + uintptr(0 /* X0 */))))))
goto _6
-
_3:
- if (int32(_pValue.X1) & i32(16384)) == 0 {
- goto _7
+ if (int32(_pValue.X1) & i32(16384)) != 0 {
+ _rc = Xsqlite3_bind_zeroblob(tls, _pStmt, _i, *(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pValue)) + uintptr(0 /* X0 */))))))
+ goto _8
}
-
- _rc = Xsqlite3_bind_zeroblob(tls, _pStmt, _i, *(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pValue)) + uintptr(0 /* X0 */))))))
- goto _8
-
-_7:
_rc = Xsqlite3_bind_blob(tls, _pStmt, _i, (unsafe.Pointer)(_pValue.X5), _pValue.X4, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
_8:
goto _6
-
_4:
_rc = _bindText(tls, _pStmt, _i, (unsafe.Pointer)(_pValue.X5), _pValue.X4, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})), _pValue.X2)
goto _6
-
_5:
_rc = Xsqlite3_bind_null(tls, _pStmt, _i)
goto _6
-
_6:
return _rc
}
-func Xsqlite3_bind_zeroblob(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _n int32) (r0 int32) { // sqlite3.c:77541:12
- var _rc int32 // sqlite3.c:77542:7
- _ = _rc
- var _p *TVdbe // sqlite3.c:77543:8
- _ = _p
+func Xsqlite3_bind_zeroblob(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32, _n int32) (r0 int32) {
+ var _rc int32
+ var _p *TVdbe
_p = (*TVdbe)(_pStmt)
_rc = _vdbeUnbind(tls, _p, _i)
- if _rc != i32(0) {
- goto _0
+ if _rc == i32(0) {
+ _sqlite3VdbeMemSetZeroBlob(tls, (*XMem)(unsafe.Pointer(uintptr(_p.X24)+48*uintptr(_i-i32(1)))), _n)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
}
-
- _sqlite3VdbeMemSetZeroBlob(tls, (*XMem)(unsafe.Pointer(uintptr(_p.X24)+48*uintptr(_i-i32(1)))), _n)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_0:
return _rc
}
-func _sqlite3VdbeMemSetZeroBlob(tls *crt.TLS, _pMem *XMem, _n int32) { // sqlite3.c:70375:1
+// Delete any previous value and set the value to be a BLOB of length
+// n containing all zeros.
+func _sqlite3VdbeMemSetZeroBlob(tls *crt.TLS, _pMem *XMem, _n int32) {
_sqlite3VdbeMemRelease(tls, _pMem)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(16400))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = i32(0)
- if _n >= i32(0) {
- goto _0
+ if _n < i32(0) {
+ _n = i32(0)
}
-
- _n = i32(0)
-_0:
- *(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _n
+ *(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _n
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = nil
}
-func Xsqlite3_busy_handler(tls *crt.TLS, _db *Xsqlite3, _xBusy func(*crt.TLS, unsafe.Pointer, int32) int32, _pArg unsafe.Pointer) (r0 int32) { // sqlite3.c:141982:12
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
+// This routine sets the busy callback for an Sqlite database to the
+// given callback function with the given argument.
+func Xsqlite3_busy_handler(tls *crt.TLS, _db *Xsqlite3, _xBusy func(*crt.TLS, unsafe.Pointer, int32) int32, _pArg unsafe.Pointer) (r0 int32) {
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ return _sqlite3MisuseError(tls, i32(141988))
}
- return _sqlite3MisuseError(tls, i32(141988))
-
-_0:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
- *(*func(*crt.TLS, unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t17)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(0 /* X0 */))) = _xBusy
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t17)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(4 /* X1 */))) = _pArg
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t17)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(8 /* X2 */))) = i32(0)
+ *(*func(*crt.TLS, unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(0 /* X0 */))) = _xBusy
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(4 /* X1 */))) = _pArg
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(8 /* X2 */))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(424 /* X74 */))) = i32(0)
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
return i32(0)
}
-func _sqlite3SafetyCheckOk(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:28897:1
- var _magic uint32 // sqlite3.c:28898:7
- _ = _magic
- if _db != nil {
- goto _0
+// This routine installs a default busy handler that waits for the
+// specified number of milliseconds before returning 0.
+func Xsqlite3_busy_timeout(tls *crt.TLS, _db *Xsqlite3, _ms int32) (r0 int32) {
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ return _sqlite3MisuseError(tls, i32(142038))
}
-
- _logBadConnection(tls, str(200))
- return i32(0)
-
-_0:
- _magic = _db.X28
- if _magic == u32(2687084183) {
- goto _1
- }
-
- if _sqlite3SafetyCheckSickOrOk(tls, _db) == 0 {
+ if _ms > i32(0) {
+ Xsqlite3_busy_handler(tls, _db, _sqliteDefaultBusyCallback, (unsafe.Pointer)(_db))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(424 /* X74 */))) = _ms
goto _2
}
-
- _logBadConnection(tls, str(7232))
-_2:
- return i32(0)
-
-_1:
- return i32(1)
-}
-
-func _logBadConnection(tls *crt.TLS, _zType *int8) { // sqlite3.c:28876:1
- Xsqlite3_log(tls, i32(21), str(7244), unsafe.Pointer(_zType))
-}
-
-func _sqlite3SafetyCheckSickOrOk(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:28914:1
- var _magic uint32 // sqlite3.c:28915:7
- _ = _magic
- _magic = _db.X28
- if _magic == uint32(i32(1266094736)) || _magic == u32(2687084183) || _magic == u32(4030429446) {
- goto _2
- }
-
- _logBadConnection(tls, str(7292))
- return i32(0)
-
-_2:
- return i32(1)
-}
-
-func Xsqlite3_busy_timeout(tls *crt.TLS, _db *Xsqlite3, _ms int32) (r0 int32) { // sqlite3.c:142036:12
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
- }
- return _sqlite3MisuseError(tls, i32(142038))
-
-_0:
- if _ms <= i32(0) {
- goto _1
- }
-
- Xsqlite3_busy_handler(tls, _db, _sqliteDefaultBusyCallback, (unsafe.Pointer)(_db))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(424 /* X74 */))) = _ms
- goto _2
-
-_1:
Xsqlite3_busy_handler(tls, _db, nil, nil)
_2:
return i32(0)
}
-func _sqliteDefaultBusyCallback(tls *crt.TLS, _ptr unsafe.Pointer, _count int32) (r0 int32) { // sqlite3.c:141920:1
- var _db *Xsqlite3 // sqlite3.c:141930:11
- _ = _db
- var _timeout int32 // sqlite3.c:141931:7
- _ = _timeout
- var _delay int32 // sqlite3.c:141932:7
- _ = _delay
- var _prior int32 // sqlite3.c:141932:14
- _ = _prior
+// This routine implements a busy callback that sleeps and tries
+// again until a timeout value is reached. The timeout value is
+// an integer number of milliseconds passed in as the first
+// argument.
+func _sqliteDefaultBusyCallback(tls *crt.TLS, _ptr unsafe.Pointer, _count int32) (r0 int32) {
+ var _timeout, _delay, _prior int32
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_ptr)
_timeout = _db.X74
func() {
if _count < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141934), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqliteDefaultBusyCallbackØ00__func__Ø000))), unsafe.Pointer(str(7300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141934), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqliteDefaultBusyCallbackØ00__func__Ø000))), unsafe.Pointer(str(8611)))
crt.X__builtin_abort(tls)
}
}()
- if _count >= i32(12) {
- goto _2
+ if _count < i32(12) {
+ _delay = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqliteDefaultBusyCallbackØ00delaysØ001)) + 1*uintptr(_count))))
+ _prior = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqliteDefaultBusyCallbackØ00totalsØ002)) + 1*uintptr(_count))))
+ goto _3
}
-
- _delay = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqliteDefaultBusyCallbackØ00delaysØ001)) + 1*uintptr(_count))))
- _prior = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqliteDefaultBusyCallbackØ00totalsØ002)) + 1*uintptr(_count))))
- goto _3
-
-_2:
_delay = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqliteDefaultBusyCallbackØ00delaysØ001)) + 1*uintptr(i32(11)))))
_prior = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqliteDefaultBusyCallbackØ00totalsØ002)) + 1*uintptr(i32(11))))) + (_delay * (_count - i32(11)))
_3:
if (_prior + _delay) <= _timeout {
goto _4
}
-
_delay = _timeout - _prior
- if _delay > i32(0) {
- goto _5
+ if _delay <= i32(0) {
+ return i32(0)
}
- return i32(0)
-
-_5:
_4:
_sqlite3OsSleep(tls, (*Xsqlite3_vfs)(_db.X0), _delay*i32(1000))
return i32(1)
}
-var _sqliteDefaultBusyCallbackØ00__func__Ø000 [26]int8 // -
+var _sqliteDefaultBusyCallbackØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqliteDefaultBusyCallbackØ00__func__Ø000[0], str(7312), 26)
+ crt.Xstrncpy(nil, &_sqliteDefaultBusyCallbackØ00__func__Ø000[0], str(8620), 26)
}
-var _sqliteDefaultBusyCallbackØ00delaysØ001 [12]uint8 // sqlite3.c:141925:19
+var _sqliteDefaultBusyCallbackØ00delaysØ001 [12]uint8
func init() {
_sqliteDefaultBusyCallbackØ00delaysØ001 = [12]uint8{1, 2, 5, 10, 15, 20, 25, 25, 25, 50, 50, 100}
}
-var _sqliteDefaultBusyCallbackØ00totalsØ002 [12]uint8 // sqlite3.c:141927:19
+var _sqliteDefaultBusyCallbackØ00totalsØ002 [12]uint8
func init() {
_sqliteDefaultBusyCallbackØ00totalsØ002 = [12]uint8{0, 1, 3, 8, 18, 33, 53, 78, 103, 128, 178, 228}
}
-func _sqlite3OsSleep(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _nMicro int32) (r0 int32) { // sqlite3.c:20336:1
+func _sqlite3OsSleep(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _nMicro int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_vfs, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
}{(_pVfs.X15)})))(tls, _pVfs, _nMicro)
}
-func Xsqlite3_changes(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:141410:12
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
+// Return the number of changes in the most recent call to sqlite3_exec().
+func Xsqlite3_changes(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ _sqlite3MisuseError(tls, i32(141413))
+ return i32(0)
}
-
- _sqlite3MisuseError(tls, i32(141413))
- return i32(0)
-
-_0:
return _db.X29
}
-func Xsqlite3_close(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:141574:12
+// Two variations on the public interface for closing a database
+// connection. The sqlite3_close() version returns SQLITE_BUSY and
+// leaves the connection option if there are unfinalized prepared
+// statements or unfinished sqlite3_backups. The sqlite3_close_v2()
+// version forces the connection to become a zombie if there are
+// unclosed resources, and arranges for deallocation when the last
+// prepare statement or sqlite3_backup closes.
+func Xsqlite3_close(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
return _sqlite3Close(tls, _db, i32(0))
}
-func _sqlite3Close(tls *crt.TLS, _db *Xsqlite3, _forceZombie int32) (r0 int32) { // sqlite3.c:141515:1
- if _db != nil {
- goto _0
+// Close an existing SQLite database
+func _sqlite3Close(tls *crt.TLS, _db *Xsqlite3, _forceZombie int32) (r0 int32) {
+ if _db == nil {
+ return i32(0)
}
- return i32(0)
-
-_0:
- if _sqlite3SafetyCheckSickOrOk(tls, _db) != 0 {
- goto _1
+ if _sqlite3SafetyCheckSickOrOk(tls, _db) == 0 {
+ return _sqlite3MisuseError(tls, i32(141522))
}
- return _sqlite3MisuseError(tls, i32(141522))
-
-_1:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
- if (int32(_db.X24) & i32(8)) == 0 {
- goto _2
+ if (int32(_db.X24) & i32(8)) != 0 {
+ (_db.X41)(tls, uint32(i32(8)), _db.X42, (unsafe.Pointer)(_db), nil)
}
-
- (_db.X41)(tls, uint32(i32(8)), _db.X42, (unsafe.Pointer)(_db), nil)
-_2:
_disconnectAllVtab(tls, _db)
_sqlite3VtabRollback(tls, _db)
- if _forceZombie != 0 || _connectionIsBusy(tls, _db) == 0 {
- goto _4
+ if (_forceZombie == 0) && _connectionIsBusy(tls, _db) != 0 {
+ _sqlite3ErrorWithMsg(tls, _db, i32(5), str(8646))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
+ return i32(5)
}
-
- _sqlite3ErrorWithMsg(tls, _db, i32(5), str(7340))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
- return i32(5)
-
-_4:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(80 /* X28 */))) = uint32(i32(1691352191))
_sqlite3LeaveMutexAndCloseZombie(tls, _db)
return i32(0)
}
-func _disconnectAllVtab(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:141470:1
- var _i int32 // sqlite3.c:141472:7
- _ = _i
- var _p *XHashElem // sqlite3.c:141473:12
- _ = _p
- var _1_pSchema *XSchema // sqlite3.c:141476:12
- _ = _1_pSchema
- var _3_pTab *XTable // sqlite3.c:141479:15
- _ = _3_pTab
- var _4_pMod *XModule // sqlite3.c:141485:12
- _ = _4_pMod
+func _sqlite3SafetyCheckSickOrOk(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
+ var _magic uint32
+ _magic = _db.X28
+ if ((_magic != uint32(i32(1266094736))) && (_magic != u32(2687084183))) && (_magic != u32(4030429446)) {
+ _logBadConnection(tls, str(8714))
+ return i32(0)
+ }
+ return i32(1)
+}
+
+// Disconnect all sqlite3_vtab objects that belong to database connection
+// db. This is called when db is being closed.
+func _disconnectAllVtab(tls *crt.TLS, _db *Xsqlite3) {
+ var _i int32
+ var _1_pSchema *XSchema
+ var _p *XHashElem
+ var _3_pTab *XTable
+ var _4_pMod *XModule
_sqlite3BtreeEnterAll(tls, _db)
_i = i32(0)
_0:
if _i >= (_db.X5) {
goto _3
}
-
_1_pSchema = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X4)
if (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X4) == nil {
goto _4
}
-
_p = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSchema)) + uintptr(8 /* X2 */))).X2)
_5:
if _p == nil {
goto _8
}
-
_3_pTab = (*XTable)(_p.X2)
- if (_3_pTab.X16) == 0 {
- goto _9
+ if (_3_pTab.X16) != 0 {
+ _sqlite3VtabDisconnect(tls, _db, _3_pTab)
}
-
- _sqlite3VtabDisconnect(tls, _db, _3_pTab)
-_9:
_p = (*XHashElem)(_p.X0)
goto _5
-
_8:
_4:
_i += 1
goto _0
-
_3:
_p = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(316 /* X65 */))).X2)
_10:
if _p == nil {
goto _13
}
-
_4_pMod = (*XModule)(_p.X2)
- if (*XTable)(_4_pMod.X4) == nil {
- goto _14
+ if (*XTable)(_4_pMod.X4) != nil {
+ _sqlite3VtabDisconnect(tls, _db, (*XTable)(_4_pMod.X4))
}
-
- _sqlite3VtabDisconnect(tls, _db, (*XTable)(_4_pMod.X4))
-_14:
_p = (*XHashElem)(_p.X0)
goto _10
-
_13:
_sqlite3VtabUnlockList(tls, _db)
_sqlite3BtreeLeaveAll(tls, _db)
}
-func _sqlite3BtreeEnterAll(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:58923:1
- if int32(_db.X25) != i32(0) {
- goto _0
+func _sqlite3BtreeEnterAll(tls *crt.TLS, _db *Xsqlite3) {
+ if int32(_db.X25) == i32(0) {
+ _btreeEnterAll(tls, _db)
}
-
- _btreeEnterAll(tls, _db)
-_0:
}
-func _btreeEnterAll(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:58909:1
- var _i int32 // sqlite3.c:58910:7
- _ = _i
- var _skipOk int32 // sqlite3.c:58911:7
- _ = _skipOk
- var _p *XBtree // sqlite3.c:58912:9
- _ = _p
+// Enter the mutex on every Btree associated with a database
+// connection. This is needed (for example) prior to parsing
+// a statement since we will be comparing table and column names
+// against all schemas and we do not want those schemas being
+// reset out from under us.
+//
+// There is a corresponding leave-all procedures.
+//
+// Enter the mutexes in accending order by BtShared pointer address
+// to avoid the possibility of deadlock when two threads with
+// two or more btrees in common both try to lock all their btrees
+// at the same instant.
+func _btreeEnterAll(tls *crt.TLS, _db *Xsqlite3) {
+ var _i, _skipOk int32
+ var _p *XBtree
_skipOk = i32(1)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58913), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEnterAllØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58913), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEnterAllØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -11116,150 +11199,148 @@ _2:
if _i >= (_db.X5) {
goto _5
}
-
_p = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _p == nil || (_p.X3) == 0 {
- goto _7
+ if (_p != nil) && ((_p.X3) != 0) {
+ _sqlite3BtreeEnter(tls, _p)
+ _skipOk = i32(0)
}
-
- _sqlite3BtreeEnter(tls, _p)
- _skipOk = i32(0)
-_7:
_i += 1
goto _2
-
_5:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(73 /* X25 */))) = uint8(_skipOk)
}
-var _btreeEnterAllØ00__func__Ø000 [14]int8 // -
+var _btreeEnterAllØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_btreeEnterAllØ00__func__Ø000[0], str(7408), 14)
+ crt.Xstrncpy(nil, &_btreeEnterAllØ00__func__Ø000[0], str(8722), 14)
}
-func _sqlite3BtreeEnter(tls *crt.TLS, _p *XBtree) { // sqlite3.c:58794:1
+// Enter a mutex on the given BTree object.
+//
+// If the object is not sharable, then no mutex is ever required
+// and this routine is a no-op. The underlying mutex is non-recursive.
+// But we keep a reference count in Btree.wantToLock so the behavior
+// of this interface is recursive.
+//
+// To avoid deadlocks, multiple Btrees are locked in the same order
+// by all database connections. The p->pNext is a list of other
+// Btrees belonging to the same database connection as the p Btree
+// which need to be locked after p. If we cannot get a lock on
+// p, then first unlock all of the others on p->pNext, then wait
+// for the lock to become available on p, then relock all of the
+// subsequent Btrees that desire a lock.
+func _sqlite3BtreeEnter(tls *crt.TLS, _p *XBtree) {
func() {
if (*XBtree)(_p.X9) != nil && uintptr(unsafe.Pointer((*XBtShared)((*XBtree)(_p.X9).X1))) <= uintptr(unsafe.Pointer((*XBtShared)(_p.X1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7424)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8736)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtree)(_p.X10) != nil && uintptr(unsafe.Pointer((*XBtShared)((*XBtree)(_p.X10).X1))) >= uintptr(unsafe.Pointer((*XBtShared)(_p.X1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7460)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8772)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtree)(_p.X9) != nil && (*Xsqlite3)((*XBtree)(_p.X9).X0) != (*Xsqlite3)(_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7496)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8808)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtree)(_p.X10) != nil && (*Xsqlite3)((*XBtree)(_p.X10).X0) != (*Xsqlite3)(_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58802), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7532)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58802), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8843)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X3) == 0 && ((*XBtree)(_p.X9) != nil || (*XBtree)(_p.X10) != nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8878)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X4) != 0 && (_p.X6) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58806), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58806), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8922)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X3) == 0 && (_p.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58807), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58807), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8952)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58810), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58810), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_p.X4) != i32(0) || (_p.X3) == 0) && (*Xsqlite3)((*XBtShared)(_p.X1).X1) != (*Xsqlite3)(_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(7712)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeEnterØ00__func__Ø000))), unsafe.Pointer(str(9017)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X3) != 0 {
- goto _28
+ if (_p.X3) == 0 {
+ return
}
- return
-
-_28:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X6 */))) += 1
- if (_p.X4) == 0 {
- goto _29
+ if (_p.X4) != 0 {
+ return
}
- return
-
-_29:
_btreeLockCarefully(tls, _p)
}
-var _sqlite3BtreeEnterØ00__func__Ø000 [18]int8 // -
+var _sqlite3BtreeEnterØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeEnterØ00__func__Ø000[0], str(7764), 18)
+ crt.Xstrncpy(nil, &_sqlite3BtreeEnterØ00__func__Ø000[0], str(9068), 18)
}
-func _btreeLockCarefully(tls *crt.TLS, _p *XBtree) { // sqlite3.c:58828:1
- var _pLater *XBtree // sqlite3.c:58829:9
- _ = _pLater
- if Xsqlite3_mutex_try(tls, (*Xsqlite3_mutex)((*XBtShared)(_p.X1).X21)) != i32(0) {
- goto _0
+// This is a helper function for sqlite3BtreeLock(). By moving
+// complex, but seldom used logic, out of sqlite3BtreeLock() and
+// into this routine, we avoid unnecessary stack pointer changes
+// and thus help the sqlite3BtreeLock() routine to run much faster
+// in the common case.
+func _btreeLockCarefully(tls *crt.TLS, _p *XBtree) {
+ var _pLater *XBtree
+ if Xsqlite3_mutex_try(tls, (*Xsqlite3_mutex)((*XBtShared)(_p.X1).X21)) == i32(0) {
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X1) + uintptr(4 /* X1 */))))) = (*Xsqlite3)(_p.X0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X4 */))) = uint8(i32(1))
+ return
}
-
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X1) + uintptr(4 /* X1 */))))) = (*Xsqlite3)(_p.X0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X4 */))) = uint8(i32(1))
- return
-
-_0:
_pLater = (*XBtree)(_p.X9)
_1:
if _pLater == nil {
goto _4
}
-
func() {
if (_pLater.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58847), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLockCarefullyØ00__func__Ø000))), unsafe.Pointer(str(7784)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58847), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLockCarefullyØ00__func__Ø000))), unsafe.Pointer(str(9086)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtree)(_pLater.X9) != nil && uintptr(unsafe.Pointer((*XBtShared)((*XBtree)(_pLater.X9).X1))) <= uintptr(unsafe.Pointer((*XBtShared)(_pLater.X1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58848), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLockCarefullyØ00__func__Ø000))), unsafe.Pointer(str(7804)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58848), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLockCarefullyØ00__func__Ø000))), unsafe.Pointer(str(9103)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pLater.X4) != 0 && (_pLater.X6) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58849), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLockCarefullyØ00__func__Ø000))), unsafe.Pointer(str(7856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58849), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLockCarefullyØ00__func__Ø000))), unsafe.Pointer(str(9154)))
crt.X__builtin_abort(tls)
}
}()
- if (_pLater.X4) == 0 {
- goto _13
+ if (_pLater.X4) != 0 {
+ _unlockBtreeMutex(tls, _pLater)
}
-
- _unlockBtreeMutex(tls, _pLater)
-_13:
_pLater = (*XBtree)(_pLater.X9)
goto _1
-
_4:
_lockBtreeMutex(tls, _p)
_pLater = (*XBtree)(_p.X9)
@@ -11267,81 +11348,74 @@ _14:
if _pLater == nil {
goto _17
}
-
- if (_pLater.X6) == 0 {
- goto _18
+ if (_pLater.X6) != 0 {
+ _lockBtreeMutex(tls, _pLater)
}
-
- _lockBtreeMutex(tls, _pLater)
-_18:
_pLater = (*XBtree)(_pLater.X9)
goto _14
-
_17:
}
-func Xsqlite3_mutex_try(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:22874:12
- var _rc int32 // sqlite3.c:22875:7
- _ = _rc
+// Obtain the mutex p. If successful, return SQLITE_OK. Otherwise, if another
+// thread holds the mutex and it cannot be obtained, return SQLITE_BUSY.
+func Xsqlite3_mutex_try(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) {
+ var _rc int32
_rc = i32(0)
- if _p == nil {
- goto _0
- }
-
- func() {
- if (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
+ if _p != nil {
+ func() {
+ if (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X5)}))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_tryØ00__func__Ø000))), unsafe.Pointer(str(9194)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ /* X11 */
+ return (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X5)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_tryØ00__func__Ø000))), unsafe.Pointer(str(7896)))
- crt.X__builtin_abort(tls)
- }
- }()
- /* X11 */
- return (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72))).X5)})))(tls, _p)
-
-_0:
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72))).X5)})))(tls, _p)
+ }
return _rc
}
-var _sqlite3_mutex_tryØ00__func__Ø000 [18]int8 // -
+var _sqlite3_mutex_tryØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_mutex_tryØ00__func__Ø000[0], str(7932), 18)
+ crt.Xstrncpy(nil, &_sqlite3_mutex_tryØ00__func__Ø000[0], str(9230), 18)
}
-var _btreeLockCarefullyØ00__func__Ø000 [19]int8 // -
+var _btreeLockCarefullyØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_btreeLockCarefullyØ00__func__Ø000[0], str(7952), 19)
+ crt.Xstrncpy(nil, &_btreeLockCarefullyØ00__func__Ø000[0], str(9248), 19)
}
-func _unlockBtreeMutex(tls *crt.TLS, _p *XBtree) { // sqlite3.c:58764:1
- var _pBt *XBtShared // sqlite3.c:58765:12
- _ = _pBt
+// Release the BtShared mutex associated with B-Tree handle p and
+// clear the p->locked boolean.
+func _unlockBtreeMutex(tls *crt.TLS, _p *XBtree) {
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_p.X1)
func() {
if int32(_p.X4) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58766), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(7972)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58766), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(9267)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58767), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58767), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58768), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58768), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)(_p.X0) != (*Xsqlite3)(_pBt.X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58769), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(8020)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58769), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(9311)))
crt.X__builtin_abort(tls)
}
}()
@@ -11349,28 +11423,31 @@ func _unlockBtreeMutex(tls *crt.TLS, _p *XBtree) { // sqlite3.c:58764:1
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X4 */))) = uint8(i32(0))
}
-var _unlockBtreeMutexØ00__func__Ø000 [17]int8 // -
+var _unlockBtreeMutexØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_unlockBtreeMutexØ00__func__Ø000[0], str(8036), 17)
+ crt.Xstrncpy(nil, &_unlockBtreeMutexØ00__func__Ø000[0], str(9326), 17)
}
-func _lockBtreeMutex(tls *crt.TLS, _p *XBtree) { // sqlite3.c:58750:1
+// Obtain the BtShared mutex associated with B-Tree handle p. Also,
+// set BtShared.db to the database handle associated with p and the
+// p->locked boolean to true.
+func _lockBtreeMutex(tls *crt.TLS, _p *XBtree) {
func() {
if int32(_p.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58751), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(8056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58751), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(9343)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_notheld(tls, (*Xsqlite3_mutex)((*XBtShared)(_p.X1).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58752), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(8072)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58752), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(9356)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58753), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58753), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeMutexØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
@@ -11379,53 +11456,36 @@ func _lockBtreeMutex(tls *crt.TLS, _p *XBtree) { // sqlite3.c:58750:1
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X4 */))) = uint8(i32(1))
}
-var _lockBtreeMutexØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_lockBtreeMutexØ00__func__Ø000[0], str(8112), 15)
-}
-
-func Xsqlite3_mutex_notheld(tls *crt.TLS, _p *Xsqlite3_mutex) (r0 int32) { // sqlite3.c:22905:12
- func() {
- if _p != nil && (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X8)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_notheldØ00__func__Ø000))), unsafe.Pointer(str(8128)))
- crt.X__builtin_abort(tls)
- }
- }()
- /* X11 */
- return bool2int((_p == nil) || (*(*func(*crt.TLS, *Xsqlite3_mutex) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72))).X8)})))(tls, _p) != 0)
-}
-
-var _sqlite3_mutex_notheldØ00__func__Ø000 [22]int8 // -
+var _lockBtreeMutexØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_mutex_notheldØ00__func__Ø000[0], str(8176), 22)
+ crt.Xstrncpy(nil, &_lockBtreeMutexØ00__func__Ø000[0], str(9393), 15)
}
-func _sqlite3VtabDisconnect(tls *crt.TLS, _db *Xsqlite3, _p *XTable) { // sqlite3.c:125204:1
- var _ppVTab **XVTable // sqlite3.c:125205:10
- _ = _ppVTab
- var _2_pVTab *XVTable // sqlite3.c:125213:14
- _ = _2_pVTab
+// Table *p is a virtual table. This function removes the VTable object
+// for table *p associated with database connection db from the linked
+// list in p->pVTab. It also decrements the VTable ref count. This is
+// used when closing database connection db to free all of its VTable
+// objects without disturbing the rest of the Schema object (which may
+// be being used by other shared-cache connections).
+func _sqlite3VtabDisconnect(tls *crt.TLS, _db *Xsqlite3, _p *XTable) {
+ var _2_pVTab *XVTable
+ var _ppVTab **XVTable
func() {
if (_p.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125207), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabDisconnectØ00__func__Ø000))), unsafe.Pointer(str(8200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125207), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabDisconnectØ00__func__Ø000))), unsafe.Pointer(str(9408)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3BtreeHoldsAllMutexes(tls, _db) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125208), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabDisconnectØ00__func__Ø000))), unsafe.Pointer(str(8216)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125208), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabDisconnectØ00__func__Ø000))), unsafe.Pointer(str(9421)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125209), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabDisconnectØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125209), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabDisconnectØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -11434,81 +11494,69 @@ _6:
if (*_ppVTab) == nil {
goto _9
}
-
- if (*Xsqlite3)((*_ppVTab).X0) != _db {
- goto _10
+ if (*Xsqlite3)((*_ppVTab).X0) == _db {
+ _2_pVTab = *_ppVTab
+ *_ppVTab = (*XVTable)(_2_pVTab.X6)
+ _sqlite3VtabUnlock(tls, _2_pVTab)
+ goto _9
}
-
- _2_pVTab = *_ppVTab
- *_ppVTab = (*XVTable)(_2_pVTab.X6)
- _sqlite3VtabUnlock(tls, _2_pVTab)
- goto _9
-
-_10:
_ppVTab = (**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_ppVTab)) + uintptr(24 /* X6 */)))))
goto _6
-
_9:
}
-var _sqlite3VtabDisconnectØ00__func__Ø000 [22]int8 // -
+var _sqlite3VtabDisconnectØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabDisconnectØ00__func__Ø000[0], str(8248), 22)
+ crt.Xstrncpy(nil, &_sqlite3VtabDisconnectØ00__func__Ø000[0], str(9453), 22)
}
-func _sqlite3BtreeHoldsAllMutexes(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:58946:1
- var _i int32 // sqlite3.c:58947:7
- _ = _i
- var _2_p *XBtree // sqlite3.c:58952:11
- _ = _2_p
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) != 0 {
- goto _0
+// Return true if the current thread holds the database connection
+// mutex and all required BtShared mutexes.
+//
+// This routine is used inside assert() statements only.
+func _sqlite3BtreeHoldsAllMutexes(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
+ var _i int32
+ var _2_p *XBtree
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
+ return i32(0)
}
- return i32(0)
-
-_0:
_i = i32(0)
_1:
if _i >= (_db.X5) {
goto _4
}
-
_2_p = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _2_p == nil || (_2_p.X3) == 0 || (_2_p.X6) != i32(0) && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_2_p.X1).X21)) != 0 {
- goto _8
+ if ((_2_p != nil) && ((_2_p.X3) != 0)) && (((_2_p.X6) == i32(0)) || (Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_2_p.X1).X21)) == 0)) {
+ return i32(0)
}
- return i32(0)
-
-_8:
_i += 1
goto _1
-
_4:
return i32(1)
}
-func _sqlite3VtabUnlock(tls *crt.TLS, _pVTab *XVTable) { // sqlite3.c:125140:1
- var _db *Xsqlite3 // sqlite3.c:125141:11
- _ = _db
- var _1_p *Xsqlite3_vtab // sqlite3.c:125149:18
- _ = _1_p
+// Decrement the ref-count on a virtual table object. When the ref-count
+// reaches zero, call the xDisconnect() method to delete the object.
+func _sqlite3VtabUnlock(tls *crt.TLS, _pVTab *XVTable) {
+ var _db *Xsqlite3
+ var _1_p *Xsqlite3_vtab
_db = (*Xsqlite3)(_pVTab.X0)
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockØ00__func__Ø000))), unsafe.Pointer(str(8272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockØ00__func__Ø000))), unsafe.Pointer(str(9475)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pVTab.X3) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125144), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockØ00__func__Ø000))), unsafe.Pointer(str(8276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125144), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockØ00__func__Ø000))), unsafe.Pointer(str(9478)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_db.X28) != u32(2687084183) && (_db.X28) != uint32(i32(1691352191)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125145), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockØ00__func__Ø000))), unsafe.Pointer(str(8292)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125145), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockØ00__func__Ø000))), unsafe.Pointer(str(9492)))
crt.X__builtin_abort(tls)
}
}()
@@ -11516,49 +11564,59 @@ func _sqlite3VtabUnlock(tls *crt.TLS, _pVTab *XVTable) { // sqlite3.c:125140:1
if (_pVTab.X3) != i32(0) {
goto _7
}
-
_1_p = (*Xsqlite3_vtab)(_pVTab.X2)
- if _1_p == nil {
- goto _8
+ if _1_p != nil {
+ (*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_module)(_1_p.X0).X4)})))(tls, _1_p)
}
-
- (*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_module)(_1_p.X0).X4)})))(tls, _1_p)
-_8:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pVTab))
_7:
}
-var _sqlite3VtabUnlockØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabUnlockØ00__func__Ø000[0], str(8356), 18)
-}
-
-func _sqlite3VtabUnlockList(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:125242:1
- var _p *XVTable // sqlite3.c:125243:10
- _ = _p
- var _2_pNext *XVTable // sqlite3.c:125252:14
- _ = _2_pNext
+var _sqlite3VtabUnlockØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VtabUnlockØ00__func__Ø000[0], str(9555), 18)
+}
+
+// Disconnect all the virtual table objects in the sqlite3.pDisconnect list.
+//
+// This function may only be called when the mutexes associated with all
+// shared b-tree databases opened using connection db are held by the
+// caller. This is done to protect the sqlite3.pDisconnect list. The
+// sqlite3.pDisconnect list is accessed only as follows:
+//
+// 1) By this function. In this case, all BtShared mutexes and the mutex
+// associated with the database handle itself must be held.
+//
+// 2) By function vtabDisconnectAll(), when it adds a VTable entry to
+// the sqlite3.pDisconnect list. In this case either the BtShared mutex
+// associated with the database the virtual table is stored in is held
+// or, if the virtual table is stored in a non-sharable database, then
+// the database handle mutex is held.
+//
+// As a result, a sqlite3.pDisconnect cannot be accessed simultaneously
+// by multiple threads. It is thread-safe.
+func _sqlite3VtabUnlockList(tls *crt.TLS, _db *Xsqlite3) {
+ var _p, _2_pNext *XVTable
_p = (*XVTable)(_db.X68)
*(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(340 /* X68 */))))) = nil
func() {
if _sqlite3BtreeHoldsAllMutexes(tls, _db) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125246), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockListØ00__func__Ø000))), unsafe.Pointer(str(8216)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125246), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockListØ00__func__Ø000))), unsafe.Pointer(str(9421)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockListØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabUnlockListØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
if _p == nil {
goto _4
}
-
_sqlite3ExpirePreparedStatements(tls, _db)
_5:
_2_pNext = (*XVTable)(_p.X6)
@@ -11567,49 +11625,48 @@ _5:
if _p != nil {
goto _5
}
-
_4:
}
-var _sqlite3VtabUnlockListØ00__func__Ø000 [22]int8 // -
+var _sqlite3VtabUnlockListØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabUnlockListØ00__func__Ø000[0], str(8376), 22)
+ crt.Xstrncpy(nil, &_sqlite3VtabUnlockListØ00__func__Ø000[0], str(9573), 22)
}
-func _sqlite3ExpirePreparedStatements(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:75937:1
- var _p *TVdbe // sqlite3.c:75938:8
- _ = _p
+// Mark every prepared statement associated with a database connection
+// as expired.
+//
+// An expired statement means that recompilation of the statement is
+// recommend. Statements expire when things happen that make their
+// programs obsolete. Removing user-defined functions or collating
+// sequences, or changing an authorization function are the types of
+// things that make prepared statements obsolete.
+func _sqlite3ExpirePreparedStatements(tls *crt.TLS, _db *Xsqlite3) {
+ var _p *TVdbe
_p = (*TVdbe)(_db.X1)
_0:
if _p == nil {
goto _3
}
-
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
_p = (*TVdbe)(_p.X2)
goto _0
-
_3:
}
-func _sqlite3BtreeLeaveAll(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:58935:1
- if int32(_db.X25) != i32(0) {
- goto _0
+func _sqlite3BtreeLeaveAll(tls *crt.TLS, _db *Xsqlite3) {
+ if int32(_db.X25) == i32(0) {
+ _btreeLeaveAll(tls, _db)
}
-
- _btreeLeaveAll(tls, _db)
-_0:
}
-func _btreeLeaveAll(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:58926:1
- var _i int32 // sqlite3.c:58927:7
- _ = _i
- var _p *XBtree // sqlite3.c:58928:9
- _ = _p
+func _btreeLeaveAll(tls *crt.TLS, _db *Xsqlite3) {
+ var _i int32
+ var _p *XBtree
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58929), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLeaveAllØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58929), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeLeaveAllØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -11618,79 +11675,73 @@ _2:
if _i >= (_db.X5) {
goto _5
}
-
_p = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _p == nil {
- goto _6
+ if _p != nil {
+ _sqlite3BtreeLeave(tls, _p)
}
-
- _sqlite3BtreeLeave(tls, _p)
-_6:
_i += 1
goto _2
-
_5:
}
-var _btreeLeaveAllØ00__func__Ø000 [14]int8 // -
+var _btreeLeaveAllØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_btreeLeaveAllØ00__func__Ø000[0], str(8400), 14)
+ crt.Xstrncpy(nil, &_btreeLeaveAllØ00__func__Ø000[0], str(9595), 14)
}
-func _sqlite3BtreeLeave(tls *crt.TLS, _p *XBtree) { // sqlite3.c:58866:1
+// Exit the recursive mutex on a Btree.
+func _sqlite3BtreeLeave(tls *crt.TLS, _p *XBtree) {
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58867), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLeaveØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58867), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLeaveØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
if (_p.X3) == 0 {
goto _2
}
-
func() {
if (_p.X6) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58869), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLeaveØ00__func__Ø000))), unsafe.Pointer(str(8416)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58869), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLeaveØ00__func__Ø000))), unsafe.Pointer(str(9609)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X6 */))) -= 1
- if (_p.X6) != i32(0) {
- goto _5
+ if (_p.X6) == i32(0) {
+ _unlockBtreeMutex(tls, _p)
}
-
- _unlockBtreeMutex(tls, _p)
-_5:
_2:
}
-var _sqlite3BtreeLeaveØ00__func__Ø000 [18]int8 // -
+var _sqlite3BtreeLeaveØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeLeaveØ00__func__Ø000[0], str(8432), 18)
+ crt.Xstrncpy(nil, &_sqlite3BtreeLeaveØ00__func__Ø000[0], str(9625), 18)
}
-func _sqlite3VtabRollback(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:125894:1
+// Invoke the xRollback method of all virtual tables in the
+// sqlite3.aVTrans array. Then clear the array itself.
+func _sqlite3VtabRollback(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
_callFinaliser(tls, _db, int32(u32(68)))
return i32(0)
}
-func _callFinaliser(tls *crt.TLS, _db *Xsqlite3, _offset int32) { // sqlite3.c:125844:1
- var _i int32 // sqlite3.c:125845:7
- _ = _i
- var _1_aVTrans **XVTable // sqlite3.c:125847:12
- _ = _1_aVTrans
- var _2_pVTab *XVTable // sqlite3.c:125850:14
- _ = _2_pVTab
- var _2_p *Xsqlite3_vtab // sqlite3.c:125851:20
- _ = _2_p
- var _3_x func(*crt.TLS, *Xsqlite3_vtab) int32 // sqlite3.c:125853:13
- _ = _3_x
+// This function invokes either the xRollback or xCommit method
+// of each of the virtual tables in the sqlite3.aVTrans array. The method
+// called is identified by the second argument, "offset", which is
+// the offset of the method to call in the sqlite3_module structure.
+//
+// The array is cleared after invoking the callbacks.
+func _callFinaliser(tls *crt.TLS, _db *Xsqlite3, _offset int32) {
+ var _i int32
+ var _2_pVTab *XVTable
+ var _2_p *Xsqlite3_vtab
+ var _1_aVTrans **XVTable
+ var _3_x func(*crt.TLS, *Xsqlite3_vtab) int32
if (**XVTable)(unsafe.Pointer(_db.X67)) == nil {
goto _0
}
-
_1_aVTrans = (**XVTable)(unsafe.Pointer(_db.X67))
*(***XVTable)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(336 /* X67 */))))) = nil
_i = i32(0)
@@ -11698,197 +11749,180 @@ _1:
if _i >= (_db.X64) {
goto _4
}
-
_2_pVTab = *(**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aVTrans)) + 4*uintptr(_i)))
_2_p = (*Xsqlite3_vtab)(_2_pVTab.X2)
if _2_p == nil {
goto _5
}
-
_3_x = *(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer((*Xsqlite3_module)(_2_p.X0))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_offset)))))))))
- if _3_x == nil {
- goto _6
+ if _3_x != nil {
+ _3_x(tls, _2_p)
}
-
- _3_x(tls, _2_p)
-_6:
_5:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pVTab)) + uintptr(20 /* X5 */))) = i32(0)
_sqlite3VtabUnlock(tls, _2_pVTab)
_i += 1
goto _1
-
_4:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_aVTrans))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(312 /* X64 */))) = i32(0)
_0:
}
-func _connectionIsBusy(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:141501:1
- var _j int32 // sqlite3.c:141502:7
- _ = _j
- var _1_pBt *XBtree // sqlite3.c:141506:11
- _ = _1_pBt
+// Return TRUE if database connection db has unfinalized prepared
+// statements or unfinished sqlite3_backup objects.
+func _connectionIsBusy(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
+ var _j int32
+ var _1_pBt *XBtree
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141503), unsafe.Pointer((*int8)(unsafe.Pointer(&_connectionIsBusyØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141503), unsafe.Pointer((*int8)(unsafe.Pointer(&_connectionIsBusyØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
- if (*TVdbe)(_db.X1) == nil {
- goto _2
+ if (*TVdbe)(_db.X1) != nil {
+ return i32(1)
}
- return i32(1)
-
-_2:
_j = i32(0)
_3:
if _j >= (_db.X5) {
goto _6
}
-
_1_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_j))).X1)
- if _1_pBt == nil || _sqlite3BtreeIsInBackup(tls, _1_pBt) == 0 {
- goto _8
+ if (_1_pBt != nil) && _sqlite3BtreeIsInBackup(tls, _1_pBt) != 0 {
+ return i32(1)
}
- return i32(1)
-
-_8:
_j += 1
goto _3
-
_6:
return i32(0)
}
-var _connectionIsBusyØ00__func__Ø000 [17]int8 // -
+var _connectionIsBusyØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_connectionIsBusyØ00__func__Ø000[0], str(8452), 17)
+ crt.Xstrncpy(nil, &_connectionIsBusyØ00__func__Ø000[0], str(9643), 17)
}
-func _sqlite3BtreeIsInBackup(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:68679:1
+func _sqlite3BtreeIsInBackup(tls *crt.TLS, _p *XBtree) (r0 int32) {
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInBackupØ00__func__Ø000))), unsafe.Pointer(str(8472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInBackupØ00__func__Ø000))), unsafe.Pointer(str(9660)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68681), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInBackupØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68681), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInBackupØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
return bool2int((_p.X7) != i32(0))
}
-var _sqlite3BtreeIsInBackupØ00__func__Ø000 [23]int8 // -
+var _sqlite3BtreeIsInBackupØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeIsInBackupØ00__func__Ø000[0], str(8476), 23)
+ crt.Xstrncpy(nil, &_sqlite3BtreeIsInBackupØ00__func__Ø000[0], str(9662), 23)
}
-func _sqlite3ErrorWithMsg(tls *crt.TLS, _db *Xsqlite3, _err_code int32, _zFormat *int8, args ...interface{}) { // sqlite3.c:27834:1
- var _2_z *int8 // sqlite3.c:27841:10
- _ = _2_z
- var _2_ap []interface{} // sqlite3.c:27842:13
- _ = _2_ap
+// Set the most recent error code and error string for the sqlite
+// handle "db". The error code is set to "err_code".
+//
+// If it is not NULL, string zFormat specifies the format of the
+// error string in the style of the printf functions: The following
+// format characters are allowed:
+//
+// %s Insert a string
+// %z A string that should be freed after use
+// %d Insert an integer
+// %T Insert a token
+// %S Insert the first element of a SrcList
+//
+// zFormat and any string tokens that follow it are assumed to be
+// encoded in UTF-8.
+//
+// To clear the most recent error for sqlite handle "db", sqlite3Error
+// should be called with err_code set to SQLITE_OK and zFormat set
+// to NULL.
+func _sqlite3ErrorWithMsg(tls *crt.TLS, _db *Xsqlite3, _err_code int32, _zFormat *int8, args ...interface{}) {
+ var _2_z *int8
+ var _2_ap []interface{}
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27835), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ErrorWithMsgØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27835), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ErrorWithMsgØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(48 /* X10 */))) = _err_code
_sqlite3SystemError(tls, _db, _err_code)
- if _zFormat != nil {
- goto _2
+ if _zFormat == nil {
+ _sqlite3Error(tls, _db, _err_code)
+ goto _3
}
-
- _sqlite3Error(tls, _db, _err_code)
- goto _3
-
-_2:
- if (*XMem)(_db.X56) == nil && store18((**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(240 /* X56 */))))), _sqlite3ValueNew(tls, _db)) == nil {
- goto _5
+ if ((*XMem)(_db.X56) != nil) || (store20((**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(240 /* X56 */))))), _sqlite3ValueNew(tls, _db)) != nil) {
+ _2_ap = args
+ _2_z = _sqlite3VMPrintf(tls, _db, _zFormat, _2_ap)
+ _2_ap = nil
+ _sqlite3ValueSetStr(tls, (*XMem)(_db.X56), i32(-1), (unsafe.Pointer)(_2_z), uint8(i32(1)), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))
}
-
- _2_ap = args
- _2_z = _sqlite3VMPrintf(tls, _db, _zFormat, _2_ap)
- _2_ap = nil
- _sqlite3ValueSetStr(tls, (*XMem)(_db.X56), i32(-1), (unsafe.Pointer)(_2_z), uint8(i32(1)), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))
-_5:
_3:
}
-var _sqlite3ErrorWithMsgØ00__func__Ø000 [20]int8 // -
+var _sqlite3ErrorWithMsgØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ErrorWithMsgØ00__func__Ø000[0], str(8500), 20)
+ crt.Xstrncpy(nil, &_sqlite3ErrorWithMsgØ00__func__Ø000[0], str(9685), 20)
}
-func _sqlite3ValueNew(tls *crt.TLS, _db *Xsqlite3) (r0 *XMem) { // sqlite3.c:70774:1
- var _p *XMem // sqlite3.c:70775:7
- _ = _p
+// Create a new sqlite3_value object.
+func _sqlite3ValueNew(tls *crt.TLS, _db *Xsqlite3) (r0 *XMem) {
+ var _p *XMem
_p = (*XMem)(_sqlite3DbMallocZero(tls, _db, uint64(u32(48))))
- if _p == nil {
- goto _0
+ if _p != nil {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = uint16(i32(1))
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))))) = _db
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = uint16(i32(1))
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))))) = _db
-_0:
return _p
}
-func _sqlite3DbMallocZero(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) { // sqlite3.c:24810:1
- var _p unsafe.Pointer // sqlite3.c:24811:8
- _ = _p
+// Allocate and zero memory. If the allocation fails, make
+// the mallocFailed flag in the connection pointer.
+func _sqlite3DbMallocZero(tls *crt.TLS, _db *Xsqlite3, _n uint64) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
_p = _sqlite3DbMallocRaw(tls, _db, _n)
- if _p == nil {
- goto _0
+ if _p != nil {
+ crt.Xmemset(tls, _p, i32(0), uint32(_n))
}
-
- crt.Xmemset(tls, _p, i32(0), uint32(_n))
-_0:
return _p
}
-func _sqlite3ValueSetStr(tls *crt.TLS, _v *XMem, _n int32, _z unsafe.Pointer, _enc uint8, _xDel func(*crt.TLS, unsafe.Pointer)) { // sqlite3.c:71375:1
- if _v == nil {
- goto _0
- }
-
- _sqlite3VdbeMemSetStr(tls, _v, (*int8)(_z), _n, _enc, _xDel)
-_0:
-}
-
-func _sqlite3LeaveMutexAndCloseZombie(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:141586:1
- var _i *XHashElem // sqlite3.c:141587:12
- _ = _i
- var _j int32 // sqlite3.c:141588:7
- _ = _j
- var _2_pDb *XDb // sqlite3.c:141616:15
- _ = _2_pDb
- var _6_pNext *XFuncDef // sqlite3.c:141642:13
- _ = _6_pNext
- var _6_p *XFuncDef // sqlite3.c:141642:21
- _ = _6_p
- var _8_pColl *XCollSeq // sqlite3.c:141653:13
- _ = _8_pColl
- var _11_pMod *XModule // sqlite3.c:141665:12
- _ = _11_pMod
- if (_db.X28) == uint32(i32(1691352191)) && _connectionIsBusy(tls, _db) == 0 {
- goto _1
+// Change the string value of an sqlite3_value object
+func _sqlite3ValueSetStr(tls *crt.TLS, _v *XMem, _n int32, _z unsafe.Pointer, _enc uint8, _xDel func(*crt.TLS, unsafe.Pointer)) {
+ if _v != nil {
+ _sqlite3VdbeMemSetStr(tls, _v, (*int8)(_z), _n, _enc, _xDel)
+ }
+}
+
+// Close the mutex on database connection db.
+//
+// Furthermore, if database connection db is a zombie (meaning that there
+// has been a prior call to sqlite3_close(db) or sqlite3_close_v2(db)) and
+// every sqlite3_stmt has now been finalized and every sqlite3_backup has
+// finished, then free all resources.
+func _sqlite3LeaveMutexAndCloseZombie(tls *crt.TLS, _db *Xsqlite3) {
+ var _j int32
+ var _2_pDb *XDb
+ var _i *XHashElem
+ var _6_pNext, _6_p *XFuncDef
+ var _8_pColl *XCollSeq
+ var _11_pMod *XModule
+ if ((_db.X28) != uint32(i32(1691352191))) || _connectionIsBusy(tls, _db) != 0 {
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
+ return
}
-
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
- return
-
-_1:
_sqlite3RollbackAll(tls, _db, i32(0))
_sqlite3CloseSavepoints(tls, _db)
_j = i32(0)
@@ -11896,42 +11930,33 @@ _2:
if _j >= (_db.X5) {
goto _5
}
-
_2_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_j)))
if (*XBtree)(_2_pDb.X1) == nil {
goto _6
}
-
_sqlite3BtreeClose(tls, (*XBtree)(_2_pDb.X1))
*(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pDb)) + uintptr(4 /* X1 */))))) = nil
- if _j == i32(1) {
- goto _7
+ if _j != i32(1) {
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pDb)) + uintptr(12 /* X4 */))))) = nil
}
-
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pDb)) + uintptr(12 /* X4 */))))) = nil
-_7:
_6:
_j += 1
goto _2
-
_5:
- if (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4) == nil {
- goto _8
+ if (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4) != nil {
+ _sqlite3SchemaClear(tls, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4)
}
-
- _sqlite3SchemaClear(tls, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4)
-_8:
_sqlite3VtabUnlockList(tls, _db)
_sqlite3CollapseDatabaseArray(tls, _db)
func() {
if (_db.X5) > i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141633), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000))), unsafe.Pointer(str(8520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141633), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000))), unsafe.Pointer(str(9705)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XDb)(_db.X4) != (*XDb)(unsafe.Pointer((*[2]XDb)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(388 /* X72 */))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000))), unsafe.Pointer(str(8532)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000))), unsafe.Pointer(str(9716)))
crt.X__builtin_abort(tls)
}
}()
@@ -11940,7 +11965,6 @@ _13:
if _i == nil {
goto _16
}
-
_6_p = (*XFuncDef)(_i.X2)
_17:
_functionDestroy(tls, _db, _6_p)
@@ -11950,10 +11974,8 @@ _17:
if _6_p != nil {
goto _17
}
-
_i = (*XHashElem)(_i.X0)
goto _13
-
_16:
_sqlite3HashClear(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(344 /* X69 */))))
_i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(360 /* X70 */))).X2)
@@ -11961,28 +11983,21 @@ _18:
if _i == nil {
goto _21
}
-
_8_pColl = (*XCollSeq)(_i.X2)
_j = i32(0)
_22:
if _j >= i32(3) {
goto _25
}
-
- if ((*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pColl)) + 20*uintptr(_j))).X4) == nil {
- goto _26
+ if ((*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pColl)) + 20*uintptr(_j))).X4) != nil {
+ ((*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pColl)) + 20*uintptr(_j))).X4)(tls, (*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pColl))+20*uintptr(_j))).X2)
}
-
- ((*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pColl)) + 20*uintptr(_j))).X4)(tls, (*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pColl))+20*uintptr(_j))).X2)
-_26:
_j += 1
goto _22
-
_25:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_8_pColl))
_i = (*XHashElem)(_i.X0)
goto _18
-
_21:
_sqlite3HashClear(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(360 /* X70 */))))
_i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(316 /* X65 */))).X2)
@@ -11990,19 +12005,14 @@ _27:
if _i == nil {
goto _30
}
-
_11_pMod = (*XModule)(_i.X2)
- if (_11_pMod.X3) == nil {
- goto _31
+ if (_11_pMod.X3) != nil {
+ (_11_pMod.X3)(tls, _11_pMod.X2)
}
-
- (_11_pMod.X3)(tls, _11_pMod.X2)
-_31:
_sqlite3VtabEponymousTableClear(tls, _db, _11_pMod)
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_11_pMod))
_i = (*XHashElem)(_i.X0)
goto _27
-
_30:
_sqlite3HashClear(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))))
_sqlite3Error(tls, _db, i32(0))
@@ -12015,70 +12025,57 @@ _30:
Xsqlite3_mutex_free(tls, (*Xsqlite3_mutex)(_db.X3))
func() {
if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000))), unsafe.Pointer(str(8556)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000))), unsafe.Pointer(str(9739)))
crt.X__builtin_abort(tls)
}
}()
- if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X2) == 0 {
- goto _34
+ if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X2) != 0 {
+ Xsqlite3_free(tls, (*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X7)
}
-
- Xsqlite3_free(tls, (*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X7)
-_34:
Xsqlite3_free(tls, (unsafe.Pointer)(_db))
}
-func _sqlite3RollbackAll(tls *crt.TLS, _db *Xsqlite3, _tripCode int32) { // sqlite3.c:141709:1
- var _i int32 // sqlite3.c:141710:7
- _ = _i
- var _inTrans int32 // sqlite3.c:141711:7
- _ = _inTrans
- var _schemaChange int32 // sqlite3.c:141712:7
- _ = _schemaChange
- var _1_p *XBtree // sqlite3.c:141726:11
- _ = _1_p
+// Rollback all database files. If tripCode is not SQLITE_OK, then
+// any write cursors are invalidated ("tripped" - as in "tripping a circuit
+// breaker") and made to return tripCode if there are any further
+// attempts to use that cursor. Read cursors remain open and valid
+// but are "saved" in case the table pages are moved around.
+func _sqlite3RollbackAll(tls *crt.TLS, _db *Xsqlite3, _tripCode int32) {
+ var _i, _inTrans, _schemaChange int32
+ var _1_p *XBtree
_inTrans = i32(0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141713), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RollbackAllØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141713), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RollbackAllØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3BeginBenignMalloc(tls)
_sqlite3BtreeEnterAll(tls, _db)
- _schemaChange = bool2int((((_db.X6) & i32(2)) != i32(0)) && (int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == i32(0)))
+ _schemaChange = bool2int((((_db.X6) & i32(2)) != i32(0)) && (int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == i32(0)))
_i = i32(0)
_3:
if _i >= (_db.X5) {
goto _6
}
-
_1_p = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
if _1_p == nil {
goto _7
}
-
- if _sqlite3BtreeIsInTrans(tls, _1_p) == 0 {
- goto _8
+ if _sqlite3BtreeIsInTrans(tls, _1_p) != 0 {
+ _inTrans = i32(1)
}
-
- _inTrans = i32(1)
-_8:
_sqlite3BtreeRollback(tls, _1_p, _tripCode, bool2int(_schemaChange == 0))
_7:
_i += 1
goto _3
-
_6:
_sqlite3VtabRollback(tls, _db)
_sqlite3EndBenignMalloc(tls)
- if ((_db.X6)&i32(2)) == i32(0) || int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
- goto _10
+ if (((_db.X6) & i32(2)) != i32(0)) && (int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == i32(0)) {
+ _sqlite3ExpirePreparedStatements(tls, _db)
+ _sqlite3ResetAllSchemasOfConnection(tls, _db)
}
-
- _sqlite3ExpirePreparedStatements(tls, _db)
- _sqlite3ResetAllSchemasOfConnection(tls, _db)
-_10:
_sqlite3BtreeLeaveAll(tls, _db)
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(436 /* X77 */))) = int64(i32(0))
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */))) = int64(i32(0))
@@ -12087,70 +12084,57 @@ _10:
*p = (*p) & i32(-33554433)
sink1 = *p
}
- if (_db.X48) == nil || _inTrans == 0 && (_db.X15) != 0 {
- goto _13
+ if ((_db.X48) != nil) && (_inTrans != 0 || ((_db.X15) == 0)) {
+ (_db.X48)(tls, _db.X47)
}
-
- (_db.X48)(tls, _db.X47)
-_13:
}
-var _sqlite3RollbackAllØ00__func__Ø000 [19]int8 // -
+var _sqlite3RollbackAllØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3RollbackAllØ00__func__Ø000[0], str(8580), 19)
+ crt.Xstrncpy(nil, &_sqlite3RollbackAllØ00__func__Ø000[0], str(9761), 19)
}
-func _sqlite3BeginBenignMalloc(tls *crt.TLS) { // sqlite3.c:20570:1
- if (_sqlite3Hooks.X0) == nil {
- goto _0
- }
-
- (_sqlite3Hooks.X0)(tls)
-_0:
-}
-
-var _sqlite3Hooks TBenignMallocHooks // sqlite3.c:20534:3
-
-func _sqlite3BtreeIsInTrans(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:68640:1
+// Return non-zero if a transaction is active.
+func _sqlite3BtreeIsInTrans(tls *crt.TLS, _p *XBtree) (r0 int32) {
func() {
if _p != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68641), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInTransØ00__func__Ø000))), unsafe.Pointer(str(8600)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68641), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInTransØ00__func__Ø000))), unsafe.Pointer(str(9780)))
crt.X__builtin_abort(tls)
}
}()
return bool2int((_p != nil) && (int32(_p.X2) == i32(2)))
}
-var _sqlite3BtreeIsInTransØ00__func__Ø000 [22]int8 // -
+var _sqlite3BtreeIsInTransØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeIsInTransØ00__func__Ø000[0], str(8644), 22)
+ crt.Xstrncpy(nil, &_sqlite3BtreeIsInTransØ00__func__Ø000[0], str(9821), 22)
}
-func _sqlite3BtreeRollback(tls *crt.TLS, _p *XBtree, _tripCode int32, _writeOnly int32) (r0 int32) { // sqlite3.c:63032:1
- var _rc int32 // sqlite3.c:63033:7
- _ = _rc
- var _pBt *XBtShared // sqlite3.c:63034:12
- _ = _pBt
- var _pPage1 *XMemPage // sqlite3.c:63035:11
- _ = _pPage1
- var _3_rc2 int32 // sqlite3.c:63047:9
- _ = _3_rc2
- var _4_rc2 int32 // sqlite3.c:63054:9
- _ = _4_rc2
- var _6_nPage int32 // sqlite3.c:63066:11
- _ = _6_nPage
+// Rollback the transaction in progress.
+//
+// If tripCode is not SQLITE_OK then cursors will be invalidated (tripped).
+// Only write cursors are tripped if writeOnly is true but all cursors are
+// tripped if writeOnly is false. Any attempt to use
+// a tripped cursor will result in an error.
+//
+// This will release the write lock on the database file. If there
+// are no active cursors, it also releases the read lock.
+func _sqlite3BtreeRollback(tls *crt.TLS, _p *XBtree, _tripCode int32, _writeOnly int32) (r0 int32) {
+ var _rc, _3_rc2, _4_rc2, _6_nPage int32
+ var _pBt *XBtShared
+ var _pPage1 *XMemPage
_pBt = (*XBtShared)(_p.X1)
func() {
if _writeOnly != i32(1) && _writeOnly != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(8668)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(9843)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _tripCode != i32(516) && _tripCode != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63038), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(8700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63038), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(9872)))
crt.X__builtin_abort(tls)
}
}()
@@ -12158,83 +12142,66 @@ func _sqlite3BtreeRollback(tls *crt.TLS, _p *XBtree, _tripCode int32, _writeOnly
if _tripCode != i32(0) {
goto _6
}
-
_rc = store1(&_tripCode, _saveAllCursors(tls, _pBt, uint32(i32(0)), nil))
- if _rc == 0 {
- goto _7
+ if _rc != 0 {
+ _writeOnly = i32(0)
}
-
- _writeOnly = i32(0)
-_7:
goto _8
-
_6:
_rc = i32(0)
_8:
if _tripCode == 0 {
goto _9
}
-
_3_rc2 = _sqlite3BtreeTripAllCursors(tls, _p, _tripCode, _writeOnly)
func() {
if _rc != i32(0) && (_writeOnly != i32(0) || _3_rc2 != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63048), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(8756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63048), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(9927)))
crt.X__builtin_abort(tls)
}
}()
- if _3_rc2 == i32(0) {
- goto _14
+ if _3_rc2 != i32(0) {
+ _rc = _3_rc2
}
-
- _rc = _3_rc2
-_14:
_9:
func() {
if int32((*XBtShared)(_p.X1).X8) == i32(0) && ((*XBtShared)(_p.X1).X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(8808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(9977)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XBtShared)(_p.X1).X8) < int32(_p.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(8872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(10038)))
crt.X__builtin_abort(tls)
}
}()
if int32(_p.X2) != i32(2) {
goto _20
}
-
func() {
if i32(2) != int32(_pBt.X8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(8908)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(10072)))
crt.X__builtin_abort(tls)
}
}()
_4_rc2 = _sqlite3PagerRollback(tls, (*XPager)(_pBt.X0))
- if _4_rc2 == i32(0) {
- goto _23
+ if _4_rc2 != i32(0) {
+ _rc = _4_rc2
}
-
- _rc = _4_rc2
-_23:
if _btreeGetPage(tls, _pBt, uint32(i32(1)), &_pPage1, i32(0)) != i32(0) {
goto _24
}
-
_6_nPage = int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(28))))))+uintptr(unsafe.Pointer(_pPage1.X19))))))
- if _6_nPage != i32(0) {
- goto _25
+ if _6_nPage == i32(0) {
+ _sqlite3PagerPagecount(tls, (*XPager)(_pBt.X0), &_6_nPage)
}
-
- _sqlite3PagerPagecount(tls, (*XPager)(_pBt.X0), &_6_nPage)
-_25:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) = uint32(_6_nPage)
_releasePage(tls, _pPage1)
_24:
func() {
if _countValidCursors(tls, _pBt, i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63073), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(8940)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63073), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRollbackØ00__func__Ø000))), unsafe.Pointer(str(10104)))
crt.X__builtin_abort(tls)
}
}()
@@ -12246,24 +12213,42 @@ _20:
return _rc
}
-var _sqlite3BtreeRollbackØ00__func__Ø000 [21]int8 // -
+var _sqlite3BtreeRollbackØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeRollbackØ00__func__Ø000[0], str(8972), 21)
+ crt.Xstrncpy(nil, &_sqlite3BtreeRollbackØ00__func__Ø000[0], str(10133), 21)
}
-func _saveAllCursors(tls *crt.TLS, _pBt *XBtShared, _iRoot uint32, _pExcept *XBtCursor) (r0 int32) { // sqlite3.c:59738:1
- var _p *XBtCursor // sqlite3.c:59739:12
- _ = _p
+// Save the positions of all cursors (except pExcept) that are open on
+// the table with root-page iRoot. "Saving the cursor position" means that
+// the location in the btree is remembered in such a way that it can be
+// moved back to the same spot after the btree has been modified. This
+// routine is called just before cursor pExcept is used to modify the
+// table, for example in BtreeDelete() or BtreeInsert().
+//
+// If there are two or more cursors on the same btree, then all such
+// cursors should have their BTCF_Multiple flag set. The btreeCursor()
+// routine enforces that rule. This routine only needs to be called in
+// the uncommon case when pExpect has the BTCF_Multiple flag set.
+//
+// If pExpect!=NULL and if no other cursors are found on the same root-page,
+// then the BTCF_Multiple flag on pExpect is cleared, to avoid another
+// pointless call to this routine.
+//
+// Implementation note: This routine merely checks to see if any cursors
+// need to be saved. It calls out to saveCursorsOnList() in the (unusual)
+// event that cursors are in need to being saved.
+func _saveAllCursors(tls *crt.TLS, _pBt *XBtShared, _iRoot uint32, _pExcept *XBtCursor) (r0 int32) {
+ var _p *XBtCursor
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59740), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59740), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pExcept != nil && (*XBtShared)(_pExcept.X1) != _pBt {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59741), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(8996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59741), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(10154)))
crt.X__builtin_abort(tls)
}
}()
@@ -12272,64 +12257,49 @@ _5:
if _p == nil {
goto _8
}
-
- if _p == _pExcept || uint32(i32(0)) != _iRoot && (_p.X7) != _iRoot {
- goto _11
+ if (_p != _pExcept) && ((uint32(i32(0)) == _iRoot) || ((_p.X7) == _iRoot)) {
+ goto _8
}
-
- goto _8
-
-_11:
_p = (*XBtCursor)(_p.X2)
goto _5
-
_8:
- if _p == nil {
- goto _12
- }
- return _saveCursorsOnList(tls, _p, _iRoot, _pExcept)
-
-_12:
- if _pExcept == nil {
- goto _13
+ if _p != nil {
+ return _saveCursorsOnList(tls, _p, _iRoot, _pExcept)
}
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExcept)) + uintptr(60 /* X10 */)))
- *p = uint8(int32(*p) & i32(-33))
- sink2 = *p
+ if _pExcept != nil {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExcept)) + uintptr(60 /* X10 */)))
+ *p = uint8(int32(*p) & i32(-33))
+ sink2 = *p
+ }
}
-_13:
return i32(0)
}
-var _saveAllCursorsØ00__func__Ø000 [15]int8 // -
+var _saveAllCursorsØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_saveAllCursorsØ00__func__Ø000[0], str(9028), 15)
+ crt.Xstrncpy(nil, &_saveAllCursorsØ00__func__Ø000[0], str(10186), 15)
}
-func _saveCursorsOnList(tls *crt.TLS, _p *XBtCursor, _iRoot uint32, _pExcept *XBtCursor) (r0 int32) { // sqlite3.c:59755:1
- var _3_rc int32 // sqlite3.c:59763:13
- _ = _3_rc
+// This helper routine to saveAllCursors does the actual work of saving
+// the cursors if and when a cursor is found that actually requires saving.
+// The common case is that no cursors need to be saved, so this routine is
+// broken out from its caller to avoid unnecessary stack pointer movement.
+func _saveCursorsOnList(tls *crt.TLS, _p *XBtCursor, _iRoot uint32, _pExcept *XBtCursor) (r0 int32) {
+ var _3_rc int32
_0:
if _p == _pExcept || uint32(i32(0)) != _iRoot && (_p.X7) != _iRoot {
goto _3
}
-
if int32(_p.X12) != i32(1) && int32(_p.X12) != i32(2) {
goto _5
}
-
_3_rc = _saveCursorPosition(tls, _p)
- if i32(0) == _3_rc {
- goto _6
+ if i32(0) != _3_rc {
+ return _3_rc
}
- return _3_rc
-
-_6:
goto _7
-
_5:
_btreeReleaseAllCursorPages(tls, _p)
_7:
@@ -12341,45 +12311,42 @@ _3:
return i32(0)
}
-func _saveCursorPosition(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:59691:1
- var _rc int32 // sqlite3.c:59692:7
- _ = _rc
+// Save the current cursor position in the variables BtCursor.nKey
+// and BtCursor.pKey. The cursor's state is set to CURSOR_REQUIRESEEK.
+//
+// The caller must ensure that the cursor is valid (has eState==CURSOR_VALID)
+// prior to calling this routine.
+func _saveCursorPosition(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
+ var _rc int32
func() {
if i32(1) != int32(_pCur.X12) && i32(2) != int32(_pCur.X12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59694), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(9044)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59694), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(10201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if unsafe.Pointer(nil) != (_pCur.X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59695), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(9104)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59695), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(10261)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _cursorHoldsMutex(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59696), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(9120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59696), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(10275)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pCur.X12) != i32(2) {
- goto _7
+ if int32(_pCur.X12) == i32(2) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(1))
+ goto _8
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(1))
- goto _8
-
-_7:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(0)
_8:
_rc = _saveCursorKey(tls, _pCur)
- if _rc != i32(0) {
- goto _9
+ if _rc == i32(0) {
+ _btreeReleaseAllCursorPages(tls, _pCur)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(3))
}
-
- _btreeReleaseAllCursorPages(tls, _pCur)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(3))
-_9:
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
*p = uint8(int32(*p) & i32(-15))
@@ -12388,102 +12355,105 @@ _9:
return _rc
}
-var _saveCursorPositionØ00__func__Ø000 [19]int8 // -
+var _saveCursorPositionØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_saveCursorPositionØ00__func__Ø000[0], str(9144), 19)
+ crt.Xstrncpy(nil, &_saveCursorPositionØ00__func__Ø000[0], str(10298), 19)
}
-func _cursorHoldsMutex(tls *crt.TLS, _p *XBtCursor) (r0 int32) { // sqlite3.c:59484:1
+func _cursorHoldsMutex(tls *crt.TLS, _p *XBtCursor) (r0 int32) {
return Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_p.X1).X21))
}
-func _saveCursorKey(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:59655:1
- var _rc int32 // sqlite3.c:59656:7
- _ = _rc
- var _2_pKey unsafe.Pointer // sqlite3.c:59666:10
- _ = _2_pKey
+// The cursor passed as the only argument must point to a valid entry
+// when this function is called (i.e. have eState==CURSOR_VALID). This
+// function saves the current cursor key in variables pCur->nKey and
+// pCur->pKey. SQLITE_OK is returned if successful or an SQLite error
+// code otherwise.
+//
+// If the cursor is open on an intkey table, then the integer key
+// (the rowid) is stored in pCur->nKey and pCur->pKey is left set to
+// NULL. If the cursor is open on a non-intkey table, then pCur->pKey is
+// set to point to a malloced buffer pCur->nKey bytes in size containing
+// the key.
+func _saveCursorKey(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
+ var _rc int32
+ var _2_pKey unsafe.Pointer
_rc = i32(0)
func() {
if i32(1) != int32(_pCur.X12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59657), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(9164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59657), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(10317)))
crt.X__builtin_abort(tls)
}
}()
func() {
if unsafe.Pointer(nil) != (_pCur.X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59658), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(9104)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59658), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(10261)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _cursorHoldsMutex(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59659), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(9120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59659), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(10275)))
crt.X__builtin_abort(tls)
}
}()
- if (_pCur.X15) == 0 {
- goto _6
+ if (_pCur.X15) != 0 {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(36 /* X5 */))) = _sqlite3BtreeIntegerKey(tls, _pCur)
+ goto _7
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(36 /* X5 */))) = _sqlite3BtreeIntegerKey(tls, _pCur)
- goto _7
-
-_6:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(36 /* X5 */))) = int64(_sqlite3BtreePayloadSize(tls, _pCur))
_2_pKey = _sqlite3Malloc(tls, uint64(_pCur.X5))
if _2_pKey == nil {
goto _8
}
-
_rc = _sqlite3BtreePayload(tls, _pCur, uint32(i32(0)), uint32(int32(_pCur.X5)), _2_pKey)
- if _rc != i32(0) {
- goto _9
+ if _rc == i32(0) {
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(44 /* X6 */))) = _2_pKey
+ goto _10
}
-
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(44 /* X6 */))) = _2_pKey
- goto _10
-
-_9:
Xsqlite3_free(tls, _2_pKey)
_10:
goto _11
-
_8:
_rc = _sqlite3NomemError(tls, i32(59677))
_11:
_7:
func() {
if (_pCur.X15) != 0 && (_pCur.X6) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59680), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(9192)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59680), unsafe.Pointer((*int8)(unsafe.Pointer(&_saveCursorKeyØ00__func__Ø000))), unsafe.Pointer(str(10344)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-var _saveCursorKeyØ00__func__Ø000 [14]int8 // -
+var _saveCursorKeyØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_saveCursorKeyØ00__func__Ø000[0], str(9224), 14)
+ crt.Xstrncpy(nil, &_saveCursorKeyØ00__func__Ø000[0], str(10376), 14)
}
-func _sqlite3BtreeIntegerKey(tls *crt.TLS, _pCur *XBtCursor) (r0 int64) { // sqlite3.c:63391:1
+// Return the value of the integer key or "rowid" for a table btree.
+// This routine is only valid for a cursor that is pointing into a
+// ordinary table btree. If the cursor points to an index btree or
+// is invalid, the result of this routine is undefined.
+func _sqlite3BtreeIntegerKey(tls *crt.TLS, _pCur *XBtCursor) (r0 int64) {
func() {
if _cursorHoldsMutex(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63392), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegerKeyØ00__func__Ø000))), unsafe.Pointer(str(9120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63392), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegerKeyØ00__func__Ø000))), unsafe.Pointer(str(10275)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63393), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegerKeyØ00__func__Ø000))), unsafe.Pointer(str(9240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63393), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegerKeyØ00__func__Ø000))), unsafe.Pointer(str(10390)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pCur.X15) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63394), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegerKeyØ00__func__Ø000))), unsafe.Pointer(str(9268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63394), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegerKeyØ00__func__Ø000))), unsafe.Pointer(str(10417)))
crt.X__builtin_abort(tls)
}
}()
@@ -12492,71 +12462,72 @@ func _sqlite3BtreeIntegerKey(tls *crt.TLS, _pCur *XBtCursor) (r0 int64) { // sql
return (*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16))).X0
}
-var _sqlite3BtreeIntegerKeyØ00__func__Ø000 [23]int8 // -
+var _sqlite3BtreeIntegerKeyØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeIntegerKeyØ00__func__Ø000[0], str(9284), 23)
+ crt.Xstrncpy(nil, &_sqlite3BtreeIntegerKeyØ00__func__Ø000[0], str(10433), 23)
}
-func _getCellInfo(tls *crt.TLS, _pCur *XBtCursor) { // sqlite3.c:63360:1
- var _1_iPage int32 // sqlite3.c:63362:9
- _ = _1_iPage
- if int32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X4) != i32(0) {
- goto _0
- }
-
- _1_iPage = int32(_pCur.X14)
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
- *p = uint8(int32(*p) | i32(2))
- sink2 = *p
+func _getCellInfo(tls *crt.TLS, _pCur *XBtCursor) {
+ var _1_iPage int32
+ if int32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X4) == i32(0) {
+ _1_iPage = int32(_pCur.X14)
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
+ *p = uint8(int32(*p) | i32(2))
+ sink2 = *p
+ }
+ _btreeParseCell(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_1_iPage))), int32(_pCur.X16), (*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))))
+ goto _1
}
- _btreeParseCell(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_1_iPage))), int32(_pCur.X16), (*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))))
- goto _1
-
-_0:
_assertCellInfo(tls, _pCur)
_1:
}
-func _btreeParseCell(tls *crt.TLS, _pPage *XMemPage, _iCell int32, _pInfo *XCellInfo) { // sqlite3.c:60236:1
+func _btreeParseCell(tls *crt.TLS, _pPage *XMemPage, _iCell int32, _pInfo *XCellInfo) {
(*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
}{(_pPage.X25)})))(tls, _pPage, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*_iCell))))) + 1*uintptr(i32(0)))))<= int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63758), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePayloadØ00__func__Ø000))), unsafe.Pointer(str(9452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63758), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePayloadØ00__func__Ø000))), unsafe.Pointer(str(10597)))
crt.X__builtin_abort(tls)
}
}()
return _accessPayload(tls, _pCur, _offset, _amt, (*uint8)(_pBuf), i32(0))
}
-var _sqlite3BtreePayloadØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreePayloadØ00__func__Ø000[0], str(9496), 20)
-}
-
-func _accessPayload(tls *crt.TLS, _pCur *XBtCursor, _offset uint32, _amt uint32, _pBuf *uint8, _eOp int32) (r0 int32) { // sqlite3.c:63552:1
- var _aPayload *uint8 // sqlite3.c:63559:17
- _ = _aPayload
- var _rc int32 // sqlite3.c:63560:7
- _ = _rc
- var _iIdx int32 // sqlite3.c:63561:7
- _ = _iIdx
- var _pPage *XMemPage // sqlite3.c:63562:11
- _ = _pPage
- var _pBt *XBtShared // sqlite3.c:63563:12
- _ = _pBt
- var _2_a int32 // sqlite3.c:63590:9
- _ = _2_a
- var _5_ovflSize uint32 // sqlite3.c:63604:15
- _ = _5_ovflSize
- var _5_nextPage uint32 // sqlite3.c:63605:10
- _ = _5_nextPage
- var _6_nOvfl int32 // sqlite3.c:63617:11
- _ = _6_nOvfl
- var _7_aNew *uint32 // sqlite3.c:63619:14
- _ = _7_aNew
- var _16_a int32 // sqlite3.c:63673:13
- _ = _16_a
- var _18_pDbPage *XPgHdr // sqlite3.c:63710:18
- _ = _18_pDbPage
+var _sqlite3BtreePayloadØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreePayloadØ00__func__Ø000[0], str(10639), 20)
+}
+
+// This function is used to read or overwrite payload information
+// for the entry that the pCur cursor is pointing to. The eOp
+// argument is interpreted as follows:
+//
+// 0: The operation is a read. Populate the overflow cache.
+// 1: The operation is a write. Populate the overflow cache.
+//
+// A total of "amt" bytes are read or written beginning at "offset".
+// Data is read to or from the buffer pBuf.
+//
+// The content being read or written might appear on the main page
+// or be scattered out on multiple overflow pages.
+//
+// If the current cursor entry uses one or more overflow pages
+// this function may allocate space for and lazily populate
+// the overflow page-list cache array (BtCursor.aOverflow).
+// Subsequent calls use this cache to make seeking to the supplied offset
+// more efficient.
+//
+// Once an overflow page-list cache has been allocated, it must be
+// invalidated if some other cursor writes to the same table, or if
+// the cursor is moved to a different row. Additionally, in auto-vacuum
+// mode, the following events may invalidate an overflow page-list cache.
+//
+// * An incremental vacuum,
+// * A commit in auto_vacuum="full" mode,
+// * Creating a table (may require moving an overflow page).
+func _accessPayload(tls *crt.TLS, _pCur *XBtCursor, _offset uint32, _amt uint32, _pBuf *uint8, _eOp int32) (r0 int32) {
+ var _rc, _iIdx, _2_a, _6_nOvfl, _16_a int32
+ var _5_ovflSize, _5_nextPage uint32
+ var _aPayload *uint8
+ var _7_aNew *uint32
+ var _18_pDbPage *XPgHdr
+ var _pBt *XBtShared
+ var _pPage *XMemPage
_rc = i32(0)
_iIdx = i32(0)
_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
_pBt = (*XBtShared)(_pCur.X1)
func() {
if _pPage == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63568), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9516)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63568), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10659)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _eOp != i32(0) && _eOp != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63569), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63569), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10665)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63570), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63570), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10390)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X16) >= int32(_pPage.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63571), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9544)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63571), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10682)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _cursorHoldsMutex(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63572), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63572), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10275)))
crt.X__builtin_abort(tls)
}
}()
@@ -12668,39 +12664,32 @@ func _accessPayload(tls *crt.TLS, _pCur *XBtCursor, _offset uint32, _amt uint32,
_aPayload = (*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X1
func() {
if (_offset + _amt) > ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63576), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63576), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10704)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer(_aPayload)) <= uintptr(unsafe.Pointer(_pPage.X19)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63578), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9604)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63578), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10738)))
crt.X__builtin_abort(tls)
}
}()
- if uint32(int32((uintptr(unsafe.Pointer(_aPayload))-uintptr(unsafe.Pointer(_pPage.X19)))/1)) <= ((_pBt.X16) - uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3)) {
- goto _15
+ if uint32(int32((uintptr(unsafe.Pointer(_aPayload))-uintptr(unsafe.Pointer(_pPage.X19)))/1)) > ((_pBt.X16) - uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3)) {
+ return _sqlite3CorruptError(tls, i32(63585))
}
- return _sqlite3CorruptError(tls, i32(63585))
-
-_15:
if _offset >= uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3) {
goto _16
}
-
_2_a = int32(_amt)
- if (uint32(_2_a) + _offset) <= uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3) {
- goto _17
+ if (uint32(_2_a) + _offset) > uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3) {
+ _2_a = int32(uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3) - _offset)
}
-
- _2_a = int32(uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3) - _offset)
-_17:
_rc = _copyPayload(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPayload))+1*uintptr(_offset)))), (unsafe.Pointer)(_pBuf), _2_a, _eOp, (*XPgHdr)(_pPage.X23))
_offset = uint32(i32(0))
{
p := &_pBuf
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_2_a)))
- sink11 = *p
+ sink13 = *p
}
{
p := &_amt
@@ -12708,7 +12697,6 @@ _17:
sink5 = *p
}
goto _18
-
_16:
{
p := &_offset
@@ -12719,25 +12707,19 @@ _18:
if _rc != i32(0) || _amt <= uint32(i32(0)) {
goto _20
}
-
_5_ovflSize = (_pBt.X16) - uint32(i32(4))
_5_nextPage = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPayload))+1*uintptr((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3))))
if (int32(_pCur.X10) & i32(4)) != i32(0) {
goto _21
}
-
_6_nOvfl = int32((((((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X2) - uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3)) + _5_ovflSize) - uint32(i32(1))) / _5_ovflSize)
if _6_nOvfl <= (_pCur.X8) {
goto _22
}
-
_7_aNew = (*uint32)(_sqlite3Realloc(tls, (unsafe.Pointer)(_pCur.X3), uint64(uint32(_6_nOvfl*i32(2))*u32(4))))
- if _7_aNew != nil {
- goto _23
+ if _7_aNew == nil {
+ return _sqlite3NomemError(tls, i32(63623))
}
- return _sqlite3NomemError(tls, i32(63623))
-
-_23:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(52 /* X8 */))) = _6_nOvfl * i32(2)
*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(12 /* X3 */))) = _7_aNew
_22:
@@ -12748,20 +12730,16 @@ _22:
sink2 = *p
}
goto _25
-
_21:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_offset/_5_ovflSize)))) == 0 {
- goto _26
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_offset/_5_ovflSize)))) != 0 {
+ _iIdx = int32(_offset / _5_ovflSize)
+ _5_nextPage = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx)))
+ _offset = _offset % _5_ovflSize
}
-
- _iIdx = int32(_offset / _5_ovflSize)
- _5_nextPage = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx)))
- _offset = _offset % _5_ovflSize
-_26:
_25:
func() {
if _rc != i32(0) || _amt <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63643), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63643), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10762)))
crt.X__builtin_abort(tls)
}
}()
@@ -12769,10 +12747,9 @@ _30:
if _5_nextPage == 0 {
goto _31
}
-
func() {
if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx)))) != uint32(i32(0)) && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx)))) != _5_nextPage && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63646), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63646), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10785)))
crt.X__builtin_abort(tls)
}
}()
@@ -12780,27 +12757,22 @@ _30:
if _offset < _5_ovflSize {
goto _36
}
-
func() {
if (int32(_pCur.X10) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63658), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9728)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63658), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10859)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)((*XBtree)(_pCur.X0).X0) != (*Xsqlite3)(_pBt.X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63659), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(9760)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63659), unsafe.Pointer((*int8)(unsafe.Pointer(&_accessPayloadØ00__func__Ø000))), unsafe.Pointer(str(10891)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx+i32(1))))) == 0 {
- goto _41
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx+i32(1))))) != 0 {
+ _5_nextPage = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx+i32(1))))
+ goto _42
}
-
- _5_nextPage = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur.X3)) + 4*uintptr(_iIdx+i32(1))))
- goto _42
-
-_41:
_rc = _getOverflowPage(tls, _pBt, _5_nextPage, nil, &_5_nextPage)
_42:
{
@@ -12809,243 +12781,230 @@ _42:
sink5 = *p
}
goto _43
-
_36:
_16_a = int32(_amt)
- if (uint32(_16_a) + _offset) <= _5_ovflSize {
- goto _44
+ if (uint32(_16_a) + _offset) > _5_ovflSize {
+ _16_a = int32(_5_ovflSize - _offset)
}
-
- _16_a = int32(_5_ovflSize - _offset)
-_44:
_rc = _sqlite3PagerGet(tls, (*XPager)(_pBt.X0), _5_nextPage, &_18_pDbPage, func() int32 {
if _eOp == i32(0) {
return i32(2)
}
return i32(0)
}())
- if _rc != i32(0) {
- goto _47
+ if _rc == i32(0) {
+ _aPayload = (*uint8)(_sqlite3PagerGetData(tls, _18_pDbPage))
+ _5_nextPage = _sqlite3Get4byte(tls, _aPayload)
+ _rc = _copyPayload(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPayload))+1*uintptr(_offset+uint32(i32(4)))))), (unsafe.Pointer)(_pBuf), _16_a, _eOp, _18_pDbPage)
+ _sqlite3PagerUnref(tls, _18_pDbPage)
+ _offset = uint32(i32(0))
}
-
- _aPayload = (*uint8)(_sqlite3PagerGetData(tls, _18_pDbPage))
- _5_nextPage = _sqlite3Get4byte(tls, _aPayload)
- _rc = _copyPayload(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPayload))+1*uintptr(_offset+uint32(i32(4)))))), (unsafe.Pointer)(_pBuf), _16_a, _eOp, _18_pDbPage)
- _sqlite3PagerUnref(tls, _18_pDbPage)
- _offset = uint32(i32(0))
-_47:
{
p := &_amt
*p = (*p) - uint32(_16_a)
sink5 = *p
}
- if _amt != uint32(i32(0)) {
- goto _48
+ if _amt == uint32(i32(0)) {
+ return _rc
}
- return _rc
-
-_48:
{
p := &_pBuf
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_16_a)))
- sink11 = *p
+ sink13 = *p
}
_43:
- if _rc == 0 {
- goto _49
+ if _rc != 0 {
+ goto _31
}
-
- goto _31
-
-_49:
_iIdx += 1
goto _30
-
_31:
_20:
- if _rc != i32(0) || _amt <= uint32(i32(0)) {
- goto _51
+ if (_rc == i32(0)) && (_amt > uint32(i32(0))) {
+ return _sqlite3CorruptError(tls, i32(63732))
}
- return _sqlite3CorruptError(tls, i32(63732))
-
-_51:
return _rc
}
-var _accessPayloadØ00__func__Ø000 [14]int8 // -
+var _accessPayloadØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_accessPayloadØ00__func__Ø000[0], str(9788), 14)
+ crt.Xstrncpy(nil, &_accessPayloadØ00__func__Ø000[0], str(10917), 14)
}
-func _sqlite3CorruptError(tls *crt.TLS, _lineno int32) (r0 int32) { // sqlite3.c:143795:1
- return _reportError(tls, i32(11), _lineno, str(9804))
+func _sqlite3CorruptError(tls *crt.TLS, _lineno int32) (r0 int32) {
+ return _reportError(tls, i32(11), _lineno, str(10931))
}
-func _copyPayload(tls *crt.TLS, _pPayload unsafe.Pointer, _pBuf unsafe.Pointer, _nByte int32, _eOp int32, _pDbPage *XPgHdr) (r0 int32) { // sqlite3.c:63502:1
- var _1_rc int32 // sqlite3.c:63511:9
- _ = _1_rc
+// Copy data from a buffer to a page, or from a page to a buffer.
+//
+// pPayload is a pointer to data stored on database page pDbPage.
+// If argument eOp is false, then nByte bytes of data are copied
+// from pPayload to the buffer pointed at by pBuf. If eOp is true,
+// then sqlite3PagerWrite() is called on pDbPage and nByte bytes
+// of data are copied from the buffer pBuf to pPayload.
+//
+// SQLITE_OK is returned on success, otherwise an error code.
+func _copyPayload(tls *crt.TLS, _pPayload unsafe.Pointer, _pBuf unsafe.Pointer, _nByte int32, _eOp int32, _pDbPage *XPgHdr) (r0 int32) {
+ var _1_rc int32
if _eOp == 0 {
goto _0
}
-
_1_rc = _sqlite3PagerWrite(tls, _pDbPage)
- if _1_rc == i32(0) {
- goto _1
+ if _1_rc != i32(0) {
+ return _1_rc
}
- return _1_rc
-
-_1:
crt.Xmemcpy(tls, _pPayload, _pBuf, uint32(_nByte))
goto _2
-
_0:
crt.Xmemcpy(tls, _pBuf, _pPayload, uint32(_nByte))
_2:
return i32(0)
}
-func _sqlite3PagerWrite(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:52987:1
- var _pPager *XPager // sqlite3.c:52988:9
- _ = _pPager
+// Mark a data page as writeable. This routine must be called before
+// making changes to a page. The caller must check the return value
+// of this function and be careful not to change any page data unless
+// this routine returns SQLITE_OK.
+//
+// The difference between this function and pager_write() is that this
+// function also deals with the special case where 2 or more pages
+// fit on a single disk sector. In this case all co-resident pages
+// must have been written to the journal file before returning.
+//
+// If an error occurs, SQLITE_NOMEM or an IO error code is returned
+// as appropriate. Otherwise, SQLITE_OK.
+func _sqlite3PagerWrite(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ var _pPager *XPager
_pPager = (*XPager)(_pPg.X4)
func() {
if (int32(_pPg.X6) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52989), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(9824)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52989), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(10951)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52990), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(9856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52990), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(10980)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52991), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52991), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_pPg.X6)&i32(4)) == i32(0) || (_pPager.X22) < (_pPg.X5) {
goto _7
}
-
- if (_pPager.X38) == 0 {
- goto _8
+ if (_pPager.X38) != 0 {
+ return _subjournalPageIfRequired(tls, _pPg)
}
- return _subjournalPageIfRequired(tls, _pPg)
-
-_8:
return i32(0)
_7:
- if (_pPager.X26) == 0 {
- goto _10
+ if (_pPager.X26) != 0 {
+ return _pPager.X26
}
- return _pPager.X26
-
-_10:
- if (_pPager.X47) <= uint32(_pPager.X48) {
- goto _12
+ if (_pPager.X47) > uint32(_pPager.X48) {
+ func() {
+ if int32(_pPager.X10) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52998), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(11043)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _pagerWriteLargeSector(tls, _pPg)
}
-
- func() {
- if int32(_pPager.X10) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52998), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerWriteØ00__func__Ø000))), unsafe.Pointer(str(9920)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _pagerWriteLargeSector(tls, _pPg)
-
-_12:
return _pager_write(tls, _pPg)
}
-var _sqlite3PagerWriteØ00__func__Ø000 [18]int8 // -
+var _sqlite3PagerWriteØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerWriteØ00__func__Ø000[0], str(9940), 18)
+ crt.Xstrncpy(nil, &_sqlite3PagerWriteØ00__func__Ø000[0], str(11063), 18)
}
-func _assert_pager_state(tls *crt.TLS, _p *XPager) (r0 int32) { // sqlite3.c:47765:1
- var _pPager *XPager // sqlite3.c:47766:9
- _ = _pPager
+// Usage:
+//
+// assert( assert_pager_state(pPager) );
+//
+// This function runs many asserts to try to find inconsistencies in
+// the internal state of the Pager object.
+func _assert_pager_state(tls *crt.TLS, _p *XPager) (r0 int32) {
+ var _pPager *XPager
_pPager = _p
func() {
if int32(_p.X14) != i32(0) && int32(_p.X14) != i32(1) && int32(_p.X14) != i32(2) && int32(_p.X14) != i32(3) && int32(_p.X14) != i32(4) && int32(_p.X14) != i32(5) && int32(_p.X14) != i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47769), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(9960)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47769), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11081)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X10) != i32(0) && int32(_p.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47782), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10176)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47782), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11295)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X10) != i32(0) && (_pPager.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47783), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10220)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47783), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11338)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X2) != i32(2) && (_p.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47788), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10264)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47788), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11380)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X2) == i32(2) && (*Xsqlite3_io_methods)((*Xsqlite3_file)(_p.X32).X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47789), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10320)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47789), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11435)))
crt.X__builtin_abort(tls)
}
}()
- if (_pPager.X13) == 0 {
- goto _20
+ if (_pPager.X13) != 0 {
+ func() {
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_p.X31).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47800), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11492)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_p.X4) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47801), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11507)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_p.X2) != i32(2) && int32(_p.X2) != i32(4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47802), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11517)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_p.X14) == i32(6) || int32(_p.X14) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47805), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11599)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if bool2int((*XWal)(_p.X60) != nil) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47806), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11647)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- func() {
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_p.X31).X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47800), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10380)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_p.X4) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47801), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10396)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_p.X2) != i32(2) && int32(_p.X2) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47802), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10408)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_p.X14) == i32(6) || int32(_p.X14) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47805), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10492)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if bool2int((*XWal)(_p.X60) != nil) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47806), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10540)))
- crt.X__builtin_abort(tls)
- }
- }()
-_20:
func() {
if int32(_pPager.X16) != i32(0) && int32(_pPager.X15) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47812), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10560)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47812), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11665)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X15) == i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47813), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10620)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47813), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11724)))
crt.X__builtin_abort(tls)
}
}()
@@ -13071,253 +13030,244 @@ _20:
_39:
func() {
if (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47817), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47817), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11747)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47818), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47818), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PcacheRefCount(tls, (*XPCache)(_pPager.X59)) != i32(0) && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47819), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10680)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47819), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11781)))
crt.X__builtin_abort(tls)
}
}()
goto _46
-
_40:
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47823), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47823), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X15) == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47824), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47824), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11843)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X15) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47825), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47825), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11866)))
crt.X__builtin_abort(tls)
}
}()
goto _46
-
_41:
func() {
if int32(_p.X15) == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47829), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47829), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11843)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47830), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47830), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
- if (*XWal)(_pPager.X60) != nil {
- goto _64
+ if (*XWal)(_pPager.X60) == nil {
+ func() {
+ if int32(_p.X15) < i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47832), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11888)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- func() {
- if int32(_p.X15) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47832), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10792)))
- crt.X__builtin_abort(tls)
- }
- }()
-_64:
func() {
if (_pPager.X22) != (_pPager.X23) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47834), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47834), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11912)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X23) != (_pPager.X24) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47835), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47835), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11947)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X23) != (_pPager.X25) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47836), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47836), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11986)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47837), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10932)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47837), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12025)))
crt.X__builtin_abort(tls)
}
}()
goto _46
-
_42:
func() {
if int32(_p.X15) == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47841), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47841), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11843)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47842), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47842), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
- if (*XWal)(_pPager.X60) != nil {
- goto _79
+ if (*XWal)(_pPager.X60) == nil {
+ func() {
+ if int32(_p.X15) < i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47849), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11888)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_p.X32).X0) == nil && int32(_p.X2) != i32(2) && int32(_p.X2) != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47850), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12046)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- func() {
- if int32(_p.X15) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47849), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10792)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_p.X32).X0) == nil && int32(_p.X2) != i32(2) && int32(_p.X2) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47850), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10956)))
- crt.X__builtin_abort(tls)
- }
- }()
-_79:
func() {
if (_pPager.X23) != (_pPager.X24) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47855), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47855), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11947)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X23) != (_pPager.X25) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47856), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47856), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11986)))
crt.X__builtin_abort(tls)
}
}()
goto _46
-
_43:
func() {
if int32(_p.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47860), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47860), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12143)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47861), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47861), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47862), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47862), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X15) < i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47863), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11108)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47863), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12189)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_p.X32).X0) == nil && int32(_p.X2) != i32(2) && int32(_p.X2) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47864), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47864), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12046)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X23) > (_pPager.X25) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47868), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47868), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12214)))
crt.X__builtin_abort(tls)
}
}()
goto _46
-
_44:
func() {
if int32(_p.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47872), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47872), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12143)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47873), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47873), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47874), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47874), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_p.X32).X0) == nil && int32(_p.X2) != i32(2) && int32(_p.X2) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47875), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(10956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47875), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12046)))
crt.X__builtin_abort(tls)
}
}()
goto _46
-
_45:
func() {
if (_pPager.X26) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47886), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11176)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47886), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12253)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PcacheRefCount(tls, (*XPCache)(_pPager.X59)) <= i32(0) && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(47887), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(11204)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(47887), unsafe.Pointer((*int8)(unsafe.Pointer(&_assert_pager_stateØ00__func__Ø000))), unsafe.Pointer(str(12280)))
crt.X__builtin_abort(tls)
}
}()
goto _46
-
_46:
return i32(1)
}
-var _assert_pager_stateØ00__func__Ø000 [19]int8 // -
+var _assert_pager_stateØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_assert_pager_stateØ00__func__Ø000[0], str(11268), 19)
+ crt.Xstrncpy(nil, &_assert_pager_stateØ00__func__Ø000[0], str(12341), 19)
}
-func _sqlite3PcacheRefCount(tls *crt.TLS, _pCache *XPCache) (r0 int32) { // sqlite3.c:44907:1
+// Return the total number of references to all pages held by the cache.
+//
+// This is not the total number of pages referenced, but the sum of the
+// reference count for all pages.
+func _sqlite3PcacheRefCount(tls *crt.TLS, _pCache *XPCache) (r0 int32) {
return _pCache.X3
}
-func _subjournalPageIfRequired(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:51420:1
- if _subjRequiresPage(tls, _pPg) == 0 {
- goto _0
+func _subjournalPageIfRequired(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ if _subjRequiresPage(tls, _pPg) != 0 {
+ return _subjournalPage(tls, _pPg)
}
- return _subjournalPage(tls, _pPg)
-
-_0:
return i32(0)
}
-func _subjRequiresPage(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:47982:1
- var _pPager *XPager // sqlite3.c:47983:9
- _ = _pPager
- var _p *XPagerSavepoint // sqlite3.c:47984:18
- _ = _p
- var _pgno uint32 // sqlite3.c:47985:8
- _ = _pgno
- var _i int32 // sqlite3.c:47986:7
- _ = _i
+// Return true if it is necessary to write page *pPg into the sub-journal.
+// A page needs to be written into the sub-journal if there exists one
+// or more open savepoints for which:
+//
+// * The page-number is less than or equal to PagerSavepoint.nOrig, and
+// * The bit corresponding to the page-number is not set in
+// PagerSavepoint.pInSavepoint.
+func _subjRequiresPage(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ var _i int32
+ var _pgno uint32
+ var _pPager *XPager
+ var _p *XPagerSavepoint
_pPager = (*XPager)(_pPg.X4)
_pgno = _pPg.X5
_i = i32(0)
@@ -13325,127 +13275,108 @@ _0:
if _i >= (_pPager.X38) {
goto _3
}
-
_p = (*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37) + 44*uintptr(_i)))
- if (_p.X3) < _pgno || i32(0) != _sqlite3BitvecTestNotNull(tls, (*XBitvec)(_p.X2), _pgno) {
- goto _5
+ if ((_p.X3) >= _pgno) && (i32(0) == _sqlite3BitvecTestNotNull(tls, (*XBitvec)(_p.X2), _pgno)) {
+ return i32(1)
}
- return i32(1)
-
-_5:
_i += 1
goto _0
-
_3:
return i32(0)
}
-func _sqlite3BitvecTestNotNull(tls *crt.TLS, _p *XBitvec, _i uint32) (r0 int32) { // sqlite3.c:43839:1
- var _1_bin uint32 // sqlite3.c:43844:9
- _ = _1_bin
- var _4_h uint32 // sqlite3.c:43854:9
- _ = _4_h
+// Check to see if the i-th bit is set. Return true or false.
+// If p is NULL (if the bitmap has not been created) or if
+// i is out of range, then return false.
+func _sqlite3BitvecTestNotNull(tls *crt.TLS, _p *XBitvec, _i uint32) (r0 int32) {
+ var _1_bin, _4_h uint32
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(43840), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecTestNotNullØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(43840), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecTestNotNullØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
_i -= 1
- if _i < (_p.X0) {
- goto _2
+ if _i >= (_p.X0) {
+ return i32(0)
}
- return i32(0)
-
-_2:
_3:
if (_p.X2) == 0 {
goto _4
}
-
_1_bin = _i / (_p.X2)
_i = _i % (_p.X2)
- _p = *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))
- if _p != nil {
- goto _5
+ _p = *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))
+ if _p == nil {
+ return i32(0)
}
- return i32(0)
-
-_5:
goto _3
-
_4:
- if (_p.X0) > u32(4000) {
- goto _6
+ if (_p.X0) <= u32(4000) {
+ /* X3 */
+ return bool2int((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[500]uint8)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12))))))) + 1*uintptr(_i/uint32(i32(8)))))) & (i32(1) << uint(int32(_i&uint32(i32(7)))))) != i32(0))
}
-
- /* X3 */
- return bool2int((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[500]uint8)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12))))))) + 1*uintptr(_i/uint32(i32(8)))))) & (i32(1) << uint(int32(_i&uint32(i32(7)))))) != i32(0))
-
-_6:
_4_h = (postInc5(&_i, uint32(1)) * uint32(i32(1))) % u32(125)
_8:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_4_h)))) == 0 {
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_4_h)))) == 0 {
goto _9
}
-
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_4_h)))) != _i {
- goto _10
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_4_h)))) == _i {
+ return i32(1)
}
- return i32(1)
-
-_10:
_4_h = (_4_h + uint32(i32(1))) % u32(125)
goto _8
-
_9:
return i32(0)
}
-var _sqlite3BitvecTestNotNullØ00__func__Ø000 [25]int8 // -
+var _sqlite3BitvecTestNotNullØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BitvecTestNotNullØ00__func__Ø000[0], str(11288), 25)
+ crt.Xstrncpy(nil, &_sqlite3BitvecTestNotNullØ00__func__Ø000[0], str(12360), 25)
}
-func _subjournalPage(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:51378:1
- var _rc int32 // sqlite3.c:51379:7
- _ = _rc
- var _pPager *XPager // sqlite3.c:51380:9
- _ = _pPager
- var _2_pData unsafe.Pointer // sqlite3.c:51396:12
- _ = _2_pData
- var _2_offset int64 // sqlite3.c:51397:11
- _ = _2_offset
- var _2_pData2 *int8 // sqlite3.c:51398:12
- _ = _2_pData2
+// Append a record of the current state of page pPg to the sub-journal.
+//
+// If successful, set the bit corresponding to pPg->pgno in the bitvecs
+// for all open savepoints before returning.
+//
+// This function returns SQLITE_OK if everything is successful, an IO
+// error code if the attempt to write to the sub-journal fails, or
+// SQLITE_NOMEM if a malloc fails while setting a bit in a savepoint
+// bitvec.
+func _subjournalPage(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ var _rc int32
+ var _2_offset int64
+ var _2_pData2 *int8
+ var _2_pData unsafe.Pointer
+ var _pPager *XPager
_rc = i32(0)
_pPager = (*XPager)(_pPg.X4)
if int32(_pPager.X2) == i32(2) {
goto _0
}
-
func() {
if (_pPager.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51384), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(11316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51384), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(12385)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil && (*XWal)(_pPager.X60) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51385), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(11336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51385), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(12404)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X33).X0) == nil && (_pPager.X29) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51386), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(11380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51386), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(12447)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XWal)(_pPager.X60) == nil && _pageInJournal(tls, _pPager, _pPg) == 0 && (_pPg.X5) <= (_pPager.X23) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51387), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(11424)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51387), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(12490)))
crt.X__builtin_abort(tls)
}
}()
@@ -13453,97 +13384,90 @@ func _subjournalPage(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:51378
if _rc != i32(0) {
goto _13
}
-
_2_pData = _pPg.X1
_2_offset = int64(_pPager.X29) * int64(i32(4)+(_pPager.X48))
_2_pData2 = (*int8)(_2_pData)
_rc = _write32bits(tls, (*Xsqlite3_file)(_pPager.X33), _2_offset, _pPg.X5)
- if _rc != i32(0) {
- goto _14
+ if _rc == i32(0) {
+ _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X33), (unsafe.Pointer)(_2_pData2), _pPager.X48, _2_offset+int64(i32(4)))
}
-
- _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X33), (unsafe.Pointer)(_2_pData2), _pPager.X48, _2_offset+int64(i32(4)))
-_14:
_13:
_0:
- if _rc != i32(0) {
- goto _15
+ if _rc == i32(0) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(56 /* X29 */))) += 1
+ func() {
+ if (_pPager.X38) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51415), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(12572)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _addToSavepointBitvecs(tls, _pPager, _pPg.X5)
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(56 /* X29 */))) += 1
- func() {
- if (_pPager.X38) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51415), unsafe.Pointer((*int8)(unsafe.Pointer(&_subjournalPageØ00__func__Ø000))), unsafe.Pointer(str(11508)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _addToSavepointBitvecs(tls, _pPager, _pPg.X5)
-_15:
return _rc
}
-var _subjournalPageØ00__func__Ø000 [15]int8 // -
+var _subjournalPageØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_subjournalPageØ00__func__Ø000[0], str(11532), 15)
+ crt.Xstrncpy(nil, &_subjournalPageØ00__func__Ø000[0], str(12593), 15)
}
-func _pageInJournal(tls *crt.TLS, _pPager *XPager, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:48000:1
+// Return true if the page is already in the journal file.
+func _pageInJournal(tls *crt.TLS, _pPager *XPager, _pPg *XPgHdr) (r0 int32) {
return _sqlite3BitvecTest(tls, (*XBitvec)(_pPager.X30), _pPg.X5)
}
-func _sqlite3BitvecTest(tls *crt.TLS, _p *XBitvec, _i uint32) (r0 int32) { // sqlite3.c:43862:1
+func _sqlite3BitvecTest(tls *crt.TLS, _p *XBitvec, _i uint32) (r0 int32) {
return bool2int((_p != nil) && _sqlite3BitvecTestNotNull(tls, _p, _i) != 0)
}
-func _openSubJournal(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:51352:1
- var _rc int32 // sqlite3.c:51353:7
- _ = _rc
- var _1_flags int32 // sqlite3.c:51355:15
- _ = _1_flags
- var _1_nStmtSpill int32 // sqlite3.c:51358:9
- _ = _1_nStmtSpill
+// Ensure that the sub-journal file is open. If it is already open, this
+// function is a no-op.
+//
+// SQLITE_OK is returned if everything goes according to plan. An
+// SQLITE_IOERR_XXX error code is returned if a call to sqlite3OsOpen()
+// fails.
+func _openSubJournal(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc, _1_flags, _1_nStmtSpill int32
_rc = i32(0)
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X33).X0) != nil {
goto _0
}
-
_1_flags = i32(8222)
_1_nStmtSpill = _sqlite3Config.X9
- if int32(_pPager.X2) != i32(4) && (_pPager.X19) == 0 {
- goto _2
+ if (int32(_pPager.X2) == i32(4)) || ((_pPager.X19) != 0) {
+ _1_nStmtSpill = i32(-1)
}
-
- _1_nStmtSpill = i32(-1)
-_2:
_rc = _sqlite3JournalOpen(tls, (*Xsqlite3_vfs)(_pPager.X0), nil, (*Xsqlite3_file)(_pPager.X33), _1_flags, _1_nStmtSpill)
_0:
return _rc
}
-func _sqlite3JournalOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zName *int8, _pJfd *Xsqlite3_file, _flags int32, _nSpill int32) (r0 int32) { // sqlite3.c:89112:1
- var _p *XMemJournal // sqlite3.c:89119:14
- _ = _p
+// Open a journal file.
+//
+// The behaviour of the journal file depends on the value of parameter
+// nSpill. If nSpill is 0, then the journal file is always create and
+// accessed using the underlying VFS. If nSpill is less than zero, then
+// all content is always stored in main-memory. Finally, if nSpill is a
+// positive value, then the journal file is initially created in-memory
+// but may be flushed to disk later on. In this case the journal file is
+// flushed to disk either when it grows larger than nSpill bytes in size,
+// or when sqlite3JournalCreate() is called.
+func _sqlite3JournalOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zName *int8, _pJfd *Xsqlite3_file, _flags int32, _nSpill int32) (r0 int32) {
+ var _p *XMemJournal
_p = (*XMemJournal)(unsafe.Pointer(_pJfd))
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(56))
- if _nSpill != i32(0) {
- goto _0
+ if _nSpill == i32(0) {
+ return _sqlite3OsOpen(tls, _pVfs, _zName, _pJfd, _flags, nil)
}
- return _sqlite3OsOpen(tls, _pVfs, _zName, _pJfd, _flags, nil)
-
-_0:
- if _nSpill <= i32(0) {
- goto _1
+ if _nSpill > i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = _nSpill
+ goto _2
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = _nSpill
- goto _2
-
-_1:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = int32(u32(1020))
func() {
if uint32(i32(1024)) != (u32(12) + uint32((_p.X1)-i32(8))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3JournalOpenØ00__func__Ø000))), unsafe.Pointer(str(11548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3JournalOpenØ00__func__Ø000))), unsafe.Pointer(str(12608)))
crt.X__builtin_abort(tls)
}
}()
@@ -13556,34 +13480,35 @@ _2:
return i32(0)
}
-func _sqlite3OsOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _pFile *Xsqlite3_file, _flags int32, _pFlagsOut *int32) (r0 int32) { // sqlite3.c:20278:1
- var _rc int32 // sqlite3.c:20285:7
- _ = _rc
+// The next group of routines are convenience wrappers around the
+// VFS methods.
+func _sqlite3OsOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _pFile *Xsqlite3_file, _flags int32, _pFlagsOut *int32) (r0 int32) {
+ var _rc int32
_rc = (*(*func(*crt.TLS, *Xsqlite3_vfs, *int8, *Xsqlite3_file, int32, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int8, unsafe.Pointer, int32, *int32) int32
}{(_pVfs.X6)})))(tls, _pVfs, _zPath, _pFile, _flags&i32(556927), _pFlagsOut)
func() {
if _rc != i32(0) && (*Xsqlite3_io_methods)(_pFile.X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(20292), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OsOpenØ00__func__Ø000))), unsafe.Pointer(str(11608)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(20292), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OsOpenØ00__func__Ø000))), unsafe.Pointer(str(12668)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-var _sqlite3OsOpenØ00__func__Ø000 [14]int8 // -
+var _sqlite3OsOpenØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3OsOpenØ00__func__Ø000[0], str(11644), 14)
+ crt.Xstrncpy(nil, &_sqlite3OsOpenØ00__func__Ø000[0], str(12704), 14)
}
-var _sqlite3JournalOpenØ00__func__Ø000 [19]int8 // -
+var _sqlite3JournalOpenØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3JournalOpenØ00__func__Ø000[0], str(11660), 19)
+ crt.Xstrncpy(nil, &_sqlite3JournalOpenØ00__func__Ø000[0], str(12718), 19)
}
-var _MemJournalMethods Xsqlite3_io_methods // sqlite3.c:89078:40
+var _MemJournalMethods Xsqlite3_io_methods
func init() {
_MemJournalMethods = Xsqlite3_io_methods{X0: i32(1), X1: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
@@ -13601,70 +13526,56 @@ func init() {
}{_memjrnlFileSize})), X7: nil, X8: nil, X9: nil, X10: nil, X11: nil, X12: nil, X13: nil, X14: nil, X15: nil, X16: nil, X17: nil, X18: nil}
}
-func _memjrnlClose(tls *crt.TLS, _pJfd *Xsqlite3_file) (r0 int32) { // sqlite3.c:89049:1
- var _p *XMemJournal // sqlite3.c:89050:14
- _ = _p
+// Close the file.
+func _memjrnlClose(tls *crt.TLS, _pJfd *Xsqlite3_file) (r0 int32) {
+ var _p *XMemJournal
_p = (*XMemJournal)(unsafe.Pointer(_pJfd))
_memjrnlFreeChunks(tls, _p)
return i32(0)
}
-func _memjrnlFreeChunks(tls *crt.TLS, _p *XMemJournal) { // sqlite3.c:88903:1
- var _pIter *XFileChunk // sqlite3.c:88904:13
- _ = _pIter
- var _pNext *XFileChunk // sqlite3.c:88905:13
- _ = _pNext
+// Free the list of FileChunk structures headed at MemJournal.pFirst.
+func _memjrnlFreeChunks(tls *crt.TLS, _p *XMemJournal) {
+ var _pIter, _pNext *XFileChunk
_pIter = (*XFileChunk)(_p.X4)
_0:
if _pIter == nil {
goto _3
}
-
_pNext = (*XFileChunk)(_pIter.X0)
Xsqlite3_free(tls, (unsafe.Pointer)(_pIter))
_pIter = _pNext
goto _0
-
_3:
*(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = nil
}
-func _memjrnlRead(tls *crt.TLS, _pJfd *Xsqlite3_file, _zBuf unsafe.Pointer, _iAmt int32, _iOfst int64) (r0 int32) { // sqlite3.c:88852:1
- var _p *XMemJournal // sqlite3.c:88858:14
- _ = _p
- var _zOut *uint8 // sqlite3.c:88859:6
- _ = _zOut
- var _nRead int32 // sqlite3.c:88860:7
- _ = _nRead
- var _iChunkOffset int32 // sqlite3.c:88861:7
- _ = _iChunkOffset
- var _pChunk *XFileChunk // sqlite3.c:88862:13
- _ = _pChunk
- var _1_iOff int64 // sqlite3.c:88873:19
- _ = _1_iOff
- var _4_iSpace int32 // sqlite3.c:88887:9
- _ = _4_iSpace
- var _4_nCopy int32 // sqlite3.c:88888:9
- _ = _4_nCopy
+// Read data from the in-memory journal file. This is the implementation
+// of the sqlite3_vfs.xRead method.
+func _memjrnlRead(tls *crt.TLS, _pJfd *Xsqlite3_file, _zBuf unsafe.Pointer, _iAmt int32, _iOfst int64) (r0 int32) {
+ var _nRead, _iChunkOffset, _4_iSpace, _4_nCopy int32
+ var _1_iOff int64
+ var _zOut *uint8
+ var _p *XMemJournal
+ var _pChunk *XFileChunk
_p = (*XMemJournal)(unsafe.Pointer(_pJfd))
_zOut = (*uint8)(_zBuf)
_nRead = _iAmt
func() {
- if (int64(_iAmt) + _iOfst) > ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88870), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(11680)))
+ if (int64(_iAmt) + _iOfst) > ((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88870), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(12737)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))).X0) != int64(i32(0)) && (*XFileChunk)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))).X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88871), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(11716)))
+ if ((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))).X0) != int64(i32(0)) && (*XFileChunk)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))).X1) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88871), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(12771)))
crt.X__builtin_abort(tls)
}
}()
- if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))).X0) == _iOfst && _iOfst != int64(i32(0)) {
+ if ((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))).X0) == _iOfst && _iOfst != int64(i32(0)) {
goto _6
}
-
_1_iOff = i64(0)
_pChunk = (*XFileChunk)(_p.X4)
_7:
@@ -13673,14 +13584,13 @@ _7:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88875), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88875), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 || (_1_iOff+int64(_p.X1)) > _iOfst {
goto _13
}
-
{
p := &_1_iOff
*p = (*p) + int64(_p.X1)
@@ -13688,15 +13598,13 @@ _7:
}
_pChunk = (*XFileChunk)(_pChunk.X0)
goto _7
-
_13:
goto _14
-
_6:
- _pChunk = (*XFileChunk)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X6 */))).X1)
+ _pChunk = (*XFileChunk)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X6 */))).X1)
func() {
if _pChunk == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88882), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(11768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88882), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlReadØ00__func__Ø000))), unsafe.Pointer(str(12821)))
crt.X__builtin_abort(tls)
}
}()
@@ -13714,7 +13622,7 @@ _17:
{
p := &_zOut
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_4_nCopy)))
- sink11 = *p
+ sink13 = *p
}
{
p := &_nRead
@@ -13722,69 +13630,53 @@ _17:
sink1 = *p
}
_iChunkOffset = i32(0)
- if ((_nRead >= i32(0)) && (store22(&_pChunk, (*XFileChunk)(_pChunk.X0)) != nil)) && (_nRead > i32(0)) {
+ if ((_nRead >= i32(0)) && (store24(&_pChunk, (*XFileChunk)(_pChunk.X0)) != nil)) && (_nRead > i32(0)) {
goto _17
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(0 /* X0 */))) = func() int64 {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(0 /* X0 */))) = func() int64 {
if _pChunk != nil {
return (_iOfst + int64(_iAmt))
}
return int64(i32(0))
}()
- *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(8 /* X1 */))))) = _pChunk
+ *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(8 /* X1 */))))) = _pChunk
return i32(0)
}
-var _memjrnlReadØ00__func__Ø000 [12]int8 // -
+var _memjrnlReadØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_memjrnlReadØ00__func__Ø000[0], str(11780), 12)
+ crt.Xstrncpy(nil, &_memjrnlReadØ00__func__Ø000[0], str(12831), 12)
}
-func _memjrnlWrite(tls *crt.TLS, _pJfd *Xsqlite3_file, _zBuf unsafe.Pointer, _iAmt int32, _iOfst int64) (r0 int32) { // sqlite3.c:88955:1
- var _p *XMemJournal // sqlite3.c:88961:14
- _ = _p
- var _nWrite int32 // sqlite3.c:88962:7
- _ = _nWrite
- var _zWrite *uint8 // sqlite3.c:88963:6
- _ = _zWrite
- var _1_rc int32 // sqlite3.c:88968:9
- _ = _1_rc
- var _5_pChunk *XFileChunk // sqlite3.c:88993:19
- _ = _5_pChunk
- var _5_iChunkOffset int32 // sqlite3.c:88994:13
- _ = _5_iChunkOffset
- var _5_iSpace int32 // sqlite3.c:88995:13
- _ = _5_iSpace
- var _6_pNew *XFileChunk // sqlite3.c:88999:21
- _ = _6_pNew
+// Write data to the file.
+func _memjrnlWrite(tls *crt.TLS, _pJfd *Xsqlite3_file, _zBuf unsafe.Pointer, _iAmt int32, _iOfst int64) (r0 int32) {
+ var _nWrite, _1_rc, _5_iChunkOffset, _5_iSpace int32
+ var _zWrite *uint8
+ var _p *XMemJournal
+ var _5_pChunk, _6_pNew *XFileChunk
_p = (*XMemJournal)(unsafe.Pointer(_pJfd))
_nWrite = _iAmt
_zWrite = (*uint8)(_zBuf)
if (_p.X2) <= i32(0) || (int64(_iAmt)+_iOfst) <= int64(_p.X2) {
goto _1
}
-
_1_rc = _memjrnlCreateFile(tls, _p)
- if _1_rc != i32(0) {
- goto _2
+ if _1_rc == i32(0) {
+ _1_rc = _sqlite3OsWrite(tls, _pJfd, _zBuf, _iAmt, _iOfst)
}
-
- _1_rc = _sqlite3OsWrite(tls, _pJfd, _zBuf, _iAmt, _iOfst)
-_2:
return _1_rc
_1:
func() {
- if _iOfst != ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))).X0) && _iOfst != int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88982), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(11792)))
+ if _iOfst != ((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))).X0) && _iOfst != int64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88982), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(12843)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iOfst <= int64(i32(0)) && (*XFileChunk)(_p.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88989), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(11832)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88989), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(12882)))
crt.X__builtin_abort(tls)
}
}()
@@ -13792,9 +13684,8 @@ _10:
if _nWrite <= i32(0) {
goto _11
}
-
- _5_pChunk = (*XFileChunk)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X1)
- _5_iChunkOffset = int32(((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X0) % int64(_p.X1))
+ _5_pChunk = (*XFileChunk)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X1)
+ _5_iChunkOffset = int32(((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X0) % int64(_p.X1))
_5_iSpace = func() int32 {
if _nWrite < ((_p.X1) - _5_iChunkOffset) {
return _nWrite
@@ -13804,44 +13695,36 @@ _10:
if _5_iChunkOffset != i32(0) {
goto _14
}
-
_6_pNew = (*XFileChunk)(Xsqlite3_malloc(tls, int32(u32(12)+uint32((_p.X1)-i32(8)))))
- if _6_pNew != nil {
- goto _15
+ if _6_pNew == nil {
+ return _sqlite3IoerrnomemError(tls, i32(89001))
}
- return _sqlite3IoerrnomemError(tls, i32(89001))
-
-_15:
*(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pNew)) + uintptr(0 /* X0 */))))) = nil
- if _5_pChunk == nil {
- goto _16
+ if _5_pChunk != nil {
+ func() {
+ if (*XFileChunk)(_p.X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89005), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(12906)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pChunk)) + uintptr(0 /* X0 */))))) = _6_pNew
+ goto _19
}
-
- func() {
- if (*XFileChunk)(_p.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89005), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(11856)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pChunk)) + uintptr(0 /* X0 */))))) = _6_pNew
- goto _19
-
-_16:
func() {
if (*XFileChunk)(_p.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89008), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(11868)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89008), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlWriteØ00__func__Ø000))), unsafe.Pointer(str(12916)))
crt.X__builtin_abort(tls)
}
}()
*(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = _6_pNew
_19:
- *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(8 /* X1 */))))) = _6_pNew
+ *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(8 /* X1 */))))) = _6_pNew
_14:
- crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*[8]uint8)(unsafe.Pointer(uintptr((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))).X1)+uintptr(4 /* X1 */)))))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_iChunkOffset)))))))), (unsafe.Pointer)(_zWrite), uint32(_5_iSpace))
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*[8]uint8)(unsafe.Pointer(uintptr((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))).X1)+uintptr(4 /* X1 */)))))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_iChunkOffset)))))))), (unsafe.Pointer)(_zWrite), uint32(_5_iSpace))
{
p := &_zWrite
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_5_iSpace)))
- sink11 = *p
+ sink13 = *p
}
{
p := &_nWrite
@@ -13849,30 +13732,23 @@ _14:
sink1 = *p
}
{
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(0 /* X0 */)))
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(0 /* X0 */)))
*p = (*p) + int64(_5_iSpace)
sink6 = *p
}
goto _10
-
_11:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = int32(int64(_iAmt) + _iOfst)
return i32(0)
}
-func _memjrnlCreateFile(tls *crt.TLS, _p *XMemJournal) (r0 int32) { // sqlite3.c:88916:1
- var _rc int32 // sqlite3.c:88917:7
- _ = _rc
- var _pReal *Xsqlite3_file // sqlite3.c:88918:16
- _ = _pReal
- var _copy XMemJournal // sqlite3.c:88919:14
- _ = _copy
- var _1_nChunk int32 // sqlite3.c:88924:9
- _ = _1_nChunk
- var _1_iOff int64 // sqlite3.c:88925:9
- _ = _1_iOff
- var _1_pIter *XFileChunk // sqlite3.c:88926:15
- _ = _1_pIter
+// Flush the contents of memory to a real file on disk.
+func _memjrnlCreateFile(tls *crt.TLS, _p *XMemJournal) (r0 int32) {
+ var _rc, _1_nChunk int32
+ var _1_iOff int64
+ var _pReal *Xsqlite3_file
+ var _copy XMemJournal
+ var _1_pIter *XFileChunk
_pReal = (*Xsqlite3_file)(unsafe.Pointer(_p))
_copy = *_p
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(56))
@@ -13880,7 +13756,6 @@ func _memjrnlCreateFile(tls *crt.TLS, _p *XMemJournal) (r0 int32) { // sqlite3.c
if _rc != i32(0) {
goto _0
}
-
_1_nChunk = _copy.X1
_1_iOff = i64(0)
_1_pIter = (*XFileChunk)(_copy.X4)
@@ -13888,21 +13763,13 @@ _1:
if _1_pIter == nil {
goto _4
}
-
- if (_1_iOff + int64(_1_nChunk)) <= ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_copy)) + uintptr(20 /* X5 */))).X0) {
- goto _5
+ if (_1_iOff + int64(_1_nChunk)) > ((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_copy)) + uintptr(20 /* X5 */))).X0) {
+ _1_nChunk = int32(((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_copy)) + uintptr(20 /* X5 */))).X0) - _1_iOff)
}
-
- _1_nChunk = int32(((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_copy)) + uintptr(20 /* X5 */))).X0) - _1_iOff)
-_5:
_rc = _sqlite3OsWrite(tls, _pReal, (unsafe.Pointer)((*[8]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIter))+uintptr(4 /* X1 */)))), _1_nChunk, _1_iOff)
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ goto _4
}
-
- goto _4
-
-_6:
{
p := &_1_iOff
*p = (*p) + int64(_1_nChunk)
@@ -13910,56 +13777,50 @@ _6:
}
_1_pIter = (*XFileChunk)(_1_pIter.X0)
goto _1
-
_4:
- if _rc != i32(0) {
- goto _7
+ if _rc == i32(0) {
+ _memjrnlFreeChunks(tls, &_copy)
}
-
- _memjrnlFreeChunks(tls, &_copy)
-_7:
_0:
- if _rc == i32(0) {
- goto _8
+ if _rc != i32(0) {
+ _sqlite3OsClose(tls, _pReal)
+ *_p = _copy
}
-
- _sqlite3OsClose(tls, _pReal)
- *_p = _copy
-_8:
return _rc
}
-func _sqlite3OsWrite(tls *crt.TLS, _id *Xsqlite3_file, _pBuf unsafe.Pointer, _amt int32, _offset int64) (r0 int32) { // sqlite3.c:20170:1
+func _sqlite3OsWrite(tls *crt.TLS, _id *Xsqlite3_file, _pBuf unsafe.Pointer, _amt int32, _offset int64) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, int64) int32
}{((*Xsqlite3_io_methods)(_id.X0).X3)})))(tls, _id, _pBuf, _amt, _offset)
}
-func _sqlite3OsClose(tls *crt.TLS, _pId *Xsqlite3_file) { // sqlite3.c:20160:1
- if (*Xsqlite3_io_methods)(_pId.X0) == nil {
- goto _0
+// The following routines are convenience wrappers around methods
+// of the sqlite3_file object. This is mostly just syntactic sugar. All
+// of this would be completely automatic if SQLite were coded using
+// C++ instead of plain old C.
+func _sqlite3OsClose(tls *crt.TLS, _pId *Xsqlite3_file) {
+ if (*Xsqlite3_io_methods)(_pId.X0) != nil {
+ (*(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_io_methods)(_pId.X0).X1)})))(tls, _pId)
+ *(**Xsqlite3_io_methods)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pId)) + uintptr(0 /* X0 */))))) = nil
}
-
- (*(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_io_methods)(_pId.X0).X1)})))(tls, _pId)
- *(**Xsqlite3_io_methods)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pId)) + uintptr(0 /* X0 */))))) = nil
-_0:
}
-var _memjrnlWriteØ00__func__Ø000 [13]int8 // -
+var _memjrnlWriteØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_memjrnlWriteØ00__func__Ø000[0], str(11880), 13)
+ crt.Xstrncpy(nil, &_memjrnlWriteØ00__func__Ø000[0], str(12927), 13)
}
-func Xsqlite3_malloc(tls *crt.TLS, _n int32) (r0 unsafe.Pointer) { // sqlite3.c:24508:12
- if Xsqlite3_initialize(tls) == 0 {
- goto _0
+// This version of the memory allocation is for use by the application.
+// First make sure the memory subsystem is initialized, then do the
+// allocation.
+func Xsqlite3_malloc(tls *crt.TLS, _n int32) (r0 unsafe.Pointer) {
+ if Xsqlite3_initialize(tls) != 0 {
+ return nil
}
- return nil
-
-_0:
return func() unsafe.Pointer {
if _n <= i32(0) {
return unsafe.Pointer(nil)
@@ -13968,134 +13829,137 @@ _0:
}()
}
-func _sqlite3IoerrnomemError(tls *crt.TLS, _lineno int32) (r0 int32) { // sqlite3.c:143812:1
- return _reportError(tls, i32(3082), _lineno, str(11896))
+func _sqlite3IoerrnomemError(tls *crt.TLS, _lineno int32) (r0 int32) {
+ return _reportError(tls, i32(3082), _lineno, str(12940))
}
-func _memjrnlTruncate(tls *crt.TLS, _pJfd *Xsqlite3_file, _size int64) (r0 int32) { // sqlite3.c:89033:1
- var _p *XMemJournal // sqlite3.c:89034:14
- _ = _p
+// Truncate the file.
+//
+// If the journal file is already on disk, truncate it there. Or, if it
+// is still in main memory but is being truncated to zero bytes in size,
+// ignore
+func _memjrnlTruncate(tls *crt.TLS, _pJfd *Xsqlite3_file, _size int64) (r0 int32) {
+ var _p *XMemJournal
_p = (*XMemJournal)(unsafe.Pointer(_pJfd))
if func() int32 {
if _size == int64(i32(0)) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89035), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlTruncateØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89035), unsafe.Pointer((*int8)(unsafe.Pointer(&_memjrnlTruncateØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _2
+ }() != 0 {
+ _memjrnlFreeChunks(tls, _p)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = i32(0)
+ *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(8 /* X1 */))))) = nil
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(0 /* X0 */))) = int64(i32(0))
+ *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(8 /* X1 */))))) = nil
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(0 /* X0 */))) = int64(i32(0))
}
-
- _memjrnlFreeChunks(tls, _p)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = i32(0)
- *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(8 /* X1 */))))) = nil
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X5 */))))) + uintptr(0 /* X0 */))) = int64(i32(0))
- *(**XFileChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(8 /* X1 */))))) = nil
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X6 */))))) + uintptr(0 /* X0 */))) = int64(i32(0))
-_2:
return i32(0)
}
-var _memjrnlTruncateØ00__func__Ø000 [16]int8 // -
+var _memjrnlTruncateØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_memjrnlTruncateØ00__func__Ø000[0], str(11912), 16)
+ crt.Xstrncpy(nil, &_memjrnlTruncateØ00__func__Ø000[0], str(12954), 16)
}
-func _memjrnlSync(tls *crt.TLS, _pJfd *Xsqlite3_file, _flags int32) (r0 int32) { // sqlite3.c:89061:1
+// Sync the file.
+//
+// If the real file has been created, call its xSync method. Otherwise,
+// syncing an in-memory journal is a no-op.
+func _memjrnlSync(tls *crt.TLS, _pJfd *Xsqlite3_file, _flags int32) (r0 int32) {
_ = _flags
return i32(0)
}
-func _memjrnlFileSize(tls *crt.TLS, _pJfd *Xsqlite3_file, _pSize *int64) (r0 int32) { // sqlite3.c:89069:1
- var _p *XMemJournal // sqlite3.c:89070:14
- _ = _p
+// Query the size of the file in bytes.
+func _memjrnlFileSize(tls *crt.TLS, _pJfd *Xsqlite3_file, _pSize *int64) (r0 int32) {
+ var _p *XMemJournal
_p = (*XMemJournal)(unsafe.Pointer(_pJfd))
- *_pSize = (*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X0
+ *_pSize = (*t23)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))).X0
return i32(0)
}
-func _write32bits(tls *crt.TLS, _fd *Xsqlite3_file, _offset int64, _val uint32) (r0 int32) { // sqlite3.c:48031:1
- var _ac [4]int8 // sqlite3.c:48032:8
- _ = _ac
+// Write a 32-bit integer into the given file descriptor. Return SQLITE_OK
+// on success or an error code is something goes wrong.
+func _write32bits(tls *crt.TLS, _fd *Xsqlite3_file, _offset int64, _val uint32) (r0 int32) {
+ var _ac [4]int8
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(&_ac)))), _val)
return _sqlite3OsWrite(tls, _fd, (unsafe.Pointer)(&_ac), i32(4), _offset)
+
+ _ = _ac
+ panic(0)
}
-func _sqlite3Put4byte(tls *crt.TLS, _p *uint8, _v uint32) { // sqlite3.c:28813:1
+func _sqlite3Put4byte(tls *crt.TLS, _p *uint8, _v uint32) {
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(0)))) = uint8(_v >> uint(i32(24)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(1)))) = uint8(_v >> uint(i32(16)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(2)))) = uint8(_v >> uint(i32(8)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(3)))) = uint8(_v)
}
-func _addToSavepointBitvecs(tls *crt.TLS, _pPager *XPager, _pgno uint32) (r0 int32) { // sqlite3.c:48684:1
- var _ii int32 // sqlite3.c:48685:7
- _ = _ii
- var _rc int32 // sqlite3.c:48686:7
- _ = _rc
- var _1_p *XPagerSavepoint // sqlite3.c:48689:20
- _ = _1_p
+// Set the bit number pgno in the PagerSavepoint.pInSavepoint
+// bitvecs of all open savepoints. Return SQLITE_OK if successful
+// or SQLITE_NOMEM if a malloc failure occurs.
+func _addToSavepointBitvecs(tls *crt.TLS, _pPager *XPager, _pgno uint32) (r0 int32) {
+ var _ii, _rc int32
+ var _1_p *XPagerSavepoint
_rc = i32(0)
_ii = i32(0)
_0:
if _ii >= (_pPager.X38) {
goto _3
}
-
_1_p = (*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37) + 44*uintptr(_ii)))
- if _pgno > (_1_p.X3) {
- goto _4
- }
-
- {
- p := &_rc
- *p = (*p) | _sqlite3BitvecSet(tls, (*XBitvec)(_1_p.X2), _pgno)
- sink1 = *p
- }
- func() {
- if _rc != i32(0) && _rc != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48693), unsafe.Pointer((*int8)(unsafe.Pointer(&_addToSavepointBitvecsØ00__func__Ø000))), unsafe.Pointer(str(4168)))
- crt.X__builtin_abort(tls)
+ if _pgno <= (_1_p.X3) {
+ {
+ p := &_rc
+ *p = (*p) | _sqlite3BitvecSet(tls, (*XBitvec)(_1_p.X2), _pgno)
+ sink1 = *p
}
- }()
-_4:
+ func() {
+ if _rc != i32(0) && _rc != i32(7) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48693), unsafe.Pointer((*int8)(unsafe.Pointer(&_addToSavepointBitvecsØ00__func__Ø000))), unsafe.Pointer(str(5805)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ }
_ii += 1
goto _0
-
_3:
return _rc
}
-func _sqlite3BitvecSet(tls *crt.TLS, _p *XBitvec, _i uint32) (r0 int32) { // sqlite3.c:43878:1
- var _h uint32 // sqlite3.c:43879:7
- _ = _h
- var _1_bin uint32 // sqlite3.c:43885:9
- _ = _1_bin
- var _8_j uint32 // sqlite3.c:43920:18
- _ = _8_j
- var _8_rc int32 // sqlite3.c:43921:9
- _ = _8_rc
- var _8_aiValues *uint32 // sqlite3.c:43922:9
- _ = _8_aiValues
- if _p != nil {
- goto _0
+// Set the i-th bit. Return 0 on success and an error code if
+// anything goes wrong.
+//
+// This routine might cause sub-bitmaps to be allocated. Failing
+// to get the memory needed to hold the sub-bitmap is the only
+// that can go wrong with an insert, assuming p and i are valid.
+//
+// The calling function must ensure that p is a valid Bitvec object
+// and that the value for "i" is within range of the Bitvec object.
+// Otherwise the behavior is undefined.
+func _sqlite3BitvecSet(tls *crt.TLS, _p *XBitvec, _i uint32) (r0 int32) {
+ var _8_rc int32
+ var _h, _1_bin, _8_j uint32
+ var _8_aiValues *uint32
+ if _p == nil {
+ return i32(0)
}
- return i32(0)
-
-_0:
func() {
if _i <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(43881), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecSetØ00__func__Ø000))), unsafe.Pointer(str(11928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(43881), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecSetØ00__func__Ø000))), unsafe.Pointer(str(12970)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _i > (_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(43882), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecSetØ00__func__Ø000))), unsafe.Pointer(str(11932)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(43882), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecSetØ00__func__Ø000))), unsafe.Pointer(str(12974)))
crt.X__builtin_abort(tls)
}
}()
@@ -14104,84 +13968,57 @@ _5:
if (_p.X0) <= u32(4000) || (_p.X2) == 0 {
goto _6
}
-
_1_bin = _i / (_p.X2)
_i = _i % (_p.X2)
- if (*(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))) != nil {
+ if (*(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))) != nil {
goto _8
}
-
- *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin))) = _sqlite3BitvecCreate(tls, _p.X2)
- if (*(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))) != nil {
- goto _9
+ *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin))) = _sqlite3BitvecCreate(tls, _p.X2)
+ if (*(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))) == nil {
+ return _sqlite3NomemError(tls, i32(43889))
}
- return _sqlite3NomemError(tls, i32(43889))
-
-_9:
_8:
- _p = *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))
+ _p = *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))
goto _5
-
_6:
- if (_p.X0) > u32(4000) {
- goto _10
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[500]uint8)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 1*uintptr(_i/uint32(i32(8)))))
- *p = uint8(int32(*p) | (i32(1) << uint(int32(_i&uint32(i32(7))))))
- sink2 = *p
+ if (_p.X0) <= u32(4000) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[500]uint8)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 1*uintptr(_i/uint32(i32(8)))))
+ *p = uint8(int32(*p) | (i32(1) << uint(int32(_i&uint32(i32(7))))))
+ sink2 = *p
+ }
+ return i32(0)
}
- return i32(0)
-
-_10:
_h = (postInc5(&_i, uint32(1)) * uint32(i32(1))) % u32(125)
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h)))) != 0 {
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h)))) != 0 {
goto _11
}
-
- if (_p.X1) >= u32(124) {
- goto _12
+ if (_p.X1) < u32(124) {
+ goto _bitvec_set_end
}
-
- goto _bitvec_set_end
-
-_12:
goto _bitvec_set_rehash
-
_11:
_14:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h)))) != _i {
- goto _15
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h)))) == _i {
+ return i32(0)
}
- return i32(0)
-
-_15:
_h += 1
- if _h < u32(125) {
- goto _16
+ if _h >= u32(125) {
+ _h = uint32(i32(0))
}
-
- _h = uint32(i32(0))
-_16:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h)))) != 0 {
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h)))) != 0 {
goto _14
}
-
_bitvec_set_rehash:
if (_p.X1) < u32(62) {
goto _17
}
-
_8_aiValues = (*uint32)(_sqlite3DbMallocRaw(tls, nil, uint64(u32(500))))
- if _8_aiValues != nil {
- goto _18
+ if _8_aiValues == nil {
+ return _sqlite3NomemError(tls, i32(43924))
}
- return _sqlite3NomemError(tls, i32(43924))
-
-_18:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_8_aiValues), (unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), u32(500))
- crt.Xmemset(tls, (unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), i32(0), u32(500))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_8_aiValues), (unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), u32(500))
+ crt.Xmemset(tls, (unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), i32(0), u32(500))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = (((_p.X0) + u32(125)) - uint32(i32(1))) / u32(125)
_8_rc = _sqlite3BitvecSet(tls, _p, _i)
_8_j = uint32(i32(0))
@@ -14189,20 +14026,15 @@ _20:
if _8_j >= u32(125) {
goto _23
}
-
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_aiValues)) + 4*uintptr(_8_j)))) == 0 {
- goto _24
- }
-
- {
- p := &_8_rc
- *p = (*p) | _sqlite3BitvecSet(tls, _p, *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_aiValues)) + 4*uintptr(_8_j))))
- sink1 = *p
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_aiValues)) + 4*uintptr(_8_j)))) != 0 {
+ {
+ p := &_8_rc
+ *p = (*p) | _sqlite3BitvecSet(tls, _p, *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_aiValues)) + 4*uintptr(_8_j))))
+ sink1 = *p
+ }
}
-_24:
_8_j += 1
goto _20
-
_23:
_sqlite3DbFree(tls, nil, (unsafe.Pointer)(_8_aiValues))
return _8_rc
@@ -14210,59 +14042,49 @@ _23:
_17:
_bitvec_set_end:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) += 1
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h))) = _i
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_h))) = _i
return i32(0)
}
-var _sqlite3BitvecSetØ00__func__Ø000 [17]int8 // -
+var _sqlite3BitvecSetØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BitvecSetØ00__func__Ø000[0], str(11944), 17)
+ crt.Xstrncpy(nil, &_sqlite3BitvecSetØ00__func__Ø000[0], str(12986), 17)
}
-func _sqlite3BitvecCreate(tls *crt.TLS, _iSize uint32) (r0 *XBitvec) { // sqlite3.c:43824:1
- var _p *XBitvec // sqlite3.c:43825:10
- _ = _p
+// Create a new bitmap object able to handle bits between 0 and iSize,
+// inclusive. Return a pointer to the new object. Return NULL if
+// malloc fails.
+func _sqlite3BitvecCreate(tls *crt.TLS, _iSize uint32) (r0 *XBitvec) {
+ var _p *XBitvec
i32(0)
_p = (*XBitvec)(_sqlite3MallocZero(tls, uint64(u32(512))))
- if _p == nil {
- goto _0
+ if _p != nil {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _iSize
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _iSize
-_0:
return _p
}
-var _addToSavepointBitvecsØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_addToSavepointBitvecsØ00__func__Ø000[0], str(11964), 22)
-}
-
-func _pagerWriteLargeSector(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:52893:1
- var _rc int32 // sqlite3.c:52894:7
- _ = _rc
- var _nPageCount uint32 // sqlite3.c:52895:8
- _ = _nPageCount
- var _pg1 uint32 // sqlite3.c:52896:8
- _ = _pg1
- var _nPage int32 // sqlite3.c:52897:7
- _ = _nPage
- var _ii int32 // sqlite3.c:52898:7
- _ = _ii
- var _needSync int32 // sqlite3.c:52899:7
- _ = _needSync
- var _pPager *XPager // sqlite3.c:52900:9
- _ = _pPager
- var _nPagePerSector uint32 // sqlite3.c:52901:8
- _ = _nPagePerSector
- var _4_pg uint32 // sqlite3.c:52930:10
- _ = _4_pg
- var _4_pPage *XPgHdr // sqlite3.c:52931:11
- _ = _4_pPage
- var _12_pPage *XPgHdr // sqlite3.c:52960:13
- _ = _12_pPage
+var _addToSavepointBitvecsØ00__func__Ø000 [22]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_addToSavepointBitvecsØ00__func__Ø000[0], str(13003), 22)
+}
+
+// This is a variant of sqlite3PagerWrite() that runs when the sector size
+// is larger than the page size. SQLite makes the (reasonable) assumption that
+// all bytes of a sector are written together by hardware. Hence, all bytes of
+// a sector need to be journalled in case of a power loss in the middle of
+// a write.
+//
+// Usually, the sector size is less than or equal to the page size, in which
+// case pages can be individually written. This routine only runs in the
+// exceptional case where the page size is smaller than the sector size.
+func _pagerWriteLargeSector(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ var _rc, _nPage, _ii, _needSync int32
+ var _nPageCount, _pg1, _nPagePerSector, _4_pg uint32
+ var _pPager *XPager
+ var _4_pPage, _12_pPage *XPgHdr
_rc = i32(0)
_nPage = i32(0)
_needSync = i32(0)
@@ -14270,13 +14092,13 @@ func _pagerWriteLargeSector(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.
_nPagePerSector = (_pPager.X47) / uint32(_pPager.X48)
func() {
if (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52907), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(10644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52907), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(11747)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pPager.X18) & i32(4)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52908), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(11988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52908), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(13025)))
crt.X__builtin_abort(tls)
}
}()
@@ -14287,40 +14109,32 @@ func _pagerWriteLargeSector(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.
}
_pg1 = (((_pPg.X5) - uint32(i32(1))) & (^(_nPagePerSector - uint32(i32(1))))) + uint32(i32(1))
_nPageCount = _pPager.X22
- if (_pPg.X5) <= _nPageCount {
- goto _4
+ if (_pPg.X5) > _nPageCount {
+ _nPage = int32(((_pPg.X5) - _pg1) + uint32(i32(1)))
+ goto _5
}
-
- _nPage = int32(((_pPg.X5) - _pg1) + uint32(i32(1)))
- goto _5
-
-_4:
- if ((_pg1 + _nPagePerSector) - uint32(i32(1))) <= _nPageCount {
- goto _6
+ if ((_pg1 + _nPagePerSector) - uint32(i32(1))) > _nPageCount {
+ _nPage = int32((_nPageCount + uint32(i32(1))) - _pg1)
+ goto _7
}
-
- _nPage = int32((_nPageCount + uint32(i32(1))) - _pg1)
- goto _7
-
-_6:
_nPage = int32(_nPagePerSector)
_7:
_5:
func() {
if _nPage <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52925), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(12032)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52925), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(13068)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pg1 > (_pPg.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52926), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(12040)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52926), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(13076)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pg1 + uint32(_nPage)) <= (_pPg.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52927), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(12056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52927), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(13091)))
crt.X__builtin_abort(tls)
}
}()
@@ -14329,58 +14143,44 @@ _14:
if _ii >= _nPage || _rc != i32(0) {
goto _18
}
-
_4_pg = _pg1 + uint32(_ii)
if _4_pg != (_pPg.X5) && _sqlite3BitvecTest(tls, (*XBitvec)(_pPager.X30), _4_pg) != 0 {
goto _20
}
-
if _4_pg == uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1)) {
goto _21
}
-
_rc = _sqlite3PagerGet(tls, _pPager, _4_pg, &_4_pPage, i32(0))
if _rc != i32(0) {
goto _22
}
-
_rc = _pager_write(tls, _4_pPage)
- if (int32(_4_pPage.X6) & i32(8)) == 0 {
- goto _23
+ if (int32(_4_pPage.X6) & i32(8)) != 0 {
+ _needSync = i32(1)
}
-
- _needSync = i32(1)
-_23:
_sqlite3PagerUnrefNotNull(tls, _4_pPage)
_22:
_21:
goto _24
-
_20:
- if store23(&_4_pPage, _sqlite3PagerLookup(tls, _pPager, _4_pg)) == nil {
+ if store25(&_4_pPage, _sqlite3PagerLookup(tls, _pPager, _4_pg)) == nil {
goto _25
}
-
- if (int32(_4_pPage.X6) & i32(8)) == 0 {
- goto _26
+ if (int32(_4_pPage.X6) & i32(8)) != 0 {
+ _needSync = i32(1)
}
-
- _needSync = i32(1)
-_26:
_sqlite3PagerUnrefNotNull(tls, _4_pPage)
_25:
_24:
_ii += 1
goto _14
-
_18:
if _rc != i32(0) || _needSync == 0 {
goto _28
}
-
func() {
if (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52958), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(10644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52958), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(11747)))
crt.X__builtin_abort(tls)
}
}()
@@ -14389,27 +14189,22 @@ _31:
if _ii >= _nPage {
goto _34
}
-
_12_pPage = _sqlite3PagerLookup(tls, _pPager, _pg1+uint32(_ii))
- if _12_pPage == nil {
- goto _35
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pPage)) + uintptr(24 /* X6 */)))
- *p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ if _12_pPage != nil {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pPage)) + uintptr(24 /* X6 */)))
+ *p = uint16(int32(*p) | i32(8))
+ sink14 = *p
+ }
+ _sqlite3PagerUnrefNotNull(tls, _12_pPage)
}
- _sqlite3PagerUnrefNotNull(tls, _12_pPage)
-_35:
_ii += 1
goto _31
-
_34:
_28:
func() {
if (int32(_pPager.X18) & i32(4)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52968), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(12080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52968), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWriteLargeSectorØ00__func__Ø000))), unsafe.Pointer(str(13113)))
crt.X__builtin_abort(tls)
}
}()
@@ -14421,229 +14216,212 @@ _28:
return _rc
}
-var _pagerWriteLargeSectorØ00__func__Ø000 [22]int8 // -
+var _pagerWriteLargeSectorØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_pagerWriteLargeSectorØ00__func__Ø000[0], str(12124), 22)
+ crt.Xstrncpy(nil, &_pagerWriteLargeSectorØ00__func__Ø000[0], str(13156), 22)
}
-var _sqlite3PendingByte int32 // sqlite3.c:17432:20
+var _sqlite3PendingByte int32
func init() {
_sqlite3PendingByte = i32(1073741824)
}
-func _sqlite3PagerGet(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) { // sqlite3.c:52510:1
+// Dispatch all page fetch requests to the appropriate getter method.
+func _sqlite3PagerGet(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) {
return (*(*func(*crt.TLS, *XPager, uint32, **XPgHdr, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, uint32, *unsafe.Pointer, int32) int32
}{(_pPager.X57)})))(tls, _pPager, _pgno, _ppPage, _flags)
}
-func _pager_write(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:52801:1
- var _pPager *XPager // sqlite3.c:52802:9
- _ = _pPager
- var _rc int32 // sqlite3.c:52803:7
- _ = _rc
+// Mark a single data page as writeable. The page is written into the
+// main journal or sub-journal as required. If the page is written into
+// one of the journals, the corresponding bit is set in the
+// Pager.pInJournal bitvec and the PagerSavepoint.pInSavepoint bitvecs
+// of any open savepoints as appropriate.
+func _pager_write(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ var _rc int32
+ var _pPager *XPager
_pPager = (*XPager)(_pPg.X4)
_rc = i32(0)
func() {
if int32(_pPager.X14) != i32(2) && int32(_pPager.X14) != i32(3) && int32(_pPager.X14) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52809), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(12148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52809), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(13178)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52813), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52813), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52814), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(12264)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52814), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(13293)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X12) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52815), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(12284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52815), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(13312)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pPager.X14) != i32(2) {
goto _10
}
-
_rc = _pager_open_journal(tls, _pPager)
- if _rc == i32(0) {
- goto _11
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_11:
_10:
func() {
if int32(_pPager.X14) < i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52831), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(12304)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52831), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(13332)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52832), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52832), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3PcacheMakeDirty(tls, _pPg)
func() {
if ((*XBitvec)(_pPager.X30) != nil) != ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52841), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(12344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52841), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(13370)))
crt.X__builtin_abort(tls)
}
}()
if (*XBitvec)(_pPager.X30) == nil || _sqlite3BitvecTestNotNull(tls, (*XBitvec)(_pPager.X30), _pPg.X5) != i32(0) {
goto _19
}
-
func() {
if bool2int((*XWal)(_pPager.X60) != nil) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52845), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(12392)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52845), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_writeØ00__func__Ø000))), unsafe.Pointer(str(13417)))
crt.X__builtin_abort(tls)
}
}()
if (_pPg.X5) > (_pPager.X23) {
goto _22
}
-
_rc = _pagerAddPageToRollbackJournal(tls, _pPg)
- if _rc == i32(0) {
- goto _23
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_23:
goto _24
-
_22:
- if int32(_pPager.X14) == i32(4) {
- goto _25
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
- *p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ if int32(_pPager.X14) != i32(4) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
+ *p = uint16(int32(*p) | i32(8))
+ sink14 = *p
+ }
}
-_25:
_24:
_19:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) | i32(4))
- sink12 = *p
+ sink14 = *p
}
- if (_pPager.X38) <= i32(0) {
- goto _26
+ if (_pPager.X38) > i32(0) {
+ _rc = _subjournalPageIfRequired(tls, _pPg)
}
-
- _rc = _subjournalPageIfRequired(tls, _pPg)
-_26:
- if (_pPager.X22) >= (_pPg.X5) {
- goto _27
+ if (_pPager.X22) < (_pPg.X5) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = _pPg.X5
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = _pPg.X5
-_27:
return _rc
}
-var _pager_writeØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pager_writeØ00__func__Ø000[0], str(12416), 12)
-}
-
-func _pager_open_journal(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:52586:1
- var _rc int32 // sqlite3.c:52587:7
- _ = _rc
- var _pVfs *Xsqlite3_vfs // sqlite3.c:52588:15
- _ = _pVfs
- var _5_flags int32 // sqlite3.c:52610:13
- _ = _5_flags
- var _5_nSpill int32 // sqlite3.c:52611:13
- _ = _5_nSpill
+var _pager_writeØ00__func__Ø000 [12]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pager_writeØ00__func__Ø000[0], str(13440), 12)
+}
+
+// This function is called at the start of every write transaction.
+// There must already be a RESERVED or EXCLUSIVE lock on the database
+// file when this routine is called.
+//
+// Open the journal file for pager pPager and write a journal header
+// to the start of it. If there are active savepoints, open the sub-journal
+// as well. This function is only used when the journal file is being
+// opened to write a rollback log for a transaction. It is not used
+// when opening a hot journal file to roll it back.
+//
+// If the journal file is already open (as it may be in exclusive mode),
+// then this function just writes a journal header to the start of the
+// already open file.
+//
+// Whether or not the journal file is opened by this function, the
+// Pager.pInJournal bitvec structure is allocated.
+//
+// Return SQLITE_OK if everything is successful. Otherwise, return
+// SQLITE_NOMEM if the attempt to allocate Pager.pInJournal fails, or
+// an IO error code if opening or writing the journal file fails.
+func _pager_open_journal(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc, _5_flags, _5_nSpill int32
+ var _pVfs *Xsqlite3_vfs
_rc = i32(0)
_pVfs = (*Xsqlite3_vfs)(_pPager.X0)
func() {
if int32(_pPager.X14) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52590), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(12428)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52590), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(13452)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52591), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52591), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBitvec)(_pPager.X30) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52592), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(12464)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52592), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(13488)))
crt.X__builtin_abort(tls)
}
}()
if func() int32 {
if (_pPager.X26) != 0 {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52597), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52597), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _8
+ }() != 0 {
+ return _pPager.X26
}
- return _pPager.X26
-
-_8:
if (*XWal)(_pPager.X60) != nil || int32(_pPager.X2) == i32(2) {
goto _10
}
-
*(**XBitvec)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(60 /* X30 */))))) = _sqlite3BitvecCreate(tls, _pPager.X22)
- if (*XBitvec)(_pPager.X30) != nil {
- goto _11
+ if (*XBitvec)(_pPager.X30) == nil {
+ return _sqlite3NomemError(tls, i32(52602))
}
- return _sqlite3NomemError(tls, i32(52602))
-
-_11:
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil {
goto _12
}
-
- if int32(_pPager.X2) != i32(4) {
- goto _13
+ if int32(_pPager.X2) == i32(4) {
+ _sqlite3MemJournalOpen(tls, (*Xsqlite3_file)(_pPager.X32))
+ goto _14
}
-
- _sqlite3MemJournalOpen(tls, (*Xsqlite3_file)(_pPager.X32))
- goto _14
-
-_13:
_5_flags = i32(6)
- if (_pPager.X10) == 0 {
- goto _15
- }
-
- {
- p := &_5_flags
- *p = (*p) | i32(4104)
- sink1 = *p
+ if (_pPager.X10) != 0 {
+ {
+ p := &_5_flags
+ *p = (*p) | i32(4104)
+ sink1 = *p
+ }
+ _5_nSpill = _sqlite3Config.X9
+ goto _16
}
- _5_nSpill = _sqlite3Config.X9
- goto _16
-
-_15:
{
p := &_5_flags
*p = (*p) | i32(2048)
@@ -14652,43 +14430,33 @@ _15:
_5_nSpill = i32(0)
_16:
_rc = _databaseIsUnmoved(tls, _pPager)
- if _rc != i32(0) {
- goto _17
+ if _rc == i32(0) {
+ _rc = _sqlite3JournalOpen(tls, _pVfs, _pPager.X52, (*Xsqlite3_file)(_pPager.X32), _5_flags, _5_nSpill)
}
-
- _rc = _sqlite3JournalOpen(tls, _pVfs, _pPager.X52, (*Xsqlite3_file)(_pPager.X32), _5_flags, _5_nSpill)
-_17:
_14:
func() {
if _rc == i32(0) && (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52630), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(12488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52630), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(13510)))
crt.X__builtin_abort(tls)
}
}()
_12:
- if _rc != i32(0) {
- goto _21
+ if _rc == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(48 /* X27 */))) = i32(0)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(20 /* X17 */))) = uint8(i32(0))
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(84 /* X35 */))) = int64(i32(0))
+ _rc = _writeJournalHdr(tls, _pPager)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(48 /* X27 */))) = i32(0)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(20 /* X17 */))) = uint8(i32(0))
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(84 /* X35 */))) = int64(i32(0))
- _rc = _writeJournalHdr(tls, _pPager)
-_21:
_10:
- if _rc == i32(0) {
- goto _22
+ if _rc != i32(0) {
+ _sqlite3BitvecDestroy(tls, (*XBitvec)(_pPager.X30))
+ *(**XBitvec)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(60 /* X30 */))))) = nil
+ goto _23
}
-
- _sqlite3BitvecDestroy(tls, (*XBitvec)(_pPager.X30))
- *(**XBitvec)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(60 /* X30 */))))) = nil
- goto _23
-
-_22:
func() {
if int32(_pPager.X14) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52651), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(12428)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52651), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_open_journalØ00__func__Ø000))), unsafe.Pointer(str(13452)))
crt.X__builtin_abort(tls)
}
}()
@@ -14697,130 +14465,118 @@ _23:
return _rc
}
-var _pager_open_journalØ00__func__Ø000 [19]int8 // -
+var _pager_open_journalØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_pager_open_journalØ00__func__Ø000[0], str(12528), 19)
+ crt.Xstrncpy(nil, &_pager_open_journalØ00__func__Ø000[0], str(13547), 19)
}
-func _sqlite3MemJournalOpen(tls *crt.TLS, _pJfd *Xsqlite3_file) { // sqlite3.c:89148:1
+// Open an in-memory journal file.
+func _sqlite3MemJournalOpen(tls *crt.TLS, _pJfd *Xsqlite3_file) {
_sqlite3JournalOpen(tls, nil, nil, _pJfd, i32(0), i32(-1))
}
-func _databaseIsUnmoved(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:51859:1
- var _bHasMoved int32 // sqlite3.c:51860:7
- _ = _bHasMoved
- var _rc int32 // sqlite3.c:51861:7
- _ = _rc
+// Verify that the database file has not be deleted or renamed out from
+// under the pager. Return SQLITE_OK if the database is still were it ought
+// to be on disk. Return non-zero (SQLITE_READONLY_DBMOVED or some other error
+// code from sqlite3OsAccess()) if the database has gone missing.
+func _databaseIsUnmoved(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _bHasMoved, _rc int32
_bHasMoved = i32(0)
- if (_pPager.X10) == 0 {
- goto _0
+ if (_pPager.X10) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_0:
- if (_pPager.X22) != uint32(i32(0)) {
- goto _1
+ if (_pPager.X22) == uint32(i32(0)) {
+ return i32(0)
}
- return i32(0)
-
-_1:
func() {
if (_pPager.X51) == nil || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X51)) + 1*uintptr(i32(0))))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51865), unsafe.Pointer((*int8)(unsafe.Pointer(&_databaseIsUnmovedØ00__func__Ø000))), unsafe.Pointer(str(12548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51865), unsafe.Pointer((*int8)(unsafe.Pointer(&_databaseIsUnmovedØ00__func__Ø000))), unsafe.Pointer(str(13566)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3OsFileControl(tls, (*Xsqlite3_file)(_pPager.X31), i32(20), (unsafe.Pointer)(&_bHasMoved))
- if _rc != i32(12) {
- goto _5
+ if _rc == i32(12) {
+ _rc = i32(0)
+ goto _6
}
-
- _rc = i32(0)
- goto _6
-
-_5:
- if _rc != i32(0) || _bHasMoved == 0 {
- goto _8
+ if (_rc == i32(0)) && _bHasMoved != 0 {
+ _rc = i32(1032)
}
-
- _rc = i32(1032)
-_8:
_6:
- r0 = _rc
- return
+ return _rc
}
-var _databaseIsUnmovedØ00__func__Ø000 [18]int8 // -
+var _databaseIsUnmovedØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_databaseIsUnmovedØ00__func__Ø000[0], str(12592), 18)
+ crt.Xstrncpy(nil, &_databaseIsUnmovedØ00__func__Ø000[0], str(13608), 18)
}
-func _sqlite3OsFileControl(tls *crt.TLS, _id *Xsqlite3_file, _op int32, _pArg unsafe.Pointer) (r0 int32) { // sqlite3.c:20205:1
+// Use sqlite3OsFileControl() when we are doing something that might fail
+// and we need to know about the failures. Use sqlite3OsFileControlHint()
+// when simply tossing information over the wall to the VFS and we do not
+// really care if the VFS receives and understands the information since it
+// is only a hint and can be safely ignored. The sqlite3OsFileControlHint()
+// routine has no return value since the return value would be meaningless.
+func _sqlite3OsFileControl(tls *crt.TLS, _id *Xsqlite3_file, _op int32, _pArg unsafe.Pointer) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int32, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer) int32
}{((*Xsqlite3_io_methods)(_id.X0).X10)})))(tls, _id, _op, _pArg)
}
-func _writeJournalHdr(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:48335:1
- var _rc int32 // sqlite3.c:48336:7
- _ = _rc
- var _zHeader *int8 // sqlite3.c:48337:8
- _ = _zHeader
- var _nHeader uint32 // sqlite3.c:48338:7
- _ = _nHeader
- var _nWrite uint32 // sqlite3.c:48339:7
- _ = _nWrite
- var _ii int32 // sqlite3.c:48340:7
- _ = _ii
+// The journal file must be open when this routine is called. A journal
+// header (JOURNAL_HDR_SZ bytes) is written into the journal file at the
+// current location.
+//
+// The format for the journal header is as follows:
+// - 8 bytes: Magic identifying journal format.
+// - 4 bytes: Number of records in journal, or -1 no-sync mode is on.
+// - 4 bytes: Random number used for page hash.
+// - 4 bytes: Initial database page count.
+// - 4 bytes: Sector size used by the process that wrote this journal.
+// - 4 bytes: Database page size.
+//
+// Followed by (JOURNAL_HDR_SZ - 28) bytes of unused space.
+func _writeJournalHdr(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc, _ii int32
+ var _nHeader, _nWrite uint32
+ var _zHeader *int8
_rc = i32(0)
_zHeader = _pPager.X58
_nHeader = uint32(_pPager.X48)
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48342), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(12612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48342), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(13626)))
crt.X__builtin_abort(tls)
}
}()
- if _nHeader <= (_pPager.X47) {
- goto _2
+ if _nHeader > (_pPager.X47) {
+ _nHeader = _pPager.X47
}
-
- _nHeader = _pPager.X47
-_2:
_ii = i32(0)
_3:
if _ii >= (_pPager.X38) {
goto _6
}
-
- if ((*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37) + 44*uintptr(_ii))).X1) != int64(i32(0)) {
- goto _7
+ if ((*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37) + 44*uintptr(_ii))).X1) == int64(i32(0)) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37)+44*uintptr(_ii))))) + uintptr(8 /* X1 */))) = _pPager.X34
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37)+44*uintptr(_ii))))) + uintptr(8 /* X1 */))) = _pPager.X34
-_7:
_ii += 1
goto _3
-
_6:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(84 /* X35 */))) = store6((*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(76 /* X34 */))), _journalHdrOffset(tls, _pPager))
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && (_pPager.X4) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48380), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(12632)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48380), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(13646)))
crt.X__builtin_abort(tls)
}
}()
- if (_pPager.X4) == 0 && int32(_pPager.X2) != i32(4) && (_sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X31))&i32(512)) == 0 {
- goto _13
+ if (((_pPager.X4) != 0) || (int32(_pPager.X2) == i32(4))) || (_sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X31))&i32(512)) != 0 {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zHeader), (unsafe.Pointer)(&_aJournalMagic), u32(8))
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zHeader))+1*uintptr(u32(8)))))), u32(4294967295))
+ goto _14
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zHeader), (unsafe.Pointer)(&_aJournalMagic), u32(8))
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zHeader))+1*uintptr(u32(8)))))), u32(4294967295))
- goto _14
-
-_13:
crt.Xmemset(tls, (unsafe.Pointer)(_zHeader), i32(0), u32(12))
_14:
Xsqlite3_randomness(tls, int32(u32(4)), (unsafe.Pointer)((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(52 /* X28 */)))))
@@ -14834,11 +14590,10 @@ _15:
if _rc != i32(0) || _nWrite >= (_pPager.X47) {
goto _19
}
-
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(_zHeader), int32(_nHeader), _pPager.X34)
func() {
if (_pPager.X35) > (_pPager.X34) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48429), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(12672)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48429), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(13683)))
crt.X__builtin_abort(tls)
}
}()
@@ -14853,102 +14608,96 @@ _15:
sink5 = *p
}
goto _15
-
_19:
return _rc
}
-var _writeJournalHdrØ00__func__Ø000 [16]int8 // -
+var _writeJournalHdrØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_writeJournalHdrØ00__func__Ø000[0], str(12716), 16)
+ crt.Xstrncpy(nil, &_writeJournalHdrØ00__func__Ø000[0], str(13724), 16)
}
-func _journalHdrOffset(tls *crt.TLS, _pPager *XPager) (r0 int64) { // sqlite3.c:48252:1
- var _offset int64 // sqlite3.c:48253:7
- _ = _offset
- var _c int64 // sqlite3.c:48254:7
- _ = _c
+// Return the offset of the sector boundary at or immediately
+// following the value in pPager->journalOff, assuming a sector
+// size of pPager->sectorSize bytes.
+//
+// i.e for a sector size of 512:
+//
+// Pager.journalOff Return value
+// ---------------------------------------
+// 0 0
+// 512 512
+// 100 512
+// 2000 2048
+//
+func _journalHdrOffset(tls *crt.TLS, _pPager *XPager) (r0 int64) {
+ var _offset, _c int64
_offset = i64(0)
_c = _pPager.X34
- if _c == 0 {
- goto _0
+ if _c != 0 {
+ _offset = (((_c - int64(i32(1))) / int64(_pPager.X47)) + int64(i32(1))) * int64(_pPager.X47)
}
-
- _offset = (((_c - int64(i32(1))) / int64(_pPager.X47)) + int64(i32(1))) * int64(_pPager.X47)
-_0:
func() {
if (_offset % int64(_pPager.X47)) != int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48258), unsafe.Pointer((*int8)(unsafe.Pointer(&_journalHdrOffsetØ00__func__Ø000))), unsafe.Pointer(str(12732)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48258), unsafe.Pointer((*int8)(unsafe.Pointer(&_journalHdrOffsetØ00__func__Ø000))), unsafe.Pointer(str(13740)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _offset < _c {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48259), unsafe.Pointer((*int8)(unsafe.Pointer(&_journalHdrOffsetØ00__func__Ø000))), unsafe.Pointer(str(12768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48259), unsafe.Pointer((*int8)(unsafe.Pointer(&_journalHdrOffsetØ00__func__Ø000))), unsafe.Pointer(str(13773)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_offset - _c) >= int64(_pPager.X47) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48260), unsafe.Pointer((*int8)(unsafe.Pointer(&_journalHdrOffsetØ00__func__Ø000))), unsafe.Pointer(str(12780)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48260), unsafe.Pointer((*int8)(unsafe.Pointer(&_journalHdrOffsetØ00__func__Ø000))), unsafe.Pointer(str(13783)))
crt.X__builtin_abort(tls)
}
}()
return _offset
}
-var _journalHdrOffsetØ00__func__Ø000 [17]int8 // -
+var _journalHdrOffsetØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_journalHdrOffsetØ00__func__Ø000[0], str(12816), 17)
+ crt.Xstrncpy(nil, &_journalHdrOffsetØ00__func__Ø000[0], str(13817), 17)
}
-func _sqlite3OsDeviceCharacteristics(tls *crt.TLS, _id *Xsqlite3_file) (r0 int32) { // sqlite3.c:20231:1
+func _sqlite3OsDeviceCharacteristics(tls *crt.TLS, _id *Xsqlite3_file) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{((*Xsqlite3_io_methods)(_id.X0).X12)})))(tls, _id)
}
-var _aJournalMagic [8]uint8 // sqlite3.c:47676:28
+var _aJournalMagic [8]uint8
func init() {
_aJournalMagic = [8]uint8{217, 213, 5, 249, 32, 161, 99, 215}
}
-func Xsqlite3_randomness(tls *crt.TLS, _N int32, _pBuf unsafe.Pointer) { // sqlite3.c:26742:12
- var _t uint8 // sqlite3.c:26743:17
- _ = _t
- var _zBuf *uint8 // sqlite3.c:26744:17
- _ = _zBuf
- var _mutex *Xsqlite3_mutex // sqlite3.c:26760:17
- _ = _mutex
- var _2_i int32 // sqlite3.c:26788:9
- _ = _2_i
- var _2_k [256]int8 // sqlite3.c:26789:10
- _ = _2_k
+// Return N random bytes.
+func Xsqlite3_randomness(tls *crt.TLS, _N int32, _pBuf unsafe.Pointer) {
+ var _2_i int32
+ var _t uint8
+ var _zBuf *uint8
+ var _mutex *Xsqlite3_mutex
+ var _2_k [256]int8
_zBuf = (*uint8)(_pBuf)
- if Xsqlite3_initialize(tls) == 0 {
- goto _0
+ if Xsqlite3_initialize(tls) != 0 {
+ return
}
- return
-
-_0:
_mutex = _sqlite3MutexAlloc(tls, i32(5))
Xsqlite3_mutex_enter(tls, _mutex)
- if _N > i32(0) && _pBuf != nil {
- goto _2
+ if (_N <= i32(0)) || (_pBuf == nil) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng)) + uintptr(0 /* X0 */))) = uint8(i32(0))
+ Xsqlite3_mutex_leave(tls, _mutex)
+ return
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng)) + uintptr(0 /* X0 */))) = uint8(i32(0))
- Xsqlite3_mutex_leave(tls, _mutex)
- return
-
-_2:
if (_sqlite3Prng.X0) != 0 {
goto _3
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng)) + uintptr(2 /* X2 */))) = uint8(i32(0))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng)) + uintptr(1 /* X1 */))) = uint8(i32(0))
_sqlite3OsRandomness(tls, Xsqlite3_vfs_find(tls, nil), i32(256), (*int8)(unsafe.Pointer(&_2_k)))
@@ -14957,18 +14706,15 @@ _4:
if _2_i >= i32(256) {
goto _7
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[256]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng))+uintptr(3 /* X3 */))))) + 1*uintptr(_2_i))) = uint8(_2_i)
_2_i += 1
goto _4
-
_7:
_2_i = i32(0)
_8:
if _2_i >= i32(256) {
goto _11
}
-
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng)) + uintptr(2 /* X2 */)))
*p = uint8(int32(*p) + (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[256]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng))+uintptr(3 /* X3 */))))) + 1*uintptr(_2_i)))) + int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_2_k)) + 1*uintptr(_2_i))))))
@@ -14979,13 +14725,12 @@ _8:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[256]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng))+uintptr(3 /* X3 */))))) + 1*uintptr(_2_i))) = _t
_2_i += 1
goto _8
-
_11:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng)) + uintptr(0 /* X0 */))) = uint8(i32(1))
_3:
func() {
if _N <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_randomnessØ00__func__Ø000))), unsafe.Pointer(str(12836)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_randomnessØ00__func__Ø000))), unsafe.Pointer(str(13834)))
crt.X__builtin_abort(tls)
}
}()
@@ -15004,37 +14749,35 @@ _14:
*p = uint8(int32(*p) + int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[256]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng))+uintptr(3 /* X3 */))))) + 1*uintptr(_sqlite3Prng.X1)))))
sink2 = *p
}
- *postInc11(&_zBuf, 1) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[256]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng))+uintptr(3 /* X3 */))))) + 1*uintptr(_t)))
+ *postInc13(&_zBuf, 1) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[256]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Prng))+uintptr(3 /* X3 */))))) + 1*uintptr(_t)))
if preInc1(&_N, -1) != 0 {
goto _14
}
-
Xsqlite3_mutex_leave(tls, _mutex)
+ _ = _zBuf
+ _ = _2_k
}
-var _sqlite3Prng Tsqlite3PrngType // sqlite3.c:26737:3
+var _sqlite3Prng Tsqlite3PrngType
-func _sqlite3OsRandomness(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _nByte int32, _zBufOut *int8) (r0 int32) { // sqlite3.c:20333:1
+// SQLITE_OMIT_LOAD_EXTENSION
+func _sqlite3OsRandomness(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _nByte int32, _zBufOut *int8) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_vfs, int32, *int8) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *int8) int32
}{(_pVfs.X14)})))(tls, _pVfs, _nByte, _zBufOut)
}
-func Xsqlite3_vfs_find(tls *crt.TLS, _zVfs *int8) (r0 *Xsqlite3_vfs) { // sqlite3.c:20411:12
- var _pVfs *Xsqlite3_vfs // sqlite3.c:20412:15
- _ = _pVfs
- var _mutex *Xsqlite3_mutex // sqlite3.c:20414:17
- _ = _mutex
- var _rc int32 // sqlite3.c:20417:7
- _ = _rc
+// Locate a VFS by name. If no name is given, simply return the
+// first VFS on the list.
+func Xsqlite3_vfs_find(tls *crt.TLS, _zVfs *int8) (r0 *Xsqlite3_vfs) {
+ var _rc int32
+ var _mutex *Xsqlite3_mutex
+ var _pVfs *Xsqlite3_vfs
_pVfs = nil
_rc = Xsqlite3_initialize(tls)
- if _rc == 0 {
- goto _0
+ if _rc != 0 {
+ return nil
}
- return nil
-
-_0:
_mutex = _sqlite3MutexAlloc(tls, i32(2))
Xsqlite3_mutex_enter(tls, _mutex)
_pVfs = _vfsList
@@ -15042,259 +14785,222 @@ _1:
if _pVfs == nil {
goto _4
}
-
- if _zVfs != nil {
- goto _5
+ if _zVfs == nil {
+ goto _4
}
-
- goto _4
-
-_5:
- if crt.Xstrcmp(tls, _zVfs, _pVfs.X4) != i32(0) {
- goto _6
+ if crt.Xstrcmp(tls, _zVfs, _pVfs.X4) == i32(0) {
+ goto _4
}
-
- goto _4
-
-_6:
_pVfs = (*Xsqlite3_vfs)(_pVfs.X3)
goto _1
-
_4:
Xsqlite3_mutex_leave(tls, _mutex)
return _pVfs
}
-var _vfsList *Xsqlite3_vfs // sqlite3.c:20404:20
+var _vfsList *Xsqlite3_vfs
-var _sqlite3_randomnessØ00__func__Ø000 [19]int8 // -
+var _sqlite3_randomnessØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_randomnessØ00__func__Ø000[0], str(12840), 19)
+ crt.Xstrncpy(nil, &_sqlite3_randomnessØ00__func__Ø000[0], str(13838), 19)
}
-func _sqlite3BitvecDestroy(tls *crt.TLS, _p *XBitvec) { // sqlite3.c:43986:1
- var _1_i uint32 // sqlite3.c:43989:18
- _ = _1_i
- if _p != nil {
- goto _0
+// Destroy a bitmap object. Reclaim all memory used.
+func _sqlite3BitvecDestroy(tls *crt.TLS, _p *XBitvec) {
+ var _1_i uint32
+ if _p == nil {
+ return
}
- return
-
-_0:
if (_p.X2) == 0 {
goto _1
}
-
_1_i = uint32(i32(0))
_2:
if _1_i >= u32(125) {
goto _5
}
-
- _sqlite3BitvecDestroy(tls, *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_i))))
+ _sqlite3BitvecDestroy(tls, *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_i))))
_1_i += 1
goto _2
-
_5:
_1:
Xsqlite3_free(tls, (unsafe.Pointer)(_p))
}
-func _sqlite3PcacheMakeDirty(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44678:1
+// Make sure the page is marked as dirty. If it isn't dirty already,
+// make it so.
+func _sqlite3PcacheMakeDirty(tls *crt.TLS, _p *XPgHdr) {
func() {
if int32(_p.X7) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(12860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(13857)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PcachePageSanity(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(12872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(13867)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_p.X6) & i32(17)) == 0 {
goto _4
}
-
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) & i32(-17))
- sink12 = *p
+ sink14 = *p
}
- if (int32(_p.X6) & i32(1)) == 0 {
- goto _5
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
- *p = uint16(int32(*p) ^ i32(3))
- sink12 = *p
- }
- func() {
- if (int32(_p.X6) & i32(3)) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44686), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(12900)))
- crt.X__builtin_abort(tls)
+ if (int32(_p.X6) & i32(1)) != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
+ *p = uint16(int32(*p) ^ i32(3))
+ sink14 = *p
}
- }()
- _pcacheManageDirtyList(tls, _p, uint8(i32(2)))
-_5:
+ func() {
+ if (int32(_p.X6) & i32(3)) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44686), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(13894)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pcacheManageDirtyList(tls, _p, uint8(i32(2)))
+ }
func() {
if _sqlite3PcachePageSanity(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44689), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(12872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44689), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeDirtyØ00__func__Ø000))), unsafe.Pointer(str(13867)))
crt.X__builtin_abort(tls)
}
}()
_4:
}
-var _sqlite3PcacheMakeDirtyØ00__func__Ø000 [23]int8 // -
+var _sqlite3PcacheMakeDirtyØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheMakeDirtyØ00__func__Ø000[0], str(12952), 23)
+ crt.Xstrncpy(nil, &_sqlite3PcacheMakeDirtyØ00__func__Ø000[0], str(13946), 23)
}
-func _sqlite3PcachePageSanity(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:44231:1
- var _pCache *XPCache // sqlite3.c:44232:10
- _ = _pCache
+func _sqlite3PcachePageSanity(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ var _pCache *XPCache
func() {
if _pPg == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(12976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(13969)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPg.X5) <= uint32(i32(0)) && (*XPager)(_pPg.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44234), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(12984)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44234), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(13976)))
crt.X__builtin_abort(tls)
}
}()
_pCache = (*XPCache)(_pPg.X8)
func() {
if _pCache == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(13016)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(14006)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pPg.X6) & i32(1)) == 0 {
- goto _7
+ if (int32(_pPg.X6) & i32(1)) != 0 {
+ func() {
+ if (int32(_pPg.X6) & i32(2)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(14016)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XPgHdr)(_pCache.X0) == _pPg {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44239), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(14046)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XPgHdr)(_pCache.X1) == _pPg {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44240), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(14066)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- func() {
- if (int32(_pPg.X6) & i32(2)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(13028)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XPgHdr)(_pCache.X0) == _pPg {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44239), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(13060)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XPgHdr)(_pCache.X1) == _pPg {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44240), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(13080)))
- crt.X__builtin_abort(tls)
- }
- }()
-_7:
- if (int32(_pPg.X6) & i32(4)) == 0 {
- goto _14
+ if (int32(_pPg.X6) & i32(4)) != 0 {
+ func() {
+ if (int32(_pPg.X6) & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44244), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(14090)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- func() {
- if (int32(_pPg.X6) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44244), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePageSanityØ00__func__Ø000))), unsafe.Pointer(str(13104)))
- crt.X__builtin_abort(tls)
- }
- }()
-_14:
return i32(1)
}
-var _sqlite3PcachePageSanityØ00__func__Ø000 [24]int8 // -
+var _sqlite3PcachePageSanityØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcachePageSanityØ00__func__Ø000[0], str(13132), 24)
+ crt.Xstrncpy(nil, &_sqlite3PcachePageSanityØ00__func__Ø000[0], str(14115), 24)
}
-func _pcacheManageDirtyList(tls *crt.TLS, _pPage *XPgHdr, _addRemove uint8) { // sqlite3.c:44281:1
- var _p *XPCache // sqlite3.c:44282:10
- _ = _p
+// Manage pPage's participation on the dirty list. Bits of the addRemove
+// argument determines what operation to do. The 0x01 bit means first
+// remove pPage from the dirty list. The 0x02 means add pPage back to
+// the dirty list. Doing both moves pPage to the front of the dirty list.
+func _pcacheManageDirtyList(tls *crt.TLS, _pPage *XPgHdr, _addRemove uint8) {
+ var _p *XPCache
_p = (*XPCache)(_pPage.X8)
if (int32(_addRemove) & i32(1)) == 0 {
goto _0
}
-
func() {
if (*XPgHdr)(_pPage.X9) == nil && _pPage != (*XPgHdr)(_p.X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44288), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13156)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44288), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14139)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XPgHdr)(_pPage.X10) == nil && _pPage != (*XPgHdr)(_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44289), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44289), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14181)))
crt.X__builtin_abort(tls)
}
}()
- if (*XPgHdr)(_p.X2) != _pPage {
- goto _7
+ if (*XPgHdr)(_p.X2) == _pPage {
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = (*XPgHdr)(_pPage.X10)
}
-
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = (*XPgHdr)(_pPage.X10)
-_7:
- if (*XPgHdr)(_pPage.X9) == nil {
- goto _8
+ if (*XPgHdr)(_pPage.X9) != nil {
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X9) + uintptr(36 /* X10 */))))) = (*XPgHdr)(_pPage.X10)
+ goto _9
}
-
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X9) + uintptr(36 /* X10 */))))) = (*XPgHdr)(_pPage.X10)
- goto _9
-
-_8:
func() {
if _pPage != (*XPgHdr)(_p.X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44299), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44299), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14219)))
crt.X__builtin_abort(tls)
}
}()
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = (*XPgHdr)(_pPage.X10)
_9:
- if (*XPgHdr)(_pPage.X10) == nil {
- goto _12
+ if (*XPgHdr)(_pPage.X10) != nil {
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X10) + uintptr(32 /* X9 */))))) = (*XPgHdr)(_pPage.X9)
+ goto _13
}
-
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X10) + uintptr(32 /* X9 */))))) = (*XPgHdr)(_pPage.X9)
- goto _13
-
-_12:
func() {
if _pPage != (*XPgHdr)(_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44309), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13264)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44309), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14240)))
crt.X__builtin_abort(tls)
}
}()
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = (*XPgHdr)(_pPage.X9)
func() {
if (_p.X8) == 0 && int32(_p.X9) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44311), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44311), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14257)))
crt.X__builtin_abort(tls)
}
}()
- if (*XPgHdr)(_p.X0) != nil {
- goto _19
+ if (*XPgHdr)(_p.X0) == nil {
+ func() {
+ if int32(_p.X8) != i32(0) && int32(_p.X9) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44313), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14288)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(33 /* X9 */))) = uint8(i32(2))
}
-
- func() {
- if int32(_p.X8) != i32(0) && int32(_p.X9) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44313), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13316)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(33 /* X9 */))) = uint8(i32(2))
-_19:
_13:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(32 /* X9 */))))) = nil
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(36 /* X10 */))))) = nil
@@ -15302,80 +15008,65 @@ _0:
if (int32(_addRemove) & i32(2)) == 0 {
goto _23
}
-
func() {
if (*XPgHdr)(_pPage.X9) != nil || (*XPgHdr)(_pPage.X10) != nil || (*XPgHdr)(_p.X0) == _pPage {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44321), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13352)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44321), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14322)))
crt.X__builtin_abort(tls)
}
}()
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(32 /* X9 */))))) = (*XPgHdr)(_p.X0)
- if (*XPgHdr)(_pPage.X9) == nil {
- goto _28
+ if (*XPgHdr)(_pPage.X9) != nil {
+ func() {
+ if (*XPgHdr)((*XPgHdr)(_pPage.X9).X10) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44325), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14387)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X9) + uintptr(36 /* X10 */))))) = _pPage
+ goto _31
}
-
- func() {
- if (*XPgHdr)((*XPgHdr)(_pPage.X9).X10) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44325), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13420)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pPage.X9) + uintptr(36 /* X10 */))))) = _pPage
- goto _31
-
-_28:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = _pPage
- if (_p.X8) == 0 {
- goto _32
+ if (_p.X8) != 0 {
+ func() {
+ if int32(_p.X9) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44330), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(14420)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(33 /* X9 */))) = uint8(i32(1))
}
-
- func() {
- if int32(_p.X9) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44330), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheManageDirtyListØ00__func__Ø000))), unsafe.Pointer(str(13456)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(33 /* X9 */))) = uint8(i32(1))
-_32:
_31:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _pPage
- if (*XPgHdr)(_p.X2) != nil || i32(0) != (int32(_pPage.X6)&i32(8)) {
- goto _36
+ if ((*XPgHdr)(_p.X2) == nil) && (i32(0) == (int32(_pPage.X6) & i32(8))) {
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = _pPage
}
-
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = _pPage
-_36:
_23:
}
-var _pcacheManageDirtyListØ00__func__Ø000 [22]int8 // -
+var _pcacheManageDirtyListØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_pcacheManageDirtyListØ00__func__Ø000[0], str(13472), 22)
+ crt.Xstrncpy(nil, &_pcacheManageDirtyListØ00__func__Ø000[0], str(14434), 22)
}
-func _pagerAddPageToRollbackJournal(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:52744:1
- var _pPager *XPager // sqlite3.c:52745:9
- _ = _pPager
- var _rc int32 // sqlite3.c:52746:7
- _ = _rc
- var _cksum uint32 // sqlite3.c:52747:7
- _ = _cksum
- var _pData2 *int8 // sqlite3.c:52748:8
- _ = _pData2
- var _iOff int64 // sqlite3.c:52749:7
- _ = _iOff
+// Write page pPg onto the end of the rollback journal.
+func _pagerAddPageToRollbackJournal(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
+ var _rc int32
+ var _iOff int64
+ var _cksum uint32
+ var _pData2 *int8
+ var _pPager *XPager
_pPager = (*XPager)(_pPg.X4)
_iOff = _pPager.X34
func() {
if (_pPg.X5) == uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52754), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(13496)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52754), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(14456)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X35) > (_pPager.X34) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52756), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(13532)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52756), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(14489)))
crt.X__builtin_abort(tls)
}
}()
@@ -15384,29 +15075,20 @@ func _pagerAddPageToRollbackJournal(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { //
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ sink14 = *p
}
_rc = _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iOff, _pPg.X5)
- if _rc == i32(0) {
- goto _4
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_4:
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(_pData2), _pPager.X48, _iOff+int64(i32(4)))
- if _rc == i32(0) {
- goto _5
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_5:
_rc = _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), (_iOff+int64(_pPager.X48))+int64(i32(4)), _cksum)
- if _rc == i32(0) {
- goto _6
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_6:
{
p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */)))
*p = (*p) + int64(i32(8)+(_pPager.X48))
@@ -15415,14 +15097,14 @@ _6:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(48 /* X27 */))) += 1
func() {
if (*XBitvec)(_pPager.X30) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52785), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(13572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52785), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(14528)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3BitvecSet(tls, (*XBitvec)(_pPager.X30), _pPg.X5)
func() {
if _rc != i32(0) && _rc != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52788), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(4168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52788), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(5805)))
crt.X__builtin_abort(tls)
}
}()
@@ -15433,314 +15115,319 @@ _6:
}
func() {
if _rc != i32(0) && _rc != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52790), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(4168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52790), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAddPageToRollbackJournalØ00__func__Ø000))), unsafe.Pointer(str(5805)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-var _pagerAddPageToRollbackJournalØ00__func__Ø000 [30]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pagerAddPageToRollbackJournalØ00__func__Ø000[0], str(13596), 30)
-}
-
-func _pager_cksum(tls *crt.TLS, _pPager *XPager, _aData *uint8) (r0 uint32) { // sqlite3.c:49088:1
- var _cksum uint32 // sqlite3.c:49089:7
- _ = _cksum
- var _i int32 // sqlite3.c:49090:7
- _ = _i
+var _pagerAddPageToRollbackJournalØ00__func__Ø000 [30]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pagerAddPageToRollbackJournalØ00__func__Ø000[0], str(14550), 30)
+}
+
+// Parameter aData must point to a buffer of pPager->pageSize bytes
+// of data. Compute and return a checksum based ont the contents of the
+// page of data and the current value of pPager->cksumInit.
+//
+// This is not a real checksum. It is really just the sum of the
+// random initial value (pPager->cksumInit) and every 200th byte
+// of the page data, starting with byte offset (pPager->pageSize%200).
+// Each byte is interpreted as an 8-bit unsigned integer.
+//
+// Changing the formula used to compute this checksum results in an
+// incompatible journal file format.
+//
+// If journal corruption occurs due to a power failure, the most likely
+// scenario is that one end or the other of the record will be changed.
+// It is much less likely that the two ends of the journal record will be
+// correct and the middle be corrupt. Thus, this "checksum" scheme,
+// though fast and simple, catches the mostly likely kind of corruption.
+func _pager_cksum(tls *crt.TLS, _pPager *XPager, _aData *uint8) (r0 uint32) {
+ var _i int32
+ var _cksum uint32
_cksum = _pPager.X28
_i = (_pPager.X48) - i32(200)
_0:
- if _i <= i32(0) {
- goto _1
- }
-
- {
- p := &_cksum
- *p = (*p) + uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(_i))))
- sink5 = *p
- }
- {
- p := &_i
- *p = (*p) - i32(200)
- sink1 = *p
+ if _i > i32(0) {
+ {
+ p := &_cksum
+ *p = (*p) + uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(_i))))
+ sink5 = *p
+ }
+ {
+ p := &_i
+ *p = (*p) - i32(200)
+ sink1 = *p
+ }
+ goto _0
}
- goto _0
-
-_1:
return _cksum
}
-func _sqlite3PagerUnrefNotNull(tls *crt.TLS, _pPg *XPgHdr) { // sqlite3.c:52549:1
- var _pPager *XPager // sqlite3.c:52550:9
- _ = _pPager
+// Release a page reference.
+//
+// If the number of references to the page drop to zero, then the
+// page is added to the LRU list. When all references to all pages
+// are released, a rollback occurs and the lock on the database is
+// removed.
+func _sqlite3PagerUnrefNotNull(tls *crt.TLS, _pPg *XPgHdr) {
+ var _pPager *XPager
func() {
if _pPg == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52551), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerUnrefNotNullØ00__func__Ø000))), unsafe.Pointer(str(12976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52551), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerUnrefNotNullØ00__func__Ø000))), unsafe.Pointer(str(13969)))
crt.X__builtin_abort(tls)
}
}()
_pPager = (*XPager)(_pPg.X4)
- if (int32(_pPg.X6) & i32(32)) == 0 {
- goto _2
+ if (int32(_pPg.X6) & i32(32)) != 0 {
+ _pagerReleaseMapPage(tls, _pPg)
+ goto _3
}
-
- _pagerReleaseMapPage(tls, _pPg)
- goto _3
-
-_2:
_sqlite3PcacheRelease(tls, _pPg)
_3:
_pagerUnlockIfUnused(tls, _pPager)
}
-var _sqlite3PagerUnrefNotNullØ00__func__Ø000 [25]int8 // -
+var _sqlite3PagerUnrefNotNullØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerUnrefNotNullØ00__func__Ø000[0], str(13628), 25)
+ crt.Xstrncpy(nil, &_sqlite3PagerUnrefNotNullØ00__func__Ø000[0], str(14580), 25)
}
-func _pagerReleaseMapPage(tls *crt.TLS, _pPg *XPgHdr) { // sqlite3.c:50972:1
- var _pPager *XPager // sqlite3.c:50973:9
- _ = _pPager
+// Release a reference to page pPg. pPg must have been returned by an
+// earlier call to pagerAcquireMapPage().
+func _pagerReleaseMapPage(tls *crt.TLS, _pPg *XPgHdr) {
+ var _pPager *XPager
_pPager = (*XPager)(_pPg.X4)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(124 /* X41 */))) -= 1
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(12 /* X3 */))))) = (*XPgHdr)(_pPager.X43)
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(136 /* X43 */))))) = _pPg
func() {
if ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0).X0) < i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50978), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerReleaseMapPageØ00__func__Ø000))), unsafe.Pointer(str(13656)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50978), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerReleaseMapPageØ00__func__Ø000))), unsafe.Pointer(str(14605)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64((_pPg.X5)-uint32(i32(1)))*int64(_pPager.X48), _pPg.X1)
}
-var _pagerReleaseMapPageØ00__func__Ø000 [20]int8 // -
+var _pagerReleaseMapPageØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_pagerReleaseMapPageØ00__func__Ø000[0], str(13692), 20)
+ crt.Xstrncpy(nil, &_pagerReleaseMapPageØ00__func__Ø000[0], str(14639), 20)
}
-func _sqlite3OsUnfetch(tls *crt.TLS, _id *Xsqlite3_file, _iOff int64, _p unsafe.Pointer) (r0 int32) { // sqlite3.c:20260:1
+func _sqlite3OsUnfetch(tls *crt.TLS, _id *Xsqlite3_file, _iOff int64, _p unsafe.Pointer) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int64, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int64, unsafe.Pointer) int32
}{((*Xsqlite3_io_methods)(_id.X0).X18)})))(tls, _id, _iOff, _p)
}
-func _sqlite3PcacheRelease(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44633:1
+// Decrement the reference count on a page. If the page is clean and the
+// reference count drops to 0, then it is made eligible for recycling.
+func _sqlite3PcacheRelease(tls *crt.TLS, _p *XPgHdr) {
func() {
if int32(_p.X7) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheReleaseØ00__func__Ø000))), unsafe.Pointer(str(12860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheReleaseØ00__func__Ø000))), unsafe.Pointer(str(13857)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr(_p.X8) + uintptr(12 /* X3 */))) -= 1
- if int32(preInc16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(26 /* X7 */))), -1)) != i32(0) {
+ if int32(preInc18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(26 /* X7 */))), -1)) != i32(0) {
goto _2
}
-
- if (int32(_p.X6) & i32(1)) == 0 {
- goto _3
+ if (int32(_p.X6) & i32(1)) != 0 {
+ _pcacheUnpin(tls, _p)
+ goto _4
}
-
- _pcacheUnpin(tls, _p)
- goto _4
-
-_3:
- if (*XPgHdr)(_p.X10) == nil {
- goto _5
+ if (*XPgHdr)(_p.X10) != nil {
+ _pcacheManageDirtyList(tls, _p, uint8(i32(3)))
}
-
- _pcacheManageDirtyList(tls, _p, uint8(i32(3)))
-_5:
_4:
_2:
}
-var _sqlite3PcacheReleaseØ00__func__Ø000 [21]int8 // -
+var _sqlite3PcacheReleaseØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheReleaseØ00__func__Ø000[0], str(13712), 21)
+ crt.Xstrncpy(nil, &_sqlite3PcacheReleaseØ00__func__Ø000[0], str(14659), 21)
}
-func _pcacheUnpin(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44354:1
- if ((*XPCache)(_p.X8).X8) == 0 {
- goto _0
+// Wrapper around the pluggable caches xUnpin method. If the cache is
+// being used for an in-memory database, this function is a no-op.
+func _pcacheUnpin(tls *crt.TLS, _p *XPgHdr) {
+ if ((*XPCache)(_p.X8).X8) != 0 {
+ (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3_pcache_page, int32))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32)
+ }{((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X8)})))(tls, (*XPCache)(_p.X8).X12, (*Xsqlite3_pcache_page)(_p.X0), i32(0))
}
-
- (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3_pcache_page, int32))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32)
- }{((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X8)})))(tls, (*XPCache)(_p.X8).X12, (*Xsqlite3_pcache_page)(_p.X0), i32(0))
-_0:
}
-func _pagerUnlockIfUnused(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:52252:1
- if (_pPager.X41) != i32(0) || _sqlite3PcacheRefCount(tls, (*XPCache)(_pPager.X59)) != i32(0) {
- goto _1
+func _pagerUnlockIfUnused(tls *crt.TLS, _pPager *XPager) {
+ if ((_pPager.X41) == i32(0)) && (_sqlite3PcacheRefCount(tls, (*XPCache)(_pPager.X59)) == i32(0)) {
+ _pagerUnlockAndRollback(tls, _pPager)
}
-
- _pagerUnlockAndRollback(tls, _pPager)
-_1:
}
-func _pagerUnlockAndRollback(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:49054:1
+// Execute a rollback if a transaction is active and unlock the
+// database file.
+//
+// If the pager has already entered the ERROR state, do not attempt
+// the rollback at this time. Instead, pager_unlock() is called. The
+// call to pager_unlock() will discard all in-memory pages, unlock
+// the database file and move the pager back to OPEN state. If this
+// means that there is a hot-journal left in the file-system, the next
+// connection to obtain a shared lock on the pager (which may be this one)
+// will roll it back.
+//
+// If the pager has not already entered the ERROR state, but an IO or
+// malloc error occurs during a rollback, then this will itself cause
+// the pager to enter the ERROR state. Which will be cleared by the
+// call to pager_unlock(), as described above.
+func _pagerUnlockAndRollback(tls *crt.TLS, _pPager *XPager) {
if int32(_pPager.X14) == i32(6) || int32(_pPager.X14) == i32(0) {
goto _1
}
-
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49056), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockAndRollbackØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49056), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockAndRollbackØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pPager.X14) < i32(2) {
- goto _4
+ if int32(_pPager.X14) >= i32(2) {
+ _sqlite3BeginBenignMalloc(tls)
+ _sqlite3PagerRollback(tls, _pPager)
+ _sqlite3EndBenignMalloc(tls)
+ goto _5
}
-
- _sqlite3BeginBenignMalloc(tls)
- _sqlite3PagerRollback(tls, _pPager)
- _sqlite3EndBenignMalloc(tls)
- goto _5
-
-_4:
- if (_pPager.X1) != 0 {
- goto _6
+ if (_pPager.X1) == 0 {
+ func() {
+ if int32(_pPager.X14) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49062), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockAndRollbackØ00__func__Ø000))), unsafe.Pointer(str(14680)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pager_end_transaction(tls, _pPager, i32(0), i32(0))
}
-
- func() {
- if int32(_pPager.X14) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49062), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockAndRollbackØ00__func__Ø000))), unsafe.Pointer(str(13736)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pager_end_transaction(tls, _pPager, i32(0), i32(0))
-_6:
_5:
_1:
_pager_unlock(tls, _pPager)
}
-var _pagerUnlockAndRollbackØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pagerUnlockAndRollbackØ00__func__Ø000[0], str(13768), 23)
-}
-
-func _sqlite3PagerRollback(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:53464:1
- var _rc int32 // sqlite3.c:53465:7
- _ = _rc
- var _1_rc2 int32 // sqlite3.c:53477:9
- _ = _1_rc2
- var _2_eState int32 // sqlite3.c:53482:9
- _ = _2_eState
+var _pagerUnlockAndRollbackØ00__func__Ø000 [23]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pagerUnlockAndRollbackØ00__func__Ø000[0], str(14709), 23)
+}
+
+// If a write transaction is open, then all changes made within the
+// transaction are reverted and the current write-transaction is closed.
+// The pager falls back to PAGER_READER state if successful, or PAGER_ERROR
+// state if an error occurs.
+//
+// If the pager is already in PAGER_ERROR state when this function is called,
+// it returns Pager.errCode immediately. No work is performed in this case.
+//
+// Otherwise, in rollback mode, this function performs two functions:
+//
+// 1) It rolls back the journal file, restoring all database file and
+// in-memory cache pages to the state they were in when the transaction
+// was opened, and
+//
+// 2) It finalizes the journal file, so that it is not used for hot
+// rollback at any point in the future.
+//
+// Finalization of the journal file (task 2) is only performed if the
+// rollback is successful.
+//
+// In WAL mode, all cache-entries containing data modified within the
+// current transaction are either expelled from the cache or reverted to
+// their pre-transaction state by re-reading data from the database or
+// WAL files. The WAL transaction is then closed.
+func _sqlite3PagerRollback(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc, _1_rc2, _2_eState int32
_rc = i32(0)
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53472), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRollbackØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53472), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRollbackØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pPager.X14) != i32(6) {
- goto _2
+ if int32(_pPager.X14) == i32(6) {
+ return _pPager.X26
}
- return _pPager.X26
-
-_2:
- if int32(_pPager.X14) > i32(1) {
- goto _3
+ if int32(_pPager.X14) <= i32(1) {
+ return i32(0)
}
- return i32(0)
-
-_3:
if (*XWal)(_pPager.X60) == nil {
goto _4
}
-
_rc = _sqlite3PagerSavepoint(tls, _pPager, i32(2), i32(-1))
_1_rc2 = _pager_end_transaction(tls, _pPager, int32(_pPager.X17), i32(0))
- if _rc != i32(0) {
- goto _5
+ if _rc == i32(0) {
+ _rc = _1_rc2
}
-
- _rc = _1_rc2
-_5:
goto _6
-
_4:
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil && int32(_pPager.X14) != i32(2) {
goto _8
}
-
_2_eState = int32(_pPager.X14)
_rc = _pager_end_transaction(tls, _pPager, i32(0), i32(0))
- if (_pPager.X13) != 0 || _2_eState <= i32(2) {
- goto _10
+ if ((_pPager.X13) == 0) && (_2_eState > i32(2)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(44 /* X26 */))) = i32(4)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(6))
+ _setGetterMethod(tls, _pPager)
+ return _rc
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(44 /* X26 */))) = i32(4)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(6))
- _setGetterMethod(tls, _pPager)
- return _rc
-
-_10:
goto _11
-
_8:
_rc = _pager_playback(tls, _pPager, i32(0))
_11:
_6:
func() {
if int32(_pPager.X14) != i32(1) && _rc == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53498), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRollbackØ00__func__Ø000))), unsafe.Pointer(str(13792)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53498), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRollbackØ00__func__Ø000))), unsafe.Pointer(str(14732)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _rc != i32(0) && _rc != i32(13) && _rc != i32(11) && _rc != i32(7) && (_rc&i32(255)) != i32(10) && _rc != i32(14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRollbackØ00__func__Ø000))), unsafe.Pointer(str(13840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRollbackØ00__func__Ø000))), unsafe.Pointer(str(14778)))
crt.X__builtin_abort(tls)
}
}()
return _pager_error(tls, _pPager, _rc)
}
-var _sqlite3PagerRollbackØ00__func__Ø000 [21]int8 // -
+var _sqlite3PagerRollbackØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerRollbackØ00__func__Ø000[0], str(13968), 21)
+ crt.Xstrncpy(nil, &_sqlite3PagerRollbackØ00__func__Ø000[0], str(14903), 21)
}
-func _sqlite3PagerSavepoint(tls *crt.TLS, _pPager *XPager, _op int32, _iSavepoint int32) (r0 int32) { // sqlite3.c:53695:1
- var _rc int32 // sqlite3.c:53696:7
- _ = _rc
- var _1_ii int32 // sqlite3.c:53706:9
- _ = _1_ii
- var _1_nNew int32 // sqlite3.c:53707:9
- _ = _1_nNew
- var _6_pSavepoint *XPagerSavepoint // sqlite3.c:53737:22
- _ = _6_pSavepoint
+func _sqlite3PagerSavepoint(tls *crt.TLS, _pPager *XPager, _op int32, _iSavepoint int32) (r0 int32) {
+ var _rc, _1_ii, _1_nNew int32
+ var _6_pSavepoint *XPagerSavepoint
_rc = _pPager.X26
func() {
if _op != i32(1) && _op != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53702), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(13992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53702), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(14924)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iSavepoint < i32(0) && _op != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53703), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(14040)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53703), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(14972)))
crt.X__builtin_abort(tls)
}
}()
if _rc != i32(0) || _iSavepoint >= (_pPager.X38) {
goto _7
}
-
_1_nNew = _iSavepoint + func() int32 {
if _op == i32(1) {
return i32(0)
@@ -15752,122 +15439,129 @@ _10:
if _1_ii >= (_pPager.X38) {
goto _13
}
-
_sqlite3BitvecDestroy(tls, (*XBitvec)((*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37)+44*uintptr(_1_ii))).X2))
_1_ii += 1
goto _10
-
_13:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(100 /* X38 */))) = _1_nNew
if _op != i32(1) {
goto _14
}
-
if _1_nNew != i32(0) || (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X33).X0) == nil {
goto _16
}
-
- if _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X33)) == 0 {
- goto _17
+ if _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X33)) != 0 {
+ _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X33), int64(i32(0)))
+ func() {
+ if _rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53726), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(15012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X33), int64(i32(0)))
- func() {
- if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53726), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(14080)))
- crt.X__builtin_abort(tls)
- }
- }()
-_17:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(56 /* X29 */))) = uint32(i32(0))
_16:
goto _20
-
_14:
- if (*XWal)(_pPager.X60) == nil && (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- goto _22
+ if ((*XWal)(_pPager.X60) != nil) || ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil) {
+ _6_pSavepoint = func() *XPagerSavepoint {
+ if _1_nNew == i32(0) {
+ return nil
+ }
+ return (*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37) + 44*uintptr(_1_nNew-i32(1))))
+ }()
+ _rc = _pagerPlaybackSavepoint(tls, _pPager, _6_pSavepoint)
+ func() {
+ if _rc == i32(101) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(15026)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _6_pSavepoint = func() *XPagerSavepoint {
- if _1_nNew == i32(0) {
- return nil
- }
- return (*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37) + 44*uintptr(_1_nNew-i32(1))))
- }()
- _rc = _pagerPlaybackSavepoint(tls, _pPager, _6_pSavepoint)
- func() {
- if _rc == i32(101) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSavepointØ00__func__Ø000))), unsafe.Pointer(str(14096)))
- crt.X__builtin_abort(tls)
- }
- }()
-_22:
_20:
_7:
- r0 = _rc
- return
+ return _rc
}
-var _sqlite3PagerSavepointØ00__func__Ø000 [22]int8 // -
+var _sqlite3PagerSavepointØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerSavepointØ00__func__Ø000[0], str(14112), 22)
+ crt.Xstrncpy(nil, &_sqlite3PagerSavepointØ00__func__Ø000[0], str(15042), 22)
}
-func _sqlite3JournalIsInMemory(tls *crt.TLS, _p *Xsqlite3_file) (r0 int32) { // sqlite3.c:89173:1
+// The file-handle passed as the only argument is open on a journal file.
+// Return true if this "journal file" is currently stored in heap memory,
+// or false otherwise.
+func _sqlite3JournalIsInMemory(tls *crt.TLS, _p *Xsqlite3_file) (r0 int32) {
return bool2int((*Xsqlite3_io_methods)(_p.X0) == &_MemJournalMethods)
}
-func _sqlite3OsTruncate(tls *crt.TLS, _id *Xsqlite3_file, _size int64) (r0 int32) { // sqlite3.c:20174:1
+func _sqlite3OsTruncate(tls *crt.TLS, _id *Xsqlite3_file, _size int64) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int64) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int64) int32
}{((*Xsqlite3_io_methods)(_id.X0).X4)})))(tls, _id, _size)
}
-func _pagerPlaybackSavepoint(tls *crt.TLS, _pPager *XPager, _pSavepoint *XPagerSavepoint) (r0 int32) { // sqlite3.c:50286:1
- var _szJ int64 // sqlite3.c:50287:7
- _ = _szJ
- var _iHdrOff int64 // sqlite3.c:50288:7
- _ = _iHdrOff
- var _rc int32 // sqlite3.c:50289:7
- _ = _rc
- var _pDone *XBitvec // sqlite3.c:50290:10
- _ = _pDone
- var _7_ii uint32 // sqlite3.c:50345:9
- _ = _7_ii
- var _7_nJRec uint32 // sqlite3.c:50346:9
- _ = _7_nJRec
- var _7_dummy uint32 // sqlite3.c:50347:9
- _ = _7_dummy
- var _10_ii uint32 // sqlite3.c:50373:9
- _ = _10_ii
- var _10_offset int64 // sqlite3.c:50374:9
- _ = _10_offset
+// Playback savepoint pSavepoint. Or, if pSavepoint==NULL, then playback
+// the entire master journal file. The case pSavepoint==NULL occurs when
+// a ROLLBACK TO command is invoked on a SAVEPOINT that is a transaction
+// savepoint.
+//
+// When pSavepoint is not NULL (meaning a non-transaction savepoint is
+// being rolled back), then the rollback consists of up to three stages,
+// performed in the order specified:
+//
+// * Pages are played back from the main journal starting at byte
+// offset PagerSavepoint.iOffset and continuing to
+// PagerSavepoint.iHdrOffset, or to the end of the main journal
+// file if PagerSavepoint.iHdrOffset is zero.
+//
+// * If PagerSavepoint.iHdrOffset is not zero, then pages are played
+// back starting from the journal header immediately following
+// PagerSavepoint.iHdrOffset to the end of the main journal file.
+//
+// * Pages are then played back from the sub-journal file, starting
+// with the PagerSavepoint.iSubRec and continuing to the end of
+// the journal file.
+//
+// Throughout the rollback process, each time a page is rolled back, the
+// corresponding bit is set in a bitvec structure (variable pDone in the
+// implementation below). This is used to ensure that a page is only
+// rolled back the first time it is encountered in either journal.
+//
+// If pSavepoint is NULL, then pages are only played back from the main
+// journal file. There is no need for a bitvec in this case.
+//
+// In either case, before playback commences the Pager.dbSize variable
+// is reset to the value that it held at the start of the savepoint
+// (or transaction). No page with a page-number greater than this value
+// is played back. If one is encountered it is simply skipped.
+func _pagerPlaybackSavepoint(tls *crt.TLS, _pPager *XPager, _pSavepoint *XPagerSavepoint) (r0 int32) {
+ var _rc int32
+ var _szJ, _iHdrOff, _10_offset int64
+ var _7_ii, _7_nJRec, _7_dummy, _10_ii uint32
+ var _pDone *XBitvec
_rc = i32(0)
_pDone = nil
func() {
if int32(_pPager.X14) == i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50292), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50292), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15064)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50293), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(9856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50293), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(10980)))
crt.X__builtin_abort(tls)
}
}()
if _pSavepoint == nil {
goto _4
}
-
_pDone = _sqlite3BitvecCreate(tls, _pSavepoint.X3)
- if _pDone != nil {
- goto _5
+ if _pDone == nil {
+ return _sqlite3NomemError(tls, i32(50299))
}
- return _sqlite3NomemError(tls, i32(50299))
-
-_5:
_4:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = func() uint32 {
if _pSavepoint != nil {
@@ -15876,23 +15570,19 @@ _4:
return (_pPager.X23)
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(19 /* X16 */))) = _pPager.X10
- if _pSavepoint != nil || (*XWal)(_pPager.X60) == nil {
- goto _9
+ if (_pSavepoint == nil) && ((*XWal)(_pPager.X60) != nil) {
+ return _pagerRollbackWal(tls, _pPager)
}
- return _pagerRollbackWal(tls, _pPager)
-
-_9:
_szJ = _pPager.X34
func() {
if bool2int((*XWal)(_pPager.X60) != nil) != i32(0) && _szJ != int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50319), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50319), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15092)))
crt.X__builtin_abort(tls)
}
}()
if _pSavepoint == nil || (*XWal)(_pPager.X60) != nil {
goto _14
}
-
_iHdrOff = func() int64 {
if (_pSavepoint.X1) != 0 {
return (_pSavepoint.X1)
@@ -15901,22 +15591,17 @@ _9:
}()
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _pSavepoint.X0
_17:
- if _rc != i32(0) || (_pPager.X34) >= _iHdrOff {
- goto _18
+ if (_rc == i32(0)) && ((_pPager.X34) < _iHdrOff) {
+ _rc = _pager_playback_one_page(tls, _pPager, (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(76 /* X34 */))), _pDone, i32(1), i32(1))
+ goto _17
}
-
- _rc = _pager_playback_one_page(tls, _pPager, (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(76 /* X34 */))), _pDone, i32(1), i32(1))
- goto _17
-
-_18:
func() {
if _rc == i32(101) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50334), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50334), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15026)))
crt.X__builtin_abort(tls)
}
}()
goto _22
-
_14:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
_22:
@@ -15924,143 +15609,128 @@ _23:
if _rc != i32(0) || (_pPager.X34) >= _szJ {
goto _24
}
-
_7_nJRec = uint32(i32(0))
_rc = _readJournalHdr(tls, _pPager, i32(0), _szJ, &_7_nJRec, &_7_dummy)
func() {
if _rc == i32(101) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50349), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50349), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15026)))
crt.X__builtin_abort(tls)
}
}()
- if _7_nJRec != uint32(i32(0)) || ((_pPager.X35)+int64(_pPager.X47)) != (_pPager.X34) {
- goto _29
+ if (_7_nJRec == uint32(i32(0))) && (((_pPager.X35) + int64(_pPager.X47)) == (_pPager.X34)) {
+ _7_nJRec = uint32((_szJ - (_pPager.X34)) / int64((_pPager.X48)+i32(8)))
}
-
- _7_nJRec = uint32((_szJ - (_pPager.X34)) / int64((_pPager.X48)+i32(8)))
-_29:
_7_ii = uint32(i32(0))
_30:
if _rc != i32(0) || _7_ii >= _7_nJRec || (_pPager.X34) >= _szJ {
goto _35
}
-
_rc = _pager_playback_one_page(tls, _pPager, (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(76 /* X34 */))), _pDone, i32(1), i32(1))
_7_ii += 1
goto _30
-
_35:
func() {
if _rc == i32(101) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50364), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50364), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15026)))
crt.X__builtin_abort(tls)
}
}()
goto _23
-
_24:
func() {
if _rc == i32(0) && (_pPager.X34) < _szJ {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50366), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50366), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15125)))
crt.X__builtin_abort(tls)
}
}()
if _pSavepoint == nil {
goto _41
}
-
_10_offset = int64(_pSavepoint.X4) * int64(i32(4)+(_pPager.X48))
- if (*XWal)(_pPager.X60) == nil {
- goto _42
+ if (*XWal)(_pPager.X60) != nil {
+ _rc = _sqlite3WalSavepointUndo(tls, (*XWal)(_pPager.X60), (*uint32)(unsafe.Pointer((*[4]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSavepoint))+uintptr(28 /* X5 */))))))
}
-
- _rc = _sqlite3WalSavepointUndo(tls, (*XWal)(_pPager.X60), (*uint32)(unsafe.Pointer((*[4]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSavepoint))+uintptr(28 /* X5 */))))))
-_42:
_10_ii = _pSavepoint.X4
_43:
if _rc != i32(0) || _10_ii >= (_pPager.X29) {
goto _47
}
-
func() {
if _10_offset != (int64(_10_ii) * int64(i32(4)+(_pPager.X48))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50380), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14244)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50380), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15166)))
crt.X__builtin_abort(tls)
}
}()
_rc = _pager_playback_one_page(tls, _pPager, &_10_offset, _pDone, i32(0), i32(1))
_10_ii += 1
goto _43
-
_47:
func() {
if _rc == i32(101) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50383), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(14096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50383), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPlaybackSavepointØ00__func__Ø000))), unsafe.Pointer(str(15026)))
crt.X__builtin_abort(tls)
}
}()
_41:
_sqlite3BitvecDestroy(tls, _pDone)
- if _rc != i32(0) {
- goto _52
+ if _rc == i32(0) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _szJ
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _szJ
-_52:
return _rc
+
+ _ = _7_dummy
+ panic(0)
}
-var _pagerPlaybackSavepointØ00__func__Ø000 [23]int8 // -
+var _pagerPlaybackSavepointØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_pagerPlaybackSavepointØ00__func__Ø000[0], str(14284), 23)
+ crt.Xstrncpy(nil, &_pagerPlaybackSavepointØ00__func__Ø000[0], str(15203), 23)
}
-func _pagerRollbackWal(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:50025:1
- var _rc int32 // sqlite3.c:50026:7
- _ = _rc
- var _pList *XPgHdr // sqlite3.c:50027:9
- _ = _pList
- var _1_pNext *XPgHdr // sqlite3.c:50040:11
- _ = _1_pNext
+// This function is called to rollback a transaction on a WAL database.
+func _pagerRollbackWal(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc int32
+ var _pList, _1_pNext *XPgHdr
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = _pPager.X23
_rc = _sqlite3WalUndo(tls, (*XWal)(_pPager.X60), _pagerUndoCallback, (unsafe.Pointer)(_pPager))
_pList = _sqlite3PcacheDirtyList(tls, (*XPCache)(_pPager.X59))
_0:
- if _pList == nil || _rc != i32(0) {
- goto _1
+ if (_pList != nil) && (_rc == i32(0)) {
+ _1_pNext = (*XPgHdr)(_pList.X3)
+ _rc = _pagerUndoCallback(tls, (unsafe.Pointer)(_pPager), _pList.X5)
+ _pList = _1_pNext
+ goto _0
}
-
- _1_pNext = (*XPgHdr)(_pList.X3)
- _rc = _pagerUndoCallback(tls, (unsafe.Pointer)(_pPager), _pList.X5)
- _pList = _1_pNext
- goto _0
-
-_1:
return _rc
}
-func _sqlite3WalUndo(tls *crt.TLS, _pWal *XWal, _xUndo func(*crt.TLS, unsafe.Pointer, uint32) int32, _pUndoCtx unsafe.Pointer) (r0 int32) { // sqlite3.c:57259:1
- var _rc int32 // sqlite3.c:57260:7
- _ = _rc
- var _1_iMax uint32 // sqlite3.c:57262:10
- _ = _1_iMax
- var _1_iFrame uint32 // sqlite3.c:57263:10
- _ = _1_iFrame
+// If any data has been written (but not committed) to the log file, this
+// function moves the write-pointer back to the start of the transaction.
+//
+// Additionally, the callback function is invoked for each frame written
+// to the WAL since the start of the transaction. If the callback returns
+// other than SQLITE_OK, it is not invoked again and the error code is
+// returned to the caller.
+//
+// Otherwise, if the callback function does not return an error, this
+// function returns SQLITE_OK.
+func _sqlite3WalUndo(tls *crt.TLS, _pWal *XWal, _xUndo func(*crt.TLS, unsafe.Pointer, uint32) int32, _pUndoCtx unsafe.Pointer) (r0 int32) {
+ var _rc int32
+ var _1_iMax, _1_iFrame uint32
_rc = i32(0)
if func() int32 {
if (_pWal.X12) != 0 {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57261), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalUndoØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57261), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalUndoØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _2
}
-
_1_iMax = (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6
crt.Xmemcpy(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(_walIndexHdr(tls, _pWal)), u32(48))
_1_iFrame = ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) + uint32(i32(1))
@@ -16070,128 +15740,122 @@ _3:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57271), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalUndoØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57271), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalUndoØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 || _1_iFrame > _1_iMax {
goto _9
}
-
func() {
if _walFramePgno(tls, _pWal, _1_iFrame) == uint32(i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57285), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalUndoØ00__func__Ø000))), unsafe.Pointer(str(14308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57285), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalUndoØ00__func__Ø000))), unsafe.Pointer(str(15226)))
crt.X__builtin_abort(tls)
}
}()
_rc = _xUndo(tls, _pUndoCtx, _walFramePgno(tls, _pWal, _1_iFrame))
_1_iFrame += 1
goto _3
-
_9:
- if _1_iMax == ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
- goto _12
+ if _1_iMax != ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
+ _walCleanupHash(tls, _pWal)
}
-
- _walCleanupHash(tls, _pWal)
-_12:
_2:
- r0 = _rc
- return
+ return _rc
}
-var _sqlite3WalUndoØ00__func__Ø000 [15]int8 // -
+var _sqlite3WalUndoØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalUndoØ00__func__Ø000[0], str(14340), 15)
+ crt.Xstrncpy(nil, &_sqlite3WalUndoØ00__func__Ø000[0], str(15256), 15)
}
-func _walIndexHdr(tls *crt.TLS, _pWal *XWal) (r0 *XWalIndexHdr) { // sqlite3.c:55065:1
+// Return a pointer to the WalIndexHdr structure in the wal-index.
+func _walIndexHdr(tls *crt.TLS, _pWal *XWal) (r0 *XWalIndexHdr) {
func() {
if (_pWal.X5) <= i32(0) || (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55066), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexHdrØ00__func__Ø000))), unsafe.Pointer(str(14356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55066), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexHdrØ00__func__Ø000))), unsafe.Pointer(str(15271)))
crt.X__builtin_abort(tls)
}
}()
return (*XWalIndexHdr)(unsafe.Pointer(*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0))))))
}
-var _walIndexHdrØ00__func__Ø000 [12]int8 // -
+var _walIndexHdrØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_walIndexHdrØ00__func__Ø000[0], str(14396), 12)
+ crt.Xstrncpy(nil, &_walIndexHdrØ00__func__Ø000[0], str(15308), 12)
}
-func _walFramePgno(tls *crt.TLS, _pWal *XWal, _iFrame uint32) (r0 uint32) { // sqlite3.c:55390:1
- var _iHash int32 // sqlite3.c:55391:7
- _ = _iHash
+// Return the page number associated with frame iFrame in this WAL.
+func _walFramePgno(tls *crt.TLS, _pWal *XWal, _iFrame uint32) (r0 uint32) {
+ var _iHash int32
_iHash = _walFramePage(tls, _iFrame)
- if _iHash != i32(0) {
- goto _0
+ if _iHash == i32(0) {
+ return *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0)))))) + 4*uintptr((u32(34)+_iFrame)-uint32(i32(1)))))
}
- return *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0)))))) + 4*uintptr((u32(34)+_iFrame)-uint32(i32(1)))))
-
-_0:
return *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_iHash))))) + 4*uintptr(((_iFrame-uint32(i32(1)))-u32(4062))%uint32(i32(4096)))))
}
-func _walFramePage(tls *crt.TLS, _iFrame uint32) (r0 int32) { // sqlite3.c:55376:1
- var _iHash int32 // sqlite3.c:55377:7
- _ = _iHash
+// Return the number of the wal-index page that contains the hash-table
+// and page-number array that contain entries corresponding to WAL frame
+// iFrame. The wal-index is broken up into 32KB pages. Wal-index pages
+// are numbered starting from 0.
+func _walFramePage(tls *crt.TLS, _iFrame uint32) (r0 int32) {
+ var _iHash int32
_iHash = int32((((_iFrame + uint32(i32(4096))) - u32(4062)) - uint32(i32(1))) / uint32(i32(4096)))
func() {
if _iHash != i32(0) && _iFrame <= u32(4062) || _iHash < i32(1) && _iFrame > u32(4062) || _iHash > i32(1) && _iFrame <= u32(8158) || _iHash < i32(2) && _iFrame > u32(8158) || _iHash > i32(2) && _iFrame <= u32(12254) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55378), unsafe.Pointer((*int8)(unsafe.Pointer(&_walFramePageØ00__func__Ø000))), unsafe.Pointer(str(14408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55378), unsafe.Pointer((*int8)(unsafe.Pointer(&_walFramePageØ00__func__Ø000))), unsafe.Pointer(str(15320)))
crt.X__builtin_abort(tls)
}
}()
return _iHash
}
-var _walFramePageØ00__func__Ø000 [13]int8 // -
+var _walFramePageØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_walFramePageØ00__func__Ø000[0], str(14684), 13)
+ crt.Xstrncpy(nil, &_walFramePageØ00__func__Ø000[0], str(15593), 13)
}
-func _walCleanupHash(tls *crt.TLS, _pWal *XWal) { // sqlite3.c:55410:1
- var _aHash *uint16 // sqlite3.c:55411:20
- _ = _aHash
- var _aPgno *uint32 // sqlite3.c:55412:16
- _ = _aPgno
- var _iZero uint32 // sqlite3.c:55413:7
- _ = _iZero
- var _iLimit int32 // sqlite3.c:55414:7
- _ = _iLimit
- var _nByte int32 // sqlite3.c:55415:7
- _ = _nByte
- var _i int32 // sqlite3.c:55416:7
- _ = _i
+// Remove entries from the hash table that point to WAL slots greater
+// than pWal->hdr.mxFrame.
+//
+// This function is called whenever pWal->hdr.mxFrame is decreased due
+// to a rollback or savepoint.
+//
+// At most only the hash table containing pWal->hdr.mxFrame needs to be
+// updated. Any later hash tables will be automatically cleared when
+// pWal->hdr.mxFrame advances to the point where those hash tables are
+// actually needed.
+func _walCleanupHash(tls *crt.TLS, _pWal *XWal) {
+ var _iLimit, _nByte, _i int32
+ var _iZero uint32
+ var _aPgno *uint32
+ var _aHash *uint16
_aHash = nil
_aPgno = nil
_iZero = u32(0)
_iLimit = i32(0)
func() {
if (_pWal.X12) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55418), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(14700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55418), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(15606)))
crt.X__builtin_abort(tls)
}
}()
- if ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) != uint32(i32(0)) {
- goto _2
+ if ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) == uint32(i32(0)) {
+ return
}
- return
-
-_2:
func() {
if (_pWal.X5) <= _walFramePage(tls, (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55429), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(14716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55429), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(15622)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_walFramePage(tls, (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55430), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(14764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55430), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(15668)))
crt.X__builtin_abort(tls)
}
}()
@@ -16199,7 +15863,7 @@ _2:
_iLimit = int32(((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) - _iZero)
func() {
if _iLimit <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55437), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(14812)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55437), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCleanupHashØ00__func__Ø000))), unsafe.Pointer(str(15716)))
crt.X__builtin_abort(tls)
}
}()
@@ -16208,57 +15872,55 @@ _9:
if _i >= i32(8192) {
goto _12
}
-
- if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash)) + 2*uintptr(_i)))) <= _iLimit {
- goto _13
+ if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash)) + 2*uintptr(_i)))) > _iLimit {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash)) + 2*uintptr(_i))) = uint16(i32(0))
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash)) + 2*uintptr(_i))) = uint16(i32(0))
-_13:
_i += 1
goto _9
-
_12:
_nByte = int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_aHash)))) - uintptr(unsafe.Pointer((*int8)(unsafe.Pointer((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno))+4*uintptr(_iLimit+i32(1))))))))) / 1)
crt.Xmemset(tls, (unsafe.Pointer)((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno))+4*uintptr(_iLimit+i32(1))))), i32(0), uint32(_nByte))
}
-var _walCleanupHashØ00__func__Ø000 [15]int8 // -
+var _walCleanupHashØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_walCleanupHashØ00__func__Ø000[0], str(14824), 15)
+ crt.Xstrncpy(nil, &_walCleanupHashØ00__func__Ø000[0], str(15725), 15)
}
-func _walHashGet(tls *crt.TLS, _pWal *XWal, _iHash int32, _paHash **uint16, _paPgno **uint32, _piZero *uint32) (r0 int32) { // sqlite3.c:55338:1
- var _rc int32 // sqlite3.c:55345:7
- _ = _rc
- var _aPgno *uint32 // sqlite3.c:55346:16
- _ = _aPgno
- var _1_iZero uint32 // sqlite3.c:55352:9
- _ = _1_iZero
- var _1_aHash *uint16 // sqlite3.c:55353:22
- _ = _1_aHash
+// Return pointers to the hash table and page number array stored on
+// page iHash of the wal-index. The wal-index is broken into 32KB pages
+// numbered starting from 0.
+//
+// Set output variable *paHash to point to the start of the hash table
+// in the wal-index file. Set *piZero to one less than the frame
+// number of the first frame indexed by this hash table. If a
+// slot in the hash table is set to N, it refers to frame number
+// (*piZero+N) in the log.
+//
+// Finally, set *paPgno so that *paPgno[1] is the page number of the
+// first frame indexed by the hash table, frame (*piZero+1).
+func _walHashGet(tls *crt.TLS, _pWal *XWal, _iHash int32, _paHash **uint16, _paPgno **uint32, _piZero *uint32) (r0 int32) {
+ var _rc int32
+ var _1_iZero uint32
+ var _aPgno *uint32
+ var _1_aHash *uint16
_rc = _walIndexPage(tls, _pWal, _iHash, &_aPgno)
func() {
if _rc != i32(0) && _iHash <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55349), unsafe.Pointer((*int8)(unsafe.Pointer(&_walHashGetØ00__func__Ø000))), unsafe.Pointer(str(14840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55349), unsafe.Pointer((*int8)(unsafe.Pointer(&_walHashGetØ00__func__Ø000))), unsafe.Pointer(str(15740)))
crt.X__builtin_abort(tls)
}
}()
if _rc != i32(0) {
goto _3
}
-
_1_aHash = (*uint16)(unsafe.Pointer((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(i32(4096))))))
- if _iHash != i32(0) {
- goto _4
+ if _iHash == i32(0) {
+ _aPgno = (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(u32(34))))
+ _1_iZero = uint32(i32(0))
+ goto _5
}
-
- _aPgno = (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(u32(34))))
- _1_iZero = uint32(i32(0))
- goto _5
-
-_4:
_1_iZero = u32(4062) + uint32((_iHash-i32(1))*i32(4096))
_5:
*_paPgno = (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(i32(-1))))
@@ -16268,28 +15930,26 @@ _3:
return _rc
}
-func _walIndexPage(tls *crt.TLS, _pWal *XWal, _iPage int32, _ppPage **uint32) (r0 int32) { // sqlite3.c:55015:1
- var _rc int32 // sqlite3.c:55016:7
- _ = _rc
- var _1_nByte int32 // sqlite3.c:55020:9
- _ = _1_nByte
- var _1_apNew **uint32 // sqlite3.c:55021:18
- _ = _1_apNew
+// Obtain a pointer to the iPage'th page of the wal-index. The wal-index
+// is broken into pages of WALINDEX_PGSZ bytes. Wal-index pages are
+// numbered from zero.
+//
+// If this call is successful, *ppPage is set to point to the wal-index
+// page and SQLITE_OK is returned. If an error (an OOM or VFS error) occurs,
+// then an SQLite error code is returned and *ppPage is set to 0.
+func _walIndexPage(tls *crt.TLS, _pWal *XWal, _iPage int32, _ppPage **uint32) (r0 int32) {
+ var _rc, _1_nByte int32
+ var _1_apNew **uint32
_rc = i32(0)
if (_pWal.X5) > _iPage {
goto _0
}
-
_1_nByte = int32(u32(4) * uint32(_iPage+i32(1)))
_1_apNew = (**uint32)(Xsqlite3_realloc64(tls, (unsafe.Pointer)(_pWal.X7), uint64(_1_nByte)))
- if _1_apNew != nil {
- goto _1
+ if _1_apNew == nil {
+ *_ppPage = nil
+ return _sqlite3NomemError(tls, i32(55025))
}
-
- *_ppPage = nil
- return _sqlite3NomemError(tls, i32(55025))
-
-_1:
crt.Xmemset(tls, (unsafe.Pointer)((**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_apNew))+4*uintptr(_pWal.X5)))), i32(0), u32(4)*uint32((_iPage+i32(1))-(_pWal.X5)))
*(***uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(32 /* X7 */))) = _1_apNew
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(24 /* X5 */))) = _iPage + i32(1)
@@ -16297,77 +15957,74 @@ _0:
if (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_iPage)))) != nil {
goto _2
}
-
if int32(_pWal.X11) != i32(2) {
goto _3
}
-
*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_iPage))) = (*uint32)(_sqlite3MallocZero(tls, uint64(u32(32768))))
- if (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_iPage)))) != nil {
- goto _4
+ if (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_iPage)))) == nil {
+ _rc = _sqlite3NomemError(tls, i32(55037))
}
-
- _rc = _sqlite3NomemError(tls, i32(55037))
-_4:
goto _5
-
_3:
_rc = _sqlite3OsShmMap(tls, (*Xsqlite3_file)(_pWal.X1), _iPage, int32(u32(32768)), int32(_pWal.X12), (*unsafe.Pointer)(unsafe.Pointer((**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7))+4*uintptr(_iPage))))))
- if _rc != i32(8) {
- goto _6
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(46 /* X14 */)))
- *p = uint8(int32(*p) | i32(2))
- sink2 = *p
+ if _rc == i32(8) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(46 /* X14 */)))
+ *p = uint8(int32(*p) | i32(2))
+ sink2 = *p
+ }
+ _rc = i32(0)
}
- _rc = i32(0)
-_6:
_5:
_2:
*_ppPage = *(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_iPage)))
func() {
if _iPage != i32(0) && (*_ppPage) == nil && _rc == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55050), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexPageØ00__func__Ø000))), unsafe.Pointer(str(14868)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55050), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexPageØ00__func__Ø000))), unsafe.Pointer(str(15765)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-func _sqlite3OsShmMap(tls *crt.TLS, _id *Xsqlite3_file, _iPage int32, _pgsz int32, _bExtend int32, _pp *unsafe.Pointer) (r0 int32) { // sqlite3.c:20243:1
+func _sqlite3OsShmMap(tls *crt.TLS, _id *Xsqlite3_file, _iPage int32, _pgsz int32, _bExtend int32, _pp *unsafe.Pointer) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int32, int32, int32, *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, int32, int32, *unsafe.Pointer) int32
}{((*Xsqlite3_io_methods)(_id.X0).X13)})))(tls, _id, _iPage, _pgsz, _bExtend, _pp)
}
-var _walIndexPageØ00__func__Ø000 [13]int8 // -
+var _walIndexPageØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_walIndexPageØ00__func__Ø000[0], str(14908), 13)
+ crt.Xstrncpy(nil, &_walIndexPageØ00__func__Ø000[0], str(15802), 13)
}
-var _walHashGetØ00__func__Ø000 [11]int8 // -
+var _walHashGetØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_walHashGetØ00__func__Ø000[0], str(14924), 11)
+ crt.Xstrncpy(nil, &_walHashGetØ00__func__Ø000[0], str(15815), 11)
}
-func _pagerUndoCallback(tls *crt.TLS, _pCtx unsafe.Pointer, _iPg uint32) (r0 int32) { // sqlite3.c:49986:1
- var _rc int32 // sqlite3.c:49987:7
- _ = _rc
- var _pPager *XPager // sqlite3.c:49988:9
- _ = _pPager
- var _pPg *XPgHdr // sqlite3.c:49989:9
- _ = _pPg
- var _3_iFrame uint32 // sqlite3.c:49997:11
- _ = _3_iFrame
+// This function is invoked once for each page that has already been
+// written into the log file when a WAL transaction is rolled back.
+// Parameter iPg is the page number of said page. The pCtx argument
+// is actually a pointer to the Pager structure.
+//
+// If page iPg is present in the cache, and has no outstanding references,
+// it is discarded. Otherwise, if there are one or more outstanding
+// references, the page content is reloaded from the database. If the
+// attempt to reload content from the database is required and fails,
+// return an SQLite error code. Otherwise, SQLITE_OK.
+func _pagerUndoCallback(tls *crt.TLS, _pCtx unsafe.Pointer, _iPg uint32) (r0 int32) {
+ var _rc int32
+ var _3_iFrame uint32
+ var _pPager *XPager
+ var _pPg *XPgHdr
_rc = i32(0)
_pPager = (*XPager)(_pCtx)
func() {
if (*XWal)(_pPager.X60) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49991), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUndoCallbackØ00__func__Ø000))), unsafe.Pointer(str(14936)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49991), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUndoCallbackØ00__func__Ø000))), unsafe.Pointer(str(15826)))
crt.X__builtin_abort(tls)
}
}()
@@ -16375,31 +16032,20 @@ func _pagerUndoCallback(tls *crt.TLS, _pCtx unsafe.Pointer, _iPg uint32) (r0 int
if _pPg == nil {
goto _2
}
-
- if _sqlite3PcachePageRefcount(tls, _pPg) != i32(1) {
- goto _3
+ if _sqlite3PcachePageRefcount(tls, _pPg) == i32(1) {
+ _sqlite3PcacheDrop(tls, _pPg)
+ goto _4
}
-
- _sqlite3PcacheDrop(tls, _pPg)
- goto _4
-
-_3:
_3_iFrame = u32(0)
_rc = _sqlite3WalFindFrame(tls, (*XWal)(_pPager.X60), _pPg.X5, &_3_iFrame)
- if _rc != i32(0) {
- goto _5
+ if _rc == i32(0) {
+ _rc = _readDbPage(tls, _pPg, _3_iFrame)
}
-
- _rc = _readDbPage(tls, _pPg, _3_iFrame)
-_5:
- if _rc != i32(0) {
- goto _6
+ if _rc == i32(0) {
+ (*(*func(*crt.TLS, *XPgHdr))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_pPager.X56)})))(tls, _pPg)
}
-
- (*(*func(*crt.TLS, *XPgHdr))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_pPager.X56)})))(tls, _pPg)
-_6:
_sqlite3PagerUnrefNotNull(tls, _pPg)
_4:
_2:
@@ -16407,75 +16053,100 @@ _2:
return _rc
}
-var _pagerUndoCallbackØ00__func__Ø000 [18]int8 // -
+var _pagerUndoCallbackØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_pagerUndoCallbackØ00__func__Ø000[0], str(14956), 18)
+ crt.Xstrncpy(nil, &_pagerUndoCallbackØ00__func__Ø000[0], str(15846), 18)
}
-func _sqlite3PagerLookup(tls *crt.TLS, _pPager *XPager, _pgno uint32) (r0 *XPgHdr) { // sqlite3.c:52530:1
- var _pPage *Xsqlite3_pcache_page // sqlite3.c:52531:23
- _ = _pPage
+// Acquire a page if it is already in the in-memory cache. Do
+// not read the page from disk. Return a pointer to the page,
+// or 0 if the page is not in cache.
+//
+// See also sqlite3PagerGet(). The difference between this routine
+// and sqlite3PagerGet() is that _get() will go to the disk and read
+// in the page if the page is not already in cache. This routine
+// returns NULL if the page is not in cache or if a disk I/O error
+// has ever happened.
+func _sqlite3PagerLookup(tls *crt.TLS, _pPager *XPager, _pgno uint32) (r0 *XPgHdr) {
+ var _pPage *Xsqlite3_pcache_page
func() {
if _pPager == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52532), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(14976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52532), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(15864)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pgno == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52533), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(14988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52533), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(15874)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XPCache)(_pPager.X59) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52534), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(14996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52534), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(15882)))
crt.X__builtin_abort(tls)
}
}()
_pPage = _sqlite3PcacheFetch(tls, (*XPCache)(_pPager.X59), _pgno, i32(0))
func() {
if _pPage != nil && (_pPager.X21) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(15016)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerLookupØ00__func__Ø000))), unsafe.Pointer(str(15901)))
crt.X__builtin_abort(tls)
}
}()
- if _pPage != nil {
- goto _9
+ if _pPage == nil {
+ return nil
}
- return nil
-
-_9:
return _sqlite3PcacheFetchFinish(tls, (*XPCache)(_pPager.X59), _pgno, _pPage)
}
-var _sqlite3PagerLookupØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerLookupØ00__func__Ø000[0], str(15056), 19)
-}
-
-func _sqlite3PcacheFetch(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _createFlag int32) (r0 *Xsqlite3_pcache_page) { // sqlite3.c:44487:1
- var _eCreate int32 // sqlite3.c:44492:7
- _ = _eCreate
- var _pRes *Xsqlite3_pcache_page // sqlite3.c:44493:23
- _ = _pRes
+var _sqlite3PagerLookupØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerLookupØ00__func__Ø000[0], str(15939), 19)
+}
+
+// Try to obtain a page from the cache.
+//
+// This routine returns a pointer to an sqlite3_pcache_page object if
+// such an object is already in cache, or if a new one is created.
+// This routine returns a NULL pointer if the object was not in cache
+// and could not be created.
+//
+// The createFlags should be 0 to check for existing pages and should
+// be 3 (not 1, but 3) to try to create a new page.
+//
+// If the createFlag is 0, then NULL is always returned if the page
+// is not already in the cache. If createFlag is 1, then a new page
+// is created only if that can be done without spilling dirty pages
+// and without exceeding the cache size limit.
+//
+// The caller needs to invoke sqlite3PcacheFetchFinish() to properly
+// initialize the sqlite3_pcache_page object and convert it into a
+// PgHdr object. The sqlite3PcacheFetch() and sqlite3PcacheFetchFinish()
+// routines are split this way for performance reasons. When separated
+// they can both (usually) operate without having to push values to
+// the stack on entry and pop them back off on exit, which saves a
+// lot of pushing and popping.
+func _sqlite3PcacheFetch(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _createFlag int32) (r0 *Xsqlite3_pcache_page) {
+ var _eCreate int32
+ var _pRes *Xsqlite3_pcache_page
func() {
if _pCache == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(13016)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(14006)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pCache.X12) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15958)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _createFlag != i32(3) && _createFlag != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44497), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44497), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15976)))
crt.X__builtin_abort(tls)
}
}()
@@ -16486,26 +16157,26 @@ func _sqlite3PcacheFetch(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _createFl
}
return i32(2)
}() {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44498), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15128)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44498), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(16007)))
crt.X__builtin_abort(tls)
}
}()
_eCreate = _createFlag & int32(_pCache.X9)
func() {
if _eCreate != i32(0) && _eCreate != i32(1) && _eCreate != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44508), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15196)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44508), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(16073)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _createFlag != i32(0) && int32(_pCache.X9) != _eCreate {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44509), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44509), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(16112)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _createFlag != i32(0) && _eCreate != (i32(1)+bool2int(((_pCache.X8) == 0) || ((*XPgHdr)(_pCache.X0) == nil))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44510), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(15280)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44510), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchØ00__func__Ø000))), unsafe.Pointer(str(16154)))
crt.X__builtin_abort(tls)
}
}()
@@ -16515,58 +16186,64 @@ func _sqlite3PcacheFetch(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _createFl
return _pRes
}
-var _sqlite3PcacheFetchØ00__func__Ø000 [19]int8 // -
+var _sqlite3PcacheFetchØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheFetchØ00__func__Ø000[0], str(15348), 19)
+ crt.Xstrncpy(nil, &_sqlite3PcacheFetchØ00__func__Ø000[0], str(16221), 19)
}
-func _sqlite3PcacheFetchFinish(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _pPage *Xsqlite3_pcache_page) (r0 *XPgHdr) { // sqlite3.c:44610:1
- var _pPgHdr *XPgHdr // sqlite3.c:44615:9
- _ = _pPgHdr
+// This routine converts the sqlite3_pcache_page object returned by
+// sqlite3PcacheFetch() into an initialized PgHdr object. This routine
+// must be called after sqlite3PcacheFetch() in order to get a usable
+// result.
+func _sqlite3PcacheFetchFinish(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _pPage *Xsqlite3_pcache_page) (r0 *XPgHdr) {
+ var _pPgHdr *XPgHdr
func() {
if _pPage == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44617), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchFinishØ00__func__Ø000))), unsafe.Pointer(str(15368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44617), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchFinishØ00__func__Ø000))), unsafe.Pointer(str(2899)))
crt.X__builtin_abort(tls)
}
}()
_pPgHdr = (*XPgHdr)(_pPage.X1)
- if (*Xsqlite3_pcache_page)(_pPgHdr.X0) != nil {
- goto _2
+ if (*Xsqlite3_pcache_page)(_pPgHdr.X0) == nil {
+ return _pcacheFetchFinishWithInit(tls, _pCache, _pgno, _pPage)
}
- return _pcacheFetchFinishWithInit(tls, _pCache, _pgno, _pPage)
-
-_2:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(12 /* X3 */))) += 1
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPgHdr)) + uintptr(26 /* X7 */))) += 1
func() {
if _sqlite3PcachePageSanity(tls, _pPgHdr) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44625), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchFinishØ00__func__Ø000))), unsafe.Pointer(str(15380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44625), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheFetchFinishØ00__func__Ø000))), unsafe.Pointer(str(16240)))
crt.X__builtin_abort(tls)
}
}()
return _pPgHdr
}
-var _sqlite3PcacheFetchFinishØ00__func__Ø000 [25]int8 // -
+var _sqlite3PcacheFetchFinishØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheFetchFinishØ00__func__Ø000[0], str(15412), 25)
+ crt.Xstrncpy(nil, &_sqlite3PcacheFetchFinishØ00__func__Ø000[0], str(16272), 25)
}
-func _pcacheFetchFinishWithInit(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _pPage *Xsqlite3_pcache_page) (r0 *XPgHdr) { // sqlite3.c:44584:1
- var _pPgHdr *XPgHdr // sqlite3.c:44589:9
- _ = _pPgHdr
+// This is a helper routine for sqlite3PcacheFetchFinish()
+//
+// In the uncommon case where the page being fetched has not been
+// initialized, this routine is invoked to do the initialization.
+// This routine is broken out into a separate function since it
+// requires extra stack manipulation that can be avoided in the common
+// case.
+func _pcacheFetchFinishWithInit(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _pPage *Xsqlite3_pcache_page) (r0 *XPgHdr) {
+ var _pPgHdr *XPgHdr
func() {
if _pPage == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44590), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheFetchFinishWithInitØ00__func__Ø000))), unsafe.Pointer(str(15368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44590), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheFetchFinishWithInitØ00__func__Ø000))), unsafe.Pointer(str(2899)))
crt.X__builtin_abort(tls)
}
}()
_pPgHdr = (*XPgHdr)(_pPage.X1)
func() {
if (*Xsqlite3_pcache_page)(_pPgHdr.X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44592), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheFetchFinishWithInitØ00__func__Ø000))), unsafe.Pointer(str(15440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44592), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheFetchFinishWithInitØ00__func__Ø000))), unsafe.Pointer(str(16297)))
crt.X__builtin_abort(tls)
}
}()
@@ -16581,148 +16258,126 @@ func _pcacheFetchFinishWithInit(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _p
return _sqlite3PcacheFetchFinish(tls, _pCache, _pgno, _pPage)
}
-var _pcacheFetchFinishWithInitØ00__func__Ø000 [26]int8 // -
+var _pcacheFetchFinishWithInitØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_pcacheFetchFinishWithInitØ00__func__Ø000[0], str(15460), 26)
+ crt.Xstrncpy(nil, &_pcacheFetchFinishWithInitØ00__func__Ø000[0], str(16314), 26)
}
-func _sqlite3PcachePageRefcount(tls *crt.TLS, _p *XPgHdr) (r0 int32) { // sqlite3.c:44914:1
+// Return the number of references to the page supplied as an argument.
+func _sqlite3PcachePageRefcount(tls *crt.TLS, _p *XPgHdr) (r0 int32) {
return int32(_p.X7)
}
-func _sqlite3PcacheDrop(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44664:1
+// Drop a page from the cache. There must be exactly one reference to the
+// page. This function deletes that reference, so after it returns the
+// page pointed to by p is invalid.
+func _sqlite3PcacheDrop(tls *crt.TLS, _p *XPgHdr) {
func() {
if int32(_p.X7) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44665), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheDropØ00__func__Ø000))), unsafe.Pointer(str(15488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44665), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheDropØ00__func__Ø000))), unsafe.Pointer(str(16340)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PcachePageSanity(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheDropØ00__func__Ø000))), unsafe.Pointer(str(12872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheDropØ00__func__Ø000))), unsafe.Pointer(str(13867)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X6) & i32(2)) == 0 {
- goto _4
+ if (int32(_p.X6) & i32(2)) != 0 {
+ _pcacheManageDirtyList(tls, _p, uint8(i32(1)))
}
-
- _pcacheManageDirtyList(tls, _p, uint8(i32(1)))
-_4:
*(*int32)(unsafe.Pointer(uintptr(_p.X8) + uintptr(12 /* X3 */))) -= 1
(*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3_pcache_page, int32))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32)
}{((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X8)})))(tls, (*XPCache)(_p.X8).X12, (*Xsqlite3_pcache_page)(_p.X0), i32(1))
}
-var _sqlite3PcacheDropØ00__func__Ø000 [18]int8 // -
+var _sqlite3PcacheDropØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheDropØ00__func__Ø000[0], str(15500), 18)
+ crt.Xstrncpy(nil, &_sqlite3PcacheDropØ00__func__Ø000[0], str(16351), 18)
}
-func _sqlite3WalFindFrame(tls *crt.TLS, _pWal *XWal, _pgno uint32, _piRead *uint32) (r0 int32) { // sqlite3.c:57056:1
- var _iRead uint32 // sqlite3.c:57061:7
- _ = _iRead
- var _iLast uint32 // sqlite3.c:57062:7
- _ = _iLast
- var _iHash int32 // sqlite3.c:57063:7
- _ = _iHash
- var _iMinHash int32 // sqlite3.c:57064:7
- _ = _iMinHash
- var _2_aHash *uint16 // sqlite3.c:57107:22
- _ = _2_aHash
- var _2_aPgno *uint32 // sqlite3.c:57108:18
- _ = _2_aPgno
- var _2_iZero uint32 // sqlite3.c:57109:9
- _ = _2_iZero
- var _2_iKey int32 // sqlite3.c:57110:9
- _ = _2_iKey
- var _2_nCollide int32 // sqlite3.c:57111:9
- _ = _2_nCollide
- var _2_rc int32 // sqlite3.c:57112:9
- _ = _2_rc
- var _4_iFrame uint32 // sqlite3.c:57120:11
- _ = _4_iFrame
+// Search the wal file for page pgno. If found, set *piRead to the frame that
+// contains the page. Otherwise, if pgno is not in the wal file, set *piRead
+// to zero.
+//
+// Return SQLITE_OK if successful, or an error code if an error occurs. If an
+// error does occur, the final value of *piRead is undefined.
+func _sqlite3WalFindFrame(tls *crt.TLS, _pWal *XWal, _pgno uint32, _piRead *uint32) (r0 int32) {
+ var _iHash, _iMinHash, _2_iKey, _2_nCollide, _2_rc int32
+ var _iRead, _iLast, _2_iZero, _4_iFrame uint32
+ var _2_aPgno *uint32
+ var _2_aHash *uint16
_iRead = u32(0)
_iLast = (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6
func() {
if int32(_pWal.X9) < i32(0) && (_pWal.X23) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57067), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFindFrameØ00__func__Ø000))), unsafe.Pointer(str(15520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57067), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFindFrameØ00__func__Ø000))), unsafe.Pointer(str(16369)))
crt.X__builtin_abort(tls)
}
}()
- if _iLast != uint32(i32(0)) && int32(_pWal.X9) != i32(0) {
- goto _4
+ if (_iLast == uint32(i32(0))) || (int32(_pWal.X9) == i32(0)) {
+ *_piRead = uint32(i32(0))
+ return i32(0)
}
-
- *_piRead = uint32(i32(0))
- return i32(0)
-
-_4:
_iMinHash = _walFramePage(tls, _pWal.X19)
_iHash = _walFramePage(tls, _iLast)
_5:
if _iHash < _iMinHash || _iRead != uint32(i32(0)) {
goto _9
}
-
_2_rc = _walHashGet(tls, _pWal, _iHash, &_2_aHash, &_2_aPgno, &_2_iZero)
- if _2_rc == i32(0) {
- goto _10
+ if _2_rc != i32(0) {
+ return _2_rc
}
- return _2_rc
-
-_10:
_2_nCollide = i32(8192)
_2_iKey = _walHash(tls, _pgno)
_11:
if (*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aHash)) + 2*uintptr(_2_iKey)))) == 0 {
goto _14
}
-
_4_iFrame = uint32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aHash)) + 2*uintptr(_2_iKey)))) + _2_iZero
- if _4_iFrame > _iLast || _4_iFrame < (_pWal.X19) || (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aPgno)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aHash)) + 2*uintptr(_2_iKey))))))) != _pgno {
- goto _17
+ if ((_4_iFrame <= _iLast) && (_4_iFrame >= (_pWal.X19))) && ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aPgno)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aHash)) + 2*uintptr(_2_iKey))))))) == _pgno) {
+ func() {
+ if _4_iFrame <= _iRead && (_sqlite3Config.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFindFrameØ00__func__Ø000))), unsafe.Pointer(str(16406)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _iRead = _4_iFrame
}
-
- func() {
- if _4_iFrame <= _iRead && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFindFrameØ00__func__Ø000))), unsafe.Pointer(str(15560)))
- crt.X__builtin_abort(tls)
- }
- }()
- _iRead = _4_iFrame
-_17:
- if postInc1(&_2_nCollide, int32(-1)) != i32(0) {
- goto _21
+ if postInc1(&_2_nCollide, int32(-1)) == i32(0) {
+ return _sqlite3CorruptError(tls, i32(57126))
}
- return _sqlite3CorruptError(tls, i32(57126))
-
-_21:
_2_iKey = _walNextHash(tls, _2_iKey)
goto _11
-
_14:
_iHash -= 1
goto _5
-
_9:
*_piRead = _iRead
return i32(0)
+
+ _ = _2_nCollide
+ panic(0)
}
-var _sqlite3WalFindFrameØ00__func__Ø000 [20]int8 // -
+var _sqlite3WalFindFrameØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalFindFrameØ00__func__Ø000[0], str(15588), 20)
+ crt.Xstrncpy(nil, &_sqlite3WalFindFrameØ00__func__Ø000[0], str(16433), 20)
}
-func _walHash(tls *crt.TLS, _iPage uint32) (r0 int32) { // sqlite3.c:55315:1
+// Compute a hash on a page number. The resulting hash value must land
+// between 0 and (HASHTABLE_NSLOT-1). The walHashNext() function advances
+// the hash to the next value in the event of a collision.
+func _walHash(tls *crt.TLS, _iPage uint32) (r0 int32) {
func() {
if _iPage <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55316), unsafe.Pointer((*int8)(unsafe.Pointer(&_walHashØ00__func__Ø000))), unsafe.Pointer(str(15608)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55316), unsafe.Pointer((*int8)(unsafe.Pointer(&_walHashØ00__func__Ø000))), unsafe.Pointer(str(16453)))
crt.X__builtin_abort(tls)
}
}()
@@ -16730,93 +16385,83 @@ func _walHash(tls *crt.TLS, _iPage uint32) (r0 int32) { // sqlite3.c:55315:1
return int32((_iPage * uint32(i32(383))) & uint32(i32(8191)))
}
-var _walHashØ00__func__Ø000 [8]int8 // -
+var _walHashØ00__func__Ø000 [8]int8
func init() {
- crt.Xstrncpy(nil, &_walHashØ00__func__Ø000[0], str(15616), 8)
+ crt.Xstrncpy(nil, &_walHashØ00__func__Ø000[0], str(16461), 8)
}
-func _walNextHash(tls *crt.TLS, _iPriorHash int32) (r0 int32) { // sqlite3.c:55320:1
+func _walNextHash(tls *crt.TLS, _iPriorHash int32) (r0 int32) {
return (_iPriorHash + i32(1)) & i32(8191)
}
-func _readDbPage(tls *crt.TLS, _pPg *XPgHdr, _iFrame uint32) (r0 int32) { // sqlite3.c:49897:1
- var _pPager *XPager // sqlite3.c:49898:9
- _ = _pPager
- var _pgno uint32 // sqlite3.c:49899:8
- _ = _pgno
- var _rc int32 // sqlite3.c:49900:7
- _ = _rc
- var _pgsz int32 // sqlite3.c:49901:7
- _ = _pgsz
- var _2_iOffset int64 // sqlite3.c:49913:9
- _ = _2_iOffset
- var _6_dbFileVers *uint8 // sqlite3.c:49936:10
- _ = _6_dbFileVers
+// Read the content for page pPg out of the database file and into
+// pPg->pData. A shared lock or greater must be held on the database
+// file before this function is called.
+//
+// If page 1 is read, then the value of Pager.dbFileVers[] is set to
+// the value read from the database file.
+//
+// If an IO error occurs, then the IO error is returned to the caller.
+// Otherwise, SQLITE_OK is returned.
+func _readDbPage(tls *crt.TLS, _pPg *XPgHdr, _iFrame uint32) (r0 int32) {
+ var _rc, _pgsz int32
+ var _2_iOffset int64
+ var _pgno uint32
+ var _6_dbFileVers *uint8
+ var _pPager *XPager
_pPager = (*XPager)(_pPg.X4)
_pgno = _pPg.X5
_rc = i32(0)
_pgsz = _pPager.X48
func() {
if int32(_pPager.X14) < i32(1) || (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49903), unsafe.Pointer((*int8)(unsafe.Pointer(&_readDbPageØ00__func__Ø000))), unsafe.Pointer(str(15624)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49903), unsafe.Pointer((*int8)(unsafe.Pointer(&_readDbPageØ00__func__Ø000))), unsafe.Pointer(str(16469)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49904), unsafe.Pointer((*int8)(unsafe.Pointer(&_readDbPageØ00__func__Ø000))), unsafe.Pointer(str(15664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49904), unsafe.Pointer((*int8)(unsafe.Pointer(&_readDbPageØ00__func__Ø000))), unsafe.Pointer(str(16508)))
crt.X__builtin_abort(tls)
}
}()
- if _iFrame == 0 {
- goto _5
+ if _iFrame != 0 {
+ _rc = _sqlite3WalReadFrame(tls, (*XWal)(_pPager.X60), _iFrame, _pgsz, (*uint8)(_pPg.X1))
+ goto _6
}
-
- _rc = _sqlite3WalReadFrame(tls, (*XWal)(_pPager.X60), _iFrame, _pgsz, (*uint8)(_pPg.X1))
- goto _6
-
-_5:
_2_iOffset = int64(_pgno-uint32(i32(1))) * int64(_pPager.X48)
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pPager.X31), _pPg.X1, _pgsz, _2_iOffset)
- if _rc != i32(522) {
- goto _7
+ if _rc == i32(522) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_7:
_6:
if _pgno != uint32(i32(1)) {
goto _8
}
-
- if _rc == 0 {
- goto _9
+ if _rc != 0 {
+ crt.Xmemset(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), i32(255), u32(16))
+ goto _10
}
-
- crt.Xmemset(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), i32(255), u32(16))
- goto _10
-
-_9:
_6_dbFileVers = (*uint8)(unsafe.Pointer(uintptr(_pPg.X1) + 1*uintptr(i32(24))))
crt.Xmemcpy(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), (unsafe.Pointer)(_6_dbFileVers), u32(16))
_10:
_8:
- r0 = _rc
- return
+ return _rc
}
-var _readDbPageØ00__func__Ø000 [11]int8 // -
+var _readDbPageØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_readDbPageØ00__func__Ø000[0], str(15684), 11)
+ crt.Xstrncpy(nil, &_readDbPageØ00__func__Ø000[0], str(16527), 11)
}
-func _sqlite3WalReadFrame(tls *crt.TLS, _pWal *XWal, _iRead uint32, _nOut int32, _pOut *uint8) (r0 int32) { // sqlite3.c:57158:1
- var _sz int32 // sqlite3.c:57164:7
- _ = _sz
- var _iOffset int64 // sqlite3.c:57165:7
- _ = _iOffset
+// Read the contents of frame iRead from the wal file into buffer pOut
+// (which is nOut bytes in size). Return SQLITE_OK if successful, or an
+// error code otherwise.
+func _sqlite3WalReadFrame(tls *crt.TLS, _pWal *XWal, _iRead uint32, _nOut int32, _pOut *uint8) (r0 int32) {
+ var _sz int32
+ var _iOffset int64
_sz = int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X5)
_sz = (_sz & i32(65024)) + ((_sz & i32(1)) << uint(i32(16)))
_iOffset = (int64(i32(32)) + (int64(_iRead-uint32(i32(1))) * int64(_sz+i32(24)))) + int64(i32(24))
@@ -16828,70 +16473,70 @@ func _sqlite3WalReadFrame(tls *crt.TLS, _pWal *XWal, _iRead uint32, _nOut int32,
}(), _iOffset)
}
-func _sqlite3OsRead(tls *crt.TLS, _id *Xsqlite3_file, _pBuf unsafe.Pointer, _amt int32, _offset int64) (r0 int32) { // sqlite3.c:20166:1
+func _sqlite3OsRead(tls *crt.TLS, _id *Xsqlite3_file, _pBuf unsafe.Pointer, _amt int32, _offset int64) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, int64) int32
}{((*Xsqlite3_io_methods)(_id.X0).X2)})))(tls, _id, _pBuf, _amt, _offset)
}
-func _sqlite3BackupRestart(tls *crt.TLS, _pBackup *Xsqlite3_backup) { // sqlite3.c:69628:1
- var _p *Xsqlite3_backup // sqlite3.c:69629:18
- _ = _p
+// Restart the backup process. This is called when the pager layer
+// detects that the database has been modified by an external database
+// connection. In this case there is no way of knowing which of the
+// pages that have been copied into the destination database are still
+// valid and which are not, so the entire process needs to be restarted.
+//
+// It is assumed that the mutex associated with the BtShared object
+// corresponding to the source database is held when this function is
+// called.
+func _sqlite3BackupRestart(tls *crt.TLS, _pBackup *Xsqlite3_backup) {
+ var _p *Xsqlite3_backup
_p = _pBackup
_0:
if _p == nil {
goto _3
}
-
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)((*XBtree)(_p.X6).X1).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69631), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BackupRestartØ00__func__Ø000))), unsafe.Pointer(str(15696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69631), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BackupRestartØ00__func__Ø000))), unsafe.Pointer(str(16538)))
crt.X__builtin_abort(tls)
}
}()
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = uint32(i32(1))
_p = (*Xsqlite3_backup)(_p.X11)
goto _0
-
_3:
}
-var _sqlite3BackupRestartØ00__func__Ø000 [21]int8 // -
+var _sqlite3BackupRestartØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BackupRestartØ00__func__Ø000[0], str(15736), 21)
+ crt.Xstrncpy(nil, &_sqlite3BackupRestartØ00__func__Ø000[0], str(16578), 21)
}
-func _sqlite3PcacheDirtyList(tls *crt.TLS, _pCache *XPCache) (r0 *XPgHdr) { // sqlite3.c:44893:1
- var _p *XPgHdr // sqlite3.c:44894:9
- _ = _p
+// Return a list of all dirty pages in the cache, sorted by page number.
+func _sqlite3PcacheDirtyList(tls *crt.TLS, _pCache *XPCache) (r0 *XPgHdr) {
+ var _p *XPgHdr
_p = (*XPgHdr)(_pCache.X0)
_0:
if _p == nil {
goto _3
}
-
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = (*XPgHdr)(_p.X9)
_p = (*XPgHdr)(_p.X9)
goto _0
-
_3:
return _pcacheSortDirtyList(tls, (*XPgHdr)(_pCache.X0))
}
-func _pcacheSortDirtyList(tls *crt.TLS, _pIn *XPgHdr) (r0 *XPgHdr) { // sqlite3.c:44858:1
- var _a [32]*XPgHdr // sqlite3.c:44859:9
- _ = _a
- var _p *XPgHdr // sqlite3.c:44859:28
- _ = _p
- var _i int32 // sqlite3.c:44860:7
- _ = _i
+func _pcacheSortDirtyList(tls *crt.TLS, _pIn *XPgHdr) (r0 *XPgHdr) {
+ var _i int32
+ var _p *XPgHdr
+ var _a [32]*XPgHdr
crt.Xmemset(tls, (unsafe.Pointer)(&_a), i32(0), u32(128))
_0:
if _pIn == nil {
goto _1
}
-
_p = _pIn
_pIn = (*XPgHdr)(_p.X3)
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = nil
@@ -16902,45 +16547,35 @@ _2:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44866), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheSortDirtyListØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44866), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheSortDirtyListØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _7
}
-
- if (*(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i)))) != nil {
- goto _8
+ if (*(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i)))) == nil {
+ *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))) = _p
+ goto _7
}
-
- *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))) = _p
- goto _7
-
-_8:
_p = _pcacheMergeDirtyList(tls, *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))), _p)
*(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))) = nil
_i += 1
goto _2
-
_7:
if func() int32 {
if _i == i32(31) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44875), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheSortDirtyListØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44875), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheSortDirtyListØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _12
+ }() != 0 {
+ *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))) = _pcacheMergeDirtyList(tls, *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))), _p)
}
-
- *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))) = _pcacheMergeDirtyList(tls, *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))), _p)
-_12:
goto _0
-
_1:
_p = *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(i32(0))))
_i = i32(1)
@@ -16948,14 +16583,9 @@ _13:
if _i >= i32(32) {
goto _16
}
-
- if (*(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i)))) != nil {
- goto _17
+ if (*(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i)))) == nil {
+ goto _14
}
-
- goto _14
-
-_17:
_p = func() *XPgHdr {
if _p != nil {
return _pcacheMergeDirtyList(tls, _p, *(**XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_a)) + 4*uintptr(_i))))
@@ -16965,26 +16595,28 @@ _17:
_14:
_i += 1
goto _13
-
_16:
return _p
+
+ _ = _a
+ panic(0)
}
-var _pcacheSortDirtyListØ00__func__Ø000 [20]int8 // -
+var _pcacheSortDirtyListØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_pcacheSortDirtyListØ00__func__Ø000[0], str(15760), 20)
+ crt.Xstrncpy(nil, &_pcacheSortDirtyListØ00__func__Ø000[0], str(16599), 20)
}
-func _pcacheMergeDirtyList(tls *crt.TLS, _pA *XPgHdr, _pB *XPgHdr) (r0 *XPgHdr) { // sqlite3.c:44821:1
- var _result XPgHdr // sqlite3.c:44822:9
- _ = _result
- var _pTail *XPgHdr // sqlite3.c:44822:17
- _ = _pTail
+// Merge two lists of pages connected by pDirty and in pgno order.
+// Do not bother fixing the pDirtyPrev pointers.
+func _pcacheMergeDirtyList(tls *crt.TLS, _pA *XPgHdr, _pB *XPgHdr) (r0 *XPgHdr) {
+ var _result XPgHdr
+ var _pTail *XPgHdr
_pTail = &_result
func() {
if _pA == nil || _pB == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44824), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheMergeDirtyListØ00__func__Ø000))), unsafe.Pointer(str(15780)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44824), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcacheMergeDirtyListØ00__func__Ø000))), unsafe.Pointer(str(16619)))
crt.X__builtin_abort(tls)
}
}()
@@ -16992,110 +16624,126 @@ _3:
if (_pA.X5) >= (_pB.X5) {
goto _6
}
-
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(12 /* X3 */))))) = _pA
_pTail = _pA
_pA = (*XPgHdr)(_pA.X3)
- if _pA != nil {
- goto _7
+ if _pA == nil {
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(12 /* X3 */))))) = _pB
+ goto _5
}
-
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(12 /* X3 */))))) = _pB
- goto _5
-
-_7:
goto _8
-
_6:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(12 /* X3 */))))) = _pB
_pTail = _pB
_pB = (*XPgHdr)(_pB.X3)
- if _pB != nil {
- goto _9
+ if _pB == nil {
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(12 /* X3 */))))) = _pA
+ goto _5
}
-
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(12 /* X3 */))))) = _pA
- goto _5
-
-_9:
_8:
goto _3
-
_5:
return (*XPgHdr)(_result.X3)
-}
-
-var _pcacheMergeDirtyListØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pcacheMergeDirtyListØ00__func__Ø000[0], str(15796), 21)
-}
-func _pager_playback_one_page(tls *crt.TLS, _pPager *XPager, _pOffset *int64, _pDone *XBitvec, _isMainJrnl int32, _isSavepnt int32) (r0 int32) { // sqlite3.c:49164:1
- var _rc int32 // sqlite3.c:49171:7
- _ = _rc
- var _pPg *XPgHdr // sqlite3.c:49172:9
- _ = _pPg
- var _pgno uint32 // sqlite3.c:49173:8
- _ = _pgno
- var _cksum uint32 // sqlite3.c:49174:7
- _ = _cksum
- var _aData *int8 // sqlite3.c:49175:8
- _ = _aData
- var _jfd *Xsqlite3_file // sqlite3.c:49176:16
- _ = _jfd
- var _isSynced int32 // sqlite3.c:49177:7
- _ = _isSynced
- var _11_ofst int64 // sqlite3.c:49303:9
- _ = _11_ofst
- var _15_pData unsafe.Pointer // sqlite3.c:49368:10
- _ = _15_pData
+ _ = _result
+ panic(0)
+}
+
+var _pcacheMergeDirtyListØ00__func__Ø000 [21]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pcacheMergeDirtyListØ00__func__Ø000[0], str(16634), 21)
+}
+
+// Read a single page from either the journal file (if isMainJrnl==1) or
+// from the sub-journal (if isMainJrnl==0) and playback that page.
+// The page begins at offset *pOffset into the file. The *pOffset
+// value is increased to the start of the next page in the journal.
+//
+// The main rollback journal uses checksums - the statement journal does
+// not.
+//
+// If the page number of the page record read from the (sub-)journal file
+// is greater than the current value of Pager.dbSize, then playback is
+// skipped and SQLITE_OK is returned.
+//
+// If pDone is not NULL, then it is a record of pages that have already
+// been played back. If the page at *pOffset has already been played back
+// (if the corresponding pDone bit is set) then skip the playback.
+// Make sure the pDone bit corresponding to the *pOffset page is set
+// prior to returning.
+//
+// If the page record is successfully read from the (sub-)journal file
+// and played back, then SQLITE_OK is returned. If an IO error occurs
+// while reading the record from the (sub-)journal file or while writing
+// to the database file, then the IO error code is returned. If data
+// is successfully read from the (sub-)journal file but appears to be
+// corrupted, SQLITE_DONE is returned. Data is considered corrupted in
+// two circumstances:
+//
+// * If the record page-number is illegal (0 or PAGER_MJ_PGNO), or
+// * If the record is being rolled back from the main journal file
+// and the checksum field does not match the record content.
+//
+// Neither of these two scenarios are possible during a savepoint rollback.
+//
+// If this is a savepoint rollback, then memory may have to be dynamically
+// allocated by this function. If this is the case and an allocation fails,
+// SQLITE_NOMEM is returned.
+func _pager_playback_one_page(tls *crt.TLS, _pPager *XPager, _pOffset *int64, _pDone *XBitvec, _isMainJrnl int32, _isSavepnt int32) (r0 int32) {
+ var _rc, _isSynced int32
+ var _11_ofst int64
+ var _pgno, _cksum uint32
+ var _aData *int8
+ var _15_pData unsafe.Pointer
+ var _jfd *Xsqlite3_file
+ var _pPg *XPgHdr
func() {
if (_isMainJrnl & i32(-2)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49184), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(15820)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49184), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16655)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_isSavepnt & i32(-2)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49185), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(15840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49185), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16674)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _isMainJrnl == 0 && _pDone == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49186), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(15860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49186), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16692)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _isSavepnt == 0 && _pDone != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49187), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(15880)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49187), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16712)))
crt.X__builtin_abort(tls)
}
}()
_aData = _pPager.X58
func() {
if _aData == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49190), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(15904)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49190), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16734)))
crt.X__builtin_abort(tls)
}
}()
func() {
if bool2int((*XWal)(_pPager.X60) != nil) != i32(0) && (_isMainJrnl != 0 || _isSavepnt == 0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49191), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(15912)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49191), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16740)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) < i32(3) && (int32(_pPager.X14) != i32(0) || int32(_pPager.X15) != i32(4)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49199), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(15968)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49199), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16793)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) < i32(3) && _isMainJrnl == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49202), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16072)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49202), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16896)))
crt.X__builtin_abort(tls)
}
}()
@@ -17106,145 +16754,102 @@ func _pager_playback_one_page(tls *crt.TLS, _pPager *XPager, _pOffset *int64, _p
return (*Xsqlite3_file)(_pPager.X33)
}()
_rc = _read32bits(tls, _jfd, *_pOffset, &_pgno)
- if _rc == i32(0) {
- goto _25
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_25:
_rc = _sqlite3OsRead(tls, _jfd, (unsafe.Pointer)(_aData), _pPager.X48, (*_pOffset)+int64(i32(4)))
- if _rc == i32(0) {
- goto _26
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_26:
{
p := _pOffset
*p = (*p) + int64(((_pPager.X48)+i32(4))+(_isMainJrnl*i32(4)))
sink6 = *p
}
- if _pgno != uint32(i32(0)) && _pgno != uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1)) {
- goto _28
+ if (_pgno == uint32(i32(0))) || (_pgno == uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1))) {
+ func() {
+ if _isSavepnt != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49220), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16948)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(101)
}
-
- func() {
- if _isSavepnt != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49220), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16124)))
- crt.X__builtin_abort(tls)
- }
- }()
- return i32(101)
-
-_28:
- if _pgno <= (_pPager.X22) && _sqlite3BitvecTest(tls, _pDone, _pgno) == 0 {
- goto _32
+ if (_pgno > (_pPager.X22)) || _sqlite3BitvecTest(tls, _pDone, _pgno) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_32:
if _isMainJrnl == 0 {
goto _33
}
-
_rc = _read32bits(tls, _jfd, (*_pOffset)-int64(i32(4)), &_cksum)
- if _rc == 0 {
- goto _34
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_34:
- if _isSavepnt != 0 || _pager_cksum(tls, _pPager, (*uint8)(unsafe.Pointer(_aData))) == _cksum {
- goto _36
+ if (_isSavepnt == 0) && (_pager_cksum(tls, _pPager, (*uint8)(unsafe.Pointer(_aData))) != _cksum) {
+ return i32(101)
}
- return i32(101)
-
-_36:
_33:
- if _pDone == nil || store1(&_rc, _sqlite3BitvecSet(tls, _pDone, _pgno)) == i32(0) {
- goto _38
+ if (_pDone != nil) && (store1(&_rc, _sqlite3BitvecSet(tls, _pDone, _pgno)) != i32(0)) {
+ return _rc
}
- return _rc
-
-_38:
- if _pgno != uint32(i32(1)) || int32(_pPager.X45) == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(20))))) {
- goto _40
+ if (_pgno == uint32(i32(1))) && (int32(_pPager.X45) != int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(20)))))) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(142 /* X45 */))) = int16(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(20)))))
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(142 /* X45 */))) = int16(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(20)))))
-_40:
- if (*XWal)(_pPager.X60) == nil {
- goto _41
+ if (*XWal)(_pPager.X60) != nil {
+ _pPg = nil
+ goto _42
}
-
- _pPg = nil
- goto _42
-
-_41:
_pPg = _sqlite3PagerLookup(tls, _pPager, _pgno)
_42:
func() {
if _pPg == nil && (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49288), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49288), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16959)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) == i32(0) && _pPg != nil && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49289), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16152)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49289), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16973)))
crt.X__builtin_abort(tls)
}
}()
- if _isMainJrnl == 0 {
- goto _50
+ if _isMainJrnl != 0 {
+ _isSynced = bool2int(((_pPager.X4) != 0) || ((*_pOffset) <= (_pPager.X35)))
+ goto _52
}
-
- _isSynced = bool2int(((_pPager.X4) != 0) || ((*_pOffset) <= (_pPager.X35)))
- goto _52
-
-_50:
_isSynced = bool2int((_pPg == nil) || (i32(0) == (int32(_pPg.X6) & i32(8))))
_52:
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil || int32(_pPager.X14) < i32(4) && int32(_pPager.X14) != i32(0) || _isSynced == 0 {
goto _57
}
-
_11_ofst = int64(_pgno-uint32(i32(1))) * int64(_pPager.X48)
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49305), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49305), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X31), (unsafe.Pointer)(_aData), _pPager.X48, _11_ofst)
- if _pgno <= (_pPager.X24) {
- goto _60
+ if _pgno > (_pPager.X24) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _pgno
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _pgno
-_60:
- if (*Xsqlite3_backup)(_pPager.X36) == nil {
- goto _61
+ if (*Xsqlite3_backup)(_pPager.X36) != nil {
+ _sqlite3BackupUpdate(tls, (*Xsqlite3_backup)(_pPager.X36), _pgno, (*uint8)(unsafe.Pointer(_aData)))
}
-
- _sqlite3BackupUpdate(tls, (*Xsqlite3_backup)(_pPager.X36), _pgno, (*uint8)(unsafe.Pointer(_aData)))
-_61:
goto _62
-
_57:
if _isMainJrnl != 0 || _pPg != nil {
goto _64
}
-
func() {
if _isSavepnt == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49352), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49352), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(17030)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pPager.X18) & i32(2)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49353), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16224)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49353), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(17040)))
crt.X__builtin_abort(tls)
}
}()
@@ -17256,7 +16861,7 @@ _57:
_rc = _sqlite3PagerGet(tls, _pPager, _pgno, &_pPg, i32(1))
func() {
if (int32(_pPager.X18) & i32(2)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49356), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(16272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49356), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playback_one_pageØ00__func__Ø000))), unsafe.Pointer(str(17085)))
crt.X__builtin_abort(tls)
}
}()
@@ -17265,92 +16870,94 @@ _57:
*p = uint8(int32(*p) & i32(-3))
sink2 = *p
}
- if _rc == i32(0) {
- goto _71
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_71:
_sqlite3PcacheMakeDirty(tls, _pPg)
_64:
_62:
if _pPg == nil {
goto _72
}
-
_15_pData = _pPg.X1
crt.Xmemcpy(tls, _15_pData, (unsafe.Pointer)(_aData), uint32(_pPager.X48))
(*(*func(*crt.TLS, *XPgHdr))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
}{(_pPager.X56)})))(tls, _pPg)
- if _pgno != uint32(i32(1)) {
- goto _73
+ if _pgno == uint32(i32(1)) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(_15_pData)+1*uintptr(i32(24))))), u32(16))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(_15_pData)+1*uintptr(i32(24))))), u32(16))
-_73:
_sqlite3PcacheRelease(tls, _pPg)
_72:
return _rc
}
-var _pager_playback_one_pageØ00__func__Ø000 [24]int8 // -
+var _pager_playback_one_pageØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_pager_playback_one_pageØ00__func__Ø000[0], str(16320), 24)
+ crt.Xstrncpy(nil, &_pager_playback_one_pageØ00__func__Ø000[0], str(17130), 24)
}
-func _read32bits(tls *crt.TLS, _fd *Xsqlite3_file, _offset int64, _pRes *uint32) (r0 int32) { // sqlite3.c:48012:1
- var _ac [4]uint8 // sqlite3.c:48013:17
- _ = _ac
- var _rc int32 // sqlite3.c:48014:7
- _ = _rc
+// Read a 32-bit integer from the given file descriptor. Store the integer
+// that is read in *pRes. Return SQLITE_OK if everything worked, or an
+// error code is something goes wrong.
+//
+// All values are stored on disk as big-endian.
+func _read32bits(tls *crt.TLS, _fd *Xsqlite3_file, _offset int64, _pRes *uint32) (r0 int32) {
+ var _rc int32
+ var _ac [4]uint8
_rc = _sqlite3OsRead(tls, _fd, (unsafe.Pointer)(&_ac), int32(u32(4)), _offset)
- if _rc != i32(0) {
- goto _0
+ if _rc == i32(0) {
+ *_pRes = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(&_ac)))
}
-
- *_pRes = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(&_ac)))
-_0:
return _rc
+
+ _ = _ac
+ panic(0)
}
-func _sqlite3Get4byte(tls *crt.TLS, _p *uint8) (r0 uint32) { // sqlite3.c:28795:1
+// Read or write a four-byte big-endian integer value.
+func _sqlite3Get4byte(tls *crt.TLS, _p *uint8) (r0 uint32) {
return (((uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(0))))) << uint(i32(24))) | uint32(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(1)))))<= (_p.X4) {
goto _6
}
-
func() {
if (*Xsqlite3)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69602), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupUpdateØ00__func__Ø000))), unsafe.Pointer(str(16344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69602), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupUpdateØ00__func__Ø000))), unsafe.Pointer(str(17154)))
crt.X__builtin_abort(tls)
}
}()
@@ -17359,72 +16966,57 @@ _2:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
func() {
if _2_rc == i32(5) || _2_rc == i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69606), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupUpdateØ00__func__Ø000))), unsafe.Pointer(str(16356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69606), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupUpdateØ00__func__Ø000))), unsafe.Pointer(str(17165)))
crt.X__builtin_abort(tls)
}
}()
- if _2_rc == i32(0) {
- goto _12
+ if _2_rc != i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = _2_rc
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = _2_rc
-_12:
_6:
- if store24(&_p, (*Xsqlite3_backup)(_p.X11)) != nil {
+ if store26(&_p, (*Xsqlite3_backup)(_p.X11)) != nil {
goto _2
}
}
-var _backupUpdateØ00__func__Ø000 [13]int8 // -
+var _backupUpdateØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_backupUpdateØ00__func__Ø000[0], str(16396), 13)
+ crt.Xstrncpy(nil, &_backupUpdateØ00__func__Ø000[0], str(17202), 13)
}
-func _isFatalError(tls *crt.TLS, _rc int32) (r0 int32) { // sqlite3.c:69116:1
+// Argument rc is an SQLite error code. Return true if this error is
+// considered fatal if encountered during a backup operation. All errors
+// are considered fatal except for SQLITE_BUSY and SQLITE_LOCKED.
+func _isFatalError(tls *crt.TLS, _rc int32) (r0 int32) {
return bool2int(((_rc != i32(0)) && (_rc != i32(5))) && func() int32 {
if _rc != i32(6) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69117), unsafe.Pointer((*int8)(unsafe.Pointer(&_isFatalErrorØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69117), unsafe.Pointer((*int8)(unsafe.Pointer(&_isFatalErrorØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() != 0)
}
-var _isFatalErrorØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_isFatalErrorØ00__func__Ø000[0], str(16412), 13)
-}
-
-func _backupOnePage(tls *crt.TLS, _p *Xsqlite3_backup, _iSrcPg uint32, _zSrcData *uint8, _bUpdate int32) (r0 int32) { // sqlite3.c:69125:1
- var _pDestPager *XPager // sqlite3.c:69131:9
- _ = _pDestPager
- var _nSrcPgsz int32 // sqlite3.c:69132:13
- _ = _nSrcPgsz
- var _nDestPgsz int32 // sqlite3.c:69133:7
- _ = _nDestPgsz
- var _nCopy int32 // sqlite3.c:69134:13
- _ = _nCopy
- var _iEnd int64 // sqlite3.c:69135:13
- _ = _iEnd
- var _rc int32 // sqlite3.c:69143:7
- _ = _rc
- var _iOff int64 // sqlite3.c:69144:7
- _ = _iOff
- var _2_pDestPg *XPgHdr // sqlite3.c:69184:12
- _ = _2_pDestPg
- var _2_iDest uint32 // sqlite3.c:69185:10
- _ = _2_iDest
- var _3_zIn *uint8 // sqlite3.c:69190:16
- _ = _3_zIn
- var _3_zDestData *uint8 // sqlite3.c:69191:10
- _ = _3_zDestData
- var _3_zOut *uint8 // sqlite3.c:69192:10
- _ = _3_zOut
+var _isFatalErrorØ00__func__Ø000 [13]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_isFatalErrorØ00__func__Ø000[0], str(17215), 13)
+}
+
+// Parameter zSrcData points to a buffer containing the data for
+// page iSrcPg from the source database. Copy this data into the
+// destination database.
+func _backupOnePage(tls *crt.TLS, _p *Xsqlite3_backup, _iSrcPg uint32, _zSrcData *uint8, _bUpdate int32) (r0 int32) {
+ var _nSrcPgsz, _nDestPgsz, _nCopy, _rc int32
+ var _iEnd, _iOff int64
+ var _2_iDest uint32
+ var _3_zIn, _3_zDestData, _3_zOut *uint8
+ var _pDestPager *XPager
+ var _2_pDestPg *XPgHdr
_pDestPager = _sqlite3BtreePager(tls, (*XBtree)(_p.X1))
_nSrcPgsz = _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X6))
_nDestPgsz = _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X1))
@@ -17438,70 +17030,58 @@ func _backupOnePage(tls *crt.TLS, _p *Xsqlite3_backup, _iSrcPg uint32, _zSrcData
_rc = i32(0)
func() {
if _sqlite3BtreeGetReserveNoMutex(tls, (*XBtree)(_p.X6)) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69146), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(16428)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69146), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(17228)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69147), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(16472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69147), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(17270)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _isFatalError(tls, _p.X7) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69148), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(16488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69148), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(17285)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iSrcPg == ((uint32(_sqlite3PendingByte) / ((*XBtShared)((*XBtree)(_p.X6).X1).X15)) + uint32(i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69149), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(16512)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69149), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(17306)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _zSrcData == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69150), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(16552)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69150), unsafe.Pointer((*int8)(unsafe.Pointer(&_backupOnePageØ00__func__Ø000))), unsafe.Pointer(str(17346)))
crt.X__builtin_abort(tls)
}
}()
- if _nSrcPgsz == _nDestPgsz || _sqlite3PagerIsMemdb(tls, _pDestPager) == 0 {
- goto _13
+ if (_nSrcPgsz != _nDestPgsz) && _sqlite3PagerIsMemdb(tls, _pDestPager) != 0 {
+ _rc = i32(8)
}
-
- _rc = i32(8)
-_13:
_iOff = _iEnd - int64(_nSrcPgsz)
_14:
if _rc != i32(0) || _iOff >= _iEnd {
goto _18
}
-
_2_pDestPg = nil
_2_iDest = uint32(_iOff/int64(_nDestPgsz)) + uint32(i32(1))
- if _2_iDest != ((uint32(_sqlite3PendingByte) / ((*XBtShared)((*XBtree)(_p.X1).X1).X15)) + uint32(i32(1))) {
- goto _19
+ if _2_iDest == ((uint32(_sqlite3PendingByte) / ((*XBtShared)((*XBtree)(_p.X1).X1).X15)) + uint32(i32(1))) {
+ goto _15
}
-
- goto _15
-
-_19:
if i32(0) != store1(&_rc, _sqlite3PagerGet(tls, _pDestPager, _2_iDest, &_2_pDestPg, i32(0))) || i32(0) != store1(&_rc, _sqlite3PagerWrite(tls, _2_pDestPg)) {
goto _21
}
-
_3_zIn = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSrcData)) + 1*uintptr(_iOff%int64(_nSrcPgsz))))
_3_zDestData = (*uint8)(_sqlite3PagerGetData(tls, _2_pDestPg))
_3_zOut = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_zDestData)) + 1*uintptr(_iOff%int64(_nDestPgsz))))
crt.Xmemcpy(tls, (unsafe.Pointer)(_3_zOut), (unsafe.Pointer)(_3_zIn), uint32(_nCopy))
*(*uint8)(unsafe.Pointer(uintptr(_sqlite3PagerGetExtra(tls, _2_pDestPg)) + 1*uintptr(i32(0)))) = uint8(i32(0))
- if _iOff != int64(i32(0)) || _bUpdate != i32(0) {
- goto _23
+ if (_iOff == int64(i32(0))) && (_bUpdate == i32(0)) {
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_zOut))+1*uintptr(i32(28)))), _sqlite3BtreeLastPage(tls, (*XBtree)(_p.X6)))
}
-
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_zOut))+1*uintptr(i32(28)))), _sqlite3BtreeLastPage(tls, (*XBtree)(_p.X6)))
-_23:
_21:
_sqlite3PagerUnref(tls, _2_pDestPg)
_15:
@@ -17511,25 +17091,35 @@ _15:
sink6 = *p
}
goto _14
-
_18:
return _rc
}
-func _sqlite3BtreePager(tls *crt.TLS, _p *XBtree) (r0 *XPager) { // sqlite3.c:67990:1
+// Return the pager associated with a BTree. This routine is used for
+// testing and debugging only.
+func _sqlite3BtreePager(tls *crt.TLS, _p *XBtree) (r0 *XPager) {
return (*XPager)((*XBtShared)(_p.X1).X0)
}
-func _sqlite3BtreeGetPageSize(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:61779:1
+// Return the currently defined page size
+func _sqlite3BtreeGetPageSize(tls *crt.TLS, _p *XBtree) (r0 int32) {
return int32((*XBtShared)(_p.X1).X15)
}
-func _sqlite3BtreeGetReserveNoMutex(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:61794:1
- var _n int32 // sqlite3.c:61795:7
- _ = _n
+// This function is similar to sqlite3BtreeGetReserve(), except that it
+// may only be called if it is guaranteed that the b-tree mutex is already
+// held.
+//
+// This is useful in one special case in the backup API code where it is
+// known that the shared b-tree mutex is held, but the mutex on the
+// database handle that owns *p is not. In this case if sqlite3BtreeEnter()
+// were to be called, it might collide with some other operation on the
+// database handle that owns *p, causing undefined behavior.
+func _sqlite3BtreeGetReserveNoMutex(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _n int32
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_p.X1).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetReserveNoMutexØ00__func__Ø000))), unsafe.Pointer(str(16564)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetReserveNoMutexØ00__func__Ø000))), unsafe.Pointer(str(17355)))
crt.X__builtin_abort(tls)
}
}()
@@ -17537,182 +17127,175 @@ func _sqlite3BtreeGetReserveNoMutex(tls *crt.TLS, _p *XBtree) (r0 int32) { // sq
return _n
}
-var _sqlite3BtreeGetReserveNoMutexØ00__func__Ø000 [30]int8 // -
+var _sqlite3BtreeGetReserveNoMutexØ00__func__Ø000 [30]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeGetReserveNoMutexØ00__func__Ø000[0], str(16600), 30)
+ crt.Xstrncpy(nil, &_sqlite3BtreeGetReserveNoMutexØ00__func__Ø000[0], str(17389), 30)
}
-var _backupOnePageØ00__func__Ø000 [14]int8 // -
+var _backupOnePageØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_backupOnePageØ00__func__Ø000[0], str(16632), 14)
+ crt.Xstrncpy(nil, &_backupOnePageØ00__func__Ø000[0], str(17419), 14)
}
-func _sqlite3PagerIsMemdb(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:53594:1
+// Return true if this is an in-memory or temp-file backed pager.
+func _sqlite3PagerIsMemdb(tls *crt.TLS, _pPager *XPager) (r0 int32) {
return int32(_pPager.X10)
}
-func _sqlite3PagerGetData(tls *crt.TLS, _pPg *XPgHdr) (r0 unsafe.Pointer) { // sqlite3.c:54023:1
+// Return a pointer to the data for the specified page.
+func _sqlite3PagerGetData(tls *crt.TLS, _pPg *XPgHdr) (r0 unsafe.Pointer) {
func() {
if int32(_pPg.X7) <= i32(0) && ((*XPager)(_pPg.X4).X13) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54024), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerGetDataØ00__func__Ø000))), unsafe.Pointer(str(16648)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54024), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerGetDataØ00__func__Ø000))), unsafe.Pointer(str(17433)))
crt.X__builtin_abort(tls)
}
}()
return _pPg.X1
}
-var _sqlite3PagerGetDataØ00__func__Ø000 [20]int8 // -
+var _sqlite3PagerGetDataØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerGetDataØ00__func__Ø000[0], str(16684), 20)
+ crt.Xstrncpy(nil, &_sqlite3PagerGetDataØ00__func__Ø000[0], str(17467), 20)
}
-func _sqlite3PagerGetExtra(tls *crt.TLS, _pPg *XPgHdr) (r0 unsafe.Pointer) { // sqlite3.c:54032:1
+// Return a pointer to the Pager.nExtra bytes of "extra" space
+// allocated along with the specified page.
+func _sqlite3PagerGetExtra(tls *crt.TLS, _pPg *XPgHdr) (r0 unsafe.Pointer) {
return _pPg.X2
}
-func _sqlite3BtreeLastPage(tls *crt.TLS, _p *XBtree) (r0 uint32) { // sqlite3.c:61053:1
+func _sqlite3BtreeLastPage(tls *crt.TLS, _p *XBtree) (r0 uint32) {
func() {
if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61054), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastPageØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61054), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastPageØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (((*XBtShared)(_p.X1).X18) & uint32(i32(134217728))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61055), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastPageØ00__func__Ø000))), unsafe.Pointer(str(16732)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61055), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastPageØ00__func__Ø000))), unsafe.Pointer(str(17513)))
crt.X__builtin_abort(tls)
}
}()
return _btreePagecount(tls, (*XBtShared)(_p.X1))
}
-func _sqlite3BtreeHoldsMutex(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:58884:1
+// Return true if the BtShared mutex is held on the btree, or if the
+// B-Tree is not marked as sharable.
+//
+// This routine is used only from within assert() statements.
+func _sqlite3BtreeHoldsMutex(tls *crt.TLS, _p *XBtree) (r0 int32) {
func() {
if int32(_p.X3) != i32(0) && int32(_p.X4) != i32(0) && (_p.X6) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58885), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(16764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58885), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(17544)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X3) != i32(0) && int32(_p.X4) != i32(0) && (*Xsqlite3)(_p.X0) != (*Xsqlite3)((*XBtShared)(_p.X1).X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(16816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(17594)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X3) != i32(0) && int32(_p.X4) != i32(0) && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_p.X1).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(16868)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(17646)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X3) != i32(0) && int32(_p.X4) != i32(0) && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58888), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(16936)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58888), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeHoldsMutexØ00__func__Ø000))), unsafe.Pointer(str(17714)))
crt.X__builtin_abort(tls)
}
}()
return bool2int((int32(_p.X3) == i32(0)) || ((_p.X4) != 0))
}
-var _sqlite3BtreeHoldsMutexØ00__func__Ø000 [23]int8 // -
+var _sqlite3BtreeHoldsMutexØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeHoldsMutexØ00__func__Ø000[0], str(17004), 23)
+ crt.Xstrncpy(nil, &_sqlite3BtreeHoldsMutexØ00__func__Ø000[0], str(17781), 23)
}
-var _sqlite3BtreeLastPageØ00__func__Ø000 [21]int8 // -
+var _sqlite3BtreeLastPageØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeLastPageØ00__func__Ø000[0], str(17028), 21)
+ crt.Xstrncpy(nil, &_sqlite3BtreeLastPageØ00__func__Ø000[0], str(17804), 21)
}
-func _btreePagecount(tls *crt.TLS, _pBt *XBtShared) (r0 uint32) { // sqlite3.c:61050:1
+// Return the size of the database file in pages. If there is any kind of
+// error, return ((unsigned int)-1).
+func _btreePagecount(tls *crt.TLS, _pBt *XBtShared) (r0 uint32) {
return _pBt.X18
}
-func _sqlite3PagerUnref(tls *crt.TLS, _pPg *XPgHdr) { // sqlite3.c:52560:1
- if _pPg == nil {
- goto _0
- }
-
- _sqlite3PagerUnrefNotNull(tls, _pPg)
-_0:
-}
-
-func _readJournalHdr(tls *crt.TLS, _pPager *XPager, _isHot int32, _journalSize int64, _pNRec *uint32, _pDbSize *uint32) (r0 int32) { // sqlite3.c:48453:1
- var _rc int32 // sqlite3.c:48460:7
- _ = _rc
- var _aMagic [8]uint8 // sqlite3.c:48461:17
- _ = _aMagic
- var _iHdrOff int64 // sqlite3.c:48462:7
- _ = _iHdrOff
- var _6_iPageSize uint32 // sqlite3.c:48503:9
- _ = _6_iPageSize
- var _6_iSectorSize uint32 // sqlite3.c:48504:9
- _ = _6_iSectorSize
+func _sqlite3PagerUnref(tls *crt.TLS, _pPg *XPgHdr) {
+ if _pPg != nil {
+ _sqlite3PagerUnrefNotNull(tls, _pPg)
+ }
+}
+
+// The journal file must be open when this is called. A journal header file
+// (JOURNAL_HDR_SZ bytes) is read from the current location in the journal
+// file. The current location in the journal file is given by
+// pPager->journalOff. See comments above function writeJournalHdr() for
+// a description of the journal header format.
+//
+// If the header is read successfully, *pNRec is set to the number of
+// page records following this header and *pDbSize is set to the size of the
+// database before the transaction began, in pages. Also, pPager->cksumInit
+// is set to the value read from the journal header. SQLITE_OK is returned
+// in this case.
+//
+// If the journal header file appears to be corrupted, SQLITE_DONE is
+// returned and *pNRec and *PDbSize are undefined. If JOURNAL_HDR_SZ bytes
+// cannot be read from the journal file an error code is returned.
+func _readJournalHdr(tls *crt.TLS, _pPager *XPager, _isHot int32, _journalSize int64, _pNRec *uint32, _pDbSize *uint32) (r0 int32) {
+ var _rc int32
+ var _iHdrOff int64
+ var _6_iPageSize, _6_iSectorSize uint32
+ var _aMagic [8]uint8
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48464), unsafe.Pointer((*int8)(unsafe.Pointer(&_readJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(12612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48464), unsafe.Pointer((*int8)(unsafe.Pointer(&_readJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(13626)))
crt.X__builtin_abort(tls)
}
}()
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _journalHdrOffset(tls, _pPager)
- if ((_pPager.X34) + int64(_pPager.X47)) <= _journalSize {
- goto _2
+ if ((_pPager.X34) + int64(_pPager.X47)) > _journalSize {
+ return i32(101)
}
- return i32(101)
-
-_2:
_iHdrOff = _pPager.X34
if _isHot == 0 && _iHdrOff == (_pPager.X35) {
goto _4
}
-
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_aMagic), int32(u32(8)), _iHdrOff)
- if _rc == 0 {
- goto _5
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_5:
- if crt.Xmemcmp(tls, (unsafe.Pointer)(&_aMagic), (unsafe.Pointer)(&_aJournalMagic), u32(8)) == i32(0) {
- goto _6
+ if crt.Xmemcmp(tls, (unsafe.Pointer)(&_aMagic), (unsafe.Pointer)(&_aJournalMagic), u32(8)) != i32(0) {
+ return i32(101)
}
- return i32(101)
-
-_6:
_4:
- if i32(0) == store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(8)), _pNRec)) && i32(0) == store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(12)), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(52 /* X28 */))))) && i32(0) == store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(16)), _pDbSize)) {
- goto _9
+ if ((i32(0) != store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(8)), _pNRec))) || (i32(0) != store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(12)), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(52 /* X28 */))))))) || (i32(0) != store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(16)), _pDbSize))) {
+ return _rc
}
- return _rc
-
-_9:
if (_pPager.X34) != int64(i32(0)) {
goto _10
}
-
- if i32(0) == store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(20)), &_6_iSectorSize)) && i32(0) == store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(24)), &_6_iPageSize)) {
- goto _12
+ if (i32(0) != store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(20)), &_6_iSectorSize))) || (i32(0) != store1(&_rc, _read32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff+int64(i32(24)), &_6_iPageSize))) {
+ return _rc
}
- return _rc
-
-_12:
- if _6_iPageSize != uint32(i32(0)) {
- goto _13
+ if _6_iPageSize == uint32(i32(0)) {
+ _6_iPageSize = uint32(_pPager.X48)
}
-
- _6_iPageSize = uint32(_pPager.X48)
-_13:
- if _6_iPageSize >= uint32(i32(512)) && _6_iSectorSize >= uint32(i32(32)) && _6_iPageSize <= uint32(i32(65536)) && _6_iSectorSize <= uint32(i32(65536)) && ((_6_iPageSize-uint32(i32(1)))&_6_iPageSize) == uint32(i32(0)) && ((_6_iSectorSize-uint32(i32(1)))&_6_iSectorSize) == uint32(i32(0)) {
- goto _19
+ if (((((_6_iPageSize < uint32(i32(512))) || (_6_iSectorSize < uint32(i32(32)))) || (_6_iPageSize > uint32(i32(65536)))) || (_6_iSectorSize > uint32(i32(65536)))) || (((_6_iPageSize - uint32(i32(1))) & _6_iPageSize) != uint32(i32(0)))) || (((_6_iSectorSize - uint32(i32(1))) & _6_iSectorSize) != uint32(i32(0))) {
+ return i32(101)
}
- return i32(101)
-
-_19:
_rc = _sqlite3PagerSetPagesize(tls, _pPager, &_6_iPageSize, i32(-1))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(148 /* X47 */))) = _6_iSectorSize
_10:
@@ -17722,73 +17305,85 @@ _10:
sink6 = *p
}
return _rc
-}
-
-var _readJournalHdrØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_readJournalHdrØ00__func__Ø000[0], str(17052), 15)
-}
-func _sqlite3PagerSetPagesize(tls *crt.TLS, _pPager *XPager, _pPageSize *uint32, _nReserve int32) (r0 int32) { // sqlite3.c:50641:1
- var _rc int32 // sqlite3.c:50642:7
- _ = _rc
- var _pageSize uint32 // sqlite3.c:50654:7
- _ = _pageSize
- var _1_pNew *int8 // sqlite3.c:50660:10
- _ = _1_pNew
- var _1_nByte int64 // sqlite3.c:50661:9
- _ = _1_nByte
+ _ = _aMagic
+ panic(0)
+}
+
+var _readJournalHdrØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_readJournalHdrØ00__func__Ø000[0], str(17825), 15)
+}
+
+// Change the page size used by the Pager object. The new page size
+// is passed in *pPageSize.
+//
+// If the pager is in the error state when this function is called, it
+// is a no-op. The value returned is the error state error code (i.e.
+// one of SQLITE_IOERR, an SQLITE_IOERR_xxx sub-code or SQLITE_FULL).
+//
+// Otherwise, if all of the following are true:
+//
+// * the new page size (value of *pPageSize) is valid (a power
+// of two between 512 and SQLITE_MAX_PAGE_SIZE, inclusive), and
+//
+// * there are no outstanding page references, and
+//
+// * the database is either not an in-memory database or it is
+// an in-memory database that currently consists of zero pages.
+//
+// then the pager object page size is set to *pPageSize.
+//
+// If the page size is changed, then this function uses sqlite3PagerMalloc()
+// to obtain a new Pager.pTmpSpace buffer. If this allocation attempt
+// fails, SQLITE_NOMEM is returned and the page size remains unchanged.
+// In all other cases, SQLITE_OK is returned.
+//
+// If the page size is not changed, either because one of the enumerated
+// conditions above is not true, the pager was in error state when this
+// function was called, or because the memory allocation attempt failed,
+// then *pPageSize is set to the old, retained page size before returning.
+func _sqlite3PagerSetPagesize(tls *crt.TLS, _pPager *XPager, _pPageSize *uint32, _nReserve int32) (r0 int32) {
+ var _rc int32
+ var _1_nByte int64
+ var _pageSize uint32
+ var _1_pNew *int8
_rc = i32(0)
_pageSize = *_pPageSize
func() {
if _pageSize != uint32(i32(0)) && (_pageSize < uint32(i32(512)) || _pageSize > uint32(i32(65536))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50655), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetPagesizeØ00__func__Ø000))), unsafe.Pointer(str(17068)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50655), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetPagesizeØ00__func__Ø000))), unsafe.Pointer(str(17840)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pPager.X13) != i32(0) && (_pPager.X22) != uint32(i32(0)) || _sqlite3PcacheRefCount(tls, (*XPCache)(_pPager.X59)) != i32(0) || _pageSize == 0 || _pageSize == uint32(_pPager.X48) {
goto _8
}
-
_1_pNew = nil
_1_nByte = i64(0)
- if int32(_pPager.X14) <= i32(0) || (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- goto _10
+ if (int32(_pPager.X14) > i32(0)) && ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil) {
+ _rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X31), &_1_nByte)
}
-
- _rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X31), &_1_nByte)
-_10:
if _rc != i32(0) {
goto _11
}
-
_1_pNew = (*int8)(_sqlite3PageMalloc(tls, int32(_pageSize)))
- if _1_pNew != nil {
- goto _12
+ if _1_pNew == nil {
+ _rc = _sqlite3NomemError(tls, i32(50668))
}
-
- _rc = _sqlite3NomemError(tls, i32(50668))
-_12:
_11:
- if _rc != i32(0) {
- goto _13
+ if _rc == i32(0) {
+ _pager_reset(tls, _pPager)
+ _rc = _sqlite3PcacheSetPageSize(tls, (*XPCache)(_pPager.X59), int32(_pageSize))
}
-
- _pager_reset(tls, _pPager)
- _rc = _sqlite3PcacheSetPageSize(tls, (*XPCache)(_pPager.X59), int32(_pageSize))
-_13:
- if _rc != i32(0) {
- goto _14
+ if _rc == i32(0) {
+ _sqlite3PageFree(tls, (unsafe.Pointer)(_pPager.X58))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(204 /* X58 */))) = _1_pNew
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = uint32(((_1_nByte + int64(_pageSize)) - int64(i32(1))) / int64(_pageSize))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(152 /* X48 */))) = int32(_pageSize)
+ goto _15
}
-
- _sqlite3PageFree(tls, (unsafe.Pointer)(_pPager.X58))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(204 /* X58 */))) = _1_pNew
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = uint32(((_1_nByte + int64(_pageSize)) - int64(i32(1))) / int64(_pageSize))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(152 /* X48 */))) = int32(_pageSize)
- goto _15
-
-_14:
_sqlite3PageFree(tls, (unsafe.Pointer)(_1_pNew))
_15:
_8:
@@ -17796,16 +17391,12 @@ _8:
if _rc != i32(0) {
goto _16
}
-
- if _nReserve >= i32(0) {
- goto _17
+ if _nReserve < i32(0) {
+ _nReserve = int32(_pPager.X45)
}
-
- _nReserve = int32(_pPager.X45)
-_17:
func() {
if _nReserve < i32(0) || _nReserve >= i32(1000) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50688), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetPagesizeØ00__func__Ø000))), unsafe.Pointer(str(17136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50688), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetPagesizeØ00__func__Ø000))), unsafe.Pointer(str(17905)))
crt.X__builtin_abort(tls)
}
}()
@@ -17815,138 +17406,77 @@ _16:
return _rc
}
-var _sqlite3PagerSetPagesizeØ00__func__Ø000 [24]int8 // -
+var _sqlite3PagerSetPagesizeØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerSetPagesizeØ00__func__Ø000[0], str(17168), 24)
+ crt.Xstrncpy(nil, &_sqlite3PagerSetPagesizeØ00__func__Ø000[0], str(17934), 24)
}
-func _sqlite3OsFileSize(tls *crt.TLS, _id *Xsqlite3_file, _pSize *int64) (r0 int32) { // sqlite3.c:20181:1
+func _sqlite3OsFileSize(tls *crt.TLS, _id *Xsqlite3_file, _pSize *int64) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, *int64) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int64) int32
}{((*Xsqlite3_io_methods)(_id.X0).X6)})))(tls, _id, _pSize)
}
-func _sqlite3PageMalloc(tls *crt.TLS, _sz int32) (r0 unsafe.Pointer) { // sqlite3.c:45478:1
+// Malloc function used by SQLite to obtain space from the buffer configured
+// using sqlite3_config(SQLITE_CONFIG_PAGECACHE) option. If no such buffer
+// exists, this function falls back to sqlite3Malloc().
+func _sqlite3PageMalloc(tls *crt.TLS, _sz int32) (r0 unsafe.Pointer) {
return _pcache1Alloc(tls, _sz)
}
-func _pcache1Alloc(tls *crt.TLS, _nByte int32) (r0 unsafe.Pointer) { // sqlite3.c:45316:1
- var _p unsafe.Pointer // sqlite3.c:45317:8
- _ = _p
- var _4_sz int32 // sqlite3.c:45339:11
- _ = _4_sz
- _p = nil
- func() {
- if Xsqlite3_mutex_notheld(tls, (*Xsqlite3_mutex)((*XPGroup)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g))+uintptr(0 /* X0 */))).X0)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(45318), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1AllocØ00__func__Ø000))), unsafe.Pointer(str(17192)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _nByte > (_pcache1_g.X4) {
- goto _2
- }
-
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
- _p = _pcache1_g.X10
- if _p == nil {
- goto _3
- }
-
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(88 /* X10 */))))) = (*Xsqlite3_file)((*Xsqlite3_file)(_pcache1_g.X10).X0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(92 /* X11 */))) -= 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(96 /* X12 */))) = bool2int((_pcache1_g.X11) < (_pcache1_g.X6))
- func() {
- if (_pcache1_g.X11) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(45326), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1AllocØ00__func__Ø000))), unsafe.Pointer(str(17236)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3StatusHighwater(tls, i32(7), _nByte)
- _sqlite3StatusUp(tls, i32(1), i32(1))
-_3:
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
-_2:
- if _p != nil {
- goto _6
- }
-
- _p = _sqlite3Malloc(tls, uint64(_nByte))
- if _p == nil {
- goto _7
- }
-
- _4_sz = _sqlite3MallocSize(tls, _p)
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
- _sqlite3StatusHighwater(tls, i32(7), _nByte)
- _sqlite3StatusUp(tls, i32(2), _4_sz)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
-_7:
-_6:
- r0 = _p
- return
-}
-
-var _pcache1AllocØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pcache1AllocØ00__func__Ø000[0], str(17260), 13)
-}
-
-func _pager_reset(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:48646:1
+// Discard the entire contents of the in-memory page-cache.
+func _pager_reset(tls *crt.TLS, _pPager *XPager) {
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(104 /* X39 */))) += 1
_sqlite3BackupRestart(tls, (*Xsqlite3_backup)(_pPager.X36))
_sqlite3PcacheClear(tls, (*XPCache)(_pPager.X59))
}
-func _sqlite3PcacheClear(tls *crt.TLS, _pCache *XPCache) { // sqlite3.c:44813:1
+// Discard the contents of the cache.
+func _sqlite3PcacheClear(tls *crt.TLS, _pCache *XPCache) {
_sqlite3PcacheTruncate(tls, _pCache, uint32(i32(0)))
}
-func _sqlite3PcacheTruncate(tls *crt.TLS, _pCache *XPCache, _pgno uint32) { // sqlite3.c:44771:1
- var _1_p *XPgHdr // sqlite3.c:44773:11
- _ = _1_p
- var _1_pNext *XPgHdr // sqlite3.c:44774:11
- _ = _1_pNext
- var _4_pPage1 *Xsqlite3_pcache_page // sqlite3.c:44789:27
- _ = _4_pPage1
+// Drop every cache entry whose page number is greater than "pgno". The
+// caller must ensure that there are no outstanding references to any pages
+// other than page 1 with a page number greater than pgno.
+//
+// If there is a reference to page 1 and the pgno parameter passed to this
+// function is 0, then the data area associated with page 1 is zeroed, but
+// the page object is not dropped.
+func _sqlite3PcacheTruncate(tls *crt.TLS, _pCache *XPCache, _pgno uint32) {
+ var _1_p, _1_pNext *XPgHdr
+ var _4_pPage1 *Xsqlite3_pcache_page
if (_pCache.X12) == nil {
goto _0
}
-
_1_p = (*XPgHdr)(_pCache.X0)
_1:
if _1_p == nil {
goto _4
}
-
_1_pNext = (*XPgHdr)(_1_p.X9)
func() {
if (_1_p.X5) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44782), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheTruncateØ00__func__Ø000))), unsafe.Pointer(str(17276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44782), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheTruncateØ00__func__Ø000))), unsafe.Pointer(str(17958)))
crt.X__builtin_abort(tls)
}
}()
- if (_1_p.X5) <= _pgno {
- goto _7
+ if (_1_p.X5) > _pgno {
+ func() {
+ if (int32(_1_p.X6) & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44784), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheTruncateØ00__func__Ø000))), unsafe.Pointer(str(17968)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3PcacheMakeClean(tls, _1_p)
}
-
- func() {
- if (int32(_1_p.X6) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44784), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheTruncateØ00__func__Ø000))), unsafe.Pointer(str(17288)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3PcacheMakeClean(tls, _1_p)
-_7:
_1_p = _1_pNext
goto _1
-
_4:
if _pgno != uint32(i32(0)) || (_pCache.X3) == 0 {
goto _11
}
-
_4_pPage1 = (*(*func(*crt.TLS, unsafe.Pointer, uint32, int32) *Xsqlite3_pcache_page)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, uint32, int32) unsafe.Pointer
}{((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X7)})))(tls, _pCache.X12, uint32(i32(1)), i32(0))
@@ -17955,32 +17485,31 @@ _4:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheTruncateØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheTruncateØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _14
+ }() != 0 {
+ crt.Xmemset(tls, _4_pPage1.X0, i32(0), uint32(_pCache.X6))
+ _pgno = uint32(i32(1))
}
-
- crt.Xmemset(tls, _4_pPage1.X0, i32(0), uint32(_pCache.X6))
- _pgno = uint32(i32(1))
-_14:
_11:
((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X10)(tls, _pCache.X12, _pgno+uint32(i32(1)))
_0:
}
-var _sqlite3PcacheTruncateØ00__func__Ø000 [22]int8 // -
+var _sqlite3PcacheTruncateØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheTruncateØ00__func__Ø000[0], str(17312), 22)
+ crt.Xstrncpy(nil, &_sqlite3PcacheTruncateØ00__func__Ø000[0], str(17989), 22)
}
-func _sqlite3PcacheMakeClean(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44697:1
+// Make sure the page is marked as clean. If it isn't clean already,
+// make it so.
+func _sqlite3PcacheMakeClean(tls *crt.TLS, _p *XPgHdr) {
func() {
if _sqlite3PcachePageSanity(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44698), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(12872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44698), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(13867)))
crt.X__builtin_abort(tls)
}
}()
@@ -17989,17 +17518,16 @@ func _sqlite3PcacheMakeClean(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44697:1
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44699), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44699), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _4
}
-
func() {
if (int32(_p.X6) & i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44700), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(17336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44700), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(18011)))
crt.X__builtin_abort(tls)
}
}()
@@ -18007,179 +17535,112 @@ func _sqlite3PcacheMakeClean(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44697:1
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) & i32(-15))
- sink12 = *p
+ sink14 = *p
}
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) | i32(1))
- sink12 = *p
+ sink14 = *p
}
func() {
if _sqlite3PcachePageSanity(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44705), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(12872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44705), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMakeCleanØ00__func__Ø000))), unsafe.Pointer(str(13867)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_p.X7) != i32(0) {
- goto _9
+ if int32(_p.X7) == i32(0) {
+ _pcacheUnpin(tls, _p)
}
-
- _pcacheUnpin(tls, _p)
-_9:
_4:
}
-var _sqlite3PcacheMakeCleanØ00__func__Ø000 [23]int8 // -
+var _sqlite3PcacheMakeCleanØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheMakeCleanØ00__func__Ø000[0], str(17364), 23)
+ crt.Xstrncpy(nil, &_sqlite3PcacheMakeCleanØ00__func__Ø000[0], str(18039), 23)
}
-func _sqlite3PcacheSetPageSize(tls *crt.TLS, _pCache *XPCache, _szPage int32) (r0 int32) { // sqlite3.c:44443:1
- var _1_pNew unsafe.Pointer // sqlite3.c:44446:20
- _ = _1_pNew
+// Change the page size for PCache object. The caller must ensure that there
+// are no outstanding page references when this function is called.
+func _sqlite3PcacheSetPageSize(tls *crt.TLS, _pCache *XPCache, _szPage int32) (r0 int32) {
+ var _1_pNew unsafe.Pointer
func() {
if (_pCache.X3) != i32(0) || (*XPgHdr)(_pCache.X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44444), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(17388)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44444), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(18062)))
crt.X__builtin_abort(tls)
}
}()
if (_pCache.X6) == 0 {
goto _3
}
-
_1_pNew = ((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X4)(tls, _szPage, int32(uint32(_pCache.X7)+u32(40)), int32(_pCache.X8))
- if _1_pNew != nil {
- goto _4
+ if _1_pNew == nil {
+ return _sqlite3NomemError(tls, i32(44451))
}
- return _sqlite3NomemError(tls, i32(44451))
-
-_4:
((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X5)(tls, _1_pNew, _numberOfCachePages(tls, _pCache))
- if (_pCache.X12) == nil {
- goto _5
+ if (_pCache.X12) != nil {
+ ((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X11)(tls, _pCache.X12)
}
-
- ((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X11)(tls, _pCache.X12)
-_5:
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(44 /* X12 */))) = _1_pNew
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(24 /* X6 */))) = _szPage
_3:
return i32(0)
}
-var _sqlite3PcacheSetPageSizeØ00__func__Ø000 [25]int8 // -
+var _sqlite3PcacheSetPageSizeØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheSetPageSizeØ00__func__Ø000[0], str(17428), 25)
+ crt.Xstrncpy(nil, &_sqlite3PcacheSetPageSizeØ00__func__Ø000[0], str(18102), 25)
}
-func _numberOfCachePages(tls *crt.TLS, _p *XPCache) (r0 int32) { // sqlite3.c:44366:1
- if (_p.X4) < i32(0) {
- goto _0
+// Compute the number of pages of cache requested. p->szCache is the
+// cache size requested by the "PRAGMA cache_size" statement.
+func _numberOfCachePages(tls *crt.TLS, _p *XPCache) (r0 int32) {
+ if (_p.X4) >= i32(0) {
+ return _p.X4
}
- return _p.X4
-
-_0:
return int32((int64(i32(-1024)) * int64(_p.X4)) / int64((_p.X6)+(_p.X7)))
}
-func _sqlite3PageFree(tls *crt.TLS, _p unsafe.Pointer) { // sqlite3.c:45485:1
+// Free an allocated buffer obtained from sqlite3PageMalloc().
+func _sqlite3PageFree(tls *crt.TLS, _p unsafe.Pointer) {
_pcache1Free(tls, _p)
}
-func _pcache1Free(tls *crt.TLS, _p unsafe.Pointer) { // sqlite3.c:45354:1
- var _1_pSlot *Xsqlite3_file // sqlite3.c:45357:16
- _ = _1_pSlot
- var _3_nFreed int32 // sqlite3.c:45372:11
- _ = _3_nFreed
- if _p != nil {
- goto _0
- }
- return
-
-_0:
- if uint32(uintptr(_p)) < uint32(uintptr(_pcache1_g.X7)) || uint32(uintptr(_p)) >= uint32(uintptr(_pcache1_g.X8)) {
- goto _2
- }
-
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
- _sqlite3StatusDown(tls, i32(1), i32(1))
- _1_pSlot = (*Xsqlite3_file)(_p)
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSlot)) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)(_pcache1_g.X10)
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(88 /* X10 */))))) = _1_pSlot
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(92 /* X11 */))) += 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pcache1_g)) + uintptr(96 /* X12 */))) = bool2int((_pcache1_g.X11) < (_pcache1_g.X6))
- func() {
- if (_pcache1_g.X11) > (_pcache1_g.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(45365), unsafe.Pointer((*int8)(unsafe.Pointer(&_pcache1FreeØ00__func__Ø000))), unsafe.Pointer(str(17456)))
- crt.X__builtin_abort(tls)
- }
- }()
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
- goto _5
-
-_2:
- i32(0)
- _3_nFreed = i32(0)
- _3_nFreed = _sqlite3MallocSize(tls, _p)
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
- _sqlite3StatusDown(tls, i32(2), _3_nFreed)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_pcache1_g.X9))
- Xsqlite3_free(tls, _p)
-_5:
-}
-
-var _pcache1FreeØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pcache1FreeØ00__func__Ø000[0], str(17492), 12)
-}
-
-func _pagerFixMaplimit(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:50413:1
- var _fd *Xsqlite3_file // sqlite3.c:50415:16
- _ = _fd
- var _1_sz int64 // sqlite3.c:50417:19
- _ = _1_sz
+// Invoke SQLITE_FCNTL_MMAP_SIZE based on the current value of szMmap.
+func _pagerFixMaplimit(tls *crt.TLS, _pPager *XPager) {
+ var _1_sz int64
+ var _fd *Xsqlite3_file
_fd = (*Xsqlite3_file)(_pPager.X31)
- if (*Xsqlite3_io_methods)(_fd.X0) == nil || ((*Xsqlite3_io_methods)(_fd.X0).X0) < i32(3) {
- goto _1
+ if ((*Xsqlite3_io_methods)(_fd.X0) != nil) && (((*Xsqlite3_io_methods)(_fd.X0).X0) >= i32(3)) {
+ _1_sz = _pPager.X42
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(23 /* X20 */))) = uint8(bool2int(_1_sz > int64(i32(0))))
+ _setGetterMethod(tls, _pPager)
+ _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), i32(18), (unsafe.Pointer)(&_1_sz))
}
-
- _1_sz = _pPager.X42
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(23 /* X20 */))) = uint8(bool2int(_1_sz > int64(i32(0))))
- _setGetterMethod(tls, _pPager)
- _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), i32(18), (unsafe.Pointer)(&_1_sz))
-_1:
}
-func _setGetterMethod(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:47957:1
- if (_pPager.X26) == 0 {
- goto _0
+// Set the Pager.xGet method for the appropriate routine used to fetch
+// content from the pager.
+func _setGetterMethod(tls *crt.TLS, _pPager *XPager) {
+ if (_pPager.X26) != 0 {
+ *(*func(*crt.TLS, *XPager, uint32, **XPgHdr, int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, uint32, *unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(200 /* X57 */))))) = _getPageError
+ goto _1
}
-
- *(*func(*crt.TLS, *XPager, uint32, **XPgHdr, int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, uint32, *unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(200 /* X57 */))))) = _getPageError
- goto _1
-
-_0:
- if (_pPager.X20) == 0 {
- goto _2
+ if (_pPager.X20) != 0 {
+ *(*func(*crt.TLS, *XPager, uint32, **XPgHdr, int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, uint32, *unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(200 /* X57 */))))) = _getPageMMap
+ goto _3
}
-
- *(*func(*crt.TLS, *XPager, uint32, **XPgHdr, int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, uint32, *unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(200 /* X57 */))))) = _getPageMMap
- goto _3
-
-_2:
*(*func(*crt.TLS, *XPager, uint32, **XPgHdr, int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, uint32, *unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(200 /* X57 */))))) = _getPageNormal
_3:
_1:
}
-func _getPageError(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) { // sqlite3.c:52494:1
-
+// The page getter method for when the pager is an error state
+func _getPageError(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) {
func() {
if (_pPager.X26) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52502), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageErrorØ00__func__Ø000))), unsafe.Pointer(str(11176)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52502), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageErrorØ00__func__Ø000))), unsafe.Pointer(str(12253)))
crt.X__builtin_abort(tls)
}
}()
@@ -18187,172 +17648,141 @@ func _getPageError(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr
return _pPager.X26
}
-var _getPageErrorØ00__func__Ø000 [13]int8 // -
+var _getPageErrorØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_getPageErrorØ00__func__Ø000[0], str(17504), 13)
+ crt.Xstrncpy(nil, &_getPageErrorØ00__func__Ø000[0], str(18127), 13)
}
-func _getPageMMap(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) { // sqlite3.c:52422:1
- var _rc int32 // sqlite3.c:52428:7
- _ = _rc
- var _pPg *XPgHdr // sqlite3.c:52429:9
- _ = _pPg
- var _iFrame uint32 // sqlite3.c:52430:7
- _ = _iFrame
- var _bMmapOk int32 // sqlite3.c:52436:13
- _ = _bMmapOk
- var _4_pData unsafe.Pointer // sqlite3.c:52465:10
- _ = _4_pData
+// The page getter for when memory-mapped I/O is enabled
+func _getPageMMap(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) {
+ var _rc, _bMmapOk int32
+ var _iFrame uint32
+ var _4_pData unsafe.Pointer
+ var _pPg *XPgHdr
_rc = i32(0)
_pPg = nil
_iFrame = u32(0)
_bMmapOk = bool2int((_pgno > uint32(i32(1))) && ((int32(_pPager.X14) == i32(1)) || (_flags&i32(2)) != 0))
func() {
if (_pPager.X20) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52440), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(17520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52440), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(18140)))
crt.X__builtin_abort(tls)
}
}()
- if _pgno > uint32(i32(1)) || _pgno != uint32(i32(0)) {
- goto _5
+ if (_pgno <= uint32(i32(1))) && (_pgno == uint32(i32(0))) {
+ return _sqlite3CorruptError(tls, i32(52450))
}
- return _sqlite3CorruptError(tls, i32(52450))
-
-_5:
func() {
if int32(_pPager.X14) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52452), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(17540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52452), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(18157)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52453), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52453), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X21) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52454), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(17572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52454), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(18186)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52455), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52455), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
if _bMmapOk == 0 || (*XWal)(_pPager.X60) == nil {
goto _15
}
-
_rc = _sqlite3WalFindFrame(tls, (*XWal)(_pPager.X60), _pgno, &_iFrame)
- if _rc == i32(0) {
- goto _16
+ if _rc != i32(0) {
+ *_ppPage = nil
+ return _rc
}
-
- *_ppPage = nil
- return _rc
-
-_16:
_15:
if _bMmapOk == 0 || _iFrame != uint32(i32(0)) {
goto _18
}
-
_4_pData = nil
_rc = _sqlite3OsFetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(_pgno-uint32(i32(1)))*int64(_pPager.X48), _pPager.X48, &_4_pData)
if _rc != i32(0) || _4_pData == nil {
goto _20
}
-
- if int32(_pPager.X14) <= i32(1) && (_pPager.X10) == 0 {
- goto _22
+ if (int32(_pPager.X14) > i32(1)) || ((_pPager.X10) != 0) {
+ _pPg = _sqlite3PagerLookup(tls, _pPager, _pgno)
}
-
- _pPg = _sqlite3PagerLookup(tls, _pPager, _pgno)
-_22:
- if _pPg != nil {
- goto _23
+ if _pPg == nil {
+ _rc = _pagerAcquireMapPage(tls, _pPager, _pgno, _4_pData, &_pPg)
+ goto _24
}
-
- _rc = _pagerAcquireMapPage(tls, _pPager, _pgno, _4_pData, &_pPg)
- goto _24
-
-_23:
_sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(_pgno-uint32(i32(1)))*int64(_pPager.X48), _4_pData)
_24:
- if _pPg == nil {
- goto _25
+ if _pPg != nil {
+ func() {
+ if _rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52479), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(15012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_ppPage = _pPg
+ return i32(0)
}
-
- func() {
- if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52479), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageMMapØ00__func__Ø000))), unsafe.Pointer(str(14080)))
- crt.X__builtin_abort(tls)
- }
- }()
- *_ppPage = _pPg
- return i32(0)
-
-_25:
_20:
- if _rc == i32(0) {
- goto _28
+ if _rc != i32(0) {
+ *_ppPage = nil
+ return _rc
}
-
- *_ppPage = nil
- return _rc
-
-_28:
_18:
- r0 = _getPageNormal(tls, _pPager, _pgno, _ppPage, _flags)
- return
+ return _getPageNormal(tls, _pPager, _pgno, _ppPage, _flags)
}
-var _getPageMMapØ00__func__Ø000 [12]int8 // -
+var _getPageMMapØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_getPageMMapØ00__func__Ø000[0], str(17604), 12)
+ crt.Xstrncpy(nil, &_getPageMMapØ00__func__Ø000[0], str(18215), 12)
}
-func _sqlite3OsFetch(tls *crt.TLS, _id *Xsqlite3_file, _iOff int64, _iAmt int32, _pp *unsafe.Pointer) (r0 int32) { // sqlite3.c:20256:1
+// The real implementation of xFetch and xUnfetch
+func _sqlite3OsFetch(tls *crt.TLS, _id *Xsqlite3_file, _iOff int64, _iAmt int32, _pp *unsafe.Pointer) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int64, int32, *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int64, int32, *unsafe.Pointer) int32
}{((*Xsqlite3_io_methods)(_id.X0).X17)})))(tls, _id, _iOff, _iAmt, _pp)
}
-func _pagerAcquireMapPage(tls *crt.TLS, _pPager *XPager, _pgno uint32, _pData unsafe.Pointer, _ppPage **XPgHdr) (r0 int32) { // sqlite3.c:50928:1
- var _p *XPgHdr // sqlite3.c:50934:9
- _ = _p
- if (*XPgHdr)(_pPager.X43) == nil {
- goto _0
+// Obtain a reference to a memory mapped page object for page number pgno.
+// The new object will use the pointer pData, obtained from xFetch().
+// If successful, set *ppPage to point to the new page reference
+// and return SQLITE_OK. Otherwise, return an SQLite error code and set
+// *ppPage to zero.
+//
+// Page references obtained by calling this function should be released
+// by calling pagerReleaseMapPage().
+func _pagerAcquireMapPage(tls *crt.TLS, _pPager *XPager, _pgno uint32, _pData unsafe.Pointer, _ppPage **XPgHdr) (r0 int32) {
+ var _p *XPgHdr
+ if (*XPgHdr)(_pPager.X43) != nil {
+ *_ppPage = store25(&_p, (*XPgHdr)(_pPager.X43))
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(136 /* X43 */))))) = (*XPgHdr)(_p.X3)
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = nil
+ func() {
+ if int32(_pPager.X44) < i32(8) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50940), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(18227)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ crt.Xmemset(tls, _p.X2, i32(0), uint32(i32(8)))
+ goto _3
}
-
- *_ppPage = store23(&_p, (*XPgHdr)(_pPager.X43))
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(136 /* X43 */))))) = (*XPgHdr)(_p.X3)
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = nil
- func() {
- if int32(_pPager.X44) < i32(8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50940), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(17616)))
- crt.X__builtin_abort(tls)
- }
- }()
- crt.Xmemset(tls, _p.X2, i32(0), uint32(i32(8)))
- goto _3
-
-_0:
- *_ppPage = store23(&_p, (*XPgHdr)(_sqlite3MallocZero(tls, uint64(u32(40)+uint32(_pPager.X44)))))
- if _p != nil {
- goto _4
+ *_ppPage = store25(&_p, (*XPgHdr)(_sqlite3MallocZero(tls, uint64(u32(40)+uint32(_pPager.X44)))))
+ if _p == nil {
+ _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(_pgno-uint32(i32(1)))*int64(_pPager.X48), _pData)
+ return _sqlite3NomemError(tls, i32(50946))
}
-
- _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(_pgno-uint32(i32(1)))*int64(_pPager.X48), _pData)
- return _sqlite3NomemError(tls, i32(50946))
-
-_4:
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = (unsafe.Pointer)((*XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 40*uintptr(i32(1)))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = uint16(i32(32))
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */))) = int16(i32(1))
@@ -18360,31 +17790,31 @@ _4:
_3:
func() {
if _p.X2 != (unsafe.Pointer)((*XPgHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+40*uintptr(i32(1))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50954), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(17636)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50954), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(18245)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_pcache_page)(_p.X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50955), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(17664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50955), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(18270)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X6) != i32(32) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50956), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(17676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50956), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(18282)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XPager)(_p.X4) != _pPager {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50957), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(17700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50957), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(18303)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X7) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50958), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(15488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50958), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerAcquireMapPageØ00__func__Ø000))), unsafe.Pointer(str(16340)))
crt.X__builtin_abort(tls)
}
}()
@@ -18394,267 +17824,268 @@ _3:
return i32(0)
}
-var _pagerAcquireMapPageØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pagerAcquireMapPageØ00__func__Ø000[0], str(17720), 20)
-}
-
-func _getPageNormal(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) { // sqlite3.c:52315:1
- var _rc int32 // sqlite3.c:52321:7
- _ = _rc
- var _pPg *XPgHdr // sqlite3.c:52322:9
- _ = _pPg
- var _noContent uint8 // sqlite3.c:52323:6
- _ = _noContent
- var _pBase *Xsqlite3_pcache_page // sqlite3.c:52324:23
- _ = _pBase
- var _10_iFrame uint32 // sqlite3.c:52394:11
- _ = _10_iFrame
+var _pagerAcquireMapPageØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pagerAcquireMapPageØ00__func__Ø000[0], str(18321), 20)
+}
+
+// The page getter methods each try to acquire a reference to a
+// page with page number pgno. If the requested reference is
+// successfully obtained, it is copied to *ppPage and SQLITE_OK returned.
+//
+// There are different implementations of the getter method depending
+// on the current state of the pager.
+//
+// getPageNormal() -- The normal getter
+// getPageError() -- Used if the pager is in an error state
+// getPageMmap() -- Used if memory-mapped I/O is enabled
+//
+// If the requested page is already in the cache, it is returned.
+// Otherwise, a new page object is allocated and populated with data
+// read from the database file. In some cases, the pcache module may
+// choose not to allocate a new page object and may reuse an existing
+// object with no outstanding references.
+//
+// The extra data appended to a page is always initialized to zeros the
+// first time a page is loaded into memory. If the page requested is
+// already in the cache when this function is called, then the extra
+// data is left as it was when the page object was last used.
+//
+// If the database image is smaller than the requested page or if
+// the flags parameter contains the PAGER_GET_NOCONTENT bit and the
+// requested page is not already stored in the cache, then no
+// actual disk read occurs. In this case the memory image of the
+// page is initialized to all zeros.
+//
+// If PAGER_GET_NOCONTENT is true, it means that we do not care about
+// the contents of the page. This occurs in two scenarios:
+//
+// a) When reading a free-list leaf page from the database, and
+//
+// b) When a savepoint is being rolled back and we need to load
+// a new page into the cache to be filled with the data read
+// from the savepoint journal.
+//
+// If PAGER_GET_NOCONTENT is true, then the data returned is zeroed instead
+// of being read from the database. Additionally, the bits corresponding
+// to pgno in Pager.pInJournal (bitvec of pages already written to the
+// journal file) and the PagerSavepoint.pInSavepoint bitvecs of any open
+// savepoints are set. This means if the page is made writable at any
+// point in the future, using a call to sqlite3PagerWrite(), its contents
+// will not be journaled. This saves IO.
+//
+// The acquisition might fail for several reasons. In all cases,
+// an appropriate error code is returned and *ppPage is set to NULL.
+//
+// See also sqlite3PagerLookup(). Both this routine and Lookup() attempt
+// to find a page in the in-memory cache first. If the page is not already
+// in memory, this routine goes to disk to read it in whereas Lookup()
+// just returns 0. This routine acquires a read-lock the first time it
+// has to go to disk, and could also playback an old journal if necessary.
+// Since Lookup() never goes to disk, it never has to deal with locks
+// or journal files.
+func _getPageNormal(tls *crt.TLS, _pPager *XPager, _pgno uint32, _ppPage **XPgHdr, _flags int32) (r0 int32) {
+ var _rc int32
+ var _10_iFrame uint32
+ var _noContent uint8
+ var _pPg *XPgHdr
+ var _pBase *Xsqlite3_pcache_page
_rc = i32(0)
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52326), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52326), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52327), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52327), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18157)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52328), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52328), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X21) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52329), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52329), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18186)))
crt.X__builtin_abort(tls)
}
}()
- if _pgno != uint32(i32(0)) {
- goto _8
+ if _pgno == uint32(i32(0)) {
+ return _sqlite3CorruptError(tls, i32(52331))
}
- return _sqlite3CorruptError(tls, i32(52331))
-
-_8:
_pBase = _sqlite3PcacheFetch(tls, (*XPCache)(_pPager.X59), _pgno, i32(3))
if _pBase != nil {
goto _9
}
-
_pPg = nil
_rc = _sqlite3PcacheFetchStress(tls, (*XPCache)(_pPager.X59), _pgno, &_pBase)
- if _rc == i32(0) {
- goto _10
+ if _rc != i32(0) {
+ goto _pager_acquire_err
}
-
- goto _pager_acquire_err
-
-_10:
- if _pBase != nil {
- goto _11
+ if _pBase == nil {
+ _rc = _sqlite3NomemError(tls, i32(52338))
+ goto _pager_acquire_err
}
-
- _rc = _sqlite3NomemError(tls, i32(52338))
- goto _pager_acquire_err
-
-_11:
_9:
- _pPg = store23(_ppPage, _sqlite3PcacheFetchFinish(tls, (*XPCache)(_pPager.X59), _pgno, _pBase))
+ _pPg = store25(_ppPage, _sqlite3PcacheFetchFinish(tls, (*XPCache)(_pPager.X59), _pgno, _pBase))
func() {
if _pPg != (*_ppPage) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52343), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17740)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52343), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18341)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPg.X5) != _pgno {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52344), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52344), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18356)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XPager)(_pPg.X4) != _pPager && (*XPager)(_pPg.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52345), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52345), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18372)))
crt.X__builtin_abort(tls)
}
}()
_noContent = uint8(bool2int((_flags & i32(1)) != i32(0)))
- if (*XPager)(_pPg.X4) == nil || _noContent != 0 {
- goto _20
+ if ((*XPager)(_pPg.X4) != nil) && (_noContent == 0) {
+ func() {
+ if _pgno > uint32(i32(2147483647)) || _pgno == uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52351), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18410)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(184 /* X55 */))))) + 4*uintptr(i32(0)))) += 1
+ return i32(0)
}
-
- func() {
- if _pgno > uint32(i32(2147483647)) || _pgno == uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52351), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17812)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(184 /* X55 */))))) + 4*uintptr(i32(0)))) += 1
- return i32(0)
-
-_20:
- if _pgno <= uint32(i32(2147483647)) && _pgno != uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1)) {
- goto _26
+ if (_pgno > uint32(i32(2147483647))) || (_pgno == uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1))) {
+ _rc = _sqlite3CorruptError(tls, i32(52363))
+ goto _pager_acquire_err
}
-
- _rc = _sqlite3CorruptError(tls, i32(52363))
- goto _pager_acquire_err
-
-_26:
*(**XPager)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(16 /* X4 */))))) = _pPager
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil && (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52369), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52369), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18462)))
crt.X__builtin_abort(tls)
}
}()
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil && (_pPager.X22) >= _pgno && _noContent == 0 {
goto _32
}
-
- if _pgno <= (_pPager.X49) {
- goto _33
+ if _pgno > (_pPager.X49) {
+ _rc = i32(13)
+ goto _pager_acquire_err
}
-
- _rc = i32(13)
- goto _pager_acquire_err
-
-_33:
if _noContent == 0 {
goto _34
}
-
_sqlite3BeginBenignMalloc(tls)
- if _pgno > (_pPager.X23) {
- goto _35
+ if _pgno <= (_pPager.X23) {
+ _rc = _sqlite3BitvecSet(tls, (*XBitvec)(_pPager.X30), _pgno)
}
-
- _rc = _sqlite3BitvecSet(tls, (*XBitvec)(_pPager.X30), _pgno)
-_35:
_rc = _addToSavepointBitvecs(tls, _pPager, _pgno)
_sqlite3EndBenignMalloc(tls)
_34:
crt.Xmemset(tls, _pPg.X1, i32(0), uint32(_pPager.X48))
goto _36
-
_32:
_10_iFrame = u32(0)
if (*XWal)(_pPager.X60) == nil {
goto _37
}
-
_rc = _sqlite3WalFindFrame(tls, (*XWal)(_pPager.X60), _pgno, &_10_iFrame)
- if _rc == i32(0) {
- goto _38
+ if _rc != i32(0) {
+ goto _pager_acquire_err
}
-
- goto _pager_acquire_err
-
-_38:
_37:
func() {
if (*XPager)(_pPg.X4) != _pPager {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52399), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52399), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18492)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(184 /* X55 */))))) + 4*uintptr(i32(1)))) += 1
_rc = _readDbPage(tls, _pPg, _10_iFrame)
- if _rc == i32(0) {
- goto _41
+ if _rc != i32(0) {
+ goto _pager_acquire_err
}
-
- goto _pager_acquire_err
-
-_41:
_36:
- r0 = i32(0)
- return
+ return i32(0)
_pager_acquire_err:
func() {
if _rc == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52411), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(17916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52411), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageNormalØ00__func__Ø000))), unsafe.Pointer(str(18512)))
crt.X__builtin_abort(tls)
}
}()
- if _pPg == nil {
- goto _44
+ if _pPg != nil {
+ _sqlite3PcacheDrop(tls, _pPg)
}
-
- _sqlite3PcacheDrop(tls, _pPg)
-_44:
_pagerUnlockIfUnused(tls, _pPager)
*_ppPage = nil
return _rc
}
-var _getPageNormalØ00__func__Ø000 [14]int8 // -
+var _getPageNormalØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_getPageNormalØ00__func__Ø000[0], str(17932), 14)
+ crt.Xstrncpy(nil, &_getPageNormalØ00__func__Ø000[0], str(18526), 14)
}
-func _sqlite3PcacheFetchStress(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _ppPage **Xsqlite3_pcache_page) (r0 int32) { // sqlite3.c:44528:1
- var _pPg *XPgHdr // sqlite3.c:44533:9
- _ = _pPg
- var _3_rc int32 // sqlite3.c:44555:11
- _ = _3_rc
- if int32(_pCache.X9) != i32(2) {
- goto _0
+// If the sqlite3PcacheFetch() routine is unable to allocate a new
+// page because no clean pages are available for reuse and the cache
+// size limit has been reached, then this routine can be invoked to
+// try harder to allocate a page. This routine might invoke the stress
+// callback to spill dirty pages to the journal. It will then try to
+// allocate the new page and will only fail to allocate a new page on
+// an OOM error.
+//
+// This routine should be invoked only after sqlite3PcacheFetch() fails.
+func _sqlite3PcacheFetchStress(tls *crt.TLS, _pCache *XPCache, _pgno uint32, _ppPage **Xsqlite3_pcache_page) (r0 int32) {
+ var _3_rc int32
+ var _pPg *XPgHdr
+ if int32(_pCache.X9) == i32(2) {
+ return i32(0)
}
- return i32(0)
-
-_0:
if _sqlite3PcachePagecount(tls, _pCache) <= (_pCache.X5) {
goto _1
}
-
_pPg = (*XPgHdr)(_pCache.X2)
_2:
if _pPg == nil || (_pPg.X7) == 0 && (int32(_pPg.X6)&i32(8)) == 0 {
goto _7
}
-
_pPg = (*XPgHdr)(_pPg.X10)
goto _2
-
_7:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(8 /* X2 */))))) = _pPg
if _pPg != nil {
goto _8
}
-
_pPg = (*XPgHdr)(_pCache.X1)
_9:
if _pPg == nil || (_pPg.X7) == 0 {
goto _13
}
-
_pPg = (*XPgHdr)(_pPg.X10)
goto _9
-
_13:
_8:
if _pPg == nil {
goto _14
}
-
_3_rc = (*(*func(*crt.TLS, unsafe.Pointer, *XPgHdr) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32
}{(_pCache.X10)})))(tls, _pCache.X11, _pPg)
- if _3_rc == i32(0) || _3_rc == i32(5) {
- goto _16
+ if (_3_rc != i32(0)) && (_3_rc != i32(5)) {
+ return _3_rc
}
- return _3_rc
-
-_16:
_14:
_1:
*_ppPage = (*(*func(*crt.TLS, unsafe.Pointer, uint32, int32) *Xsqlite3_pcache_page)(unsafe.Pointer(&struct {
@@ -18668,10 +18099,11 @@ _1:
}()
}
-func _sqlite3PcachePagecount(tls *crt.TLS, _pCache *XPCache) (r0 int32) { // sqlite3.c:44921:1
+// Return the total number of pages in the cache.
+func _sqlite3PcachePagecount(tls *crt.TLS, _pCache *XPCache) (r0 int32) {
func() {
if (_pCache.X12) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44922), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePagecountØ00__func__Ø000))), unsafe.Pointer(str(15076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44922), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcachePagecountØ00__func__Ø000))), unsafe.Pointer(str(15958)))
crt.X__builtin_abort(tls)
}
}()
@@ -18679,173 +18111,183 @@ func _sqlite3PcachePagecount(tls *crt.TLS, _pCache *XPCache) (r0 int32) { // sql
return ((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108))).X6)(tls, _pCache.X12)
}
-var _sqlite3PcachePagecountØ00__func__Ø000 [23]int8 // -
+var _sqlite3PcachePagecountØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcachePagecountØ00__func__Ø000[0], str(17948), 23)
-}
-
-func _sqlite3EndBenignMalloc(tls *crt.TLS) { // sqlite3.c:20576:1
- if (_sqlite3Hooks.X1) == nil {
- goto _0
- }
-
- (_sqlite3Hooks.X1)(tls)
-_0:
+ crt.Xstrncpy(nil, &_sqlite3PcachePagecountØ00__func__Ø000[0], str(18540), 23)
}
-func _sqlite3OsFileControlHint(tls *crt.TLS, _id *Xsqlite3_file, _op int32, _pArg unsafe.Pointer) { // sqlite3.c:20223:1
+func _sqlite3OsFileControlHint(tls *crt.TLS, _id *Xsqlite3_file, _op int32, _pArg unsafe.Pointer) {
(*(*func(*crt.TLS, *Xsqlite3_file, int32, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer) int32
}{((*Xsqlite3_io_methods)(_id.X0).X10)})))(tls, _id, _op, _pArg)
}
-func _sqlite3WalSavepointUndo(tls *crt.TLS, _pWal *XWal, _aWalData *uint32) (r0 int32) { // sqlite3.c:57313:1
- var _rc int32 // sqlite3.c:57314:7
- _ = _rc
+// Move the write position of the WAL back to the point identified by
+// the values in the aWalData[] array. aWalData must point to an array
+// of WAL_SAVEPOINT_NDATA u32 values that has been previously populated
+// by a call to WalSavepoint().
+func _sqlite3WalSavepointUndo(tls *crt.TLS, _pWal *XWal, _aWalData *uint32) (r0 int32) {
+ var _rc int32
_rc = i32(0)
func() {
if (_pWal.X12) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57316), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalSavepointUndoØ00__func__Ø000))), unsafe.Pointer(str(14700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57316), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalSavepointUndoØ00__func__Ø000))), unsafe.Pointer(str(15606)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(3))))) == (_pWal.X22) && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(0))))) > ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalSavepointUndoØ00__func__Ø000))), unsafe.Pointer(str(17972)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalSavepointUndoØ00__func__Ø000))), unsafe.Pointer(str(18563)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(3))))) == (_pWal.X22) {
- goto _5
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(3))))) != (_pWal.X22) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(0)))) = uint32(i32(0))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(3)))) = _pWal.X22
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(0)))) = uint32(i32(0))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(3)))) = _pWal.X22
-_5:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(0))))) >= ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
- goto _6
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(0))))) < ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(16 /* X6 */))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(0))))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(0)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(1))))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(2))))
+ _walCleanupHash(tls, _pWal)
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(16 /* X6 */))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(0))))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(0)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(1))))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(2))))
- _walCleanupHash(tls, _pWal)
-_6:
return _rc
}
-var _sqlite3WalSavepointUndoØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3WalSavepointUndoØ00__func__Ø000[0], str(18032), 24)
-}
-
-func _pager_end_transaction(tls *crt.TLS, _pPager *XPager, _hasMaster int32, _bCommit int32) (r0 int32) { // sqlite3.c:48908:1
- var _rc int32 // sqlite3.c:48909:7
- _ = _rc
- var _rc2 int32 // sqlite3.c:48910:7
- _ = _rc2
- var _9_bDelete int32 // sqlite3.c:48966:11
- _ = _9_bDelete
+var _sqlite3WalSavepointUndoØ00__func__Ø000 [24]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WalSavepointUndoØ00__func__Ø000[0], str(18622), 24)
+}
+
+// This routine ends a transaction. A transaction is usually ended by
+// either a COMMIT or a ROLLBACK operation. This routine may be called
+// after rollback of a hot-journal, or if an error occurs while opening
+// the journal file or writing the very first journal-header of a
+// database transaction.
+//
+// This routine is never called in PAGER_ERROR state. If it is called
+// in PAGER_NONE or PAGER_SHARED state and the lock held is less
+// exclusive than a RESERVED lock, it is a no-op.
+//
+// Otherwise, any active savepoints are released.
+//
+// If the journal file is open, then it is "finalized". Once a journal
+// file has been finalized it is not possible to use it to roll back a
+// transaction. Nor will it be considered to be a hot-journal by this
+// or any other database connection. Exactly how a journal is finalized
+// depends on whether or not the pager is running in exclusive mode and
+// the current journal-mode (Pager.journalMode value), as follows:
+//
+// journalMode==MEMORY
+// Journal file descriptor is simply closed. This destroys an
+// in-memory journal.
+//
+// journalMode==TRUNCATE
+// Journal file is truncated to zero bytes in size.
+//
+// journalMode==PERSIST
+// The first 28 bytes of the journal file are zeroed. This invalidates
+// the first journal header in the file, and hence the entire journal
+// file. An invalid journal file cannot be rolled back.
+//
+// journalMode==DELETE
+// The journal file is closed and deleted using sqlite3OsDelete().
+//
+// If the pager is running in exclusive mode, this method of finalizing
+// the journal file is never used. Instead, if the journalMode is
+// DELETE and the pager is in exclusive mode, the method described under
+// journalMode==PERSIST is used instead.
+//
+// After the journal is finalized, the pager moves to PAGER_READER state.
+// If running in non-exclusive rollback mode, the lock on the file is
+// downgraded to a SHARED_LOCK.
+//
+// SQLITE_OK is returned if no error occurs. If an error occurs during
+// any of the IO operations to finalize the journal file or unlock the
+// database then the IO error code is returned to the user. If the
+// operation to finalize the journal file fails, then the code still
+// tries to unlock the database file if not in exclusive mode. If the
+// unlock operation fails as well, then the first error code related
+// to the first error encountered (the journal finalization one) is
+// returned.
+func _pager_end_transaction(tls *crt.TLS, _pPager *XPager, _hasMaster int32, _bCommit int32) (r0 int32) {
+ var _rc, _rc2, _9_bDelete int32
_rc = i32(0)
_rc2 = i32(0)
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48925), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48925), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) == i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48926), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(14136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48926), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(15064)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pPager.X14) >= i32(2) || int32(_pPager.X15) >= i32(2) {
- goto _5
+ if (int32(_pPager.X14) < i32(2)) && (int32(_pPager.X15) < i32(2)) {
+ return i32(0)
}
- return i32(0)
-
-_5:
_releaseAllSavepoints(tls, _pPager)
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil && (*XBitvec)(_pPager.X30) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48932), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48932), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18646)))
crt.X__builtin_abort(tls)
}
}()
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
goto _9
}
-
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48934), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48934), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X32)) == 0 {
- goto _12
+ if _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X32)) != 0 {
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
+ goto _13
}
-
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
- goto _13
-
-_12:
if int32(_pPager.X2) != i32(3) {
goto _14
}
-
- if (_pPager.X34) != int64(i32(0)) {
- goto _15
+ if (_pPager.X34) == int64(i32(0)) {
+ _rc = i32(0)
+ goto _16
}
-
- _rc = i32(0)
- goto _16
-
-_15:
_rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X32), int64(i32(0)))
- if _rc != i32(0) || (_pPager.X5) == 0 {
- goto _18
+ if (_rc == i32(0)) && ((_pPager.X5) != 0) {
+ _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), int32(_pPager.X9))
}
-
- _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), int32(_pPager.X9))
-_18:
_16:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
goto _19
-
_14:
- if int32(_pPager.X2) != i32(1) && ((_pPager.X1) == 0 || int32(_pPager.X2) == i32(5)) {
- goto _22
+ if (int32(_pPager.X2) == i32(1)) || (((_pPager.X1) != 0) && (int32(_pPager.X2) != i32(5))) {
+ _rc = _zeroJournalHdr(tls, _pPager, bool2int(_hasMaster != 0 || ((_pPager.X10) != 0)))
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
+ goto _24
}
-
- _rc = _zeroJournalHdr(tls, _pPager, bool2int(_hasMaster != 0 || ((_pPager.X10) != 0)))
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
- goto _24
-
-_22:
_9_bDelete = bool2int((_pPager.X10) == 0)
func() {
if _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48967), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18104)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48967), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18691)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X2) != i32(0) && int32(_pPager.X2) != i32(4) && int32(_pPager.X2) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48968), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48968), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18732)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
- if _9_bDelete == 0 {
- goto _31
+ if _9_bDelete != 0 {
+ _rc = _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X52, int32(_pPager.X6))
}
-
- _rc = _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X52, int32(_pPager.X6))
-_31:
_24:
_19:
_13:
@@ -18856,65 +18298,46 @@ _9:
if _rc != i32(0) {
goto _32
}
-
- if (_pPager.X13) == 0 && _pagerFlushOnCommit(tls, _pPager, _bCommit) == 0 {
- goto _34
+ if ((_pPager.X13) != 0) || _pagerFlushOnCommit(tls, _pPager, _bCommit) != 0 {
+ _sqlite3PcacheCleanAll(tls, (*XPCache)(_pPager.X59))
+ goto _35
}
-
- _sqlite3PcacheCleanAll(tls, (*XPCache)(_pPager.X59))
- goto _35
-
-_34:
_sqlite3PcacheClearWritable(tls, (*XPCache)(_pPager.X59))
_35:
_sqlite3PcacheTruncate(tls, (*XPCache)(_pPager.X59), _pPager.X22)
_32:
- if (*XWal)(_pPager.X60) == nil {
- goto _36
+ if (*XWal)(_pPager.X60) != nil {
+ _rc2 = _sqlite3WalEndWriteTransaction(tls, (*XWal)(_pPager.X60))
+ func() {
+ if _rc2 != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49008), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18873)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _39
}
-
- _rc2 = _sqlite3WalEndWriteTransaction(tls, (*XWal)(_pPager.X60))
- func() {
- if _rc2 != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49008), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18292)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _39
-
-_36:
- if _rc != i32(0) || _bCommit == 0 || (_pPager.X24) <= (_pPager.X22) {
- goto _42
+ if ((_rc == i32(0)) && _bCommit != 0) && ((_pPager.X24) > (_pPager.X22)) {
+ func() {
+ if int32(_pPager.X15) != i32(4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49016), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18888)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _pager_truncate(tls, _pPager, _pPager.X22)
}
-
- func() {
- if int32(_pPager.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49016), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_end_transactionØ00__func__Ø000))), unsafe.Pointer(str(18308)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _pager_truncate(tls, _pPager, _pPager.X22)
-_42:
_39:
if _rc != i32(0) || _bCommit == 0 || (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
goto _47
}
-
_rc = _sqlite3OsFileControl(tls, (*Xsqlite3_file)(_pPager.X31), i32(22), nil)
- if _rc != i32(12) {
- goto _48
+ if _rc == i32(12) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_48:
_47:
- if (_pPager.X1) != 0 || (*XWal)(_pPager.X60) != nil && _sqlite3WalExclusiveMode(tls, (*XWal)(_pPager.X60), i32(0)) == 0 {
- goto _51
+ if ((_pPager.X1) == 0) && (((*XWal)(_pPager.X60) == nil) || _sqlite3WalExclusiveMode(tls, (*XWal)(_pPager.X60), i32(0)) != 0) {
+ _rc2 = _pagerUnlockDb(tls, _pPager, i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(19 /* X16 */))) = uint8(i32(0))
}
-
- _rc2 = _pagerUnlockDb(tls, _pPager, i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(19 /* X16 */))) = uint8(i32(0))
-_51:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(1))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(20 /* X17 */))) = uint8(i32(0))
return func() int32 {
@@ -18925,114 +18348,113 @@ _51:
}()
}
-var _pager_end_transactionØ00__func__Ø000 [22]int8 // -
+var _pager_end_transactionØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_pager_end_transactionØ00__func__Ø000[0], str(18340), 22)
+ crt.Xstrncpy(nil, &_pager_end_transactionØ00__func__Ø000[0], str(18918), 22)
}
-func _releaseAllSavepoints(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:48665:1
- var _ii int32 // sqlite3.c:48666:7
- _ = _ii
+// Free all structures in the Pager.aSavepoint[] array and set both
+// Pager.aSavepoint and Pager.nSavepoint to zero. Close the sub-journal
+// if it is open and the pager is not in exclusive mode.
+func _releaseAllSavepoints(tls *crt.TLS, _pPager *XPager) {
+ var _ii int32
_ii = i32(0)
_0:
if _ii >= (_pPager.X38) {
goto _3
}
-
_sqlite3BitvecDestroy(tls, (*XBitvec)((*XPagerSavepoint)(unsafe.Pointer(uintptr(_pPager.X37)+44*uintptr(_ii))).X2))
_ii += 1
goto _0
-
_3:
- if (_pPager.X1) != 0 && _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X33)) == 0 {
- goto _5
+ if ((_pPager.X1) == 0) || _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X33)) != 0 {
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X33))
}
-
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X33))
-_5:
Xsqlite3_free(tls, _pPager.X37)
*(**XPagerSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(96 /* X37 */))))) = nil
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(100 /* X38 */))) = i32(0)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(56 /* X29 */))) = uint32(i32(0))
}
-func _sqlite3OsSync(tls *crt.TLS, _id *Xsqlite3_file, _flags int32) (r0 int32) { // sqlite3.c:20177:1
+func _sqlite3OsSync(tls *crt.TLS, _id *Xsqlite3_file, _flags int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
}{((*Xsqlite3_io_methods)(_id.X0).X5)})))(tls, _id, _flags)
}
-func _zeroJournalHdr(tls *crt.TLS, _pPager *XPager, _doTruncate int32) (r0 int32) { // sqlite3.c:48285:1
- var _rc int32 // sqlite3.c:48286:7
- _ = _rc
- var _1_iLimit int64 // sqlite3.c:48290:15
- _ = _1_iLimit
- var _5_sz int64 // sqlite3.c:48310:11
- _ = _5_sz
+// The journal file must be open when this function is called.
+//
+// This function is a no-op if the journal file has not been written to
+// within the current transaction (i.e. if Pager.journalOff==0).
+//
+// If doTruncate is non-zero or the Pager.journalSizeLimit variable is
+// set to 0, then truncate the journal file to zero bytes in size. Otherwise,
+// zero the 28-byte header at the start of the journal file. In either case,
+// if the pager is not in no-sync mode, sync the journal file immediately
+// after writing or truncating it.
+//
+// If Pager.journalSizeLimit is set to a positive, non-zero value, and
+// following the truncation or zeroing described above the size of the
+// journal file in bytes is larger than this value, then truncate the
+// journal file to Pager.journalSizeLimit bytes. The journal file does
+// not need to be synced following this operation.
+//
+// If an IO error occurs, abandon processing and return the IO error code.
+// Otherwise, return SQLITE_OK.
+func _zeroJournalHdr(tls *crt.TLS, _pPager *XPager, _doTruncate int32) (r0 int32) {
+ var _rc int32
+ var _1_iLimit, _5_sz int64
_rc = i32(0)
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48287), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(12612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48287), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(13626)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3JournalIsInMemory(tls, (*Xsqlite3_file)(_pPager.X32)) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48288), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(18364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48288), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroJournalHdrØ00__func__Ø000))), unsafe.Pointer(str(18940)))
crt.X__builtin_abort(tls)
}
}()
if (_pPager.X34) == 0 {
goto _4
}
-
_1_iLimit = _pPager.X50
- if _doTruncate == 0 && _1_iLimit != int64(i32(0)) {
- goto _6
+ if _doTruncate != 0 || (_1_iLimit == int64(i32(0))) {
+ _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X32), int64(i32(0)))
+ goto _7
}
-
- _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X32), int64(i32(0)))
- goto _7
-
-_6:
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_zeroJournalHdrØ00zeroHdrØ001), int32(u32(28)), int64(i32(0)))
_7:
- if _rc != i32(0) || (_pPager.X4) != 0 {
- goto _9
+ if (_rc == i32(0)) && ((_pPager.X4) == 0) {
+ _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), i32(16)|int32(_pPager.X9))
}
-
- _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), i32(16)|int32(_pPager.X9))
-_9:
if _rc != i32(0) || _1_iLimit <= int64(i32(0)) {
goto _11
}
-
_rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X32), &_5_sz)
- if _rc != i32(0) || _5_sz <= _1_iLimit {
- goto _13
+ if (_rc == i32(0)) && (_5_sz > _1_iLimit) {
+ _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X32), _1_iLimit)
}
-
- _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X32), _1_iLimit)
-_13:
_11:
_4:
- r0 = _rc
- return
+ return _rc
}
-var _zeroJournalHdrØ00__func__Ø000 [15]int8 // -
+var _zeroJournalHdrØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_zeroJournalHdrØ00__func__Ø000[0], str(18404), 15)
+ crt.Xstrncpy(nil, &_zeroJournalHdrØ00__func__Ø000[0], str(18979), 15)
}
-var _zeroJournalHdrØ00zeroHdrØ001 [28]int8 // sqlite3.c:48296:25
+var _zeroJournalHdrØ00zeroHdrØ001 [28]int8
-func _sqlite3OsDelete(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _dirSync int32) (r0 int32) { // sqlite3.c:20295:1
+func _sqlite3OsDelete(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _dirSync int32) (r0 int32) {
func() {
if _dirSync != i32(0) && _dirSync != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(20297), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OsDeleteØ00__func__Ø000))), unsafe.Pointer(str(18420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(20297), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OsDeleteØ00__func__Ø000))), unsafe.Pointer(str(18994)))
crt.X__builtin_abort(tls)
}
}()
@@ -19041,41 +18463,44 @@ func _sqlite3OsDelete(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _dirSync
}{(_pVfs.X7)})))(tls, _pVfs, _zPath, _dirSync)
}
-var _sqlite3OsDeleteØ00__func__Ø000 [16]int8 // -
+var _sqlite3OsDeleteØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3OsDeleteØ00__func__Ø000[0], str(18448), 16)
+ crt.Xstrncpy(nil, &_sqlite3OsDeleteØ00__func__Ø000[0], str(19019), 16)
}
-func _pagerFlushOnCommit(tls *crt.TLS, _pPager *XPager, _bCommit int32) (r0 int32) { // sqlite3.c:48848:1
- if int32(_pPager.X10) != i32(0) {
- goto _0
+// The write transaction open on pPager is being committed (bCommit==1)
+// or rolled back (bCommit==0).
+//
+// Return TRUE if and only if all dirty pages should be flushed to disk.
+//
+// Rules:
+//
+// * For non-TEMP databases, always sync to disk. This is necessary
+// for transactions to be durable.
+//
+// * Sync TEMP database only on a COMMIT (not a ROLLBACK) when the backing
+// file has been created already (via a spill on pagerStress()) and
+// when the number of dirty pages in memory exceeds 25% of the total
+// cache size.
+func _pagerFlushOnCommit(tls *crt.TLS, _pPager *XPager, _bCommit int32) (r0 int32) {
+ if int32(_pPager.X10) == i32(0) {
+ return i32(1)
}
- return i32(1)
-
-_0:
- if _bCommit != 0 {
- goto _1
+ if _bCommit == 0 {
+ return i32(0)
}
- return i32(0)
-
-_1:
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil {
- goto _2
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
+ return i32(0)
}
- return i32(0)
-
-_2:
return bool2int(_sqlite3PCachePercentDirty(tls, (*XPCache)(_pPager.X59)) >= i32(25))
}
-func _sqlite3PCachePercentDirty(tls *crt.TLS, _pCache *XPCache) (r0 int32) { // sqlite3.c:44982:1
- var _pDirty *XPgHdr // sqlite3.c:44983:9
- _ = _pDirty
- var _nDirty int32 // sqlite3.c:44984:7
- _ = _nDirty
- var _nCache int32 // sqlite3.c:44985:7
- _ = _nCache
+// Return the number of dirty pages currently in the cache, as a percentage
+// of the configured cache size.
+func _sqlite3PCachePercentDirty(tls *crt.TLS, _pCache *XPCache) (r0 int32) {
+ var _nDirty, _nCache int32
+ var _pDirty *XPgHdr
_nDirty = i32(0)
_nCache = _numberOfCachePages(tls, _pCache)
_pDirty = (*XPgHdr)(_pCache.X0)
@@ -19083,11 +18508,9 @@ _0:
if _pDirty == nil {
goto _3
}
-
_nDirty += 1
_pDirty = (*XPgHdr)(_pDirty.X9)
goto _0
-
_3:
return func() int32 {
if _nCache != 0 {
@@ -19097,102 +18520,102 @@ _3:
}()
}
-func _sqlite3PcacheCleanAll(tls *crt.TLS, _pCache *XPCache) { // sqlite3.c:44715:1
- var _p *XPgHdr // sqlite3.c:44716:9
- _ = _p
+// Make every page in the cache clean.
+func _sqlite3PcacheCleanAll(tls *crt.TLS, _pCache *XPCache) {
+ var _p *XPgHdr
_0:
- if store23(&_p, (*XPgHdr)(_pCache.X0)) == nil {
- goto _1
+ if store25(&_p, (*XPgHdr)(_pCache.X0)) != nil {
+ _sqlite3PcacheMakeClean(tls, _p)
+ goto _0
}
-
- _sqlite3PcacheMakeClean(tls, _p)
- goto _0
-
-_1:
}
-func _sqlite3PcacheClearWritable(tls *crt.TLS, _pCache *XPCache) { // sqlite3.c:44726:1
- var _p *XPgHdr // sqlite3.c:44727:9
- _ = _p
+// Clear the PGHDR_NEED_SYNC and PGHDR_WRITEABLE flag from all dirty pages.
+func _sqlite3PcacheClearWritable(tls *crt.TLS, _pCache *XPCache) {
+ var _p *XPgHdr
_p = (*XPgHdr)(_pCache.X0)
_0:
if _p == nil {
goto _3
}
-
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) & i32(-13))
- sink12 = *p
+ sink14 = *p
}
_p = (*XPgHdr)(_p.X9)
goto _0
-
_3:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(8 /* X2 */))))) = (*XPgHdr)(_pCache.X1)
}
-func _sqlite3WalEndWriteTransaction(tls *crt.TLS, _pWal *XWal) (r0 int32) { // sqlite3.c:57237:1
- if (_pWal.X12) == 0 {
- goto _0
+// End a write transaction. The commit has already been done. This
+// routine merely releases the lock.
+func _sqlite3WalEndWriteTransaction(tls *crt.TLS, _pWal *XWal) (r0 int32) {
+ if (_pWal.X12) != 0 {
+ _walUnlockExclusive(tls, _pWal, i32(0), i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(0))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(104 /* X20 */))) = uint32(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(47 /* X15 */))) = uint8(i32(0))
}
-
- _walUnlockExclusive(tls, _pWal, i32(0), i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(0))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(104 /* X20 */))) = uint32(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(47 /* X15 */))) = uint8(i32(0))
-_0:
return i32(0)
}
-func _walUnlockExclusive(tls *crt.TLS, _pWal *XWal, _lockIdx int32, _n int32) { // sqlite3.c:55302:1
- if (_pWal.X11) == 0 {
- goto _0
+func _walUnlockExclusive(tls *crt.TLS, _pWal *XWal, _lockIdx int32, _n int32) {
+ if (_pWal.X11) != 0 {
+ return
}
- return
-
-_0:
_sqlite3OsShmLock(tls, (*Xsqlite3_file)(_pWal.X1), _lockIdx, _n, i32(9))
}
-func _sqlite3OsShmLock(tls *crt.TLS, _id *Xsqlite3_file, _offset int32, _n int32, _flags int32) (r0 int32) { // sqlite3.c:20234:1
+func _sqlite3OsShmLock(tls *crt.TLS, _id *Xsqlite3_file, _offset int32, _n int32, _flags int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int32, int32, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, int32, int32) int32
}{((*Xsqlite3_io_methods)(_id.X0).X14)})))(tls, _id, _offset, _n, _flags)
}
-func _pager_truncate(tls *crt.TLS, _pPager *XPager, _nPage uint32) (r0 int32) { // sqlite3.c:49546:1
- var _rc int32 // sqlite3.c:49547:7
- _ = _rc
- var _1_currentSize int64 // sqlite3.c:49554:9
- _ = _1_currentSize
- var _1_newSize int64 // sqlite3.c:49554:22
- _ = _1_newSize
- var _1_szPage int32 // sqlite3.c:49555:9
- _ = _1_szPage
- var _4_pTmp *int8 // sqlite3.c:49564:14
- _ = _4_pTmp
+// This function is used to change the actual size of the database
+// file in the file-system. This only happens when committing a transaction,
+// or rolling back a transaction (including rolling back a hot-journal).
+//
+// If the main database file is not open, or the pager is not in either
+// DBMOD or OPEN state, this function is a no-op. Otherwise, the size
+// of the file is changed to nPage pages (nPage*pPager->pageSize bytes).
+// If the file on disk is currently larger than nPage pages, then use the VFS
+// xTruncate() method to truncate it.
+//
+// Or, it might be the case that the file on disk is smaller than
+// nPage pages. Some operating system implementations can get confused if
+// you try to truncate a file to some size that is larger than it
+// currently is, so detect this case and write a single zero byte to
+// the end of the new file instead.
+//
+// If successful, return SQLITE_OK. If an IO error occurs while modifying
+// the database file, return the error code to the caller.
+func _pager_truncate(tls *crt.TLS, _pPager *XPager, _nPage uint32) (r0 int32) {
+ var _rc, _1_szPage int32
+ var _1_currentSize, _1_newSize int64
+ var _4_pTmp *int8
_rc = i32(0)
func() {
if int32(_pPager.X14) == i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49548), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_truncateØ00__func__Ø000))), unsafe.Pointer(str(14136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49548), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_truncateØ00__func__Ø000))), unsafe.Pointer(str(15064)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49549), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_truncateØ00__func__Ø000))), unsafe.Pointer(str(18464)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49549), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_truncateØ00__func__Ø000))), unsafe.Pointer(str(19035)))
crt.X__builtin_abort(tls)
}
}()
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil || int32(_pPager.X14) < i32(4) && int32(_pPager.X14) != i32(0) {
goto _6
}
-
_1_szPage = _pPager.X48
func() {
if int32(_pPager.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49556), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_truncateØ00__func__Ø000))), unsafe.Pointer(str(18308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49556), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_truncateØ00__func__Ø000))), unsafe.Pointer(str(18888)))
crt.X__builtin_abort(tls)
}
}()
@@ -19201,181 +18624,181 @@ func _pager_truncate(tls *crt.TLS, _pPager *XPager, _nPage uint32) (r0 int32) {
if _rc != i32(0) || _1_currentSize == _1_newSize {
goto _10
}
-
- if _1_currentSize <= _1_newSize {
- goto _11
+ if _1_currentSize > _1_newSize {
+ _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X31), _1_newSize)
+ goto _12
}
-
- _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X31), _1_newSize)
- goto _12
-
-_11:
- if (_1_currentSize + int64(_1_szPage)) > _1_newSize {
- goto _13
+ if (_1_currentSize + int64(_1_szPage)) <= _1_newSize {
+ _4_pTmp = _pPager.X58
+ crt.Xmemset(tls, (unsafe.Pointer)(_4_pTmp), i32(0), uint32(_1_szPage))
+ _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X31), (unsafe.Pointer)(_4_pTmp), _1_szPage, _1_newSize-int64(_1_szPage))
}
-
- _4_pTmp = _pPager.X58
- crt.Xmemset(tls, (unsafe.Pointer)(_4_pTmp), i32(0), uint32(_1_szPage))
- _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X31), (unsafe.Pointer)(_4_pTmp), _1_szPage, _1_newSize-int64(_1_szPage))
-_13:
_12:
- if _rc != i32(0) {
- goto _14
+ if _rc == i32(0) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _nPage
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _nPage
-_14:
_10:
_6:
- r0 = _rc
- return
-}
-
-var _pager_truncateØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pager_truncateØ00__func__Ø000[0], str(18496), 15)
+ return _rc
}
-func _sqlite3WalExclusiveMode(tls *crt.TLS, _pWal *XWal, _op int32) (r0 int32) { // sqlite3.c:57900:1
- var _rc int32 // sqlite3.c:57901:7
- _ = _rc
+var _pager_truncateØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pager_truncateØ00__func__Ø000[0], str(19064), 15)
+}
+
+// This function is called to change the WAL subsystem into or out
+// of locking_mode=EXCLUSIVE.
+//
+// If op is zero, then attempt to change from locking_mode=EXCLUSIVE
+// into locking_mode=NORMAL. This means that we must acquire a lock
+// on the pWal->readLock byte. If the WAL is already in locking_mode=NORMAL
+// or if the acquisition of the lock fails, then return 0. If the
+// transition out of exclusive-mode is successful, return 1. This
+// operation must occur while the pager is still holding the exclusive
+// lock on the main database file.
+//
+// If op is one, then change from locking_mode=NORMAL into
+// locking_mode=EXCLUSIVE. This means that the pWal->readLock must
+// be released. Return 1 if the transition is made and 0 if the
+// WAL is already in exclusive-locking mode - meaning that this
+// routine is a no-op. The pager must already hold the exclusive lock
+// on the main database file before invoking this operation.
+//
+// If op is negative, then do a dry-run of the op==1 case but do
+// not actually change anything. The pager uses this to see if it
+// should acquire the database exclusive lock prior to invoking
+// the op==1 case.
+func _sqlite3WalExclusiveMode(tls *crt.TLS, _pWal *XWal, _op int32) (r0 int32) {
+ var _rc int32
func() {
if int32(_pWal.X12) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(18512)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(19079)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pWal.X11) == i32(2) && _op != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57903), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(18532)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57903), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(19098)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pWal.X9) < i32(0) && (_pWal.X23) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57911), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(15520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57911), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(16369)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pWal.X9) < i32(0) && (_op > i32(0) || int32(_pWal.X11) != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(18584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(19149)))
crt.X__builtin_abort(tls)
}
}()
if _op != i32(0) {
goto _12
}
-
if (_pWal.X11) == 0 {
goto _13
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(43 /* X11 */))) = uint8(i32(0))
- if _walLockShared(tls, _pWal, i32(3)+int32(_pWal.X9)) == i32(0) {
- goto _14
+ if _walLockShared(tls, _pWal, i32(3)+int32(_pWal.X9)) != i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(43 /* X11 */))) = uint8(i32(1))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(43 /* X11 */))) = uint8(i32(1))
-_14:
_rc = bool2int(int32(_pWal.X11) == i32(0))
goto _15
-
_13:
_rc = i32(0)
_15:
goto _16
-
_12:
- if _op <= i32(0) {
- goto _17
+ if _op > i32(0) {
+ func() {
+ if int32(_pWal.X11) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(19204)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pWal.X9) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57927), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(19227)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _walUnlockShared(tls, _pWal, i32(3)+int32(_pWal.X9))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(43 /* X11 */))) = uint8(i32(1))
+ _rc = i32(1)
+ goto _22
}
-
- func() {
- if int32(_pWal.X11) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(18640)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pWal.X9) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57927), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalExclusiveModeØ00__func__Ø000))), unsafe.Pointer(str(18664)))
- crt.X__builtin_abort(tls)
- }
- }()
- _walUnlockShared(tls, _pWal, i32(3)+int32(_pWal.X9))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(43 /* X11 */))) = uint8(i32(1))
- _rc = i32(1)
- goto _22
-
-_17:
_rc = bool2int(int32(_pWal.X11) == i32(0))
_22:
_16:
- r0 = _rc
- return
+ return _rc
}
-var _sqlite3WalExclusiveModeØ00__func__Ø000 [24]int8 // -
+var _sqlite3WalExclusiveModeØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalExclusiveModeØ00__func__Ø000[0], str(18684), 24)
+ crt.Xstrncpy(nil, &_sqlite3WalExclusiveModeØ00__func__Ø000[0], str(19245), 24)
}
-func _walLockShared(tls *crt.TLS, _pWal *XWal, _lockIdx int32) (r0 int32) { // sqlite3.c:55276:1
- var _rc int32 // sqlite3.c:55277:7
- _ = _rc
- if (_pWal.X11) == 0 {
- goto _0
+// Set or release locks on the WAL. Locks are either shared or exclusive.
+// A lock cannot be moved directly between shared and exclusive - it must go
+// through the unlocked state first.
+//
+// In locking_mode=EXCLUSIVE, all of these routines become no-ops.
+func _walLockShared(tls *crt.TLS, _pWal *XWal, _lockIdx int32) (r0 int32) {
+ var _rc int32
+ if (_pWal.X11) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_0:
_rc = _sqlite3OsShmLock(tls, (*Xsqlite3_file)(_pWal.X1), _lockIdx, i32(1), i32(6))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(116 /* X23 */))) = uint8(bool2int((_rc != i32(0)) && (_rc != i32(5))))
return _rc
}
-func _walUnlockShared(tls *crt.TLS, _pWal *XWal, _lockIdx int32) { // sqlite3.c:55286:1
- if (_pWal.X11) == 0 {
- goto _0
+func _walUnlockShared(tls *crt.TLS, _pWal *XWal, _lockIdx int32) {
+ if (_pWal.X11) != 0 {
+ return
}
- return
-
-_0:
_sqlite3OsShmLock(tls, (*Xsqlite3_file)(_pWal.X1), _lockIdx, i32(1), i32(5))
}
-func _pagerUnlockDb(tls *crt.TLS, _pPager *XPager, _eLock int32) (r0 int32) { // sqlite3.c:48046:1
- var _rc int32 // sqlite3.c:48047:7
- _ = _rc
+// Unlock the database file to level eLock, which must be either NO_LOCK
+// or SHARED_LOCK. Regardless of whether or not the call to xUnlock()
+// succeeds, set the Pager.eLock variable to match the (attempted) new lock.
+//
+// Except, if Pager.eLock is set to UNKNOWN_LOCK when this function is
+// called, do not modify it. See the comment above the #define of
+// UNKNOWN_LOCK for an explanation of this.
+func _pagerUnlockDb(tls *crt.TLS, _pPager *XPager, _eLock int32) (r0 int32) {
+ var _rc int32
_rc = i32(0)
func() {
if (_pPager.X1) != 0 && int32(_pPager.X15) != _eLock {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48049), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(18708)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48049), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(19269)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _eLock != i32(0) && _eLock != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48050), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(18756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48050), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(19316)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _eLock == i32(0) && bool2int((*XWal)(_pPager.X60) != nil) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48051), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(18796)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48051), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(19353)))
crt.X__builtin_abort(tls)
}
}()
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
goto _9
}
-
func() {
if int32(_pPager.X15) < _eLock {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48053), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(18840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48053), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerUnlockDbØ00__func__Ø000))), unsafe.Pointer(str(19394)))
crt.X__builtin_abort(tls)
}
}()
@@ -19385,50 +18808,86 @@ func _pagerUnlockDb(tls *crt.TLS, _pPager *XPager, _eLock int32) (r0 int32) { //
}
return _sqlite3OsUnlock(tls, (*Xsqlite3_file)(_pPager.X31), _eLock)
}()
- if int32(_pPager.X15) == i32(5) {
- goto _14
+ if int32(_pPager.X15) != i32(5) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(18 /* X15 */))) = uint8(_eLock)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(18 /* X15 */))) = uint8(_eLock)
-_14:
_9:
- r0 = _rc
- return
+ return _rc
}
-var _pagerUnlockDbØ00__func__Ø000 [14]int8 // -
+var _pagerUnlockDbØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_pagerUnlockDbØ00__func__Ø000[0], str(18864), 14)
+ crt.Xstrncpy(nil, &_pagerUnlockDbØ00__func__Ø000[0], str(19415), 14)
}
-func _sqlite3OsUnlock(tls *crt.TLS, _id *Xsqlite3_file, _lockType int32) (r0 int32) { // sqlite3.c:20189:1
+func _sqlite3OsUnlock(tls *crt.TLS, _id *Xsqlite3_file, _lockType int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
}{((*Xsqlite3_io_methods)(_id.X0).X8)})))(tls, _id, _lockType)
}
-func _pager_playback(tls *crt.TLS, _pPager *XPager, _isHot int32) (r0 int32) { // sqlite3.c:49689:1
- var _pVfs *Xsqlite3_vfs // sqlite3.c:49690:15
- _ = _pVfs
- var _szJ int64 // sqlite3.c:49691:7
- _ = _szJ
- var _nRec uint32 // sqlite3.c:49692:7
- _ = _nRec
- var _u uint32 // sqlite3.c:49693:7
- _ = _u
- var _mxPg uint32 // sqlite3.c:49694:8
- _ = _mxPg
- var _rc int32 // sqlite3.c:49695:7
- _ = _rc
- var _res int32 // sqlite3.c:49696:7
- _ = _res
- var _zMaster *int8 // sqlite3.c:49697:8
- _ = _zMaster
- var _needPagerReset int32 // sqlite3.c:49698:7
- _ = _needPagerReset
- var _nPlayback int32 // sqlite3.c:49699:7
- _ = _nPlayback
+// Playback the journal and thus restore the database file to
+// the state it was in before we started making changes.
+//
+// The journal file format is as follows:
+//
+// (1) 8 byte prefix. A copy of aJournalMagic[].
+// (2) 4 byte big-endian integer which is the number of valid page records
+// in the journal. If this value is 0xffffffff, then compute the
+// number of page records from the journal size.
+// (3) 4 byte big-endian integer which is the initial value for the
+// sanity checksum.
+// (4) 4 byte integer which is the number of pages to truncate the
+// database to during a rollback.
+// (5) 4 byte big-endian integer which is the sector size. The header
+// is this many bytes in size.
+// (6) 4 byte big-endian integer which is the page size.
+// (7) zero padding out to the next sector size.
+// (8) Zero or more pages instances, each as follows:
+// + 4 byte page number.
+// + pPager->pageSize bytes of data.
+// + 4 byte checksum
+//
+// When we speak of the journal header, we mean the first 7 items above.
+// Each entry in the journal is an instance of the 8th item.
+//
+// Call the value from the second bullet "nRec". nRec is the number of
+// valid page entries in the journal. In most cases, you can compute the
+// value of nRec from the size of the journal file. But if a power
+// failure occurred while the journal was being written, it could be the
+// case that the size of the journal file had already been increased but
+// the extra entries had not yet made it safely to disk. In such a case,
+// the value of nRec computed from the file size would be too large. For
+// that reason, we always use the nRec value in the header.
+//
+// If the nRec value is 0xffffffff it means that nRec should be computed
+// from the file size. This value is used when the user selects the
+// no-sync option for the journal. A power failure could lead to corruption
+// in this case. But for things like temporary table (which will be
+// deleted when the power is restored) we don't care.
+//
+// If the file opened as the journal file is not a well-formed
+// journal file then all pages up to the first corrupted page are rolled
+// back (or no pages if the journal header is corrupted). The journal file
+// is then deleted and SQLITE_OK returned, just as if no corruption had
+// been encountered.
+//
+// If an I/O or malloc() error occurs, the journal-file is not deleted
+// and an error code is returned.
+//
+// The isHot parameter indicates that we are trying to rollback a journal
+// that might be a hot journal. Or, it could be that the journal is
+// preserved because of JOURNALMODE_PERSIST or JOURNALMODE_TRUNCATE.
+// If the journal really is hot, reset the pager cache prior rolling
+// back any content. If the journal is merely persistent, no reset is
+// needed.
+func _pager_playback(tls *crt.TLS, _pPager *XPager, _isHot int32) (r0 int32) {
+ var _rc, _res, _needPagerReset, _nPlayback int32
+ var _szJ int64
+ var _nRec, _u, _mxPg uint32
+ var _zMaster *int8
+ var _pVfs *Xsqlite3_vfs
_pVfs = (*Xsqlite3_vfs)(_pPager.X0)
_mxPg = u32(0)
_res = i32(1)
@@ -19436,34 +18895,23 @@ func _pager_playback(tls *crt.TLS, _pPager *XPager, _isHot int32) (r0 int32) { /
_nPlayback = i32(0)
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49704), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playbackØ00__func__Ø000))), unsafe.Pointer(str(12612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49704), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playbackØ00__func__Ø000))), unsafe.Pointer(str(13626)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X32), &_szJ)
- if _rc == i32(0) {
- goto _2
+ if _rc != i32(0) {
+ goto _end_playback
}
-
- goto _end_playback
-
-_2:
_zMaster = _pPager.X58
_rc = _readMasterJournal(tls, (*Xsqlite3_file)(_pPager.X32), _zMaster, uint32(((*Xsqlite3_vfs)(_pPager.X0).X2)+i32(1)))
- if _rc != i32(0) || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(i32(0))))) == 0 {
- goto _4
+ if (_rc == i32(0)) && ((*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(i32(0))))) != 0) {
+ _rc = _sqlite3OsAccess(tls, _pVfs, _zMaster, i32(0), &_res)
}
-
- _rc = _sqlite3OsAccess(tls, _pVfs, _zMaster, i32(0), &_res)
-_4:
_zMaster = nil
- if _rc == i32(0) && _res != 0 {
- goto _6
+ if (_rc != i32(0)) || (_res == 0) {
+ goto _end_playback
}
-
- goto _end_playback
-
-_6:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
_needPagerReset = _isHot
_7:
@@ -19471,46 +18919,30 @@ _7:
if _rc == i32(0) {
goto _9
}
-
- if _rc != i32(101) {
- goto _10
+ if _rc == i32(101) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_10:
goto _end_playback
-
_9:
- if _nRec != u32(4294967295) {
- goto _11
+ if _nRec == u32(4294967295) {
+ func() {
+ if (_pPager.X34) != int64(_pPager.X47) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49757), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playbackØ00__func__Ø000))), unsafe.Pointer(str(19429)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nRec = uint32(int32((_szJ - int64(_pPager.X47)) / int64((_pPager.X48)+i32(8))))
}
-
- func() {
- if (_pPager.X34) != int64(_pPager.X47) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49757), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_playbackØ00__func__Ø000))), unsafe.Pointer(str(18880)))
- crt.X__builtin_abort(tls)
- }
- }()
- _nRec = uint32(int32((_szJ - int64(_pPager.X47)) / int64((_pPager.X48)+i32(8))))
-_11:
- if _nRec != uint32(i32(0)) || _isHot != 0 || ((_pPager.X35)+int64(_pPager.X47)) != (_pPager.X34) {
- goto _16
+ if ((_nRec == uint32(i32(0))) && (_isHot == 0)) && (((_pPager.X35) + int64(_pPager.X47)) == (_pPager.X34)) {
+ _nRec = uint32(int32((_szJ - (_pPager.X34)) / int64((_pPager.X48)+i32(8))))
}
-
- _nRec = uint32(int32((_szJ - (_pPager.X34)) / int64((_pPager.X48)+i32(8))))
-_16:
if (_pPager.X34) != int64(_pPager.X47) {
goto _17
}
-
_rc = _pager_truncate(tls, _pPager, _mxPg)
- if _rc == i32(0) {
- goto _18
+ if _rc != i32(0) {
+ goto _end_playback
}
-
- goto _end_playback
-
-_18:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = _mxPg
_17:
_u = uint32(i32(0))
@@ -19518,123 +18950,97 @@ _19:
if _u >= _nRec {
goto _22
}
-
- if _needPagerReset == 0 {
- goto _23
+ if _needPagerReset != 0 {
+ _pager_reset(tls, _pPager)
+ _needPagerReset = i32(0)
}
-
- _pager_reset(tls, _pPager)
- _needPagerReset = i32(0)
-_23:
_rc = _pager_playback_one_page(tls, _pPager, (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(76 /* X34 */))), nil, i32(1), i32(0))
- if _rc != i32(0) {
- goto _24
+ if _rc == i32(0) {
+ _nPlayback += 1
+ goto _25
}
-
- _nPlayback += 1
- goto _25
-
-_24:
- if _rc != i32(101) {
- goto _26
+ if _rc == i32(101) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _szJ
+ goto _22
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _szJ
- goto _22
-
-_26:
- if _rc != i32(522) {
- goto _28
+ if _rc == i32(522) {
+ _rc = i32(0)
+ goto _end_playback
}
-
- _rc = i32(0)
- goto _end_playback
-
-_28:
goto _end_playback
-
_25:
_u += 1
goto _19
-
_22:
goto _7
-
_end_playback:
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- goto _30
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil {
+ _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), int32(u32(3389603744)), nil)
}
-
- _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), int32(u32(3389603744)), nil)
-_30:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(19 /* X16 */))) = _pPager.X10
- if _rc != i32(0) {
- goto _31
+ if _rc == i32(0) {
+ _zMaster = _pPager.X58
+ _rc = _readMasterJournal(tls, (*Xsqlite3_file)(_pPager.X32), _zMaster, uint32(((*Xsqlite3_vfs)(_pPager.X0).X2)+i32(1)))
}
-
- _zMaster = _pPager.X58
- _rc = _readMasterJournal(tls, (*Xsqlite3_file)(_pPager.X32), _zMaster, uint32(((*Xsqlite3_vfs)(_pPager.X0).X2)+i32(1)))
-_31:
- if _rc != i32(0) || int32(_pPager.X14) < i32(4) && int32(_pPager.X14) != i32(0) {
- goto _34
+ if (_rc == i32(0)) && ((int32(_pPager.X14) >= i32(4)) || (int32(_pPager.X14) == i32(0))) {
+ _rc = _sqlite3PagerSync(tls, _pPager, nil)
}
-
- _rc = _sqlite3PagerSync(tls, _pPager, nil)
-_34:
- if _rc != i32(0) {
- goto _35
+ if _rc == i32(0) {
+ _rc = _pager_end_transaction(tls, _pPager, bool2int(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(i32(0))))) != i32(0)), i32(0))
}
-
- _rc = _pager_end_transaction(tls, _pPager, bool2int(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(i32(0))))) != i32(0)), i32(0))
-_35:
- if _rc != i32(0) || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(i32(0))))) == 0 || _res == 0 {
- goto _38
+ if ((_rc == i32(0)) && ((*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(i32(0))))) != 0)) && _res != 0 {
+ _rc = _pager_delmaster(tls, _pPager, _zMaster)
}
-
- _rc = _pager_delmaster(tls, _pPager, _zMaster)
-_38:
- if _isHot == 0 || _nPlayback == 0 {
- goto _40
+ if _isHot != 0 && _nPlayback != 0 {
+ Xsqlite3_log(tls, i32(539), str(19472), _nPlayback, unsafe.Pointer(_pPager.X52))
}
-
- Xsqlite3_log(tls, i32(539), str(18924), _nPlayback, unsafe.Pointer(_pPager.X52))
-_40:
_setSectorSize(tls, _pPager)
return _rc
}
-var _pager_playbackØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pager_playbackØ00__func__Ø000[0], str(18952), 15)
-}
-
-func _readMasterJournal(tls *crt.TLS, _pJrnl *Xsqlite3_file, _zMaster *int8, _nMaster uint32) (r0 int32) { // sqlite3.c:48198:1
- var _rc int32 // sqlite3.c:48199:7
- _ = _rc
- var _len uint32 // sqlite3.c:48200:7
- _ = _len
- var _szJ int64 // sqlite3.c:48201:7
- _ = _szJ
- var _cksum uint32 // sqlite3.c:48202:7
- _ = _cksum
- var _u uint32 // sqlite3.c:48203:7
- _ = _u
- var _aMagic [8]uint8 // sqlite3.c:48204:17
- _ = _aMagic
+var _pager_playbackØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pager_playbackØ00__func__Ø000[0], str(19499), 15)
+}
+
+// When this is called the journal file for pager pPager must be open.
+// This function attempts to read a master journal file name from the
+// end of the file and, if successful, copies it into memory supplied
+// by the caller. See comments above writeMasterJournal() for the format
+// used to store a master journal file name at the end of a journal file.
+//
+// zMaster must point to a buffer of at least nMaster bytes allocated by
+// the caller. This should be sqlite3_vfs.mxPathname+1 (to ensure there is
+// enough space to write the master journal name). If the master journal
+// name in the journal is longer than nMaster bytes (including a
+// nul-terminator), then this is handled as if no master journal name
+// were present in the journal.
+//
+// If a master journal file name is present at the end of the journal
+// file, then it is copied into the buffer pointed to by zMaster. A
+// nul-terminator byte is appended to the buffer following the master
+// journal file name.
+//
+// If it is determined that no master journal file name is present
+// zMaster[0] is set to 0 and SQLITE_OK returned.
+//
+// If an error occurs while reading from the journal file, an SQLite
+// error code is returned.
+func _readMasterJournal(tls *crt.TLS, _pJrnl *Xsqlite3_file, _zMaster *int8, _nMaster uint32) (r0 int32) {
+ var _rc int32
+ var _szJ int64
+ var _len, _cksum, _u uint32
+ var _aMagic [8]uint8
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(i32(0)))) = int8(i32(0))
- if i32(0) == store1(&_rc, _sqlite3OsFileSize(tls, _pJrnl, &_szJ)) && _szJ >= int64(i32(16)) && i32(0) == store1(&_rc, _read32bits(tls, _pJrnl, _szJ-int64(i32(16)), &_len)) && _len < _nMaster && _len != uint32(i32(0)) && i32(0) == store1(&_rc, _read32bits(tls, _pJrnl, _szJ-int64(i32(12)), &_cksum)) && i32(0) == store1(&_rc, _sqlite3OsRead(tls, _pJrnl, (unsafe.Pointer)(&_aMagic), i32(8), _szJ-int64(i32(8)))) && crt.Xmemcmp(tls, (unsafe.Pointer)(&_aMagic), (unsafe.Pointer)(&_aJournalMagic), uint32(i32(8))) == 0 && i32(0) == store1(&_rc, _sqlite3OsRead(tls, _pJrnl, (unsafe.Pointer)(_zMaster), int32(_len), (_szJ-int64(i32(16)))-int64(_len))) {
- goto _8
+ if ((((((((i32(0) != store1(&_rc, _sqlite3OsFileSize(tls, _pJrnl, &_szJ))) || (_szJ < int64(i32(16)))) || (i32(0) != store1(&_rc, _read32bits(tls, _pJrnl, _szJ-int64(i32(16)), &_len)))) || (_len >= _nMaster)) || (_len == uint32(i32(0)))) || (i32(0) != store1(&_rc, _read32bits(tls, _pJrnl, _szJ-int64(i32(12)), &_cksum)))) || (i32(0) != store1(&_rc, _sqlite3OsRead(tls, _pJrnl, (unsafe.Pointer)(&_aMagic), i32(8), _szJ-int64(i32(8)))))) || crt.Xmemcmp(tls, (unsafe.Pointer)(&_aMagic), (unsafe.Pointer)(&_aJournalMagic), uint32(i32(8))) != 0) || (i32(0) != store1(&_rc, _sqlite3OsRead(tls, _pJrnl, (unsafe.Pointer)(_zMaster), int32(_len), (_szJ-int64(i32(16)))-int64(_len)))) {
+ return _rc
}
- return _rc
-
-_8:
_u = uint32(i32(0))
_9:
if _u >= _len {
goto _12
}
-
{
p := &_cksum
*p = (*p) - uint32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(_u))))
@@ -19642,185 +19048,162 @@ _9:
}
_u += 1
goto _9
-
_12:
- if _cksum == 0 {
- goto _13
+ if _cksum != 0 {
+ _len = uint32(i32(0))
}
-
- _len = uint32(i32(0))
-_13:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(_len))) = int8(i32(0))
return i32(0)
+
+ _ = _aMagic
+ panic(0)
}
-func _sqlite3OsAccess(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _flags int32, _pResOut *int32) (r0 int32) { // sqlite3.c:20300:1
+func _sqlite3OsAccess(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _flags int32, _pResOut *int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int8, int32, *int32) int32
}{(_pVfs.X8)})))(tls, _pVfs, _zPath, _flags, _pResOut)
}
-func _sqlite3PagerSync(tls *crt.TLS, _pPager *XPager, _zMaster *int8) (r0 int32) { // sqlite3.c:53153:1
- var _rc int32 // sqlite3.c:53154:7
- _ = _rc
- var _1_pArg unsafe.Pointer // sqlite3.c:53157:10
- _ = _1_pArg
+// Sync the database file to disk. This is a no-op for in-memory databases
+// or pages with the Pager.noSync flag set.
+//
+// If successful, or if called on a pager for which it is a no-op, this
+// function returns SQLITE_OK. Otherwise, an IO error code is returned.
+func _sqlite3PagerSync(tls *crt.TLS, _pPager *XPager, _zMaster *int8) (r0 int32) {
+ var _rc int32
+ var _1_pArg unsafe.Pointer
_rc = i32(0)
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
goto _0
}
-
_1_pArg = (unsafe.Pointer)(_zMaster)
_rc = _sqlite3OsFileControl(tls, (*Xsqlite3_file)(_pPager.X31), i32(21), _1_pArg)
- if _rc != i32(12) {
- goto _1
+ if _rc == i32(12) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_1:
_0:
- if _rc != i32(0) || (_pPager.X4) != 0 {
- goto _3
+ if (_rc == i32(0)) && ((_pPager.X4) == 0) {
+ func() {
+ if (_pPager.X13) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53162), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSyncØ00__func__Ø000))), unsafe.Pointer(str(11747)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X31), int32(_pPager.X9))
}
-
- func() {
- if (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53162), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSyncØ00__func__Ø000))), unsafe.Pointer(str(10644)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X31), int32(_pPager.X9))
-_3:
return _rc
}
-var _sqlite3PagerSyncØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerSyncØ00__func__Ø000[0], str(18968), 17)
-}
-
-func _pager_delmaster(tls *crt.TLS, _pPager *XPager, _zMaster *int8) (r0 int32) { // sqlite3.c:49436:1
- var _pVfs *Xsqlite3_vfs // sqlite3.c:49437:15
- _ = _pVfs
- var _rc int32 // sqlite3.c:49438:7
- _ = _rc
- var _pMaster *Xsqlite3_file // sqlite3.c:49439:16
- _ = _pMaster
- var _pJournal *Xsqlite3_file // sqlite3.c:49440:16
- _ = _pJournal
- var _zMasterJournal *int8 // sqlite3.c:49441:8
- _ = _zMasterJournal
- var _nMasterJournal int64 // sqlite3.c:49442:7
- _ = _nMasterJournal
- var _zJournal *int8 // sqlite3.c:49443:8
- _ = _zJournal
- var _zMasterPtr *int8 // sqlite3.c:49444:8
- _ = _zMasterPtr
- var _nMasterPtr int32 // sqlite3.c:49445:7
- _ = _nMasterPtr
- var _2_flags int32 // sqlite3.c:49455:15
- _ = _2_flags
- var _4_exists int32 // sqlite3.c:49480:9
- _ = _4_exists
- var _6_c int32 // sqlite3.c:49490:11
- _ = _6_c
- var _6_flags int32 // sqlite3.c:49491:11
- _ = _6_flags
+var _sqlite3PagerSyncØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerSyncØ00__func__Ø000[0], str(19514), 17)
+}
+
+// Parameter zMaster is the name of a master journal file. A single journal
+// file that referred to the master journal file has just been rolled back.
+// This routine checks if it is possible to delete the master journal file,
+// and does so if it is.
+//
+// Argument zMaster may point to Pager.pTmpSpace. So that buffer is not
+// available for use within this function.
+//
+// When a master journal file is created, it is populated with the names
+// of all of its child journals, one after another, formatted as utf-8
+// encoded text. The end of each child journal file is marked with a
+// nul-terminator byte (0x00). i.e. the entire contents of a master journal
+// file for a transaction involving two databases might be:
+//
+// "/home/bill/a.db-journal\x00/home/bill/b.db-journal\x00"
+//
+// A master journal file may only be deleted once all of its child
+// journals have been rolled back.
+//
+// This function reads the contents of the master-journal file into
+// memory and loops through each of the child journal names. For
+// each child journal, it checks if:
+//
+// * if the child journal exists, and if so
+// * if the child journal contains a reference to master journal
+// file zMaster
+//
+// If a child journal can be found that matches both of the criteria
+// above, this function returns without doing anything. Otherwise, if
+// no such child journal can be found, file zMaster is deleted from
+// the file-system using sqlite3OsDelete().
+//
+// If an IO error within this function, an error code is returned. This
+// function allocates memory by calling sqlite3Malloc(). If an allocation
+// fails, SQLITE_NOMEM is returned. Otherwise, if no IO or malloc errors
+// occur, SQLITE_OK is returned.
+//
+// TODO: This function allocates a single block of memory to load
+// the entire contents of the master journal file. This could be
+// a couple of kilobytes or so - potentially larger than the page
+// size.
+func _pager_delmaster(tls *crt.TLS, _pPager *XPager, _zMaster *int8) (r0 int32) {
+ var _rc, _nMasterPtr, _2_flags, _4_exists, _6_c, _6_flags int32
+ var _nMasterJournal int64
+ var _zMasterJournal, _zJournal, _zMasterPtr *int8
+ var _pMaster, _pJournal *Xsqlite3_file
+ var _pVfs *Xsqlite3_vfs
_pVfs = (*Xsqlite3_vfs)(_pPager.X0)
_zMasterJournal = nil
_pMaster = (*Xsqlite3_file)(_sqlite3MallocZero(tls, uint64((_pVfs.X1)*i32(2))))
_pJournal = (*Xsqlite3_file)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_pMaster)))) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pVfs.X1)))))))))
- if _pMaster != nil {
- goto _0
+ if _pMaster == nil {
+ _rc = _sqlite3NomemError(tls, i32(49453))
+ goto _1
}
-
- _rc = _sqlite3NomemError(tls, i32(49453))
- goto _1
-
-_0:
_2_flags = i32(16385)
_rc = _sqlite3OsOpen(tls, _pVfs, _zMaster, _pMaster, _2_flags, nil)
_1:
- if _rc == i32(0) {
- goto _2
+ if _rc != i32(0) {
+ goto _delmaster_out
}
-
- goto _delmaster_out
-
-_2:
_rc = _sqlite3OsFileSize(tls, _pMaster, &_nMasterJournal)
- if _rc == i32(0) {
- goto _3
+ if _rc != i32(0) {
+ goto _delmaster_out
}
-
- goto _delmaster_out
-
-_3:
_nMasterPtr = (_pVfs.X2) + i32(1)
_zMasterJournal = (*int8)(_sqlite3Malloc(tls, uint64((_nMasterJournal+int64(_nMasterPtr))+int64(i32(1)))))
- if _zMasterJournal != nil {
- goto _4
+ if _zMasterJournal == nil {
+ _rc = _sqlite3NomemError(tls, i32(49470))
+ goto _delmaster_out
}
-
- _rc = _sqlite3NomemError(tls, i32(49470))
- goto _delmaster_out
-
-_4:
_zMasterPtr = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMasterJournal)) + 1*uintptr(_nMasterJournal+int64(i32(1)))))
_rc = _sqlite3OsRead(tls, _pMaster, (unsafe.Pointer)(_zMasterJournal), int32(_nMasterJournal), int64(i32(0)))
- if _rc == i32(0) {
- goto _5
+ if _rc != i32(0) {
+ goto _delmaster_out
}
-
- goto _delmaster_out
-
-_5:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMasterJournal)) + 1*uintptr(_nMasterJournal))) = int8(i32(0))
_zJournal = _zMasterJournal
_6:
if int64(int32((uintptr(unsafe.Pointer(_zJournal))-uintptr(unsafe.Pointer(_zMasterJournal)))/1)) >= _nMasterJournal {
goto _7
}
-
_rc = _sqlite3OsAccess(tls, _pVfs, _zJournal, i32(0), &_4_exists)
- if _rc == i32(0) {
- goto _8
+ if _rc != i32(0) {
+ goto _delmaster_out
}
-
- goto _delmaster_out
-
-_8:
if _4_exists == 0 {
goto _9
}
-
_6_flags = i32(2049)
_rc = _sqlite3OsOpen(tls, _pVfs, _zJournal, _pJournal, _6_flags, nil)
- if _rc == i32(0) {
- goto _10
+ if _rc != i32(0) {
+ goto _delmaster_out
}
-
- goto _delmaster_out
-
-_10:
_rc = _readMasterJournal(tls, _pJournal, _zMasterPtr, uint32(_nMasterPtr))
_sqlite3OsClose(tls, _pJournal)
- if _rc == i32(0) {
- goto _11
+ if _rc != i32(0) {
+ goto _delmaster_out
}
-
- goto _delmaster_out
-
-_11:
_6_c = bool2int((int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMasterPtr)) + 1*uintptr(i32(0))))) != i32(0)) && (crt.Xstrcmp(tls, _zMasterPtr, _zMaster) == i32(0)))
- if _6_c == 0 {
- goto _13
+ if _6_c != 0 {
+ goto _delmaster_out
}
-
- goto _delmaster_out
-
-_13:
_9:
{
p := &_zJournal
@@ -19828,86 +19211,91 @@ _9:
sink0 = *p
}
goto _6
-
_7:
_sqlite3OsClose(tls, _pMaster)
_rc = _sqlite3OsDelete(tls, _pVfs, _zMaster, i32(0))
_delmaster_out:
Xsqlite3_free(tls, (unsafe.Pointer)(_zMasterJournal))
- if _pMaster == nil {
- goto _14
+ if _pMaster != nil {
+ _sqlite3OsClose(tls, _pMaster)
+ func() {
+ if (*Xsqlite3_io_methods)(_pJournal.X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49519), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_delmasterØ00__func__Ø000))), unsafe.Pointer(str(19531)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pMaster))
}
-
- _sqlite3OsClose(tls, _pMaster)
- func() {
- if (*Xsqlite3_io_methods)(_pJournal.X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49519), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_delmasterØ00__func__Ø000))), unsafe.Pointer(str(18988)))
- crt.X__builtin_abort(tls)
- }
- }()
- Xsqlite3_free(tls, (unsafe.Pointer)(_pMaster))
-_14:
return _rc
}
-var _pager_delmasterØ00__func__Ø000 [16]int8 // -
+var _pager_delmasterØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_pager_delmasterØ00__func__Ø000[0], str(19008), 16)
+ crt.Xstrncpy(nil, &_pager_delmasterØ00__func__Ø000[0], str(19549), 16)
}
-func _setSectorSize(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:49616:1
+// Set the value of the Pager.sectorSize variable for the given
+// pager based on the value returned by the xSectorSize method
+// of the open database file. The sector size will be used
+// to determine the size and alignment of journal header and
+// master journal pointers within created journal files.
+//
+// For temporary files the effective sector size is always 512 bytes.
+//
+// Otherwise, for non-temporary files, the effective sector size is
+// the value returned by the xSectorSize() method rounded up to 32 if
+// it is less than 32, or rounded down to MAX_SECTOR_SIZE if it
+// is greater than MAX_SECTOR_SIZE.
+//
+// If the file has the SQLITE_IOCAP_POWERSAFE_OVERWRITE property, then set
+// the effective sector size to its minimum value (512). The purpose of
+// pPager->sectorSize is to define the "blast radius" of bytes that
+// might change if a crash occurs while writing to a single byte in
+// that range. But with POWERSAFE_OVERWRITE, the blast radius is zero
+// (that is what POWERSAFE_OVERWRITE means), so we minimize the sector
+// size. For backwards compatibility of the rollback journal file format,
+// we cannot reduce the effective sector size below 512.
+func _setSectorSize(tls *crt.TLS, _pPager *XPager) {
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(49617), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSectorSizeØ00__func__Ø000))), unsafe.Pointer(str(19024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(49617), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSectorSizeØ00__func__Ø000))), unsafe.Pointer(str(19565)))
crt.X__builtin_abort(tls)
}
}()
- if (_pPager.X10) == 0 && (_sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X31))&i32(4096)) == i32(0) {
- goto _4
+ if ((_pPager.X10) != 0) || ((_sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X31)) & i32(4096)) != i32(0)) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(148 /* X47 */))) = uint32(i32(512))
+ goto _5
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(148 /* X47 */))) = uint32(i32(512))
- goto _5
-
-_4:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(148 /* X47 */))) = uint32(_sqlite3SectorSize(tls, (*Xsqlite3_file)(_pPager.X31)))
_5:
}
-var _setSectorSizeØ00__func__Ø000 [14]int8 // -
+var _setSectorSizeØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_setSectorSizeØ00__func__Ø000[0], str(19064), 14)
+ crt.Xstrncpy(nil, &_setSectorSizeØ00__func__Ø000[0], str(19604), 14)
}
-func _sqlite3SectorSize(tls *crt.TLS, _pFile *Xsqlite3_file) (r0 int32) { // sqlite3.c:49582:1
- var _iRet int32 // sqlite3.c:49583:7
- _ = _iRet
+// Return a sanitized version of the sector-size of OS file pFile. The
+// return value is guaranteed to lie between 32 and MAX_SECTOR_SIZE.
+func _sqlite3SectorSize(tls *crt.TLS, _pFile *Xsqlite3_file) (r0 int32) {
+ var _iRet int32
_iRet = _sqlite3OsSectorSize(tls, _pFile)
- if _iRet >= i32(32) {
- goto _0
+ if _iRet < i32(32) {
+ _iRet = i32(512)
+ goto _1
}
-
- _iRet = i32(512)
- goto _1
-
-_0:
- if _iRet <= i32(65536) {
- goto _2
+ if _iRet > i32(65536) {
+ i32(0)
+ _iRet = i32(65536)
}
-
- i32(0)
- _iRet = i32(65536)
-_2:
_1:
- r0 = _iRet
- return
+ return _iRet
}
-func _sqlite3OsSectorSize(tls *crt.TLS, _id *Xsqlite3_file) (r0 int32) { // sqlite3.c:20227:1
- var _xSectorSize func(*crt.TLS, *Xsqlite3_file) int32 // sqlite3.c:20228:7
- _ = _xSectorSize
+func _sqlite3OsSectorSize(tls *crt.TLS, _id *Xsqlite3_file) (r0 int32) {
+ var _xSectorSize func(*crt.TLS, *Xsqlite3_file) int32
_xSectorSize = *(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{((*Xsqlite3_io_methods)(_id.X0).X11)}))
@@ -19919,72 +19307,92 @@ func _sqlite3OsSectorSize(tls *crt.TLS, _id *Xsqlite3_file) (r0 int32) { // sqli
}()
}
-func _pager_error(tls *crt.TLS, _pPager *XPager, _rc int32) (r0 int32) { // sqlite3.c:48814:1
- var _rc2 int32 // sqlite3.c:48815:7
- _ = _rc2
+// This function is called whenever an IOERR or FULL error that requires
+// the pager to transition into the ERROR state may ahve occurred.
+// The first argument is a pointer to the pager structure, the second
+// the error-code about to be returned by a pager API function. The
+// value returned is a copy of the second argument to this function.
+//
+// If the second argument is SQLITE_FULL, SQLITE_IOERR or one of the
+// IOERR sub-codes, the pager enters the ERROR state and the error code
+// is stored in Pager.errCode. While the pager remains in the ERROR state,
+// all major API calls on the Pager will immediately return Pager.errCode.
+//
+// The ERROR state indicates that the contents of the pager-cache
+// cannot be trusted. This state can be cleared by completely discarding
+// the contents of the pager-cache. If a transaction was active when
+// the persistent error occurred, then the rollback journal may need
+// to be replayed to restore the contents of the database file (as if
+// it were a hot-journal).
+func _pager_error(tls *crt.TLS, _pPager *XPager, _rc int32) (r0 int32) {
+ var _rc2 int32
_rc2 = _rc & i32(255)
func() {
if _rc != i32(0) && (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48816), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_errorØ00__func__Ø000))), unsafe.Pointer(str(19080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48816), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_errorØ00__func__Ø000))), unsafe.Pointer(str(19618)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(13) && (_pPager.X26) != i32(0) && ((_pPager.X26)&i32(255)) != i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48817), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_errorØ00__func__Ø000))), unsafe.Pointer(str(19104)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48817), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_errorØ00__func__Ø000))), unsafe.Pointer(str(19642)))
crt.X__builtin_abort(tls)
}
}()
- if _rc2 != i32(13) && _rc2 != i32(10) {
- goto _8
+ if (_rc2 == i32(13)) || (_rc2 == i32(10)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(44 /* X26 */))) = _rc
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(6))
+ _setGetterMethod(tls, _pPager)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(44 /* X26 */))) = _rc
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(6))
- _setGetterMethod(tls, _pPager)
-_8:
return _rc
}
-var _pager_errorØ00__func__Ø000 [12]int8 // -
+var _pager_errorØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_pager_errorØ00__func__Ø000[0], str(19208), 12)
+ crt.Xstrncpy(nil, &_pager_errorØ00__func__Ø000[0], str(19743), 12)
}
-func _pager_unlock(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:48716:1
- var _2_rc int32 // sqlite3.c:48732:9
- _ = _2_rc
- var _2_iDc int32 // sqlite3.c:48733:9
- _ = _2_iDc
+// This function is a no-op if the pager is in exclusive mode and not
+// in the ERROR state. Otherwise, it switches the pager to PAGER_OPEN
+// state.
+//
+// If the pager is not in exclusive-access mode, the database file is
+// completely unlocked. If the file is unlocked and the file-system does
+// not exhibit the UNDELETABLE_WHEN_OPEN property, the journal file is
+// closed (if it is open).
+//
+// If the pager is in ERROR state when this function is called, the
+// contents of the pager cache are discarded before switching back to
+// the OPEN state. Regardless of whether the pager is in exclusive-mode
+// or not, any journal file left in the file-system will be treated
+// as a hot-journal and rolled back the next time a read-transaction
+// is opened (by this or by any other connection).
+func _pager_unlock(tls *crt.TLS, _pPager *XPager) {
+ var _2_rc, _2_iDc int32
func() {
if int32(_pPager.X14) != i32(1) && int32(_pPager.X14) != i32(0) && int32(_pPager.X14) != i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48718), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19220)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48718), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19755)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3BitvecDestroy(tls, (*XBitvec)(_pPager.X30))
*(**XBitvec)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(60 /* X30 */))))) = nil
_releaseAllSavepoints(tls, _pPager)
- if (*XWal)(_pPager.X60) == nil {
- goto _4
+ if (*XWal)(_pPager.X60) != nil {
+ func() {
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48728), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19845)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3WalEndReadTransaction(tls, (*XWal)(_pPager.X60))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
+ goto _7
}
-
- func() {
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48728), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19312)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3WalEndReadTransaction(tls, (*XWal)(_pPager.X60))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
- goto _7
-
-_4:
if (_pPager.X1) != 0 {
goto _8
}
-
_2_iDc = func() int32 {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil {
return _sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X31))
@@ -19997,22 +19405,16 @@ _4:
i32(0)
i32(0)
i32(0)
- if i32(0) != (_2_iDc&i32(2048)) && i32(1) == (int32(_pPager.X2)&i32(5)) {
- goto _12
+ if (i32(0) == (_2_iDc & i32(2048))) || (i32(1) != (int32(_pPager.X2) & i32(5))) {
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
}
-
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
-_12:
_2_rc = _pagerUnlockDb(tls, _pPager, i32(0))
- if _2_rc == i32(0) || int32(_pPager.X14) != i32(6) {
- goto _14
+ if (_2_rc != i32(0)) && (int32(_pPager.X14) == i32(6)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(18 /* X15 */))) = uint8(i32(5))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(18 /* X15 */))) = uint8(i32(5))
-_14:
func() {
if (_pPager.X26) == 0 && int32(_pPager.X14) == i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48766), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48766), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19866)))
crt.X__builtin_abort(tls)
}
}()
@@ -20022,24 +19424,19 @@ _8:
_7:
func() {
if (_pPager.X26) != i32(0) && (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48776), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48776), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_unlockØ00__func__Ø000))), unsafe.Pointer(str(19913)))
crt.X__builtin_abort(tls)
}
}()
if (_pPager.X26) == 0 {
goto _21
}
-
- if int32(_pPager.X10) != i32(0) {
- goto _22
+ if int32(_pPager.X10) == i32(0) {
+ _pager_reset(tls, _pPager)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(19 /* X16 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
+ goto _23
}
-
- _pager_reset(tls, _pPager)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(19 /* X16 */))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
- goto _23
-
-_22:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(func() int32 {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil {
return i32(0)
@@ -20047,12 +19444,9 @@ _22:
return i32(1)
}())
_23:
- if (_pPager.X20) == 0 {
- goto _26
+ if (_pPager.X20) != 0 {
+ _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(i32(0)), nil)
}
-
- _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(i32(0)), nil)
-_26:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(44 /* X26 */))) = i32(0)
_setGetterMethod(tls, _pPager)
_21:
@@ -20061,180 +19455,148 @@ _21:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(20 /* X17 */))) = uint8(i32(0))
}
-var _pager_unlockØ00__func__Ø000 [13]int8 // -
+var _pager_unlockØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_pager_unlockØ00__func__Ø000[0], str(19424), 13)
+ crt.Xstrncpy(nil, &_pager_unlockØ00__func__Ø000[0], str(19950), 13)
}
-func _sqlite3WalEndReadTransaction(tls *crt.TLS, _pWal *XWal) { // sqlite3.c:57040:1
+// Finish with a read transaction. All this does is release the
+// read-lock.
+func _sqlite3WalEndReadTransaction(tls *crt.TLS, _pWal *XWal) {
_sqlite3WalEndWriteTransaction(tls, _pWal)
- if int32(_pWal.X9) < i32(0) {
- goto _0
+ if int32(_pWal.X9) >= i32(0) {
+ _walUnlockShared(tls, _pWal, i32(3)+int32(_pWal.X9))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(40 /* X9 */))) = int16(i32(-1))
}
-
- _walUnlockShared(tls, _pWal, i32(3)+int32(_pWal.X9))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(40 /* X9 */))) = int16(i32(-1))
-_0:
}
-func _sqlite3Realloc(tls *crt.TLS, _pOld unsafe.Pointer, _nBytes uint64) (r0 unsafe.Pointer) { // sqlite3.c:24728:1
- var _nOld int32 // sqlite3.c:24729:7
- _ = _nOld
- var _nNew int32 // sqlite3.c:24729:13
- _ = _nNew
- var _nDiff int32 // sqlite3.c:24729:19
- _ = _nDiff
- var _pNew unsafe.Pointer // sqlite3.c:24730:8
- _ = _pNew
+// Change the size of an existing memory allocation
+func _sqlite3Realloc(tls *crt.TLS, _pOld unsafe.Pointer, _nBytes uint64) (r0 unsafe.Pointer) {
+ var _nOld, _nNew, _nDiff int32
+ var _pNew unsafe.Pointer
i32(0)
i32(0)
- if _pOld != nil {
- goto _0
+ if _pOld == nil {
+ return _sqlite3Malloc(tls, _nBytes)
}
- return _sqlite3Malloc(tls, _nBytes)
-
-_0:
- if _nBytes != uint64(i32(0)) {
- goto _1
+ if _nBytes == uint64(i32(0)) {
+ Xsqlite3_free(tls, _pOld)
+ return nil
}
-
- Xsqlite3_free(tls, _pOld)
- return nil
-
-_1:
- if _nBytes < uint64(i32(2147483392)) {
- goto _2
+ if _nBytes >= uint64(i32(2147483392)) {
+ return nil
}
- return nil
-
-_2:
_nOld = _sqlite3MallocSize(tls, _pOld)
_nNew = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X4)(tls, int32(_nBytes))
- if _nOld != _nNew {
- goto _3
+ if _nOld == _nNew {
+ _pNew = _pOld
+ goto _4
}
-
- _pNew = _pOld
- goto _4
-
-_3:
if (_sqlite3Config.X0) == 0 {
goto _5
}
-
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
_sqlite3StatusHighwater(tls, i32(5), int32(_nBytes))
_nDiff = _nNew - _nOld
- if _nDiff <= i32(0) || _sqlite3StatusValue(tls, i32(0)) < ((_mem0.X1)-int64(_nDiff)) {
- goto _7
+ if (_nDiff > i32(0)) && (_sqlite3StatusValue(tls, i32(0)) >= ((_mem0.X1) - int64(_nDiff))) {
+ _sqlite3MallocAlarm(tls, _nDiff)
}
-
- _sqlite3MallocAlarm(tls, _nDiff)
-_7:
_pNew = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X2)(tls, _pOld, _nNew)
- if _pNew != nil || (_mem0.X1) <= int64(i32(0)) {
- goto _9
+ if (_pNew == nil) && ((_mem0.X1) > int64(i32(0))) {
+ _sqlite3MallocAlarm(tls, int32(_nBytes))
+ _pNew = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X2)(tls, _pOld, _nNew)
}
-
- _sqlite3MallocAlarm(tls, int32(_nBytes))
- _pNew = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X2)(tls, _pOld, _nNew)
-_9:
- if _pNew == nil {
- goto _10
+ if _pNew != nil {
+ _nNew = _sqlite3MallocSize(tls, _pNew)
+ _sqlite3StatusUp(tls, i32(0), _nNew-_nOld)
}
-
- _nNew = _sqlite3MallocSize(tls, _pNew)
- _sqlite3StatusUp(tls, i32(0), _nNew-_nOld)
-_10:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
goto _11
-
_5:
_pNew = ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X2)(tls, _pOld, _nNew)
_11:
_4:
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(_pNew)))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24772), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReallocØ00__func__Ø000))), unsafe.Pointer(str(19440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24772), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReallocØ00__func__Ø000))), unsafe.Pointer(str(19963)))
crt.X__builtin_abort(tls)
}
}()
return _pNew
}
-var _sqlite3ReallocØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ReallocØ00__func__Ø000[0], str(19468), 15)
-}
-
-func _getOverflowPage(tls *crt.TLS, _pBt *XBtShared, _ovfl uint32, _ppPage **XMemPage, _pPgnoNext *uint32) (r0 int32) { // sqlite3.c:63434:1
- var _next uint32 // sqlite3.c:63440:8
- _ = _next
- var _pPage *XMemPage // sqlite3.c:63441:11
- _ = _pPage
- var _rc int32 // sqlite3.c:63442:7
- _ = _rc
- var _1_pgno uint32 // sqlite3.c:63455:10
- _ = _1_pgno
- var _1_iGuess uint32 // sqlite3.c:63456:10
- _ = _1_iGuess
- var _1_eType uint8 // sqlite3.c:63457:8
- _ = _1_eType
+var _sqlite3ReallocØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ReallocØ00__func__Ø000[0], str(19990), 15)
+}
+
+// Given the page number of an overflow page in the database (parameter
+// ovfl), this function finds the page number of the next page in the
+// linked list of overflow pages. If possible, it uses the auto-vacuum
+// pointer-map data instead of reading the content of page ovfl to do so.
+//
+// If an error occurs an SQLite error code is returned. Otherwise:
+//
+// The page number of the next overflow page in the linked list is
+// written to *pPgnoNext. If page ovfl is the last page in its linked
+// list, *pPgnoNext is set to zero.
+//
+// If ppPage is not NULL, and a reference to the MemPage object corresponding
+// to page number pOvfl was obtained, then *ppPage is set to point to that
+// reference. It is the responsibility of the caller to call releasePage()
+// on *ppPage to free the reference. In no reference was obtained (because
+// the pointer-map was used to obtain the value for *pPgnoNext), then
+// *ppPage is set to zero.
+func _getOverflowPage(tls *crt.TLS, _pBt *XBtShared, _ovfl uint32, _ppPage **XMemPage, _pPgnoNext *uint32) (r0 int32) {
+ var _rc int32
+ var _next, _1_pgno, _1_iGuess uint32
+ var _1_eType uint8
+ var _pPage *XMemPage
_next = u32(0)
_pPage = nil
_rc = i32(0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63444), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63444), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pPgnoNext == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63445), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(19484)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63445), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(20005)))
crt.X__builtin_abort(tls)
}
}()
if (_pBt.X5) == 0 {
goto _4
}
-
_1_iGuess = _ovfl + uint32(i32(1))
_5:
- if _ptrmapPageno(tls, _pBt, _1_iGuess) != _1_iGuess && _1_iGuess != ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) {
- goto _6
+ if (_ptrmapPageno(tls, _pBt, _1_iGuess) == _1_iGuess) || (_1_iGuess == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) {
+ _1_iGuess += 1
+ goto _5
}
-
- _1_iGuess += 1
- goto _5
-
-_6:
if _1_iGuess > _btreePagecount(tls, _pBt) {
goto _8
}
-
_rc = _ptrmapGet(tls, _pBt, _1_iGuess, &_1_eType, &_1_pgno)
- if _rc != i32(0) || int32(_1_eType) != i32(4) || _1_pgno != _ovfl {
- goto _11
+ if ((_rc == i32(0)) && (int32(_1_eType) == i32(4))) && (_1_pgno == _ovfl) {
+ _next = _1_iGuess
+ _rc = i32(101)
}
-
- _next = _1_iGuess
- _rc = i32(101)
-_11:
_8:
_4:
func() {
if _next != uint32(i32(0)) && _rc != i32(101) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63473), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(19496)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63473), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(20015)))
crt.X__builtin_abort(tls)
}
}()
if _rc != i32(0) {
goto _15
}
-
_rc = _btreeGetPage(tls, _pBt, _ovfl, &_pPage, func() int32 {
if _ppPage == nil {
return i32(2)
@@ -20243,26 +19605,19 @@ _4:
}())
func() {
if _rc != i32(0) && _pPage != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63476), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(19524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63476), unsafe.Pointer((*int8)(unsafe.Pointer(&_getOverflowPageØ00__func__Ø000))), unsafe.Pointer(str(20042)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(0) {
- goto _21
+ if _rc == i32(0) {
+ _next = _sqlite3Get4byte(tls, _pPage.X19)
}
-
- _next = _sqlite3Get4byte(tls, _pPage.X19)
-_21:
_15:
*_pPgnoNext = _next
- if _ppPage == nil {
- goto _22
+ if _ppPage != nil {
+ *_ppPage = _pPage
+ goto _23
}
-
- *_ppPage = _pPage
- goto _23
-
-_22:
_releasePage(tls, _pPage)
_23:
return func() int32 {
@@ -20273,305 +19628,297 @@ _23:
}()
}
-var _getOverflowPageØ00__func__Ø000 [16]int8 // -
+var _getOverflowPageØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_getOverflowPageØ00__func__Ø000[0], str(19552), 16)
+ crt.Xstrncpy(nil, &_getOverflowPageØ00__func__Ø000[0], str(20068), 16)
}
-func _ptrmapPageno(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 uint32) { // sqlite3.c:59934:1
- var _nPagesPerMapPage int32 // sqlite3.c:59935:7
- _ = _nPagesPerMapPage
- var _iPtrMap uint32 // sqlite3.c:59936:8
- _ = _iPtrMap
- var _ret uint32 // sqlite3.c:59936:17
- _ = _ret
+// Given a page number of a regular database page, return the page
+// number for the pointer-map page that contains the entry for the
+// input page number.
+//
+// Return 0 (not a valid page) for pgno==1 since there is
+// no pointer map associated with page 1. The integrity_check logic
+// requires that ptrmapPageno(*,1)!=1.
+func _ptrmapPageno(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 uint32) {
+ var _nPagesPerMapPage int32
+ var _iPtrMap, _ret uint32
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59937), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPagenoØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59937), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPagenoØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
- if _pgno >= uint32(i32(2)) {
- goto _2
+ if _pgno < uint32(i32(2)) {
+ return uint32(i32(0))
}
- return uint32(i32(0))
-
-_2:
_nPagesPerMapPage = int32(((_pBt.X16) / uint32(i32(5))) + uint32(i32(1)))
_iPtrMap = (_pgno - uint32(i32(2))) / uint32(_nPagesPerMapPage)
_ret = (_iPtrMap * uint32(_nPagesPerMapPage)) + uint32(i32(2))
- if _ret != ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
- goto _3
+ if _ret == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
+ _ret += 1
}
-
- _ret += 1
-_3:
return _ret
}
-var _ptrmapPagenoØ00__func__Ø000 [13]int8 // -
+var _ptrmapPagenoØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_ptrmapPagenoØ00__func__Ø000[0], str(19568), 13)
+ crt.Xstrncpy(nil, &_ptrmapPagenoØ00__func__Ø000[0], str(20084), 13)
}
-func _ptrmapGet(tls *crt.TLS, _pBt *XBtShared, _key uint32, _pEType *uint8, _pPgno *uint32) (r0 int32) { // sqlite3.c:60010:1
- var _pDbPage *XPgHdr // sqlite3.c:60011:10
- _ = _pDbPage
- var _iPtrmap int32 // sqlite3.c:60012:7
- _ = _iPtrmap
- var _pPtrmap *uint8 // sqlite3.c:60013:6
- _ = _pPtrmap
- var _offset int32 // sqlite3.c:60014:7
- _ = _offset
- var _rc int32 // sqlite3.c:60015:7
- _ = _rc
+// Read an entry from the pointer map.
+//
+// This routine retrieves the pointer map entry for page 'key', writing
+// the type and parent page number to *pEType and *pPgno respectively.
+// An error code is returned if something goes wrong, otherwise SQLITE_OK.
+func _ptrmapGet(tls *crt.TLS, _pBt *XBtShared, _key uint32, _pEType *uint8, _pPgno *uint32) (r0 int32) {
+ var _iPtrmap, _offset, _rc int32
+ var _pPtrmap *uint8
+ var _pDbPage *XPgHdr
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60017), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapGetØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60017), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapGetØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
_iPtrmap = int32(_ptrmapPageno(tls, _pBt, _key))
_rc = _sqlite3PagerGet(tls, (*XPager)(_pBt.X0), uint32(_iPtrmap), &_pDbPage, i32(0))
- if _rc == i32(0) {
- goto _2
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_2:
_pPtrmap = (*uint8)(_sqlite3PagerGetData(tls, _pDbPage))
_offset = int32(uint32(i32(5)) * ((_key - uint32(_iPtrmap)) - uint32(i32(1))))
- if _offset >= i32(0) {
- goto _3
+ if _offset < i32(0) {
+ _sqlite3PagerUnref(tls, _pDbPage)
+ return _sqlite3CorruptError(tls, i32(60029))
}
-
- _sqlite3PagerUnref(tls, _pDbPage)
- return _sqlite3CorruptError(tls, i32(60029))
-
-_3:
func() {
if _offset > (int32(_pBt.X16) - i32(5)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60031), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapGetØ00__func__Ø000))), unsafe.Pointer(str(19584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60031), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapGetØ00__func__Ø000))), unsafe.Pointer(str(20097)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pEType == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60032), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapGetØ00__func__Ø000))), unsafe.Pointer(str(19620)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60032), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapGetØ00__func__Ø000))), unsafe.Pointer(str(20130)))
crt.X__builtin_abort(tls)
}
}()
*_pEType = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap)) + 1*uintptr(_offset)))
- if _pPgno == nil {
- goto _8
+ if _pPgno != nil {
+ *_pPgno = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap))+1*uintptr(_offset+i32(1)))))
}
-
- *_pPgno = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap))+1*uintptr(_offset+i32(1)))))
-_8:
_sqlite3PagerUnref(tls, _pDbPage)
- if int32(*_pEType) >= i32(1) && int32(*_pEType) <= i32(5) {
- goto _10
+ if (int32(*_pEType) < i32(1)) || (int32(*_pEType) > i32(5)) {
+ return _sqlite3CorruptError(tls, i32(60037))
}
- return _sqlite3CorruptError(tls, i32(60037))
-
-_10:
return i32(0)
}
-var _ptrmapGetØ00__func__Ø000 [10]int8 // -
+var _ptrmapGetØ00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_ptrmapGetØ00__func__Ø000[0], str(19632), 10)
+ crt.Xstrncpy(nil, &_ptrmapGetØ00__func__Ø000[0], str(20140), 10)
}
-func _btreeGetPage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _ppPage **XMemPage, _flags int32) (r0 int32) { // sqlite3.c:61014:1
- var _rc int32 // sqlite3.c:61020:7
- _ = _rc
- var _pDbPage *XPgHdr // sqlite3.c:61021:10
- _ = _pDbPage
+// Get a page from the pager. Initialize the MemPage.pBt and
+// MemPage.aData elements if needed. See also: btreeGetUnusedPage().
+//
+// If the PAGER_GET_NOCONTENT flag is set, it means that we do not care
+// about the content of the page at this time. So do not go to the disk
+// to fetch the content. Just fill in the content with zeros for now.
+// If in the future we call sqlite3PagerWrite() on this page, that
+// means we have started to be concerned about content and the disk
+// read should occur at that point.
+func _btreeGetPage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _ppPage **XMemPage, _flags int32) (r0 int32) {
+ var _rc int32
+ var _pDbPage *XPgHdr
func() {
if _flags != i32(0) && _flags != i32(1) && _flags != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61023), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeGetPageØ00__func__Ø000))), unsafe.Pointer(str(19644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61023), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeGetPageØ00__func__Ø000))), unsafe.Pointer(str(20150)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61024), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeGetPageØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61024), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeGetPageØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerGet(tls, (*XPager)(_pBt.X0), _pgno, &_pDbPage, _flags)
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_6:
*_ppPage = _btreePageFromDbPage(tls, _pDbPage, _pgno, _pBt)
return i32(0)
}
-var _btreeGetPageØ00__func__Ø000 [13]int8 // -
+var _btreeGetPageØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_btreeGetPageØ00__func__Ø000[0], str(19712), 13)
+ crt.Xstrncpy(nil, &_btreeGetPageØ00__func__Ø000[0], str(20218), 13)
}
-func _btreePageFromDbPage(tls *crt.TLS, _pDbPage *XPgHdr, _pgno uint32, _pBt *XBtShared) (r0 *XMemPage) { // sqlite3.c:60990:1
- var _pPage *XMemPage // sqlite3.c:60991:11
- _ = _pPage
+// Convert a DbPage obtained from the pager into a MemPage used by
+// the btree layer.
+func _btreePageFromDbPage(tls *crt.TLS, _pDbPage *XPgHdr, _pgno uint32, _pBt *XBtShared) (r0 *XMemPage) {
+ var _pPage *XMemPage
_pPage = (*XMemPage)(_sqlite3PagerGetExtra(tls, _pDbPage))
- if _pgno == (_pPage.X4) {
- goto _0
+ if _pgno != (_pPage.X4) {
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(56 /* X19 */))) = (*uint8)(_sqlite3PagerGetData(tls, _pDbPage))
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(72 /* X23 */))))) = _pDbPage
+ *(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(52 /* X18 */))))) = _pBt
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(4 /* X4 */))) = _pgno
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(9 /* X6 */))) = uint8(func() int32 {
+ if _pgno == uint32(i32(1)) {
+ return i32(100)
+ }
+ return i32(0)
+ }())
}
-
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(56 /* X19 */))) = (*uint8)(_sqlite3PagerGetData(tls, _pDbPage))
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(72 /* X23 */))))) = _pDbPage
- *(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(52 /* X18 */))))) = _pBt
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(4 /* X4 */))) = _pgno
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(9 /* X6 */))) = uint8(func() int32 {
- if _pgno == uint32(i32(1)) {
- return i32(100)
- }
- return i32(0)
- }())
-_0:
func() {
if (_pPage.X19) != (*uint8)(_sqlite3PagerGetData(tls, _pDbPage)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60999), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePageFromDbPageØ00__func__Ø000))), unsafe.Pointer(str(19728)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60999), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePageFromDbPageØ00__func__Ø000))), unsafe.Pointer(str(20231)))
crt.X__builtin_abort(tls)
}
}()
return _pPage
}
-var _btreePageFromDbPageØ00__func__Ø000 [20]int8 // -
+var _btreePageFromDbPageØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_btreePageFromDbPageØ00__func__Ø000[0], str(19772), 20)
+ crt.Xstrncpy(nil, &_btreePageFromDbPageØ00__func__Ø000[0], str(20274), 20)
}
-func _releasePage(tls *crt.TLS, _pPage *XMemPage) { // sqlite3.c:61135:1
- if _pPage == nil {
- goto _0
+func _releasePage(tls *crt.TLS, _pPage *XMemPage) {
+ if _pPage != nil {
+ _releasePageNotNull(tls, _pPage)
}
-
- _releasePageNotNull(tls, _pPage)
-_0:
}
-func _releasePageNotNull(tls *crt.TLS, _pPage *XMemPage) { // sqlite3.c:61126:1
+// Release a MemPage. This should be called once for each prior
+// call to btreeGetPage.
+func _releasePageNotNull(tls *crt.TLS, _pPage *XMemPage) {
func() {
if (_pPage.X19) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61127), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(19792)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61127), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(20294)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtShared)(_pPage.X18) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61128), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(19808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61128), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(20307)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XPgHdr)(_pPage.X23) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61129), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(19820)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61129), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(20318)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerGetExtra(tls, (*XPgHdr)(_pPage.X23)) != (unsafe.Pointer)(_pPage) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61130), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(19840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61130), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(20336)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerGetData(tls, (*XPgHdr)(_pPage.X23)) != (unsafe.Pointer)(_pPage.X19) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61131), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(19896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61131), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(20389)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61132), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61132), unsafe.Pointer((*int8)(unsafe.Pointer(&_releasePageNotNullØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3PagerUnrefNotNull(tls, (*XPgHdr)(_pPage.X23))
}
-var _releasePageNotNullØ00__func__Ø000 [19]int8 // -
+var _releasePageNotNullØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_releasePageNotNullØ00__func__Ø000[0], str(19988), 19)
+ crt.Xstrncpy(nil, &_releasePageNotNullØ00__func__Ø000[0], str(20477), 19)
}
-func _btreeReleaseAllCursorPages(tls *crt.TLS, _pCur *XBtCursor) { // sqlite3.c:59633:1
- var _i int32 // sqlite3.c:59634:7
- _ = _i
+// Release all of the apPage[] pages for a cursor.
+func _btreeReleaseAllCursorPages(tls *crt.TLS, _pCur *XBtCursor) {
+ var _i int32
_i = i32(0)
_0:
if _i > int32(_pCur.X14) {
goto _3
}
-
_releasePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_i))))
*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_i))) = nil
_i += 1
goto _0
-
_3:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) = int8(i32(-1))
}
-func _sqlite3BtreeTripAllCursors(tls *crt.TLS, _pBtree *XBtree, _errCode int32, _writeOnly int32) (r0 int32) { // sqlite3.c:62989:1
- var _p *XBtCursor // sqlite3.c:62990:12
- _ = _p
- var _rc int32 // sqlite3.c:62991:7
- _ = _rc
- var _2_i int32 // sqlite3.c:62997:11
- _ = _2_i
+// This routine sets the state to CURSOR_FAULT and the error
+// code to errCode for every cursor on any BtShared that pBtree
+// references. Or if the writeOnly flag is set to 1, then only
+// trip write cursors and leave read cursors unchanged.
+//
+// Every cursor is a candidate to be tripped, including cursors
+// that belong to other database connections that happen to be
+// sharing the cache with pBtree.
+//
+// This routine gets called when a rollback occurs. If the writeOnly
+// flag is true, then only write-cursors need be tripped - read-only
+// cursors save their current positions so that they may continue
+// following the rollback. Or, if writeOnly is false, all cursors are
+// tripped. In general, writeOnly is false if the transaction being
+// rolled back modified the database schema. In this case b-tree root
+// pages may be moved or deleted from the database altogether, making
+// it unsafe for read cursors to continue.
+//
+// If the writeOnly flag is true and an error is encountered while
+// saving the current position of a read-only cursor, all cursors,
+// including all read-cursors are tripped.
+//
+// SQLITE_OK is returned if successful, or if an error occurs while
+// saving a cursor position, an SQLite error code.
+func _sqlite3BtreeTripAllCursors(tls *crt.TLS, _pBtree *XBtree, _errCode int32, _writeOnly int32) (r0 int32) {
+ var _rc, _2_i int32
+ var _p *XBtCursor
_rc = i32(0)
func() {
if _writeOnly != i32(0) && _writeOnly != i32(1) || i32(1) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62993), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeTripAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(20008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62993), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeTripAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(20496)))
crt.X__builtin_abort(tls)
}
}()
if _pBtree == nil {
goto _4
}
-
_sqlite3BtreeEnter(tls, _pBtree)
_p = (*XBtCursor)((*XBtShared)(_pBtree.X1).X2)
_5:
if _p == nil {
goto _8
}
-
if _writeOnly == 0 || (int32(_p.X10)&i32(1)) != i32(0) {
goto _10
}
-
if int32(_p.X12) != i32(1) && int32(_p.X12) != i32(2) {
goto _12
}
-
_rc = _saveCursorPosition(tls, _p)
- if _rc == i32(0) {
- goto _13
+ if _rc != i32(0) {
+ _sqlite3BtreeTripAllCursors(tls, _pBtree, _rc, i32(0))
+ goto _8
}
-
- _sqlite3BtreeTripAllCursors(tls, _pBtree, _rc, i32(0))
- goto _8
-
-_13:
_12:
goto _14
-
_10:
_sqlite3BtreeClearCursor(tls, _p)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(62 /* X12 */))) = uint8(i32(4))
@@ -20582,32 +19929,30 @@ _15:
if _2_i > int32(_p.X14) {
goto _18
}
-
_releasePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(112 /* X19 */))))) + 4*uintptr(_2_i))))
*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(112 /* X19 */))))) + 4*uintptr(_2_i))) = nil
_2_i += 1
goto _15
-
_18:
_p = (*XBtCursor)(_p.X2)
goto _5
-
_8:
_sqlite3BtreeLeave(tls, _pBtree)
_4:
return _rc
}
-var _sqlite3BtreeTripAllCursorsØ00__func__Ø000 [27]int8 // -
+var _sqlite3BtreeTripAllCursorsØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeTripAllCursorsØ00__func__Ø000[0], str(20060), 27)
+ crt.Xstrncpy(nil, &_sqlite3BtreeTripAllCursorsØ00__func__Ø000[0], str(20548), 27)
}
-func _sqlite3BtreeClearCursor(tls *crt.TLS, _pCur *XBtCursor) { // sqlite3.c:59780:1
+// Clear the current cursor position.
+func _sqlite3BtreeClearCursor(tls *crt.TLS, _pCur *XBtCursor) {
func() {
if _cursorHoldsMutex(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59781), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeClearCursorØ00__func__Ø000))), unsafe.Pointer(str(9120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59781), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeClearCursorØ00__func__Ø000))), unsafe.Pointer(str(10275)))
crt.X__builtin_abort(tls)
}
}()
@@ -20616,189 +19961,190 @@ func _sqlite3BtreeClearCursor(tls *crt.TLS, _pCur *XBtCursor) { // sqlite3.c:597
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
}
-var _sqlite3BtreeClearCursorØ00__func__Ø000 [24]int8 // -
+var _sqlite3BtreeClearCursorØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeClearCursorØ00__func__Ø000[0], str(20088), 24)
+ crt.Xstrncpy(nil, &_sqlite3BtreeClearCursorØ00__func__Ø000[0], str(20575), 24)
}
-func _sqlite3PagerPagecount(tls *crt.TLS, _pPager *XPager, _pnPage *int32) { // sqlite3.c:50790:1
+// This function may only be called when a read-transaction is open on
+// the pager. It returns the total number of pages in the database.
+//
+// However, if the file is between 1 and bytes in size, then
+// this is considered a 1 page file.
+func _sqlite3PagerPagecount(tls *crt.TLS, _pPager *XPager, _pnPage *int32) {
func() {
if int32(_pPager.X14) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(17540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(18157)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(20112)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(20599)))
crt.X__builtin_abort(tls)
}
}()
*_pnPage = int32(_pPager.X22)
}
-var _sqlite3PagerPagecountØ00__func__Ø000 [22]int8 // -
+var _sqlite3PagerPagecountØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerPagecountØ00__func__Ø000[0], str(20152), 22)
+ crt.Xstrncpy(nil, &_sqlite3PagerPagecountØ00__func__Ø000[0], str(20637), 22)
}
-func _countValidCursors(tls *crt.TLS, _pBt *XBtShared, _wrOnly int32) (r0 int32) { // sqlite3.c:62118:1
- var _pCur *XBtCursor // sqlite3.c:62119:12
- _ = _pCur
- var _r int32 // sqlite3.c:62120:7
- _ = _r
+// Return the number of cursors open on pBt. This is for use
+// in assert() expressions, so it is only compiled if NDEBUG is not
+// defined.
+//
+// Only write cursors are counted if wrOnly is true. If wrOnly is
+// false then all cursors are counted.
+//
+// For the purposes of this routine, a cursor is any cursor that
+// is capable of reading or writing to the database. Cursors that
+// have been tripped into the CURSOR_FAULT state are not counted.
+func _countValidCursors(tls *crt.TLS, _pBt *XBtShared, _wrOnly int32) (r0 int32) {
+ var _r int32
+ var _pCur *XBtCursor
_r = i32(0)
_pCur = (*XBtCursor)(_pBt.X2)
_0:
if _pCur == nil {
goto _3
}
-
- if _wrOnly != i32(0) && (int32(_pCur.X10)&i32(1)) == i32(0) || int32(_pCur.X12) == i32(4) {
- goto _6
+ if ((_wrOnly == i32(0)) || ((int32(_pCur.X10) & i32(1)) != i32(0))) && (int32(_pCur.X12) != i32(4)) {
+ _r += 1
}
-
- _r += 1
-_6:
_pCur = (*XBtCursor)(_pCur.X2)
goto _0
-
_3:
return _r
}
-func _btreeClearHasContent(tls *crt.TLS, _pBt *XBtShared) { // sqlite3.c:59625:1
+// Clear (destroy) the BtShared.pHasContent bitvec. This should be
+// invoked at the conclusion of each write-transaction.
+func _btreeClearHasContent(tls *crt.TLS, _pBt *XBtShared) {
_sqlite3BitvecDestroy(tls, (*XBitvec)(_pBt.X22))
*(**XBitvec)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(60 /* X22 */))))) = nil
}
-func _btreeEndTransaction(tls *crt.TLS, _p *XBtree) { // sqlite3.c:62858:1
- var _pBt *XBtShared // sqlite3.c:62859:12
- _ = _pBt
- var _db *Xsqlite3 // sqlite3.c:62860:11
- _ = _db
+// This function is called from both BtreeCommitPhaseTwo() and BtreeRollback()
+// at the conclusion of a transaction.
+func _btreeEndTransaction(tls *crt.TLS, _p *XBtree) {
+ var _db *Xsqlite3
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_p.X1)
_db = (*Xsqlite3)(_p.X0)
func() {
if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62861), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEndTransactionØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62861), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEndTransactionØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(19 /* X7 */))) = uint8(i32(0))
- if int32(_p.X2) <= i32(0) || (_db.X35) <= i32(1) {
- goto _3
+ if (int32(_p.X2) > i32(0)) && ((_db.X35) > i32(1)) {
+ _downgradeAllSharedCacheTableLocks(tls, _p)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = uint8(i32(1))
+ goto _4
}
-
- _downgradeAllSharedCacheTableLocks(tls, _p)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = uint8(i32(1))
- goto _4
-
-_3:
if int32(_p.X2) == i32(0) {
goto _5
}
-
_clearAllSharedCacheTableLocks(tls, _p)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(40 /* X17 */))) -= 1
- if i32(0) != (_pBt.X17) {
- goto _6
+ if i32(0) == (_pBt.X17) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(20 /* X8 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(20 /* X8 */))) = uint8(i32(0))
-_6:
_5:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = uint8(i32(0))
_unlockBtreeIfUnused(tls, _pBt)
_4:
func() {
if int32((*XBtShared)(_p.X1).X8) == i32(0) && ((*XBtShared)(_p.X1).X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62891), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEndTransactionØ00__func__Ø000))), unsafe.Pointer(str(8808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62891), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEndTransactionØ00__func__Ø000))), unsafe.Pointer(str(9977)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XBtShared)(_p.X1).X8) < int32(_p.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62891), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEndTransactionØ00__func__Ø000))), unsafe.Pointer(str(8872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62891), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeEndTransactionØ00__func__Ø000))), unsafe.Pointer(str(10038)))
crt.X__builtin_abort(tls)
}
}()
}
-var _btreeEndTransactionØ00__func__Ø000 [20]int8 // -
+var _btreeEndTransactionØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_btreeEndTransactionØ00__func__Ø000[0], str(20176), 20)
+ crt.Xstrncpy(nil, &_btreeEndTransactionØ00__func__Ø000[0], str(20659), 20)
}
-func _downgradeAllSharedCacheTableLocks(tls *crt.TLS, _p *XBtree) { // sqlite3.c:59461:1
- var _pBt *XBtShared // sqlite3.c:59462:12
- _ = _pBt
- var _1_pLock *XBtLock // sqlite3.c:59464:12
- _ = _1_pLock
+// This function changes all write-locks held by Btree p into read-locks.
+func _downgradeAllSharedCacheTableLocks(tls *crt.TLS, _p *XBtree) {
+ var _pBt *XBtShared
+ var _1_pLock *XBtLock
_pBt = (*XBtShared)(_p.X1)
if (*XBtree)(_pBt.X26) != _p {
goto _0
}
-
*(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(76 /* X26 */))))) = nil
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
*p = uint16(int32(*p) & i32(-97))
- sink12 = *p
+ sink14 = *p
}
_1_pLock = (*XBtLock)(_pBt.X25)
_1:
if _1_pLock == nil {
goto _4
}
-
func() {
if int32(_1_pLock.X2) != i32(1) && (*XBtree)(_1_pLock.X0) != _p {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59468), unsafe.Pointer((*int8)(unsafe.Pointer(&_downgradeAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20196)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59468), unsafe.Pointer((*int8)(unsafe.Pointer(&_downgradeAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20679)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLock)) + uintptr(8 /* X2 */))) = uint8(i32(1))
_1_pLock = (*XBtLock)(_1_pLock.X3)
goto _1
-
_4:
_0:
}
-var _downgradeAllSharedCacheTableLocksØ00__func__Ø000 [34]int8 // -
+var _downgradeAllSharedCacheTableLocksØ00__func__Ø000 [34]int8
func init() {
- crt.Xstrncpy(nil, &_downgradeAllSharedCacheTableLocksØ00__func__Ø000[0], str(20240), 34)
+ crt.Xstrncpy(nil, &_downgradeAllSharedCacheTableLocksØ00__func__Ø000[0], str(20723), 34)
}
-func _clearAllSharedCacheTableLocks(tls *crt.TLS, _p *XBtree) { // sqlite3.c:59417:1
- var _pBt *XBtShared // sqlite3.c:59418:12
- _ = _pBt
- var _ppIter **XBtLock // sqlite3.c:59419:10
- _ = _ppIter
- var _1_pLock *XBtLock // sqlite3.c:59426:12
- _ = _1_pLock
+// Release all the table locks (locks obtained via calls to
+// the setSharedCacheTableLock() procedure) held by Btree object p.
+//
+// This function assumes that Btree p has an open read or write
+// transaction. If it does not, then the BTS_PENDING flag
+// may be incorrectly cleared.
+func _clearAllSharedCacheTableLocks(tls *crt.TLS, _p *XBtree) {
+ var _pBt *XBtShared
+ var _1_pLock *XBtLock
+ var _ppIter **XBtLock
_pBt = (*XBtShared)(_p.X1)
_ppIter = (**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(72 /* X25 */)))))
func() {
if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59421), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59421), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X3) == 0 && nil != (*_ppIter) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59422), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59422), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20757)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X2) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59423), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20304)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59423), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20783)))
crt.X__builtin_abort(tls)
}
}()
@@ -20806,152 +20152,136 @@ _7:
if (*_ppIter) == nil {
goto _8
}
-
_1_pLock = *_ppIter
func() {
if (int32(_pBt.X10)&i32(32)) != i32(0) && (*XBtree)(_pBt.X26) != (*XBtree)(_1_pLock.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59427), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20320)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59427), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20796)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XBtree)(_1_pLock.X0).X2) < int32(_1_pLock.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59428), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20388)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59428), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20862)))
crt.X__builtin_abort(tls)
}
}()
if (*XBtree)(_1_pLock.X0) != _p {
goto _14
}
-
*_ppIter = (*XBtLock)(_1_pLock.X3)
func() {
if (_1_pLock.X1) == uint32(i32(1)) && _1_pLock != (*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59431), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20428)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59431), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20899)))
crt.X__builtin_abort(tls)
}
}()
- if (_1_pLock.X1) == uint32(i32(1)) {
- goto _18
+ if (_1_pLock.X1) != uint32(i32(1)) {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_1_pLock))
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_1_pLock))
-_18:
goto _19
-
_14:
_ppIter = (**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLock)) + uintptr(12 /* X3 */)))))
_19:
goto _7
-
_8:
func() {
if (int32(_pBt.X10)&i32(64)) != i32(0) && (*XBtree)(_pBt.X26) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59440), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20464)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59440), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearAllSharedCacheTableLocksØ00__func__Ø000))), unsafe.Pointer(str(20935)))
crt.X__builtin_abort(tls)
}
}()
- if (*XBtree)(_pBt.X26) != _p {
- goto _23
- }
-
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(76 /* X26 */))))) = nil
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) & i32(-97))
- sink12 = *p
- }
- goto _24
-
-_23:
- if (_pBt.X17) != i32(2) {
- goto _25
+ if (*XBtree)(_pBt.X26) == _p {
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(76 /* X26 */))))) = nil
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) & i32(-97))
+ sink14 = *p
+ }
+ goto _24
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) & i32(-65))
- sink12 = *p
+ if (_pBt.X17) == i32(2) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) & i32(-65))
+ sink14 = *p
+ }
}
-_25:
_24:
}
-var _clearAllSharedCacheTableLocksØ00__func__Ø000 [30]int8 // -
+var _clearAllSharedCacheTableLocksØ00__func__Ø000 [30]int8
func init() {
- crt.Xstrncpy(nil, &_clearAllSharedCacheTableLocksØ00__func__Ø000[0], str(20516), 30)
+ crt.Xstrncpy(nil, &_clearAllSharedCacheTableLocksØ00__func__Ø000[0], str(20984), 30)
}
-func _unlockBtreeIfUnused(tls *crt.TLS, _pBt *XBtShared) { // sqlite3.c:62137:1
- var _1_pPage1 *XMemPage // sqlite3.c:62141:13
- _ = _1_pPage1
+// If there are no outstanding cursors and we are not in the middle
+// of a transaction but there is a read lock on the database, then
+// this routine unrefs the first page of the database file which
+// has the effect of releasing the read lock.
+//
+// If there is a transaction in progress, this routine is a no-op.
+func _unlockBtreeIfUnused(tls *crt.TLS, _pBt *XBtShared) {
+ var _1_pPage1 *XMemPage
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62138), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62138), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _countValidCursors(tls, _pBt, i32(0)) != i32(0) && int32(_pBt.X8) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62139), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(20548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62139), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(21014)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pBt.X8) != i32(0) || (*XMemPage)(_pBt.X3) == nil {
- goto _6
+ if (int32(_pBt.X8) == i32(0)) && ((*XMemPage)(_pBt.X3) != nil) {
+ _1_pPage1 = (*XMemPage)(_pBt.X3)
+ func() {
+ if (_1_pPage1.X19) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62142), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(21075)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _sqlite3PagerRefcount(tls, (*XPager)(_pBt.X0)) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62143), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(21089)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XMemPage)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(12 /* X3 */))))) = nil
+ _releasePageNotNull(tls, _1_pPage1)
}
-
- _1_pPage1 = (*XMemPage)(_pBt.X3)
- func() {
- if (_1_pPage1.X19) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62142), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(20612)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _sqlite3PagerRefcount(tls, (*XPager)(_pBt.X0)) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62143), unsafe.Pointer((*int8)(unsafe.Pointer(&_unlockBtreeIfUnusedØ00__func__Ø000))), unsafe.Pointer(str(20628)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XMemPage)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(12 /* X3 */))))) = nil
- _releasePageNotNull(tls, _1_pPage1)
-_6:
}
-var _unlockBtreeIfUnusedØ00__func__Ø000 [20]int8 // -
+var _unlockBtreeIfUnusedØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_unlockBtreeIfUnusedØ00__func__Ø000[0], str(20668), 20)
+ crt.Xstrncpy(nil, &_unlockBtreeIfUnusedØ00__func__Ø000[0], str(21126), 20)
}
-func _sqlite3PagerRefcount(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:53522:1
+// Return the sum of the reference counts for all pages held by pPager.
+func _sqlite3PagerRefcount(tls *crt.TLS, _pPager *XPager) (r0 int32) {
return _sqlite3PcacheRefCount(tls, (*XPCache)(_pPager.X59))
}
-func _sqlite3ResetAllSchemasOfConnection(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:100241:1
- var _i int32 // sqlite3.c:100242:7
- _ = _i
- var _1_pDb *XDb // sqlite3.c:100245:8
- _ = _1_pDb
+// Erase all schema information from all attached databases (including
+// "main" and "temp") for a single database connection.
+func _sqlite3ResetAllSchemasOfConnection(tls *crt.TLS, _db *Xsqlite3) {
+ var _i int32
+ var _1_pDb *XDb
_sqlite3BtreeEnterAll(tls, _db)
_i = i32(0)
_0:
if _i >= (_db.X5) {
goto _3
}
-
_1_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
- if (*XSchema)(_1_pDb.X4) == nil {
- goto _4
+ if (*XSchema)(_1_pDb.X4) != nil {
+ _sqlite3SchemaClear(tls, _1_pDb.X4)
}
-
- _sqlite3SchemaClear(tls, _1_pDb.X4)
-_4:
_i += 1
goto _0
-
_3:
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
@@ -20963,17 +20293,17 @@ _3:
_sqlite3CollapseDatabaseArray(tls, _db)
}
-func _sqlite3SchemaClear(tls *crt.TLS, _p unsafe.Pointer) { // sqlite3.c:104581:1
- var _temp1 XHash // sqlite3.c:104582:8
- _ = _temp1
- var _temp2 XHash // sqlite3.c:104583:8
- _ = _temp2
- var _pElem *XHashElem // sqlite3.c:104584:12
- _ = _pElem
- var _pSchema *XSchema // sqlite3.c:104585:10
- _ = _pSchema
- var _2_pTab *XTable // sqlite3.c:104597:11
- _ = _2_pTab
+// Free all resources held by the schema structure. The void* argument points
+// at a Schema struct. This function does not call sqlite3DbFree(db, ) on the
+// pointer itself, it just cleans up subsidiary resources (i.e. the contents
+// of the schema hash tables).
+//
+// The Schema.cache_size variable is not cleared.
+func _sqlite3SchemaClear(tls *crt.TLS, _p unsafe.Pointer) {
+ var _temp1, _temp2 XHash
+ var _pSchema *XSchema
+ var _pElem *XHashElem
+ var _2_pTab *XTable
_pSchema = (*XSchema)(_p)
_temp1 = _pSchema.X2
_temp2 = _pSchema.X4
@@ -20984,11 +20314,9 @@ _0:
if _pElem == nil {
goto _3
}
-
_sqlite3DeleteTrigger(tls, nil, (*XTrigger)(_pElem.X2))
_pElem = (*XHashElem)(_pElem.X0)
goto _0
-
_3:
_sqlite3HashClear(tls, &_temp2)
_sqlite3HashInit(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema))+uintptr(8 /* X2 */))))
@@ -20997,33 +20325,34 @@ _4:
if _pElem == nil {
goto _7
}
-
_2_pTab = (*XTable)(_pElem.X2)
_sqlite3DeleteTable(tls, nil, _2_pTab)
_pElem = (*XHashElem)(_pElem.X0)
goto _4
-
_7:
_sqlite3HashClear(tls, &_temp1)
_sqlite3HashClear(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema))+uintptr(56 /* X5 */))))
*(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(72 /* X6 */))))) = nil
- if (int32(_pSchema.X9) & i32(1)) == 0 {
- goto _8
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(4 /* X1 */))) += 1
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(78 /* X9 */)))
- *p = uint16(int32(*p) & i32(-2))
- sink12 = *p
+ if (int32(_pSchema.X9) & i32(1)) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(4 /* X1 */))) += 1
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(78 /* X9 */)))
+ *p = uint16(int32(*p) & i32(-2))
+ sink14 = *p
+ }
}
-_8:
+ _ = _temp1
+ _ = _temp2
}
-func _sqlite3HashInit(tls *crt.TLS, _pNew *XHash) { // sqlite3.c:29249:1
+// Turn bulk memory into a hash table object by initializing the
+// fields of the Hash structure.
+//
+// "pNew" is a pointer to the hash table that is to be initialized.
+func _sqlite3HashInit(tls *crt.TLS, _pNew *XHash) {
func() {
if _pNew == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInitØ00__func__Ø000))), unsafe.Pointer(str(20688)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInitØ00__func__Ø000))), unsafe.Pointer(str(21146)))
crt.X__builtin_abort(tls)
}
}()
@@ -21033,20 +20362,20 @@ func _sqlite3HashInit(tls *crt.TLS, _pNew *XHash) { // sqlite3.c:29249:1
*(**T_ht)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X3 */))))) = nil
}
-var _sqlite3HashInitØ00__func__Ø000 [16]int8 // -
+var _sqlite3HashInitØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3HashInitØ00__func__Ø000[0], str(20696), 16)
+ crt.Xstrncpy(nil, &_sqlite3HashInitØ00__func__Ø000[0], str(21154), 16)
}
-func _sqlite3HashClear(tls *crt.TLS, _pH *XHash) { // sqlite3.c:29261:1
- var _elem *XHashElem // sqlite3.c:29262:12
- _ = _elem
- var _1_next_elem *XHashElem // sqlite3.c:29271:14
- _ = _1_next_elem
+// Remove all entries from a hash table. Reclaim all memory.
+// Call this routine to delete a hash table or to reset a hash table
+// to the empty state.
+func _sqlite3HashClear(tls *crt.TLS, _pH *XHash) {
+ var _elem, _1_next_elem *XHashElem
func() {
if _pH == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29264), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashClearØ00__func__Ø000))), unsafe.Pointer(str(20712)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29264), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashClearØ00__func__Ø000))), unsafe.Pointer(str(21170)))
crt.X__builtin_abort(tls)
}
}()
@@ -21056,32 +20385,26 @@ func _sqlite3HashClear(tls *crt.TLS, _pH *XHash) { // sqlite3.c:29261:1
*(**T_ht)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(12 /* X3 */))))) = nil
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(0 /* X0 */))) = uint32(i32(0))
_2:
- if _elem == nil {
- goto _3
+ if _elem != nil {
+ _1_next_elem = (*XHashElem)(_elem.X0)
+ Xsqlite3_free(tls, (unsafe.Pointer)(_elem))
+ _elem = _1_next_elem
+ goto _2
}
-
- _1_next_elem = (*XHashElem)(_elem.X0)
- Xsqlite3_free(tls, (unsafe.Pointer)(_elem))
- _elem = _1_next_elem
- goto _2
-
-_3:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(4 /* X1 */))) = uint32(i32(0))
}
-var _sqlite3HashClearØ00__func__Ø000 [17]int8 // -
+var _sqlite3HashClearØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3HashClearØ00__func__Ø000[0], str(20720), 17)
+ crt.Xstrncpy(nil, &_sqlite3HashClearØ00__func__Ø000[0], str(21176), 17)
}
-func _sqlite3DeleteTrigger(tls *crt.TLS, _db *Xsqlite3, _pTrigger *XTrigger) { // sqlite3.c:123108:1
- if _pTrigger != nil {
- goto _0
+// Recursively delete a Trigger structure
+func _sqlite3DeleteTrigger(tls *crt.TLS, _db *Xsqlite3, _pTrigger *XTrigger) {
+ if _pTrigger == nil {
+ return
}
- return
-
-_0:
_sqlite3DeleteTriggerStep(tls, _db, (*XTriggerStep)(_pTrigger.X8))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pTrigger.X0))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pTrigger.X1))
@@ -21090,136 +20413,111 @@ _0:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pTrigger))
}
-func _sqlite3DeleteTriggerStep(tls *crt.TLS, _db *Xsqlite3, _pTriggerStep *XTriggerStep) { // sqlite3.c:122663:1
- var _1_pTmp *XTriggerStep // sqlite3.c:122665:17
- _ = _1_pTmp
+// Delete a linked list of TriggerStep structures.
+func _sqlite3DeleteTriggerStep(tls *crt.TLS, _db *Xsqlite3, _pTriggerStep *XTriggerStep) {
+ var _1_pTmp *XTriggerStep
_0:
- if _pTriggerStep == nil {
- goto _1
+ if _pTriggerStep != nil {
+ _1_pTmp = _pTriggerStep
+ _pTriggerStep = (*XTriggerStep)(_pTriggerStep.X8)
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_1_pTmp.X5))
+ _sqlite3ExprListDelete(tls, _db, (*XExprList)(_1_pTmp.X6))
+ _sqlite3SelectDelete(tls, _db, (*XSelect)(_1_pTmp.X3))
+ _sqlite3IdListDelete(tls, _db, (*XIdList)(_1_pTmp.X7))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pTmp))
+ goto _0
}
-
- _1_pTmp = _pTriggerStep
- _pTriggerStep = (*XTriggerStep)(_pTriggerStep.X8)
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_1_pTmp.X5))
- _sqlite3ExprListDelete(tls, _db, (*XExprList)(_1_pTmp.X6))
- _sqlite3SelectDelete(tls, _db, (*XSelect)(_1_pTmp.X3))
- _sqlite3IdListDelete(tls, _db, (*XIdList)(_1_pTmp.X7))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pTmp))
- goto _0
-
-_1:
}
-func _sqlite3ExprDelete(tls *crt.TLS, _db *Xsqlite3, _p *XExpr) { // sqlite3.c:91938:1
- if _p == nil {
- goto _0
+func _sqlite3ExprDelete(tls *crt.TLS, _db *Xsqlite3, _p *XExpr) {
+ if _p != nil {
+ _sqlite3ExprDeleteNN(tls, _db, _p)
}
-
- _sqlite3ExprDeleteNN(tls, _db, _p)
-_0:
}
-func _sqlite3ExprDeleteNN(tls *crt.TLS, _db *Xsqlite3, _p *XExpr) { // sqlite3.c:91911:1
+// Recursively delete an expression tree.
+func _sqlite3ExprDeleteNN(tls *crt.TLS, _db *Xsqlite3, _p *XExpr) {
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if ((_p.X2)&uint32(i32(1024))) != uint32(i32(0)) && (*(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(20740)))
+ if ((_p.X2)&uint32(i32(1024))) != uint32(i32(0)) && (*(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(21193)))
crt.X__builtin_abort(tls)
}
}()
- if ((_p.X2)&uint32(i32(8388608))) == uint32(i32(0)) || ((_p.X2)&uint32(i32(16384))) != uint32(i32(0)) {
- goto _6
+ if (((_p.X2) & uint32(i32(8388608))) != uint32(i32(0))) && (((_p.X2) & uint32(i32(16384))) == uint32(i32(0))) {
+ func() {
+ if (*XExpr)(_p.X4) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91917), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(21244)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XExpr)(_p.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91918), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(21256)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(21269)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- func() {
- if (*XExpr)(_p.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91917), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(20792)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XExpr)(_p.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91918), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(20804)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(20820)))
- crt.X__builtin_abort(tls)
- }
- }()
-_6:
if ((_p.X2) & uint32(i32(8404992))) != uint32(i32(0)) {
goto _13
}
-
func() {
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil && (*XExpr)(_p.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(20836)))
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil && (*XExpr)(_p.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(21285)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExpr)(_p.X4) == nil || int32(_p.X0) == i32(159) {
- goto _18
+ if ((*XExpr)(_p.X4) != nil) && (int32(_p.X0) != i32(159)) {
+ _sqlite3ExprDeleteNN(tls, _db, (*XExpr)(_p.X4))
}
-
- _sqlite3ExprDeleteNN(tls, _db, (*XExpr)(_p.X4))
-_18:
_sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X5))
- if ((_p.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _19
+ if ((_p.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ _sqlite3SelectDelete(tls, _db, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
+ goto _20
}
-
- _sqlite3SelectDelete(tls, _db, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
- goto _20
-
-_19:
- _sqlite3ExprListDelete(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
+ _sqlite3ExprListDelete(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
_20:
_13:
- if ((_p.X2) & uint32(i32(65536))) == uint32(i32(0)) {
- goto _21
+ if ((_p.X2) & uint32(i32(65536))) != uint32(i32(0)) {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))))
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))))
-_21:
- if ((_p.X2) & uint32(i32(32768))) != uint32(i32(0)) {
- goto _22
+ if ((_p.X2) & uint32(i32(32768))) == uint32(i32(0)) {
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
}
-
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
-_22:
}
-var _sqlite3ExprDeleteNNØ00__func__Ø000 [20]int8 // -
+var _sqlite3ExprDeleteNNØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprDeleteNNØ00__func__Ø000[0], str(20868), 20)
+ crt.Xstrncpy(nil, &_sqlite3ExprDeleteNNØ00__func__Ø000[0], str(21315), 20)
}
-func _sqlite3SelectDelete(tls *crt.TLS, _db *Xsqlite3, _p *XSelect) { // sqlite3.c:116692:1
- if _p == nil {
- goto _0
+// Delete the given Select structure and all of its substructures.
+func _sqlite3SelectDelete(tls *crt.TLS, _db *Xsqlite3, _p *XSelect) {
+ if _p != nil {
+ _clearSelect(tls, _db, _p, i32(1))
}
-
- _clearSelect(tls, _db, _p, i32(1))
-_0:
}
-func _clearSelect(tls *crt.TLS, _db *Xsqlite3, _p *XSelect, _bFree int32) { // sqlite3.c:116588:1
- var _1_pPrior *XSelect // sqlite3.c:116590:12
- _ = _1_pPrior
+// Delete all the content of a Select structure. Deallocate the structure
+// itself only if bFree is true.
+func _clearSelect(tls *crt.TLS, _db *Xsqlite3, _p *XSelect, _bFree int32) {
+ var _1_pPrior *XSelect
_0:
if _p == nil {
goto _1
}
-
_1_pPrior = (*XSelect)(_p.X13)
_sqlite3ExprListDelete(tls, _db, (*XExprList)(_p.X0))
_sqlite3SrcListDelete(tls, _db, (*XSrcList)(_p.X8))
@@ -21229,44 +20527,33 @@ _0:
_sqlite3ExprListDelete(tls, _db, (*XExprList)(_p.X12))
_sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X15))
_sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X16))
- if (*XWith)(_p.X17) == nil {
- goto _2
+ if (*XWith)(_p.X17) != nil {
+ _sqlite3WithDelete(tls, _db, (*XWith)(_p.X17))
}
-
- _sqlite3WithDelete(tls, _db, (*XWith)(_p.X17))
-_2:
- if _bFree == 0 {
- goto _3
+ if _bFree != 0 {
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
}
-
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
-_3:
_p = _1_pPrior
_bFree = i32(1)
goto _0
-
_1:
}
-func _sqlite3ExprListDelete(tls *crt.TLS, _db *Xsqlite3, _pList *XExprList) { // sqlite3.c:92564:1
- if _pList == nil {
- goto _0
+func _sqlite3ExprListDelete(tls *crt.TLS, _db *Xsqlite3, _pList *XExprList) {
+ if _pList != nil {
+ _exprListDeleteNN(tls, _db, _pList)
}
-
- _exprListDeleteNN(tls, _db, _pList)
-_0:
}
-func _exprListDeleteNN(tls *crt.TLS, _db *Xsqlite3, _pList *XExprList) { // sqlite3.c:92552:1
- var _i int32 // sqlite3.c:92553:7
- _ = _i
- var _pItem *TExprList_item // sqlite3.c:92554:24
- _ = _pItem
+// Delete an entire expression list.
+func _exprListDeleteNN(tls *crt.TLS, _db *Xsqlite3, _pList *XExprList) {
+ var _i int32
+ var _pItem *TExprList_item
_i = _pList.X0
_pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
func() {
if (_pList.X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92555), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprListDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(20888)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92555), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprListDeleteNNØ00__func__Ø000))), unsafe.Pointer(str(21335)))
crt.X__builtin_abort(tls)
}
}()
@@ -21278,27 +20565,23 @@ _2:
if preInc1(&_i, -1) > i32(0) {
goto _2
}
-
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pList))
+ _ = _i
}
-var _exprListDeleteNNØ00__func__Ø000 [17]int8 // -
+var _exprListDeleteNNØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_exprListDeleteNNØ00__func__Ø000[0], str(20904), 17)
+ crt.Xstrncpy(nil, &_exprListDeleteNNØ00__func__Ø000[0], str(21350), 17)
}
-func _sqlite3SrcListDelete(tls *crt.TLS, _db *Xsqlite3, _pList *XSrcList) { // sqlite3.c:103497:1
- var _i int32 // sqlite3.c:103498:7
- _ = _i
- var _pItem *TSrcList_item // sqlite3.c:103499:23
- _ = _pItem
- if _pList != nil {
- goto _0
+// Delete an entire SrcList including all its substructure.
+func _sqlite3SrcListDelete(tls *crt.TLS, _db *Xsqlite3, _pList *XSrcList) {
+ var _i int32
+ var _pItem *TSrcList_item
+ if _pList == nil {
+ return
}
- return
-
-_0:
*func() *int32 {
_pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
return &_i
@@ -21307,60 +20590,52 @@ _1:
if _i >= (_pList.X0) {
goto _4
}
-
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pItem.X1))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pItem.X2))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pItem.X3))
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _5
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */)))))))
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */)))))))
-_5:
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _6
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _sqlite3ExprListDelete(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */)))))))
}
-
- _sqlite3ExprListDelete(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */)))))))
-_6:
_sqlite3DeleteTable(tls, _db, (*XTable)(_pItem.X4))
_sqlite3SelectDelete(tls, _db, (*XSelect)(_pItem.X5))
_sqlite3ExprDelete(tls, _db, (*XExpr)(_pItem.X12))
_sqlite3IdListDelete(tls, _db, (*XIdList)(_pItem.X13))
*(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pItem }())) += uintptr(68)
goto _1
-
_4:
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pList))
}
-func _sqlite3DeleteTable(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable) { // sqlite3.c:100340:1
- if _pTable != nil {
- goto _0
+func _sqlite3DeleteTable(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable) {
+ if _pTable == nil {
+ return
}
- return
-
-_0:
- if _db != nil && (_db.X79) != nil || preInc5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(32 /* X8 */))), uint32(4294967295)) <= uint32(i32(0)) {
- goto _3
+ if ((_db == nil) || ((_db.X79) == nil)) && (preInc5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(32 /* X8 */))), uint32(4294967295)) > uint32(i32(0))) {
+ return
}
- return
-
-_3:
_deleteTable(tls, _db, _pTable)
}
-func _deleteTable(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable) { // sqlite3.c:100296:1
- var _pIndex *XIndex // sqlite3.c:100297:9
- _ = _pIndex
- var _pNext *XIndex // sqlite3.c:100297:18
- _ = _pNext
- var _nLookaside int32 // sqlite3.c:100298:17
- _ = _nLookaside
- var _2_zName *int8 // sqlite3.c:100312:12
- _ = _2_zName
- var _2_pOld *XIndex // sqlite3.c:100313:24
- _ = _2_pOld
+// Remove the memory data structures associated with the given
+// Table. No changes are made to disk by this routine.
+//
+// This routine just deletes the data structure. It does not unlink
+// the table data structure from the hash table. But it does destroy
+// memory structures of the indices and foreign keys associated with
+// the table.
+//
+// The db parameter is optional. It is needed if the Table object
+// contains lookaside memory. (Table objects in the schema do not use
+// lookaside memory, but some ephemeral Table objects do.) Or the
+// db parameter can be used with db->pnBytesFreed to measure the memory
+// used by the Table object.
+func _deleteTable(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable) {
+ var _nLookaside int32
+ var _2_zName *int8
+ var _pIndex, _pNext, _2_pOld *XIndex
_nLookaside = func() int32 {
if (_db != nil) && (((_pTable.X9) & uint32(i32(2))) == uint32(i32(0))) {
return ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X3)
@@ -21372,37 +20647,32 @@ _3:
if _pIndex == nil {
goto _6
}
-
_pNext = (*XIndex)(_pIndex.X5)
func() {
if (*XSchema)(_pIndex.X6) != (*XSchema)(_pTable.X20) && ((_pTable.X16) == 0 || int32((uint32(_pIndex.X16)<>uint(i32(30))) == i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100309), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(20924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100309), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(21367)))
crt.X__builtin_abort(tls)
}
}()
- if _db != nil && (_db.X79) != nil || (_pTable.X16) != 0 {
- goto _13
+ if ((_db == nil) || ((_db.X79) == nil)) && ((_pTable.X16) == 0) {
+ _2_zName = _pIndex.X0
+ _2_pOld = (*XIndex)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_pIndex.X6)+uintptr(24 /* X3 */))), _2_zName, nil))
+ func() {
+ if _db != nil && _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pIndex.X6)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100316), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(21465)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _2_pOld != _pIndex && _2_pOld != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100317), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(21521)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _2_zName = _pIndex.X0
- _2_pOld = (*XIndex)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_pIndex.X6)+uintptr(24 /* X3 */))), _2_zName, nil))
- func() {
- if _db != nil && _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pIndex.X6)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100316), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(21024)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _2_pOld != _pIndex && _2_pOld != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100317), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(21080)))
- crt.X__builtin_abort(tls)
- }
- }()
-_13:
_freeIndex(tls, _db, _pIndex)
_pIndex = _pNext
goto _3
-
_6:
_sqlite3FkDelete(tls, _db, _pTable)
_sqlite3DeleteColumnNames(tls, _db, _pTable)
@@ -21414,36 +20684,44 @@ _6:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pTable))
func() {
if _nLookaside != i32(0) && _nLookaside != ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))).X3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100338), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(21104)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100338), unsafe.Pointer((*int8)(unsafe.Pointer(&_deleteTableØ00__func__Ø000))), unsafe.Pointer(str(21545)))
crt.X__builtin_abort(tls)
}
}()
}
-var _deleteTableØ00__func__Ø000 [12]int8 // -
+var _deleteTableØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_deleteTableØ00__func__Ø000[0], str(21152), 12)
+ crt.Xstrncpy(nil, &_deleteTableØ00__func__Ø000[0], str(21593), 12)
}
-func _sqlite3HashInsert(tls *crt.TLS, _pH *XHash, _pKey *int8, _data unsafe.Pointer) (r0 unsafe.Pointer) { // sqlite3.c:29465:1
- var _h uint32 // sqlite3.c:29466:16
- _ = _h
- var _elem *XHashElem // sqlite3.c:29467:12
- _ = _elem
- var _new_elem *XHashElem // sqlite3.c:29468:12
- _ = _new_elem
- var _1_old_data unsafe.Pointer // sqlite3.c:29474:10
- _ = _1_old_data
+// Insert an element into the hash table pH. The key is pKey
+// and the data is "data".
+//
+// If no element exists with a matching key, then a new
+// element is created and NULL is returned.
+//
+// If another element already exists with the same key, then the
+// new data replaces the old data and the old data is returned.
+// The key is not copied in this instance. If a malloc fails, then
+// the new data is returned and the hash table is unchanged.
+//
+// If the "data" parameter to this function is NULL, then the
+// element corresponding to "key" is removed from the hash table.
+func _sqlite3HashInsert(tls *crt.TLS, _pH *XHash, _pKey *int8, _data unsafe.Pointer) (r0 unsafe.Pointer) {
+ var _h uint32
+ var _1_old_data unsafe.Pointer
+ var _elem, _new_elem *XHashElem
func() {
if _pH == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29470), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInsertØ00__func__Ø000))), unsafe.Pointer(str(20712)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29470), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInsertØ00__func__Ø000))), unsafe.Pointer(str(21170)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pKey == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29471), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInsertØ00__func__Ø000))), unsafe.Pointer(str(21164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29471), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInsertØ00__func__Ø000))), unsafe.Pointer(str(21605)))
crt.X__builtin_abort(tls)
}
}()
@@ -21451,54 +20729,39 @@ func _sqlite3HashInsert(tls *crt.TLS, _pH *XHash, _pKey *int8, _data unsafe.Poin
if _elem == nil {
goto _4
}
-
_1_old_data = _elem.X2
- if _data != nil {
- goto _5
+ if _data == nil {
+ _removeElementGivenHash(tls, _pH, _elem, _h)
+ goto _6
}
-
- _removeElementGivenHash(tls, _pH, _elem, _h)
- goto _6
-
-_5:
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_elem)) + uintptr(8 /* X2 */))) = _data
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_elem)) + uintptr(12 /* X3 */))) = _pKey
_6:
return _1_old_data
_4:
- if _data != nil {
- goto _7
+ if _data == nil {
+ return nil
}
- return nil
-
-_7:
_new_elem = (*XHashElem)(_sqlite3Malloc(tls, uint64(u32(16))))
- if _new_elem != nil {
- goto _8
+ if _new_elem == nil {
+ return _data
}
- return _data
-
-_8:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_new_elem)) + uintptr(12 /* X3 */))) = _pKey
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_new_elem)) + uintptr(8 /* X2 */))) = _data
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(4 /* X1 */))) += 1
if (_pH.X1) < uint32(i32(10)) || (_pH.X1) <= (uint32(i32(2))*(_pH.X0)) {
goto _10
}
-
- if _rehash(tls, _pH, (_pH.X1)*uint32(i32(2))) == 0 {
- goto _11
+ if _rehash(tls, _pH, (_pH.X1)*uint32(i32(2))) != 0 {
+ func() {
+ if (_pH.X0) <= uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29491), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInsertØ00__func__Ø000))), unsafe.Pointer(str(21613)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _h = _strHash(tls, _pKey) % (_pH.X0)
}
-
- func() {
- if (_pH.X0) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29491), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashInsertØ00__func__Ø000))), unsafe.Pointer(str(21172)))
- crt.X__builtin_abort(tls)
- }
- }()
- _h = _strHash(tls, _pKey) % (_pH.X0)
-_11:
_10:
_insertElement(tls, _pH, func() *T_ht {
if (*T_ht)(_pH.X3) != nil {
@@ -21509,32 +20772,27 @@ _10:
return nil
}
-var _sqlite3HashInsertØ00__func__Ø000 [18]int8 // -
+var _sqlite3HashInsertØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3HashInsertØ00__func__Ø000[0], str(21188), 18)
+ crt.Xstrncpy(nil, &_sqlite3HashInsertØ00__func__Ø000[0], str(21626), 18)
}
-func _findElementWithHash(tls *crt.TLS, _pH *XHash, _pKey *int8, _pHash *uint32) (r0 *XHashElem) { // sqlite3.c:29372:1
- var _elem *XHashElem // sqlite3.c:29377:12
- _ = _elem
- var _count int32 // sqlite3.c:29378:7
- _ = _count
- var _h uint32 // sqlite3.c:29379:16
- _ = _h
- var _1_pEntry *T_ht // sqlite3.c:29382:16
- _ = _1_pEntry
- if (*T_ht)(_pH.X3) == nil {
- goto _0
+// This function (for internal use only) locates an element in an
+// hash table that matches the given key. The hash for this key is
+// also computed and returned in the *pH parameter.
+func _findElementWithHash(tls *crt.TLS, _pH *XHash, _pKey *int8, _pHash *uint32) (r0 *XHashElem) {
+ var _count int32
+ var _h uint32
+ var _elem *XHashElem
+ var _1_pEntry *T_ht
+ if (*T_ht)(_pH.X3) != nil {
+ _h = _strHash(tls, _pKey) % (_pH.X0)
+ _1_pEntry = (*T_ht)(unsafe.Pointer(uintptr(_pH.X3) + 8*uintptr(_h)))
+ _elem = (*XHashElem)(_1_pEntry.X1)
+ _count = _1_pEntry.X0
+ goto _1
}
-
- _h = _strHash(tls, _pKey) % (_pH.X0)
- _1_pEntry = (*T_ht)(unsafe.Pointer(uintptr(_pH.X3) + 8*uintptr(_h)))
- _elem = (*XHashElem)(_1_pEntry.X1)
- _count = _1_pEntry.X0
- goto _1
-
-_0:
_h = uint32(i32(0))
_elem = (*XHashElem)(_pH.X2)
_count = int32(_pH.X1)
@@ -21544,155 +20802,126 @@ _2:
if postInc1(&_count, int32(-1)) == 0 {
goto _3
}
-
func() {
if _elem == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29394), unsafe.Pointer((*int8)(unsafe.Pointer(&_findElementWithHashØ00__func__Ø000))), unsafe.Pointer(str(21208)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29394), unsafe.Pointer((*int8)(unsafe.Pointer(&_findElementWithHashØ00__func__Ø000))), unsafe.Pointer(str(21644)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3StrICmp(tls, _elem.X3, _pKey) != i32(0) {
- goto _6
+ if _sqlite3StrICmp(tls, _elem.X3, _pKey) == i32(0) {
+ return _elem
}
- return _elem
-
-_6:
_elem = (*XHashElem)(_elem.X0)
goto _2
-
_3:
return nil
+
+ _ = _count
+ panic(0)
}
-func _strHash(tls *crt.TLS, _z *int8) (r0 uint32) { // sqlite3.c:29281:1
- var _h uint32 // sqlite3.c:29282:16
- _ = _h
- var _c uint8 // sqlite3.c:29283:17
- _ = _c
+// The hashing function.
+func _strHash(tls *crt.TLS, _z *int8) (r0 uint32) {
+ var _h uint32
+ var _c uint8
_h = u32(0)
_0:
- if int32(store2(&_c, uint8(*postInc0(&_z, 1)))) == i32(0) {
- goto _1
- }
-
- {
- p := &_h
- *p = (*p) + uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(_c))))
- sink5 = *p
- }
- {
- p := &_h
- *p = (*p) * u32(2654435761)
- sink5 = *p
+ if int32(store2(&_c, uint8(*postInc0(&_z, 1)))) != i32(0) {
+ {
+ p := &_h
+ *p = (*p) + uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(_c))))
+ sink5 = *p
+ }
+ {
+ p := &_h
+ *p = (*p) * u32(2654435761)
+ sink5 = *p
+ }
+ goto _0
}
- goto _0
-
-_1:
return _h
}
-var _findElementWithHashØ00__func__Ø000 [20]int8 // -
+var _findElementWithHashØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_findElementWithHashØ00__func__Ø000[0], str(21216), 20)
+ crt.Xstrncpy(nil, &_findElementWithHashØ00__func__Ø000[0], str(21652), 20)
}
-func _removeElementGivenHash(tls *crt.TLS, _pH *XHash, _elem *XHashElem, _h uint32) { // sqlite3.c:29406:1
- var _pEntry *T_ht // sqlite3.c:29411:14
- _ = _pEntry
- if (*XHashElem)(_elem.X1) == nil {
- goto _0
+// Remove a single entry from the hash table given a pointer to that
+// element and a hash on the element's key.
+func _removeElementGivenHash(tls *crt.TLS, _pH *XHash, _elem *XHashElem, _h uint32) {
+ var _pEntry *T_ht
+ if (*XHashElem)(_elem.X1) != nil {
+ *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_elem.X1) + uintptr(0 /* X0 */))))) = (*XHashElem)(_elem.X0)
+ goto _1
}
-
- *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_elem.X1) + uintptr(0 /* X0 */))))) = (*XHashElem)(_elem.X0)
- goto _1
-
-_0:
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(8 /* X2 */))))) = (*XHashElem)(_elem.X0)
_1:
- if (*XHashElem)(_elem.X0) == nil {
- goto _2
+ if (*XHashElem)(_elem.X0) != nil {
+ *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_elem.X0) + uintptr(4 /* X1 */))))) = (*XHashElem)(_elem.X1)
}
-
- *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_elem.X0) + uintptr(4 /* X1 */))))) = (*XHashElem)(_elem.X1)
-_2:
if (*T_ht)(_pH.X3) == nil {
goto _3
}
-
_pEntry = (*T_ht)(unsafe.Pointer(uintptr(_pH.X3) + 8*uintptr(_h)))
- if (*XHashElem)(_pEntry.X1) != _elem {
- goto _4
+ if (*XHashElem)(_pEntry.X1) == _elem {
+ *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(4 /* X1 */))))) = (*XHashElem)(_elem.X0)
}
-
- *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(4 /* X1 */))))) = (*XHashElem)(_elem.X0)
-_4:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(0 /* X0 */))) -= 1
func() {
if (_pEntry.X0) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29426), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeElementGivenHashØ00__func__Ø000))), unsafe.Pointer(str(21236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29426), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeElementGivenHashØ00__func__Ø000))), unsafe.Pointer(str(21672)))
crt.X__builtin_abort(tls)
}
}()
_3:
Xsqlite3_free(tls, (unsafe.Pointer)(_elem))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(4 /* X1 */))) -= 1
- if (_pH.X1) != uint32(i32(0)) {
- goto _7
+ if (_pH.X1) == uint32(i32(0)) {
+ func() {
+ if (*XHashElem)(_pH.X2) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29431), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeElementGivenHashØ00__func__Ø000))), unsafe.Pointer(str(21689)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pH.X1) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29432), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeElementGivenHashØ00__func__Ø000))), unsafe.Pointer(str(21702)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3HashClear(tls, _pH)
}
-
- func() {
- if (*XHashElem)(_pH.X2) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29431), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeElementGivenHashØ00__func__Ø000))), unsafe.Pointer(str(21256)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_pH.X1) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29432), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeElementGivenHashØ00__func__Ø000))), unsafe.Pointer(str(21272)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3HashClear(tls, _pH)
-_7:
}
-var _removeElementGivenHashØ00__func__Ø000 [23]int8 // -
+var _removeElementGivenHashØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_removeElementGivenHashØ00__func__Ø000[0], str(21288), 23)
+ crt.Xstrncpy(nil, &_removeElementGivenHashØ00__func__Ø000[0], str(21715), 23)
}
-func _rehash(tls *crt.TLS, _pH *XHash, _new_size uint32) (r0 int32) { // sqlite3.c:29332:1
- var _new_ht *T_ht // sqlite3.c:29333:14
- _ = _new_ht
- var _elem *XHashElem // sqlite3.c:29334:12
- _ = _elem
- var _next_elem *XHashElem // sqlite3.c:29334:19
- _ = _next_elem
- var _2_h uint32 // sqlite3.c:29361:18
- _ = _2_h
- if (_new_size * u32(8)) <= uint32(i32(1024)) {
- goto _0
+// Resize the hash table so that it cantains "new_size" buckets.
+//
+// The hash table might fail to resize if sqlite3_malloc() fails or
+// if the new size is the same as the prior size.
+// Return TRUE if the resize occurs and false if not.
+func _rehash(tls *crt.TLS, _pH *XHash, _new_size uint32) (r0 int32) {
+ var _2_h uint32
+ var _elem, _next_elem *XHashElem
+ var _new_ht *T_ht
+ if (_new_size * u32(8)) > uint32(i32(1024)) {
+ _new_size = u32(128)
}
-
- _new_size = u32(128)
-_0:
- if _new_size != (_pH.X0) {
- goto _1
+ if _new_size == (_pH.X0) {
+ return i32(0)
}
- return i32(0)
-
-_1:
_sqlite3BeginBenignMalloc(tls)
_new_ht = (*T_ht)(_sqlite3Malloc(tls, uint64(_new_size*u32(8))))
_sqlite3EndBenignMalloc(tls)
- if _new_ht != nil {
- goto _2
+ if _new_ht == nil {
+ return i32(0)
}
- return i32(0)
-
-_2:
Xsqlite3_free(tls, _pH.X3)
*(**T_ht)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(12 /* X3 */))))) = _new_ht
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(0 /* X0 */))) = store5(&_new_size, uint32(_sqlite3MallocSize(tls, (unsafe.Pointer)(_new_ht)))/u32(8))
@@ -21702,132 +20931,120 @@ _3:
if _elem == nil {
goto _6
}
-
_2_h = _strHash(tls, _elem.X3) % _new_size
_next_elem = (*XHashElem)(_elem.X0)
_insertElement(tls, _pH, (*T_ht)(unsafe.Pointer(uintptr((unsafe.Pointer)(_new_ht))+8*uintptr(_2_h))), _elem)
_elem = _next_elem
goto _3
-
_6:
return i32(1)
}
-func _insertElement(tls *crt.TLS, _pH *XHash, _pEntry *T_ht, _pNew *XHashElem) { // sqlite3.c:29298:1
- var _pHead *XHashElem // sqlite3.c:29303:12
- _ = _pHead
- if _pEntry == nil {
- goto _0
+// Link pNew element into the hash table pH. If pEntry!=0 then also
+// insert pNew into the pEntry hash bucket.
+func _insertElement(tls *crt.TLS, _pH *XHash, _pEntry *T_ht, _pNew *XHashElem) {
+ var _pHead *XHashElem
+ if _pEntry != nil {
+ _pHead = func() *XHashElem {
+ if (_pEntry.X0) != 0 {
+ return (*XHashElem)(_pEntry.X1)
+ }
+ return nil
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(0 /* X0 */))) += 1
+ *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(4 /* X1 */))))) = _pNew
+ goto _3
}
-
- _pHead = func() *XHashElem {
- if (_pEntry.X0) != 0 {
- return (*XHashElem)(_pEntry.X1)
- }
- return nil
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(0 /* X0 */))) += 1
- *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(4 /* X1 */))))) = _pNew
- goto _3
-
-_0:
_pHead = nil
_3:
if _pHead == nil {
goto _4
}
-
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))))) = _pHead
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))) = (*XHashElem)(_pHead.X1)
- if (*XHashElem)(_pHead.X1) == nil {
- goto _5
+ if (*XHashElem)(_pHead.X1) != nil {
+ *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pHead.X1) + uintptr(0 /* X0 */))))) = _pNew
+ goto _6
}
-
- *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pHead.X1) + uintptr(0 /* X0 */))))) = _pNew
- goto _6
-
-_5:
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(8 /* X2 */))))) = _pNew
_6:
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pHead)) + uintptr(4 /* X1 */))))) = _pNew
goto _7
-
_4:
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))))) = (*XHashElem)(_pH.X2)
- if (*XHashElem)(_pH.X2) == nil {
- goto _8
+ if (*XHashElem)(_pH.X2) != nil {
+ *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pH.X2) + uintptr(4 /* X1 */))))) = _pNew
}
-
- *(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pH.X2) + uintptr(4 /* X1 */))))) = _pNew
-_8:
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))) = nil
*(**XHashElem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pH)) + uintptr(8 /* X2 */))))) = _pNew
_7:
}
-func _sqlite3SchemaMutexHeld(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _pSchema *XSchema) (r0 int32) { // sqlite3.c:58975:1
- var _p *XBtree // sqlite3.c:58976:9
- _ = _p
+// Return true if the correct mutexes are held for accessing the
+// db->aDb[iDb].pSchema structure. The mutexes required for schema
+// access are:
+//
+// (1) The mutex on db
+// (2) if iDb!=1, then the mutex on db->aDb[iDb].pBt.
+//
+// If pSchema is not NULL, then iDb is computed from pSchema and
+// db using sqlite3SchemaToIndex().
+func _sqlite3SchemaMutexHeld(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _pSchema *XSchema) (r0 int32) {
+ var _p *XBtree
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58977), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaMutexHeldØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58977), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaMutexHeldØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
- if _pSchema == nil {
- goto _2
+ if _pSchema != nil {
+ _iDb = _sqlite3SchemaToIndex(tls, _db, _pSchema)
}
-
- _iDb = _sqlite3SchemaToIndex(tls, _db, _pSchema)
-_2:
func() {
if _iDb < i32(0) || _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58979), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaMutexHeldØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58979), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaMutexHeldØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) != 0 {
- goto _6
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
+ return i32(0)
}
- return i32(0)
-
-_6:
- if _iDb != i32(1) {
- goto _7
+ if _iDb == i32(1) {
+ return i32(1)
}
- return i32(1)
-
-_7:
_p = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X1)
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(58983), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaMutexHeldØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(58983), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaMutexHeldØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
return bool2int((int32(_p.X3) == i32(0)) || (int32(_p.X4) == i32(1)))
}
-var _sqlite3SchemaMutexHeldØ00__func__Ø000 [23]int8 // -
+var _sqlite3SchemaMutexHeldØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SchemaMutexHeldØ00__func__Ø000[0], str(21336), 23)
+ crt.Xstrncpy(nil, &_sqlite3SchemaMutexHeldØ00__func__Ø000[0], str(21760), 23)
}
-func _sqlite3SchemaToIndex(tls *crt.TLS, _db *Xsqlite3, _pSchema *XSchema) (r0 int32) { // sqlite3.c:116134:1
- var _i int32 // sqlite3.c:116135:7
- _ = _i
+// Convert a schema pointer into the iDb index that indicates
+// which database file in db->aDb[] the schema refers to.
+//
+// If the same database is attached more than once, the first
+// attached database is returned.
+func _sqlite3SchemaToIndex(tls *crt.TLS, _db *Xsqlite3, _pSchema *XSchema) (r0 int32) {
+ var _i int32
_i = i32(-1000000)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116147), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaToIndexØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116147), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaToIndexØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
if _pSchema == nil {
goto _2
}
-
_i = i32(0)
_3:
if func() int32 {
@@ -21835,28 +21052,22 @@ _3:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaToIndexØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaToIndexØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _8
}
-
- if (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X4) != _pSchema {
- goto _9
+ if (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X4) == _pSchema {
+ goto _8
}
-
- goto _8
-
-_9:
_i += 1
goto _3
-
_8:
func() {
if _i < i32(0) || _i >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116154), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaToIndexØ00__func__Ø000))), unsafe.Pointer(str(21360)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116154), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SchemaToIndexØ00__func__Ø000))), unsafe.Pointer(str(21783)))
crt.X__builtin_abort(tls)
}
}()
@@ -21864,41 +21075,39 @@ _2:
return _i
}
-var _sqlite3SchemaToIndexØ00__func__Ø000 [21]int8 // -
+var _sqlite3SchemaToIndexØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SchemaToIndexØ00__func__Ø000[0], str(21380), 21)
+ crt.Xstrncpy(nil, &_sqlite3SchemaToIndexØ00__func__Ø000[0], str(21801), 21)
}
-func _freeIndex(tls *crt.TLS, _db *Xsqlite3, _p *XIndex) { // sqlite3.c:100136:1
+// Reclaim the memory used by an index
+func _freeIndex(tls *crt.TLS, _db *Xsqlite3, _p *XIndex) {
_sqlite3DeleteIndexSamples(tls, _db, _p)
_sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X9))
_sqlite3ExprListDelete(tls, _db, (*XExprList)(_p.X10))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X4))
- if ((uint32((_p.X16)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _0
+ if ((uint32((_p.X16)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X8))
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X8))
-_0:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p))
}
-func _sqlite3DeleteIndexSamples(tls *crt.TLS, _db *Xsqlite3, _pIdx *XIndex) { // sqlite3.c:98484:1
+// If the Index.aSample variable is not NULL, delete the aSample[] array
+// and its contents.
+func _sqlite3DeleteIndexSamples(tls *crt.TLS, _db *Xsqlite3, _pIdx *XIndex) {
}
-func _sqlite3FkDelete(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable) { // sqlite3.c:108795:1
- var _pFKey *XFKey // sqlite3.c:108796:8
- _ = _pFKey
- var _pNext *XFKey // sqlite3.c:108797:8
- _ = _pNext
- var _4_p unsafe.Pointer // sqlite3.c:108808:14
- _ = _4_p
- var _4_z *int8 // sqlite3.c:108809:20
- _ = _4_z
+// Free all memory associated with foreign key definitions attached to
+// table pTab. Remove the deleted foreign keys from the Schema.fkeyHash
+// hash table.
+func _sqlite3FkDelete(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable) {
+ var _4_z *int8
+ var _4_p unsafe.Pointer
+ var _pFKey, _pNext *XFKey
func() {
if _db != nil && (_pTab.X16) == 0 && _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pTab.X20)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkDeleteØ00__func__Ø000))), unsafe.Pointer(str(21404)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkDeleteØ00__func__Ø000))), unsafe.Pointer(str(21822)))
crt.X__builtin_abort(tls)
}
}()
@@ -21907,19 +21116,13 @@ _4:
if _pFKey == nil {
goto _7
}
-
if _db != nil && (_db.X79) != nil {
goto _9
}
-
- if (*XFKey)(_pFKey.X4) == nil {
- goto _10
+ if (*XFKey)(_pFKey.X4) != nil {
+ *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pFKey.X4) + uintptr(12 /* X3 */))))) = (*XFKey)(_pFKey.X3)
+ goto _11
}
-
- *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pFKey.X4) + uintptr(12 /* X3 */))))) = (*XFKey)(_pFKey.X3)
- goto _11
-
-_10:
_4_p = _pFKey.X3
_4_z = func() *int8 {
if _4_p != nil {
@@ -21929,16 +21132,13 @@ _10:
}()
_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_pTab.X20)+uintptr(56 /* X5 */))), _4_z, _4_p)
_11:
- if (*XFKey)(_pFKey.X3) == nil {
- goto _14
+ if (*XFKey)(_pFKey.X3) != nil {
+ *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pFKey.X3) + uintptr(16 /* X4 */))))) = (*XFKey)(_pFKey.X4)
}
-
- *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pFKey.X3) + uintptr(16 /* X4 */))))) = (*XFKey)(_pFKey.X4)
-_14:
_9:
func() {
if int32(_pFKey.X6) != i32(0) && int32(_pFKey.X6) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkDeleteØ00__func__Ø000))), unsafe.Pointer(str(21480)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkDeleteØ00__func__Ø000))), unsafe.Pointer(str(21895)))
crt.X__builtin_abort(tls)
}
}()
@@ -21948,118 +21148,117 @@ _9:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pFKey))
_pFKey = _pNext
goto _4
-
_7:
}
-var _sqlite3FkDeleteØ00__func__Ø000 [16]int8 // -
+var _sqlite3FkDeleteØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FkDeleteØ00__func__Ø000[0], str(21528), 16)
+ crt.Xstrncpy(nil, &_sqlite3FkDeleteØ00__func__Ø000[0], str(21940), 16)
}
-func _fkTriggerDelete(tls *crt.TLS, _dbMem *Xsqlite3, _p *XTrigger) { // sqlite3.c:108088:1
- var _1_pStep *XTriggerStep // sqlite3.c:108090:17
- _ = _1_pStep
- if _p == nil {
- goto _0
+// The second argument is a Trigger structure allocated by the
+// fkActionTrigger() routine. This function deletes the Trigger structure
+// and all of its sub-components.
+//
+// The Trigger structure or any of its sub-components may be allocated from
+// the lookaside buffer belonging to database handle dbMem.
+func _fkTriggerDelete(tls *crt.TLS, _dbMem *Xsqlite3, _p *XTrigger) {
+ var _1_pStep *XTriggerStep
+ if _p != nil {
+ _1_pStep = (*XTriggerStep)(_p.X8)
+ _sqlite3ExprDelete(tls, _dbMem, (*XExpr)(_1_pStep.X5))
+ _sqlite3ExprListDelete(tls, _dbMem, (*XExprList)(_1_pStep.X6))
+ _sqlite3SelectDelete(tls, _dbMem, (*XSelect)(_1_pStep.X3))
+ _sqlite3ExprDelete(tls, _dbMem, (*XExpr)(_p.X4))
+ _sqlite3DbFree(tls, _dbMem, (unsafe.Pointer)(_p))
}
-
- _1_pStep = (*XTriggerStep)(_p.X8)
- _sqlite3ExprDelete(tls, _dbMem, (*XExpr)(_1_pStep.X5))
- _sqlite3ExprListDelete(tls, _dbMem, (*XExprList)(_1_pStep.X6))
- _sqlite3SelectDelete(tls, _dbMem, (*XSelect)(_1_pStep.X3))
- _sqlite3ExprDelete(tls, _dbMem, (*XExpr)(_p.X4))
- _sqlite3DbFree(tls, _dbMem, (unsafe.Pointer)(_p))
-_0:
}
-func _sqlite3DeleteColumnNames(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable) { // sqlite3.c:100267:1
- var _i int32 // sqlite3.c:100268:7
- _ = _i
- var _pCol *XColumn // sqlite3.c:100269:10
- _ = _pCol
+// Delete memory allocated for the column names of a table or view (the
+// Table.aCol[] array).
+func _sqlite3DeleteColumnNames(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable) {
+ var _i int32
+ var _pCol *XColumn
func() {
if _pTable == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(21544)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(21956)))
crt.X__builtin_abort(tls)
}
}()
- if store28(&_pCol, (*XColumn)(_pTable.X1)) == nil {
+ if store30(&_pCol, (*XColumn)(_pTable.X1)) == nil {
goto _2
}
-
_i = i32(0)
_3:
if _i >= int32(_pTable.X11) {
goto _6
}
-
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pCol.X0))
_sqlite3ExprDelete(tls, _db, (*XExpr)(_pCol.X1))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pCol.X2))
*(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
goto _3
-
_6:
_sqlite3DbFree(tls, _db, _pTable.X1)
_2:
}
-var _sqlite3DeleteColumnNamesØ00__func__Ø000 [25]int8 // -
+var _sqlite3DeleteColumnNamesØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DeleteColumnNamesØ00__func__Ø000[0], str(21556), 25)
+ crt.Xstrncpy(nil, &_sqlite3DeleteColumnNamesØ00__func__Ø000[0], str(21966), 25)
}
-func _sqlite3VtabClear(tls *crt.TLS, _db *Xsqlite3, _p *XTable) { // sqlite3.c:125273:1
- var _1_i int32 // sqlite3.c:125276:9
- _ = _1_i
- if _db != nil && (_db.X79) != nil {
- goto _1
+// Clear any and all virtual-table information from the Table record.
+// This routine is called, for example, just before deleting the Table
+// record.
+//
+// Since it is a virtual-table, the Table structure contains a pointer
+// to the head of a linked list of VTable structures. Each VTable
+// structure is associated with a single sqlite3* user of the schema.
+// The reference count of the VTable structure associated with database
+// connection db is decremented immediately (which may lead to the
+// structure being xDisconnected and free). Any other VTable structures
+// in the list are moved to the sqlite3.pDisconnect list of the associated
+// database connection.
+func _sqlite3VtabClear(tls *crt.TLS, _db *Xsqlite3, _p *XTable) {
+ var _1_i int32
+ if (_db == nil) || ((_db.X79) == nil) {
+ _vtabDisconnectAll(tls, nil, _p)
}
-
- _vtabDisconnectAll(tls, nil, _p)
-_1:
if (_p.X17) == nil {
goto _2
}
-
_1_i = i32(0)
_3:
if _1_i >= (_p.X16) {
goto _6
}
-
- if _1_i == i32(1) {
- goto _7
+ if _1_i != i32(1) {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X17)) + 4*uintptr(_1_i)))))
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X17)) + 4*uintptr(_1_i)))))
-_7:
_1_i += 1
goto _3
-
_6:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X17))
_2:
}
-func _vtabDisconnectAll(tls *crt.TLS, _db *Xsqlite3, _p *XTable) (r0 *XVTable) { // sqlite3.c:125164:1
- var _pRet *XVTable // sqlite3.c:125165:10
- _ = _pRet
- var _pVTable *XVTable // sqlite3.c:125166:10
- _ = _pVTable
- var _1_db2 *Xsqlite3 // sqlite3.c:125178:13
- _ = _1_db2
- var _1_pNext *XVTable // sqlite3.c:125179:12
- _ = _1_pNext
+// Table p is a virtual table. This function moves all elements in the
+// p->pVTable list to the sqlite3.pDisconnect lists of their associated
+// database connections to be disconnected at the next opportunity.
+// Except, if argument db is not NULL, then the entry associated with
+// connection db is left in the p->pVTable list.
+func _vtabDisconnectAll(tls *crt.TLS, _db *Xsqlite3, _p *XTable) (r0 *XVTable) {
+ var _1_db2 *Xsqlite3
+ var _pRet, _pVTable, _1_pNext *XVTable
_pRet = nil
_pVTable = (*XVTable)(_p.X18)
*(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(64 /* X18 */))))) = nil
func() {
if _db != nil && _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_p.X20)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125175), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabDisconnectAllØ00__func__Ø000))), unsafe.Pointer(str(21584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125175), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabDisconnectAllØ00__func__Ø000))), unsafe.Pointer(str(21991)))
crt.X__builtin_abort(tls)
}
}()
@@ -22067,174 +21266,144 @@ _3:
if _pVTable == nil {
goto _4
}
-
_1_db2 = (*Xsqlite3)(_pVTable.X0)
_1_pNext = (*XVTable)(_pVTable.X6)
func() {
if _1_db2 == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125180), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabDisconnectAllØ00__func__Ø000))), unsafe.Pointer(str(21636)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125180), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabDisconnectAllØ00__func__Ø000))), unsafe.Pointer(str(22042)))
crt.X__builtin_abort(tls)
}
}()
- if _1_db2 != _db {
- goto _7
+ if _1_db2 == _db {
+ _pRet = _pVTable
+ *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(64 /* X18 */))))) = _pRet
+ *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(24 /* X6 */))))) = nil
+ goto _8
}
-
- _pRet = _pVTable
- *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(64 /* X18 */))))) = _pRet
- *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(24 /* X6 */))))) = nil
- goto _8
-
-_7:
*(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(24 /* X6 */))))) = (*XVTable)(_1_db2.X68)
*(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_db2)) + uintptr(340 /* X68 */))))) = _pVTable
_8:
_pVTable = _1_pNext
goto _3
-
_4:
func() {
if _db != nil && _pRet == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125192), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabDisconnectAllØ00__func__Ø000))), unsafe.Pointer(str(21640)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125192), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabDisconnectAllØ00__func__Ø000))), unsafe.Pointer(str(22046)))
crt.X__builtin_abort(tls)
}
}()
return _pRet
}
-var _vtabDisconnectAllØ00__func__Ø000 [18]int8 // -
+var _vtabDisconnectAllØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_vtabDisconnectAllØ00__func__Ø000[0], str(21652), 18)
+ crt.Xstrncpy(nil, &_vtabDisconnectAllØ00__func__Ø000[0], str(22058), 18)
}
-func _sqlite3IdListDelete(tls *crt.TLS, _db *Xsqlite3, _pList *XIdList) { // sqlite3.c:103315:1
- var _i int32 // sqlite3.c:103316:7
- _ = _i
- if _pList != nil {
- goto _0
+// Delete an IdList.
+func _sqlite3IdListDelete(tls *crt.TLS, _db *Xsqlite3, _pList *XIdList) {
+ var _i int32
+ if _pList == nil {
+ return
}
- return
-
-_0:
_i = i32(0)
_1:
if _i >= (_pList.X1) {
goto _4
}
-
_sqlite3DbFree(tls, _db, (unsafe.Pointer)((*TIdList_item)(unsafe.Pointer(uintptr(_pList.X0)+8*uintptr(_i))).X0))
_i += 1
goto _1
-
_4:
_sqlite3DbFree(tls, _db, _pList.X0)
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pList))
}
-func _sqlite3WithDelete(tls *crt.TLS, _db *Xsqlite3, _pWith *XWith) { // sqlite3.c:104130:1
- var _1_i int32 // sqlite3.c:104132:9
- _ = _1_i
- var _2_pCte *TCte // sqlite3.c:104134:18
- _ = _2_pCte
+// Free the contents of the With object passed as the second argument.
+func _sqlite3WithDelete(tls *crt.TLS, _db *Xsqlite3, _pWith *XWith) {
+ var _1_i int32
+ var _2_pCte *TCte
if _pWith == nil {
goto _0
}
-
_1_i = i32(0)
_1:
if _1_i >= (_pWith.X0) {
goto _4
}
-
_2_pCte = (*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWith))+uintptr(8 /* X2 */))))) + 16*uintptr(_1_i)))
_sqlite3ExprListDelete(tls, _db, (*XExprList)(_2_pCte.X1))
_sqlite3SelectDelete(tls, _db, (*XSelect)(_2_pCte.X2))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_2_pCte.X0))
_1_i += 1
goto _1
-
_4:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pWith))
_0:
}
-func _sqlite3CollapseDatabaseArray(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:100189:1
- var _i int32 // sqlite3.c:100190:7
- _ = _i
- var _j int32 // sqlite3.c:100190:10
- _ = _j
- var _1_pDb *XDb // sqlite3.c:100192:15
- _ = _1_pDb
+// Look through the list of open database files in db->aDb[] and if
+// any have been closed, remove them from the list. Reallocate the
+// db->aDb[] structure to a smaller size, if possible.
+//
+// Entry 0 (the "main" database) and entry 1 (the "temp" database)
+// are never candidates for being collapsed.
+func _sqlite3CollapseDatabaseArray(tls *crt.TLS, _db *Xsqlite3) {
+ var _i, _j int32
+ var _1_pDb *XDb
_i = store1(&_j, i32(2))
_0:
if _i >= (_db.X5) {
goto _3
}
-
_1_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
- if (*XBtree)(_1_pDb.X1) != nil {
- goto _4
+ if (*XBtree)(_1_pDb.X1) == nil {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pDb.X0))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pDb)) + uintptr(0 /* X0 */))) = nil
+ goto _1
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pDb.X0))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pDb)) + uintptr(0 /* X0 */))) = nil
- goto _1
-
-_4:
- if _j >= _i {
- goto _5
+ if _j < _i {
+ *(*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_j))) = *(*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
}
-
- *(*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_j))) = *(*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
-_5:
_j += 1
_1:
_i += 1
goto _0
-
_3:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(20 /* X5 */))) = _j
- if (_db.X5) > i32(2) || (*XDb)(_db.X4) == (*XDb)(unsafe.Pointer((*[2]XDb)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(388 /* X72 */))))) {
- goto _7
+ if ((_db.X5) <= i32(2)) && ((*XDb)(_db.X4) != (*XDb)(unsafe.Pointer((*[2]XDb)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(388 /* X72 */)))))) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*[2]XDb)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(388 /* X72 */)))), _db.X4, u32(32))
+ _sqlite3DbFree(tls, _db, _db.X4)
+ *(**XDb)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(16 /* X4 */))))) = (*XDb)(unsafe.Pointer((*[2]XDb)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(388 /* X72 */)))))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*[2]XDb)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(388 /* X72 */)))), _db.X4, u32(32))
- _sqlite3DbFree(tls, _db, _db.X4)
- *(**XDb)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(16 /* X4 */))))) = (*XDb)(unsafe.Pointer((*[2]XDb)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(388 /* X72 */)))))
-_7:
}
-func _sqlite3CloseSavepoints(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:141438:1
- var _1_pTmp *XSavepoint // sqlite3.c:141440:15
- _ = _1_pTmp
+// Close all open savepoints. This function only manipulates fields of the
+// database handle object, it does not close any savepoints that may be open
+// at the b-tree/pager level.
+func _sqlite3CloseSavepoints(tls *crt.TLS, _db *Xsqlite3) {
+ var _1_pTmp *XSavepoint
_0:
- if (*XSavepoint)(_db.X73) == nil {
- goto _1
+ if (*XSavepoint)(_db.X73) != nil {
+ _1_pTmp = (*XSavepoint)(_db.X73)
+ *(**XSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(420 /* X73 */))))) = (*XSavepoint)(_1_pTmp.X3)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pTmp))
+ goto _0
}
-
- _1_pTmp = (*XSavepoint)(_db.X73)
- *(**XSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(420 /* X73 */))))) = (*XSavepoint)(_1_pTmp.X3)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pTmp))
- goto _0
-
-_1:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(428 /* X75 */))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(432 /* X76 */))) = i32(0)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(71 /* X23 */))) = uint8(i32(0))
}
-func _sqlite3BtreeClose(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:61598:1
- var _pBt *XBtShared // sqlite3.c:61599:12
- _ = _pBt
- var _pCur *XBtCursor // sqlite3.c:61600:12
- _ = _pCur
- var _1_pTmp *XBtCursor // sqlite3.c:61607:14
- _ = _1_pTmp
+// Close an open database and invalidate all cursors.
+func _sqlite3BtreeClose(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _pBt *XBtShared
+ var _pCur, _1_pTmp *XBtCursor
_pBt = (*XBtShared)(_p.X1)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61603), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61603), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
@@ -22244,136 +21413,109 @@ _2:
if _pCur == nil {
goto _3
}
-
_1_pTmp = _pCur
_pCur = (*XBtCursor)(_pCur.X2)
- if (*XBtree)(_1_pTmp.X0) != _p {
- goto _4
+ if (*XBtree)(_1_pTmp.X0) == _p {
+ _sqlite3BtreeCloseCursor(tls, _1_pTmp)
}
-
- _sqlite3BtreeCloseCursor(tls, _1_pTmp)
-_4:
goto _2
-
_3:
_sqlite3BtreeRollback(tls, _p, i32(0), i32(0))
_sqlite3BtreeLeave(tls, _p)
func() {
if (_p.X6) != i32(0) || int32(_p.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61625), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(21672)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61625), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(22076)))
crt.X__builtin_abort(tls)
}
}()
if (_p.X3) != 0 && _removeFromSharingList(tls, _pBt) == 0 {
goto _9
}
-
func() {
if (*XBtCursor)(_pBt.X2) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61632), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(21708)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61632), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(22109)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3PagerClose(tls, (*XPager)(_pBt.X0), (*Xsqlite3)(_p.X0))
- if (_pBt.X20) == nil || (_pBt.X19) == nil {
- goto _13
+ if ((_pBt.X20) != nil) && ((_pBt.X19) != nil) {
+ (_pBt.X20)(tls, _pBt.X19)
}
-
- (_pBt.X20)(tls, _pBt.X19)
-_13:
_sqlite3DbFree(tls, nil, _pBt.X19)
_freeTempSpace(tls, _pBt)
Xsqlite3_free(tls, (unsafe.Pointer)(_pBt))
_9:
func() {
if (_p.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(21724)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(22123)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61644), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(8056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61644), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseØ00__func__Ø000))), unsafe.Pointer(str(9343)))
crt.X__builtin_abort(tls)
}
}()
- if (*XBtree)(_p.X10) == nil {
- goto _18
+ if (*XBtree)(_p.X10) != nil {
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X10) + uintptr(24 /* X9 */))))) = (*XBtree)(_p.X9)
}
-
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X10) + uintptr(24 /* X9 */))))) = (*XBtree)(_p.X9)
-_18:
- if (*XBtree)(_p.X9) == nil {
- goto _19
+ if (*XBtree)(_p.X9) != nil {
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X9) + uintptr(28 /* X10 */))))) = (*XBtree)(_p.X10)
}
-
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X9) + uintptr(28 /* X10 */))))) = (*XBtree)(_p.X10)
-_19:
Xsqlite3_free(tls, (unsafe.Pointer)(_p))
return i32(0)
}
-var _sqlite3BtreeCloseØ00__func__Ø000 [18]int8 // -
+var _sqlite3BtreeCloseØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeCloseØ00__func__Ø000[0], str(21744), 18)
+ crt.Xstrncpy(nil, &_sqlite3BtreeCloseØ00__func__Ø000[0], str(22140), 18)
}
-func _sqlite3BtreeCloseCursor(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:63310:1
- var _pBtree *XBtree // sqlite3.c:63311:9
- _ = _pBtree
- var _1_i int32 // sqlite3.c:63313:9
- _ = _1_i
- var _1_pBt *XBtShared // sqlite3.c:63314:14
- _ = _1_pBt
- var _3_pPrev *XBtCursor // sqlite3.c:63321:16
- _ = _3_pPrev
+// Close a cursor. The read lock on the database file is released
+// when the last cursor is closed.
+func _sqlite3BtreeCloseCursor(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
+ var _1_i int32
+ var _pBtree *XBtree
+ var _1_pBt *XBtShared
+ var _3_pPrev *XBtCursor
_pBtree = (*XBtree)(_pCur.X0)
if _pBtree == nil {
goto _0
}
-
_1_pBt = (*XBtShared)(_pCur.X1)
_sqlite3BtreeEnter(tls, _pBtree)
_sqlite3BtreeClearCursor(tls, _pCur)
func() {
if (*XBtCursor)(_1_pBt.X2) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseCursorØ00__func__Ø000))), unsafe.Pointer(str(21764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseCursorØ00__func__Ø000))), unsafe.Pointer(str(22158)))
crt.X__builtin_abort(tls)
}
}()
- if (*XBtCursor)(_1_pBt.X2) != _pCur {
- goto _3
+ if (*XBtCursor)(_1_pBt.X2) == _pCur {
+ *(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pBt)) + uintptr(8 /* X2 */))))) = (*XBtCursor)(_pCur.X2)
+ goto _4
}
-
- *(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pBt)) + uintptr(8 /* X2 */))))) = (*XBtCursor)(_pCur.X2)
- goto _4
-
-_3:
_3_pPrev = (*XBtCursor)(_1_pBt.X2)
_5:
- if (*XBtCursor)(_3_pPrev.X2) != _pCur {
- goto _6
+ if (*XBtCursor)(_3_pPrev.X2) == _pCur {
+ *(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pPrev)) + uintptr(8 /* X2 */))))) = (*XBtCursor)(_pCur.X2)
+ goto _7
}
-
- *(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pPrev)) + uintptr(8 /* X2 */))))) = (*XBtCursor)(_pCur.X2)
- goto _7
-
-_6:
_3_pPrev = (*XBtCursor)(_3_pPrev.X2)
if func() int32 {
if _3_pPrev != nil {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseCursorØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCloseCursorØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() != 0 {
goto _5
}
-
_7:
_4:
_1_i = i32(0)
@@ -22381,11 +21523,9 @@ _10:
if _1_i > int32(_pCur.X14) {
goto _13
}
-
_releasePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_1_i))))
_1_i += 1
goto _10
-
_13:
_unlockBtreeIfUnused(tls, _1_pBt)
Xsqlite3_free(tls, (unsafe.Pointer)(_pCur.X3))
@@ -22394,23 +21534,24 @@ _0:
return i32(0)
}
-var _sqlite3BtreeCloseCursorØ00__func__Ø000 [24]int8 // -
+var _sqlite3BtreeCloseCursorØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeCloseCursorØ00__func__Ø000[0], str(21780), 24)
+ crt.Xstrncpy(nil, &_sqlite3BtreeCloseCursorØ00__func__Ø000[0], str(22174), 24)
}
-func _removeFromSharingList(tls *crt.TLS, _pBt *XBtShared) (r0 int32) { // sqlite3.c:61519:1
- var _pMaster *Xsqlite3_mutex // sqlite3.c:61521:30
- _ = _pMaster
- var _pList *XBtShared // sqlite3.c:61522:12
- _ = _pList
- var _removed int32 // sqlite3.c:61523:7
- _ = _removed
+// Decrement the BtShared.nRef counter. When it reaches zero,
+// remove the BtShared structure from the sharing list. Return
+// true if the BtShared.nRef counter reaches zero and return
+// false if it is still positive.
+func _removeFromSharingList(tls *crt.TLS, _pBt *XBtShared) (r0 int32) {
+ var _removed int32
+ var _pMaster *Xsqlite3_mutex
+ var _pList *XBtShared
_removed = i32(0)
func() {
if Xsqlite3_mutex_notheld(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61525), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeFromSharingListØ00__func__Ø000))), unsafe.Pointer(str(21804)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61525), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeFromSharingListØ00__func__Ø000))), unsafe.Pointer(str(22198)))
crt.X__builtin_abort(tls)
}
}()
@@ -22420,16 +21561,11 @@ func _removeFromSharingList(tls *crt.TLS, _pBt *XBtShared) (r0 int32) { // sqlit
if (_pBt.X23) > i32(0) {
goto _2
}
-
- if _sqlite3SharedCacheList != _pBt {
- goto _3
+ if _sqlite3SharedCacheList == _pBt {
+ _sqlite3SharedCacheList = (*XBtShared)(_pBt.X24)
+ bug20530(_sqlite3SharedCacheList)
+ goto _4
}
-
- _sqlite3SharedCacheList = (*XBtShared)(_pBt.X24)
- bug20530(_sqlite3SharedCacheList)
- goto _4
-
-_3:
_pList = _sqlite3SharedCacheList
_5:
if func() int32 {
@@ -22437,33 +21573,26 @@ _5:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61534), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeFromSharingListØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61534), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeFromSharingListØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 || (*XBtShared)(_pList.X24) == _pBt {
- goto _6
+ }() != 0 && ((*XBtShared)(_pList.X24) != _pBt) {
+ _pList = (*XBtShared)(_pList.X24)
+ goto _5
}
-
- _pList = (*XBtShared)(_pList.X24)
- goto _5
-
-_6:
if func() int32 {
if _pList != nil {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61537), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeFromSharingListØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61537), unsafe.Pointer((*int8)(unsafe.Pointer(&_removeFromSharingListØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _12
+ }() != 0 {
+ *(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(68 /* X24 */))))) = (*XBtShared)(_pBt.X24)
}
-
- *(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(68 /* X24 */))))) = (*XBtShared)(_pBt.X24)
-_12:
_4:
Xsqlite3_mutex_free(tls, (*Xsqlite3_mutex)(_pBt.X21))
_removed = i32(1)
@@ -22472,52 +21601,61 @@ _2:
return _removed
}
-var _removeFromSharingListØ00__func__Ø000 [22]int8 // -
+var _removeFromSharingListØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_removeFromSharingListØ00__func__Ø000[0], str(21840), 22)
+ crt.Xstrncpy(nil, &_removeFromSharingListØ00__func__Ø000[0], str(22232), 22)
}
-var _sqlite3SharedCacheList *XBtShared // sqlite3.c:59111:17
-
-func Xsqlite3_mutex_free(tls *crt.TLS, _p *Xsqlite3_mutex) { // sqlite3.c:22852:12
- if _p == nil {
- goto _0
- }
+var _sqlite3SharedCacheList *XBtShared
- func() {
- if (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
+// Free a dynamic mutex.
+func Xsqlite3_mutex_free(tls *crt.TLS, _p *Xsqlite3_mutex) {
+ if _p != nil {
+ func() {
+ if (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X3)}))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(22854), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_freeØ00__func__Ø000))), unsafe.Pointer(str(22254)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X3)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(22854), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_mutex_freeØ00__func__Ø000))), unsafe.Pointer(str(21864)))
- crt.X__builtin_abort(tls)
- }
- }()
- (*(*func(*crt.TLS, *Xsqlite3_mutex))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X3)})))(tls, _p)
-_0:
+ }{((*Xsqlite3_mutex_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(72 /* X11 */))).X3)})))(tls, _p)
+ }
}
-var _sqlite3_mutex_freeØ00__func__Ø000 [19]int8 // -
+var _sqlite3_mutex_freeØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_mutex_freeØ00__func__Ø000[0], str(21904), 19)
+ crt.Xstrncpy(nil, &_sqlite3_mutex_freeØ00__func__Ø000[0], str(22291), 19)
}
-func _sqlite3PagerClose(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3) (r0 int32) { // sqlite3.c:51009:1
- var _pTmp *uint8 // sqlite3.c:51010:6
- _ = _pTmp
+// Shutdown the page cache. Free all memory and close all files.
+//
+// If a transaction was in progress when this routine is called, that
+// transaction is rolled back. All outstanding pages are invalidated
+// and their memory is freed. Any attempt to use a page associated
+// with this page cache after this function returns will likely
+// result in a coredump.
+//
+// This function always succeeds. If a transaction is active an attempt
+// is made to roll it back. If an error occurs during the rollback
+// a hot journal may be left in the filesystem but no error is returned
+// to the caller.
+func _sqlite3PagerClose(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3) (r0 int32) {
+ var _pTmp *uint8
_pTmp = (*uint8)(unsafe.Pointer(_pPager.X58))
func() {
if _db == nil && bool2int((*XWal)(_pPager.X60) != nil) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(21924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(22310)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51013), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51013), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
@@ -22526,7 +21664,7 @@ func _sqlite3PagerClose(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3) (r0 int32)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(4 /* X1 */))) = uint8(i32(0))
func() {
if _db == nil && (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51020), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(21956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51020), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(22339)))
crt.X__builtin_abort(tls)
}
}()
@@ -22538,20 +21676,13 @@ func _sqlite3PagerClose(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3) (r0 int32)
}())
*(**XWal)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(212 /* X60 */))))) = nil
_pager_reset(tls, _pPager)
- if (_pPager.X13) == 0 {
- goto _11
+ if (_pPager.X13) != 0 {
+ _pager_unlock(tls, _pPager)
+ goto _12
}
-
- _pager_unlock(tls, _pPager)
- goto _12
-
-_11:
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- goto _13
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil {
+ _pager_error(tls, _pPager, _pagerSyncHotJournal(tls, _pPager))
}
-
- _pager_error(tls, _pPager, _pagerSyncHotJournal(tls, _pPager))
-_13:
_pagerUnlockAndRollback(tls, _pPager)
_12:
_sqlite3EndBenignMalloc(tls)
@@ -22561,13 +21692,13 @@ _12:
_sqlite3PcacheClose(tls, (*XPCache)(_pPager.X59))
func() {
if (*XPagerSavepoint)(_pPager.X37) != nil || (*XBitvec)(_pPager.X30) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(21980)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(22361)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil || (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X33).X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51060), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(22024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51060), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseØ00__func__Ø000))), unsafe.Pointer(str(22404)))
crt.X__builtin_abort(tls)
}
}()
@@ -22575,121 +21706,99 @@ _12:
return i32(0)
}
-var _sqlite3PagerCloseØ00__func__Ø000 [18]int8 // -
+var _sqlite3PagerCloseØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerCloseØ00__func__Ø000[0], str(22072), 18)
+ crt.Xstrncpy(nil, &_sqlite3PagerCloseØ00__func__Ø000[0], str(22450), 18)
}
-func _pagerFreeMapHdrs(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:50985:1
- var _p *XPgHdr // sqlite3.c:50986:9
- _ = _p
- var _pNext *XPgHdr // sqlite3.c:50987:9
- _ = _pNext
+// Free all PgHdr objects stored in the Pager.pMmapFreelist list.
+func _pagerFreeMapHdrs(tls *crt.TLS, _pPager *XPager) {
+ var _p, _pNext *XPgHdr
_p = (*XPgHdr)(_pPager.X43)
_0:
if _p == nil {
goto _3
}
-
_pNext = (*XPgHdr)(_p.X3)
Xsqlite3_free(tls, (unsafe.Pointer)(_p))
_p = _pNext
goto _0
-
_3:
}
-func _sqlite3WalClose(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _sync_flags int32, _nBuf int32, _zBuf *uint8) (r0 int32) { // sqlite3.c:56403:1
- var _rc int32 // sqlite3.c:56410:7
- _ = _rc
- var _1_isDelete int32 // sqlite3.c:56412:9
- _ = _1_isDelete
- var _4_bPersist int32 // sqlite3.c:56432:13
- _ = _4_bPersist
+// Close a connection to a log file.
+func _sqlite3WalClose(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _sync_flags int32, _nBuf int32, _zBuf *uint8) (r0 int32) {
+ var _rc, _1_isDelete, _4_bPersist int32
_rc = i32(0)
if _pWal == nil {
goto _0
}
-
_1_isDelete = i32(0)
if _zBuf == nil || i32(0) != store1(&_rc, _sqlite3OsLock(tls, (*Xsqlite3_file)(_pWal.X1), i32(4))) {
goto _2
}
-
- if int32(_pWal.X11) != i32(0) {
- goto _3
+ if int32(_pWal.X11) == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(43 /* X11 */))) = uint8(i32(1))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(43 /* X11 */))) = uint8(i32(1))
-_3:
_rc = _sqlite3WalCheckpoint(tls, _pWal, _db, i32(0), nil, nil, _sync_flags, _nBuf, _zBuf, nil, nil)
if _rc != i32(0) {
goto _4
}
-
_4_bPersist = i32(-1)
_sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pWal.X1), i32(10), (unsafe.Pointer)(&_4_bPersist))
- if _4_bPersist == i32(1) {
- goto _5
+ if _4_bPersist != i32(1) {
+ _1_isDelete = i32(1)
+ goto _6
}
-
- _1_isDelete = i32(1)
- goto _6
-
-_5:
- if (_pWal.X4) < int64(i32(0)) {
- goto _7
+ if (_pWal.X4) >= int64(i32(0)) {
+ _walLimitSize(tls, _pWal, int64(i32(0)))
}
-
- _walLimitSize(tls, _pWal, int64(i32(0)))
-_7:
_6:
_4:
_2:
_walIndexClose(tls, _pWal, _1_isDelete)
_sqlite3OsClose(tls, (*Xsqlite3_file)(_pWal.X2))
- if _1_isDelete == 0 {
- goto _8
+ if _1_isDelete != 0 {
+ _sqlite3BeginBenignMalloc(tls)
+ _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pWal.X0), _pWal.X21, i32(0))
+ _sqlite3EndBenignMalloc(tls)
}
-
- _sqlite3BeginBenignMalloc(tls)
- _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pWal.X0), _pWal.X21, i32(0))
- _sqlite3EndBenignMalloc(tls)
-_8:
Xsqlite3_free(tls, (unsafe.Pointer)(_pWal.X7))
Xsqlite3_free(tls, (unsafe.Pointer)(_pWal))
_0:
return _rc
}
-func _sqlite3OsLock(tls *crt.TLS, _id *Xsqlite3_file, _lockType int32) (r0 int32) { // sqlite3.c:20185:1
+func _sqlite3OsLock(tls *crt.TLS, _id *Xsqlite3_file, _lockType int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
}{((*Xsqlite3_io_methods)(_id.X0).X7)})))(tls, _id, _lockType)
}
-func _sqlite3WalCheckpoint(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _eMode int32, _xBusy func(*crt.TLS, unsafe.Pointer) int32, _pBusyArg unsafe.Pointer, _sync_flags int32, _nBuf int32, _zBuf *uint8, _pnLog *int32, _pnCkpt *int32) (r0 int32) { // sqlite3.c:57757:1
- var _rc int32 // sqlite3.c:57769:7
- _ = _rc
- var _isChanged int32 // sqlite3.c:57770:7
- _ = _isChanged
- var _eMode2 int32 // sqlite3.c:57771:7
- _ = _eMode2
- var _xBusy2 func(*crt.TLS, unsafe.Pointer) int32 // sqlite3.c:57772:7
- _ = _xBusy2
+// This routine is called to implement sqlite3_wal_checkpoint() and
+// related interfaces.
+//
+// Obtain a CHECKPOINT lock and then backfill as much information as
+// we can from WAL into the database.
+//
+// If parameter xBusy is not NULL, it is a pointer to a busy-handler
+// callback. In this case this function runs a blocking checkpoint.
+func _sqlite3WalCheckpoint(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _eMode int32, _xBusy func(*crt.TLS, unsafe.Pointer) int32, _pBusyArg unsafe.Pointer, _sync_flags int32, _nBuf int32, _zBuf *uint8, _pnLog *int32, _pnCkpt *int32) (r0 int32) {
+ var _rc, _isChanged, _eMode2 int32
+ var _xBusy2 func(*crt.TLS, unsafe.Pointer) int32
_isChanged = i32(0)
_eMode2 = _eMode
_xBusy2 = _xBusy
func() {
if int32(_pWal.X13) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57774), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22092)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57774), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22468)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pWal.X12) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57775), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalCheckpointØ00__func__Ø000))), unsafe.Pointer(str(18512)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57775), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalCheckpointØ00__func__Ø000))), unsafe.Pointer(str(19079)))
crt.X__builtin_abort(tls)
}
}()
@@ -22699,97 +21808,64 @@ func _sqlite3WalCheckpoint(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _eMode int3
}{_xBusy})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{nil})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57779), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22112)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57779), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22486)))
crt.X__builtin_abort(tls)
}
}()
- if (_pWal.X14) == 0 {
- goto _7
+ if (_pWal.X14) != 0 {
+ return i32(8)
}
- return i32(8)
-
-_7:
_rc = _walLockExclusive(tls, _pWal, i32(1), i32(1))
- if _rc == 0 {
- goto _8
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_8:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(45 /* X13 */))) = uint8(i32(1))
if _eMode == i32(0) {
goto _9
}
-
_rc = _walBusyLock(tls, _pWal, _xBusy, _pBusyArg, i32(0), i32(1))
- if _rc != i32(0) {
- goto _10
+ if _rc == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(1))
+ goto _11
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(1))
- goto _11
-
-_10:
- if _rc != i32(5) {
- goto _12
+ if _rc == i32(5) {
+ _eMode2 = i32(0)
+ _xBusy2 = nil
+ _rc = i32(0)
}
-
- _eMode2 = i32(0)
- _xBusy2 = nil
- _rc = i32(0)
-_12:
_11:
_9:
if _rc != i32(0) {
goto _13
}
-
_rc = _walIndexReadHdr(tls, _pWal, &_isChanged)
- if _isChanged == 0 || ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pWal.X1).X0).X0) < i32(3) {
- goto _15
+ if _isChanged != 0 && (((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pWal.X1).X0).X0) >= i32(3)) {
+ _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pWal.X1), int64(i32(0)), nil)
}
-
- _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pWal.X1), int64(i32(0)), nil)
-_15:
_13:
if _rc != i32(0) {
goto _16
}
-
- if ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6) == 0 || _walPagesize(tls, _pWal) == _nBuf {
- goto _18
+ if (((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) != 0) && (_walPagesize(tls, _pWal) != _nBuf) {
+ _rc = _sqlite3CorruptError(tls, i32(57832))
+ goto _19
}
-
- _rc = _sqlite3CorruptError(tls, i32(57832))
- goto _19
-
-_18:
_rc = _walCheckpoint(tls, _pWal, _db, _eMode2, _xBusy2, _pBusyArg, _sync_flags, _zBuf)
_19:
if _rc != i32(0) && _rc != i32(5) {
goto _21
}
-
- if _pnLog == nil {
- goto _22
+ if _pnLog != nil {
+ *_pnLog = int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6)
}
-
- *_pnLog = int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6)
-_22:
- if _pnCkpt == nil {
- goto _23
+ if _pnCkpt != nil {
+ *_pnCkpt = int32(_walCkptInfo(tls, _pWal).X0)
}
-
- *_pnCkpt = int32(_walCkptInfo(tls, _pWal).X0)
-_23:
_21:
_16:
- if _isChanged == 0 {
- goto _24
+ if _isChanged != 0 {
+ crt.Xmemset(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), i32(0), u32(48))
}
-
- crt.Xmemset(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), i32(0), u32(48))
-_24:
_sqlite3WalEndWriteTransaction(tls, _pWal)
_walUnlockExclusive(tls, _pWal, i32(1), i32(1))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(45 /* X13 */))) = uint8(i32(0))
@@ -22801,29 +21877,28 @@ _24:
}()
}
-var _sqlite3WalCheckpointØ00__func__Ø000 [21]int8 // -
+var _sqlite3WalCheckpointØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalCheckpointØ00__func__Ø000[0], str(22160), 21)
+ crt.Xstrncpy(nil, &_sqlite3WalCheckpointØ00__func__Ø000[0], str(22531), 21)
}
-func _walLockExclusive(tls *crt.TLS, _pWal *XWal, _lockIdx int32, _n int32) (r0 int32) { // sqlite3.c:55292:1
- var _rc int32 // sqlite3.c:55293:7
- _ = _rc
- if (_pWal.X11) == 0 {
- goto _0
+func _walLockExclusive(tls *crt.TLS, _pWal *XWal, _lockIdx int32, _n int32) (r0 int32) {
+ var _rc int32
+ if (_pWal.X11) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_0:
_rc = _sqlite3OsShmLock(tls, (*Xsqlite3_file)(_pWal.X1), _lockIdx, _n, i32(10))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(116 /* X23 */))) = uint8(bool2int((_rc != i32(0)) && (_rc != i32(5))))
return _rc
}
-func _walBusyLock(tls *crt.TLS, _pWal *XWal, _xBusy func(*crt.TLS, unsafe.Pointer) int32, _pBusyArg unsafe.Pointer, _lockIdx int32, _n int32) (r0 int32) { // sqlite3.c:56114:1
- var _rc int32 // sqlite3.c:56121:7
- _ = _rc
+// Attempt to obtain the exclusive WAL lock defined by parameters lockIdx and
+// n. If the attempt fails and parameter xBusy is not NULL, then it is a
+// busy-handler function. Invoke it and retry the lock until either the
+// lock is successfully obtained or the busy-handler returns 0.
+func _walBusyLock(tls *crt.TLS, _pWal *XWal, _xBusy func(*crt.TLS, unsafe.Pointer) int32, _pBusyArg unsafe.Pointer, _lockIdx int32, _n int32) (r0 int32) {
+ var _rc int32
_0:
_rc = _walLockExclusive(tls, _pWal, _lockIdx, _n)
if ((_xBusy != nil) && (_rc == i32(5))) && _xBusy(tls, _pBusyArg) != 0 {
@@ -22832,29 +21907,32 @@ _0:
return _rc
}
-func _walIndexReadHdr(tls *crt.TLS, _pWal *XWal, _pChanged *int32) (r0 int32) { // sqlite3.c:56542:1
- var _rc int32 // sqlite3.c:56543:7
- _ = _rc
- var _badHdr int32 // sqlite3.c:56544:7
- _ = _badHdr
- var _page0 *uint32 // sqlite3.c:56545:16
- _ = _page0
+// Read the wal-index header from the wal-index and into pWal->hdr.
+// If the wal-header appears to be corrupt, try to reconstruct the
+// wal-index from the WAL before returning.
+//
+// Set *pChanged to 1 if the wal-index header value in pWal->hdr is
+// changed by this operation. If pWal->hdr is unchanged, set *pChanged
+// to 0.
+//
+// If the wal-index header is successfully read, return SQLITE_OK.
+// Otherwise an SQLite error code.
+func _walIndexReadHdr(tls *crt.TLS, _pWal *XWal, _pChanged *int32) (r0 int32) {
+ var _rc, _badHdr int32
+ var _page0 *uint32
func() {
if _pChanged == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56550), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexReadHdrØ00__func__Ø000))), unsafe.Pointer(str(22184)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56550), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexReadHdrØ00__func__Ø000))), unsafe.Pointer(str(22552)))
crt.X__builtin_abort(tls)
}
}()
_rc = _walIndexPage(tls, _pWal, i32(0), &_page0)
- if _rc == i32(0) {
- goto _2
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_2:
func() {
if _page0 == nil && int32(_pWal.X12) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56555), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexReadHdrØ00__func__Ø000))), unsafe.Pointer(str(22196)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56555), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexReadHdrØ00__func__Ø000))), unsafe.Pointer(str(22561)))
crt.X__builtin_abort(tls)
}
}()
@@ -22866,78 +21944,74 @@ _2:
}()
func() {
if _badHdr != i32(0) && int32(_pWal.X12) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56567), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexReadHdrØ00__func__Ø000))), unsafe.Pointer(str(22224)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56567), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexReadHdrØ00__func__Ø000))), unsafe.Pointer(str(22589)))
crt.X__builtin_abort(tls)
}
}()
if _badHdr == 0 {
goto _11
}
-
if (int32(_pWal.X14) & i32(2)) == 0 {
goto _12
}
-
- if i32(0) != store1(&_rc, _walLockShared(tls, _pWal, i32(0))) {
- goto _13
+ if i32(0) == store1(&_rc, _walLockShared(tls, _pWal, i32(0))) {
+ _walUnlockShared(tls, _pWal, i32(0))
+ _rc = i32(264)
}
-
- _walUnlockShared(tls, _pWal, i32(0))
- _rc = i32(264)
-_13:
goto _14
-
_12:
if i32(0) != store1(&_rc, _walLockExclusive(tls, _pWal, i32(0), i32(1))) {
goto _15
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(1))
if i32(0) != store1(&_rc, _walIndexPage(tls, _pWal, i32(0), &_page0)) {
goto _16
}
-
_badHdr = _walIndexTryHdr(tls, _pWal, _pChanged)
- if _badHdr == 0 {
- goto _17
+ if _badHdr != 0 {
+ _rc = _walIndexRecover(tls, _pWal)
+ *_pChanged = i32(1)
}
-
- _rc = _walIndexRecover(tls, _pWal)
- *_pChanged = i32(1)
-_17:
_16:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(0))
_walUnlockExclusive(tls, _pWal, i32(0), i32(1))
_15:
_14:
_11:
- if _badHdr != i32(0) || ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X0) == uint32(i32(3007000)) {
- goto _19
+ if (_badHdr == i32(0)) && (((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X0) != uint32(i32(3007000))) {
+ _rc = _sqlite3CantopenError(tls, i32(56597))
}
-
- _rc = _sqlite3CantopenError(tls, i32(56597))
-_19:
return _rc
}
-var _walIndexReadHdrØ00__func__Ø000 [16]int8 // -
+var _walIndexReadHdrØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_walIndexReadHdrØ00__func__Ø000[0], str(22256), 16)
+ crt.Xstrncpy(nil, &_walIndexReadHdrØ00__func__Ø000[0], str(22621), 16)
}
-func _walIndexTryHdr(tls *crt.TLS, _pWal *XWal, _pChanged *int32) (r0 int32) { // sqlite3.c:56484:1
- var _aCksum [2]uint32 // sqlite3.c:56485:7
- _ = _aCksum
- var _h1 XWalIndexHdr // sqlite3.c:56486:15
- _ = _h1
- var _h2 XWalIndexHdr // sqlite3.c:56486:19
- _ = _h2
- var _aHdr *XWalIndexHdr // sqlite3.c:56487:24
- _ = _aHdr
+// Try to read the wal-index header. Return 0 on success and 1 if
+// there is a problem.
+//
+// The wal-index is in shared memory. Another thread or process might
+// be writing the header at the same time this procedure is trying to
+// read it, which might result in inconsistency. A dirty read is detected
+// by verifying that both copies of the header are the same and also by
+// a checksum on the header.
+//
+// If and only if the read is consistent and the header is different from
+// pWal->hdr, then pWal->hdr is updated to the content of the new header
+// and *pChanged is set to 1.
+//
+// If the checksum cannot be verified return non-zero. If the header
+// is read successfully and the checksum verified, return zero.
+func _walIndexTryHdr(tls *crt.TLS, _pWal *XWal, _pChanged *int32) (r0 int32) {
+ var _aCksum [2]uint32
+ var _h1, _h2 XWalIndexHdr
+ var _aHdr *XWalIndexHdr
func() {
if (_pWal.X5) <= i32(0) || (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56490), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexTryHdrØ00__func__Ø000))), unsafe.Pointer(str(14356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56490), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexTryHdrØ00__func__Ø000))), unsafe.Pointer(str(15271)))
crt.X__builtin_abort(tls)
}
}()
@@ -22945,112 +22019,96 @@ func _walIndexTryHdr(tls *crt.TLS, _pWal *XWal, _pChanged *int32) (r0 int32) { /
crt.Xmemcpy(tls, (unsafe.Pointer)(&_h1), (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHdr))+48*uintptr(i32(0))))), u32(48))
_walShmBarrier(tls, _pWal)
crt.Xmemcpy(tls, (unsafe.Pointer)(&_h2), (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHdr))+48*uintptr(i32(1))))), u32(48))
- if crt.Xmemcmp(tls, (unsafe.Pointer)(&_h1), (unsafe.Pointer)(&_h2), u32(48)) == i32(0) {
- goto _3
+ if crt.Xmemcmp(tls, (unsafe.Pointer)(&_h1), (unsafe.Pointer)(&_h2), u32(48)) != i32(0) {
+ return i32(1)
}
- return i32(1)
-
-_3:
- if int32(_h1.X3) != i32(0) {
- goto _4
+ if int32(_h1.X3) == i32(0) {
+ return i32(1)
}
- return i32(1)
-
-_4:
_walChecksumBytes(tls, i32(1), (*uint8)(unsafe.Pointer(&_h1)), int32(u32(40)), nil, (*uint32)(unsafe.Pointer(&_aCksum)))
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aCksum)) + 4*uintptr(i32(0))))) == (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_h1))+uintptr(40 /* X10 */))))) + 4*uintptr(i32(0))))) && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aCksum)) + 4*uintptr(i32(1))))) == (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_h1))+uintptr(40 /* X10 */))))) + 4*uintptr(i32(1))))) {
- goto _6
+ if ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aCksum)) + 4*uintptr(i32(0))))) != (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_h1))+uintptr(40 /* X10 */))))) + 4*uintptr(i32(0)))))) || ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aCksum)) + 4*uintptr(i32(1))))) != (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_h1))+uintptr(40 /* X10 */))))) + 4*uintptr(i32(1)))))) {
+ return i32(1)
}
- return i32(1)
-
-_6:
- if crt.Xmemcmp(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(&_h1), u32(48)) == 0 {
- goto _7
+ if crt.Xmemcmp(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(&_h1), u32(48)) != 0 {
+ *_pChanged = i32(1)
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(&_h1), u32(48))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(36 /* X8 */))) = uint32((int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X5) & i32(65024)) + ((int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X5) & i32(1)) << uint(i32(16))))
}
-
- *_pChanged = i32(1)
- crt.Xmemcpy(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(&_h1), u32(48))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(36 /* X8 */))) = uint32((int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X5) & i32(65024)) + ((int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X5) & i32(1)) << uint(i32(16))))
-_7:
return i32(0)
+
+ _ = _aCksum
+ _ = _h1
+ _ = _h2
+ panic(0)
}
-var _walIndexTryHdrØ00__func__Ø000 [15]int8 // -
+var _walIndexTryHdrØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_walIndexTryHdrØ00__func__Ø000[0], str(22272), 15)
+ crt.Xstrncpy(nil, &_walIndexTryHdrØ00__func__Ø000[0], str(22637), 15)
}
-func _walShmBarrier(tls *crt.TLS, _pWal *XWal) { // sqlite3.c:55129:1
- if int32(_pWal.X11) == i32(2) {
- goto _0
+func _walShmBarrier(tls *crt.TLS, _pWal *XWal) {
+ if int32(_pWal.X11) != i32(2) {
+ _sqlite3OsShmBarrier(tls, (*Xsqlite3_file)(_pWal.X1))
}
-
- _sqlite3OsShmBarrier(tls, (*Xsqlite3_file)(_pWal.X1))
-_0:
}
-func _sqlite3OsShmBarrier(tls *crt.TLS, _id *Xsqlite3_file) { // sqlite3.c:20237:1
+func _sqlite3OsShmBarrier(tls *crt.TLS, _id *Xsqlite3_file) {
(*(*func(*crt.TLS, *Xsqlite3_file))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
}{((*Xsqlite3_io_methods)(_id.X0).X15)})))(tls, _id)
}
-func _walChecksumBytes(tls *crt.TLS, _nativeCksum int32, _a *uint8, _nByte int32, _aIn *uint32, _aOut *uint32) { // sqlite3.c:55091:1
- var _s1 uint32 // sqlite3.c:55098:7
- _ = _s1
- var _s2 uint32 // sqlite3.c:55098:11
- _ = _s2
- var _aData *uint32 // sqlite3.c:55099:7
- _ = _aData
- var _aEnd *uint32 // sqlite3.c:55100:7
- _ = _aEnd
+// Generate or extend an 8 byte checksum based on the data in
+// array aByte[] and the initial values of aIn[0] and aIn[1] (or
+// initial values of 0 and 0 if aIn==NULL).
+//
+// The checksum is written back into aOut[] before returning.
+//
+// nByte must be a positive multiple of 8.
+func _walChecksumBytes(tls *crt.TLS, _nativeCksum int32, _a *uint8, _nByte int32, _aIn *uint32, _aOut *uint32) {
+ var _s1, _s2 uint32
+ var _aData, _aEnd *uint32
_aData = (*uint32)(unsafe.Pointer(_a))
_aEnd = (*uint32)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 1*uintptr(_nByte)))))
- if _aIn == nil {
- goto _0
+ if _aIn != nil {
+ _s1 = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aIn)) + 4*uintptr(i32(0))))
+ _s2 = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aIn)) + 4*uintptr(i32(1))))
+ goto _1
}
-
- _s1 = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aIn)) + 4*uintptr(i32(0))))
- _s2 = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aIn)) + 4*uintptr(i32(1))))
- goto _1
-
-_0:
_s1 = store5(&_s2, uint32(i32(0)))
_1:
func() {
if _nByte < i32(8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55109), unsafe.Pointer((*int8)(unsafe.Pointer(&_walChecksumBytesØ00__func__Ø000))), unsafe.Pointer(str(22288)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55109), unsafe.Pointer((*int8)(unsafe.Pointer(&_walChecksumBytesØ00__func__Ø000))), unsafe.Pointer(str(22652)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_nByte & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55110), unsafe.Pointer((*int8)(unsafe.Pointer(&_walChecksumBytesØ00__func__Ø000))), unsafe.Pointer(str(22300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55110), unsafe.Pointer((*int8)(unsafe.Pointer(&_walChecksumBytesØ00__func__Ø000))), unsafe.Pointer(str(22661)))
crt.X__builtin_abort(tls)
}
}()
if _nativeCksum == 0 {
goto _6
}
-
_7:
{
p := &_s1
- *p = (*p) + ((*postInc29(&_aData, 4)) + _s2)
+ *p = (*p) + ((*postInc31(&_aData, 4)) + _s2)
sink5 = *p
}
{
p := &_s2
- *p = (*p) + ((*postInc29(&_aData, 4)) + _s1)
+ *p = (*p) + ((*postInc31(&_aData, 4)) + _s1)
sink5 = *p
}
if uintptr(unsafe.Pointer(_aData)) < uintptr(unsafe.Pointer(_aEnd)) {
goto _7
}
-
goto _8
-
_6:
_9:
{
@@ -23066,66 +22124,42 @@ _9:
{
p := &_aData
*p = (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 4*uintptr(i32(2))))
- sink29 = *p
+ sink31 = *p
}
if uintptr(unsafe.Pointer(_aData)) < uintptr(unsafe.Pointer(_aEnd)) {
goto _9
}
-
_8:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOut)) + 4*uintptr(i32(0)))) = _s1
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOut)) + 4*uintptr(i32(1)))) = _s2
}
-var _walChecksumBytesØ00__func__Ø000 [17]int8 // -
+var _walChecksumBytesØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_walChecksumBytesØ00__func__Ø000[0], str(22324), 17)
+ crt.Xstrncpy(nil, &_walChecksumBytesØ00__func__Ø000[0], str(22683), 17)
}
-func _walIndexRecover(tls *crt.TLS, _pWal *XWal) (r0 int32) { // sqlite3.c:55561:1
- var _rc int32 // sqlite3.c:55562:7
- _ = _rc
- var _nSize int64 // sqlite3.c:55563:7
- _ = _nSize
- var _aFrameCksum [2]uint32 // sqlite3.c:55564:7
- _ = _aFrameCksum
- var _iLock int32 // sqlite3.c:55565:7
- _ = _iLock
- var _nLock int32 // sqlite3.c:55566:7
- _ = _nLock
- var _3_aBuf [32]uint8 // sqlite3.c:55594:8
- _ = _3_aBuf
- var _3_aFrame *uint8 // sqlite3.c:55595:8
- _ = _3_aFrame
- var _3_szFrame int32 // sqlite3.c:55596:9
- _ = _3_szFrame
- var _3_aData *uint8 // sqlite3.c:55597:8
- _ = _3_aData
- var _3_iFrame int32 // sqlite3.c:55598:9
- _ = _3_iFrame
- var _3_iOffset int64 // sqlite3.c:55599:9
- _ = _3_iOffset
- var _3_szPage int32 // sqlite3.c:55600:9
- _ = _3_szPage
- var _3_magic uint32 // sqlite3.c:55601:9
- _ = _3_magic
- var _3_version uint32 // sqlite3.c:55602:9
- _ = _3_version
- var _3_isValid int32 // sqlite3.c:55603:9
- _ = _3_isValid
- var _9_pgno uint32 // sqlite3.c:55660:11
- _ = _9_pgno
- var _9_nTruncate uint32 // sqlite3.c:55661:11
- _ = _9_nTruncate
- var _11_pInfo *XWalCkptInfo // sqlite3.c:55689:26
- _ = _11_pInfo
- var _11_i int32 // sqlite3.c:55690:9
- _ = _11_i
+// Recover the wal-index by reading the write-ahead log file.
+//
+// This routine first tries to establish an exclusive lock on the
+// wal-index to prevent other threads/processes from doing anything
+// with the WAL or wal-index while recovery is running. The
+// WAL_RECOVER_LOCK is also held so that other threads will know
+// that this thread is running recovery. If unable to establish
+// the necessary locks, this routine returns SQLITE_BUSY.
+func _walIndexRecover(tls *crt.TLS, _pWal *XWal) (r0 int32) {
+ var _rc, _iLock, _nLock, _3_szFrame, _3_iFrame, _3_szPage, _3_isValid, _11_i int32
+ var _nSize, _3_iOffset int64
+ var _3_magic, _3_version, _9_pgno, _9_nTruncate uint32
+ var _3_aFrame, _3_aData *uint8
+ var _3_aBuf [32]uint8
+ var _aFrameCksum [2]uint32
+ var _11_pInfo *XWalCkptInfo
_aFrameCksum = [2]uint32{}
func() {
if int32(_pWal.X13) != i32(1) && int32(_pWal.X13) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55574), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexRecoverØ00__func__Ø000))), unsafe.Pointer(str(22344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55574), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexRecoverØ00__func__Ø000))), unsafe.Pointer(str(22700)))
crt.X__builtin_abort(tls)
}
}()
@@ -23133,81 +22167,53 @@ func _walIndexRecover(tls *crt.TLS, _pWal *XWal) (r0 int32) { // sqlite3.c:55561
i32(0)
func() {
if (_pWal.X12) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55577), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexRecoverØ00__func__Ø000))), unsafe.Pointer(str(14700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55577), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexRecoverØ00__func__Ø000))), unsafe.Pointer(str(15606)))
crt.X__builtin_abort(tls)
}
}()
_iLock = i32(1) + int32(_pWal.X13)
_nLock = i32(8) - _iLock
_rc = _walLockExclusive(tls, _pWal, _iLock, _nLock)
- if _rc == 0 {
- goto _5
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_5:
crt.Xmemset(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), i32(0), u32(48))
_rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pWal.X2), &_nSize)
- if _rc == i32(0) {
- goto _6
+ if _rc != i32(0) {
+ goto _recovery_error
}
-
- goto _recovery_error
-
-_6:
if _nSize <= int64(i32(32)) {
goto _7
}
-
_3_aFrame = nil
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(&_3_aBuf), i32(32), int64(i32(0)))
- if _rc == i32(0) {
- goto _8
+ if _rc != i32(0) {
+ goto _recovery_error
}
-
- goto _recovery_error
-
-_8:
_3_magic = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(0)))))
_3_szPage = int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(8))))))
- if (_3_magic&u32(4294967294)) == uint32(i32(931071618)) && (_3_szPage&(_3_szPage-i32(1))) == 0 && _3_szPage <= i32(65536) && _3_szPage >= i32(512) {
- goto _12
+ if ((((_3_magic & u32(4294967294)) != uint32(i32(931071618))) || (_3_szPage&(_3_szPage-i32(1))) != 0) || (_3_szPage > i32(65536))) || (_3_szPage < i32(512)) {
+ goto _finished
}
-
- goto _finished
-
-_12:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(13 /* X4 */))) = uint8(_3_magic & uint32(i32(1)))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(36 /* X8 */))) = uint32(_3_szPage)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(112 /* X22 */))) = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(12)))))
crt.Xmemcpy(tls, (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(16))))), uint32(i32(8)))
_walChecksumBytes(tls, bool2int(int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X4) == i32(0)), (*uint8)(unsafe.Pointer(&_3_aBuf)), i32(24), nil, (*uint32)(unsafe.Pointer((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))))
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(0))))) == _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(24))))) && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1))))) == _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(28))))) {
- goto _14
+ if ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(0))))) != _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(24)))))) || ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1))))) != _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(28)))))) {
+ goto _finished
}
-
- goto _finished
-
-_14:
_3_version = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aBuf))+1*uintptr(i32(4)))))
- if _3_version == uint32(i32(3007000)) {
- goto _15
+ if _3_version != uint32(i32(3007000)) {
+ _rc = _sqlite3CantopenError(tls, i32(55644))
+ goto _finished
}
-
- _rc = _sqlite3CantopenError(tls, i32(55644))
- goto _finished
-
-_15:
_3_szFrame = _3_szPage + i32(24)
_3_aFrame = (*uint8)(Xsqlite3_malloc64(tls, uint64(_3_szFrame)))
- if _3_aFrame != nil {
- goto _16
+ if _3_aFrame == nil {
+ _rc = _sqlite3NomemError(tls, i32(55652))
+ goto _recovery_error
}
-
- _rc = _sqlite3NomemError(tls, i32(55652))
- goto _recovery_error
-
-_16:
_3_aData = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_aFrame)) + 1*uintptr(i32(24))))
_3_iFrame = i32(0)
_3_iOffset = int64(i32(32))
@@ -23215,49 +22221,32 @@ _17:
if (_3_iOffset + int64(_3_szFrame)) > _nSize {
goto _20
}
-
_3_iFrame += 1
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(_3_aFrame), _3_szFrame, _3_iOffset)
- if _rc == i32(0) {
- goto _21
+ if _rc != i32(0) {
+ goto _20
}
-
- goto _20
-
-_21:
_3_isValid = _walDecodeFrame(tls, _pWal, &_9_pgno, &_9_nTruncate, _3_aData, _3_aFrame)
- if _3_isValid != 0 {
- goto _22
+ if _3_isValid == 0 {
+ goto _20
}
-
- goto _20
-
-_22:
_rc = _walIndexAppend(tls, _pWal, uint32(_3_iFrame), _9_pgno)
- if _rc == i32(0) {
- goto _23
+ if _rc != i32(0) {
+ goto _20
}
-
- goto _20
-
-_23:
- if _9_nTruncate == 0 {
- goto _24
+ if _9_nTruncate != 0 {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(16 /* X6 */))) = uint32(_3_iFrame)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(20 /* X7 */))) = _9_nTruncate
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(14 /* X5 */))) = uint16((_3_szPage & i32(65280)) | (_3_szPage >> uint(i32(16))))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFrameCksum)) + 4*uintptr(i32(0)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(0))))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFrameCksum)) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1))))
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(16 /* X6 */))) = uint32(_3_iFrame)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(20 /* X7 */))) = _9_nTruncate
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(14 /* X5 */))) = uint16((_3_szPage & i32(65280)) | (_3_szPage >> uint(i32(16))))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFrameCksum)) + 4*uintptr(i32(0)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(0))))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFrameCksum)) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1))))
-_24:
{
p := &_3_iOffset
*p = (*p) + int64(_3_szFrame)
sink6 = *p
}
goto _17
-
_20:
Xsqlite3_free(tls, (unsafe.Pointer)(_3_aFrame))
_7:
@@ -23265,7 +22254,6 @@ _finished:
if _rc != i32(0) {
goto _25
}
-
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(0)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFrameCksum)) + 4*uintptr(i32(0))))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFrameCksum)) + 4*uintptr(i32(1))))
_walIndexWriteHdr(tls, _pWal)
@@ -23278,93 +22266,70 @@ _26:
if _11_i >= i32(5) {
goto _29
}
-
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_11_i))) = u32(4294967295)
_11_i += 1
goto _26
-
_29:
- if ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) == 0 {
- goto _30
+ if ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) != 0 {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(i32(1)))) = (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(i32(1)))) = (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6
-_30:
- if ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X7) == 0 {
- goto _31
+ if ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X7) != 0 {
+ Xsqlite3_log(tls, i32(283), str(22739), (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6, unsafe.Pointer(_pWal.X21))
}
-
- Xsqlite3_log(tls, i32(283), str(22384), (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6, unsafe.Pointer(_pWal.X21))
-_31:
_25:
_recovery_error:
_walUnlockExclusive(tls, _pWal, _iLock, _nLock)
return _rc
+
+ _ = _aFrameCksum
+ _ = _3_aBuf
+ panic(0)
}
-var _walIndexRecoverØ00__func__Ø000 [16]int8 // -
+var _walIndexRecoverØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_walIndexRecoverØ00__func__Ø000[0], str(22424), 16)
+ crt.Xstrncpy(nil, &_walIndexRecoverØ00__func__Ø000[0], str(22776), 16)
}
-func _sqlite3CantopenError(tls *crt.TLS, _lineno int32) (r0 int32) { // sqlite3.c:143803:1
- return _reportError(tls, i32(14), _lineno, str(22440))
+func _sqlite3CantopenError(tls *crt.TLS, _lineno int32) (r0 int32) {
+ return _reportError(tls, i32(14), _lineno, str(22792))
}
-func _walDecodeFrame(tls *crt.TLS, _pWal *XWal, _piPage *uint32, _pnTruncate *uint32, _aData *uint8, _aFrame *uint8) (r0 int32) { // sqlite3.c:55197:1
- var _nativeCksum int32 // sqlite3.c:55204:7
- _ = _nativeCksum
- var _aCksum *uint32 // sqlite3.c:55205:7
- _ = _aCksum
- var _pgno uint32 // sqlite3.c:55206:7
- _ = _pgno
+// Check to see if the frame with header in aFrame[] and content
+// in aData[] is valid. If it is a valid frame, fill *piPage and
+// *pnTruncate and return true. Return if the frame is not valid.
+func _walDecodeFrame(tls *crt.TLS, _pWal *XWal, _piPage *uint32, _pnTruncate *uint32, _aData *uint8, _aFrame *uint8) (r0 int32) {
+ var _nativeCksum int32
+ var _pgno uint32
+ var _aCksum *uint32
_aCksum = (*uint32)(unsafe.Pointer((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(24 /* X8 */)))))
i32(0)
- if crt.Xmemcmp(tls, (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(8))))), uint32(i32(8))) == i32(0) {
- goto _0
+ if crt.Xmemcmp(tls, (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(8))))), uint32(i32(8))) != i32(0) {
+ return i32(0)
}
- return i32(0)
-
-_0:
_pgno = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(0)))))
- if _pgno != uint32(i32(0)) {
- goto _1
+ if _pgno == uint32(i32(0)) {
+ return i32(0)
}
- return i32(0)
-
-_1:
_nativeCksum = bool2int(int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X4) == i32(0))
_walChecksumBytes(tls, _nativeCksum, _aFrame, i32(8), _aCksum, _aCksum)
_walChecksumBytes(tls, _nativeCksum, _aData, int32(_pWal.X8), _aCksum, _aCksum)
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(0))))) == _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(16))))) && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(1))))) == _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(20))))) {
- goto _3
+ if ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(0))))) != _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(16)))))) || ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(1))))) != _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(20)))))) {
+ return i32(0)
}
- return i32(0)
-
-_3:
*_piPage = _pgno
*_pnTruncate = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(4)))))
return i32(1)
}
-func _walIndexAppend(tls *crt.TLS, _pWal *XWal, _iFrame uint32, _iPage uint32) (r0 int32) { // sqlite3.c:55472:1
- var _rc int32 // sqlite3.c:55473:7
- _ = _rc
- var _iZero uint32 // sqlite3.c:55474:7
- _ = _iZero
- var _aPgno *uint32 // sqlite3.c:55475:16
- _ = _aPgno
- var _aHash *uint16 // sqlite3.c:55476:20
- _ = _aHash
- var _1_iKey int32 // sqlite3.c:55484:9
- _ = _1_iKey
- var _1_idx int32 // sqlite3.c:55485:9
- _ = _1_idx
- var _1_nCollide int32 // sqlite3.c:55486:9
- _ = _1_nCollide
- var _2_nByte int32 // sqlite3.c:55495:11
- _ = _2_nByte
+// Set an entry in the wal-index that will map database page number
+// pPage into WAL frame iFrame.
+func _walIndexAppend(tls *crt.TLS, _pWal *XWal, _iFrame uint32, _iPage uint32) (r0 int32) {
+ var _rc, _1_iKey, _1_idx, _1_nCollide, _2_nByte int32
+ var _iZero uint32
+ var _aPgno *uint32
+ var _aHash *uint16
_iZero = u32(0)
_aPgno = nil
_aHash = nil
@@ -23372,72 +22337,64 @@ func _walIndexAppend(tls *crt.TLS, _pWal *XWal, _iFrame uint32, _iPage uint32) (
if _rc != i32(0) {
goto _0
}
-
_1_idx = int32(_iFrame - _iZero)
func() {
if _1_idx > i32(4097) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55489), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexAppendØ00__func__Ø000))), unsafe.Pointer(str(22460)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55489), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexAppendØ00__func__Ø000))), unsafe.Pointer(str(22809)))
crt.X__builtin_abort(tls)
}
}()
- if _1_idx != i32(1) {
- goto _3
+ if _1_idx == i32(1) {
+ _2_nByte = int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash))+2*uintptr(i32(8192)))))))) - uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno))+4*uintptr(i32(1))))))))) / 1)
+ crt.Xmemset(tls, (unsafe.Pointer)((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno))+4*uintptr(i32(1))))), i32(0), uint32(_2_nByte))
}
-
- _2_nByte = int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash))+2*uintptr(i32(8192)))))))) - uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno))+4*uintptr(i32(1))))))))) / 1)
- crt.Xmemset(tls, (unsafe.Pointer)((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno))+4*uintptr(i32(1))))), i32(0), uint32(_2_nByte))
-_3:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(_1_idx)))) == 0 {
- goto _4
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(_1_idx)))) != 0 {
+ _walCleanupHash(tls, _pWal)
+ func() {
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(_1_idx)))) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55507), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexAppendØ00__func__Ø000))), unsafe.Pointer(str(22838)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _walCleanupHash(tls, _pWal)
- func() {
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(_1_idx)))) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55507), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexAppendØ00__func__Ø000))), unsafe.Pointer(str(22492)))
- crt.X__builtin_abort(tls)
- }
- }()
-_4:
_1_nCollide = _1_idx
_1_iKey = _walHash(tls, _iPage)
_7:
if (*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash)) + 2*uintptr(_1_iKey)))) == 0 {
goto _10
}
-
- if postInc1(&_1_nCollide, int32(-1)) != i32(0) {
- goto _11
+ if postInc1(&_1_nCollide, int32(-1)) == i32(0) {
+ return _sqlite3CorruptError(tls, i32(55513))
}
- return _sqlite3CorruptError(tls, i32(55513))
-
-_11:
_1_iKey = _walNextHash(tls, _1_iKey)
goto _7
-
_10:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPgno)) + 4*uintptr(_1_idx))) = _iPage
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHash)) + 2*uintptr(_1_iKey))) = uint16(_1_idx)
_0:
return _rc
+
+ _ = _1_nCollide
+ panic(0)
}
-var _walIndexAppendØ00__func__Ø000 [15]int8 // -
+var _walIndexAppendØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_walIndexAppendØ00__func__Ø000[0], str(22504), 15)
+ crt.Xstrncpy(nil, &_walIndexAppendØ00__func__Ø000[0], str(22850), 15)
}
-func _walIndexWriteHdr(tls *crt.TLS, _pWal *XWal) { // sqlite3.c:55140:1
- var _aHdr *XWalIndexHdr // sqlite3.c:55141:24
- _ = _aHdr
- var _nCksum int32 // sqlite3.c:55142:13
- _ = _nCksum
+// Write the header information in pWal->hdr into the wal-index.
+//
+// The checksum on pWal->hdr is updated before it is written.
+func _walIndexWriteHdr(tls *crt.TLS, _pWal *XWal) {
+ var _nCksum int32
+ var _aHdr *XWalIndexHdr
_aHdr = _walIndexHdr(tls, _pWal)
_nCksum = i32(40)
func() {
if (_pWal.X12) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55144), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexWriteHdrØ00__func__Ø000))), unsafe.Pointer(str(14700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55144), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIndexWriteHdrØ00__func__Ø000))), unsafe.Pointer(str(15606)))
crt.X__builtin_abort(tls)
}
}()
@@ -23449,66 +22406,71 @@ func _walIndexWriteHdr(tls *crt.TLS, _pWal *XWal) { // sqlite3.c:55140:1
crt.Xmemcpy(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHdr))+48*uintptr(i32(0))))), (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), u32(48))
}
-var _walIndexWriteHdrØ00__func__Ø000 [17]int8 // -
+var _walIndexWriteHdrØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_walIndexWriteHdrØ00__func__Ø000[0], str(22520), 17)
+ crt.Xstrncpy(nil, &_walIndexWriteHdrØ00__func__Ø000[0], str(22865), 17)
}
-func _walCkptInfo(tls *crt.TLS, _pWal *XWal) (r0 *XWalCkptInfo) { // sqlite3.c:55057:1
+// Return a pointer to the WalCkptInfo structure in the wal-index.
+func _walCkptInfo(tls *crt.TLS, _pWal *XWal) (r0 *XWalCkptInfo) {
func() {
if (_pWal.X5) <= i32(0) || (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55058), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCkptInfoØ00__func__Ø000))), unsafe.Pointer(str(14356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55058), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCkptInfoØ00__func__Ø000))), unsafe.Pointer(str(15271)))
crt.X__builtin_abort(tls)
}
}()
return (*XWalCkptInfo)(unsafe.Pointer((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0)))))) + 4*uintptr(u32(24))))))
}
-var _walCkptInfoØ00__func__Ø000 [12]int8 // -
+var _walCkptInfoØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_walCkptInfoØ00__func__Ø000[0], str(22540), 12)
+ crt.Xstrncpy(nil, &_walCkptInfoØ00__func__Ø000[0], str(22882), 12)
}
-func _walPagesize(tls *crt.TLS, _pWal *XWal) (r0 int32) { // sqlite3.c:56132:1
+// The cache of the wal-index header must be valid to call this function.
+// Return the page-size in bytes used by the database.
+func _walPagesize(tls *crt.TLS, _pWal *XWal) (r0 int32) {
/* X18 */ /* X18 */
return (int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52))).X5) & i32(65024)) + ((int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52))).X5) & i32(1)) << uint(i32(16)))
}
-func _walCheckpoint(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _eMode int32, _xBusy func(*crt.TLS, unsafe.Pointer) int32, _pBusyArg unsafe.Pointer, _sync_flags int32, _zBuf *uint8) (r0 int32) { // sqlite3.c:56200:1
- var _rc int32 // sqlite3.c:56209:7
- _ = _rc
- var _szPage int32 // sqlite3.c:56210:7
- _ = _szPage
- var _pIter *XWalIterator // sqlite3.c:56211:15
- _ = _pIter
- var _iDbpage uint32 // sqlite3.c:56212:7
- _ = _iDbpage
- var _iFrame uint32 // sqlite3.c:56213:7
- _ = _iFrame
- var _mxSafeFrame uint32 // sqlite3.c:56214:7
- _ = _mxSafeFrame
- var _mxPage uint32 // sqlite3.c:56215:7
- _ = _mxPage
- var _i int32 // sqlite3.c:56216:7
- _ = _i
- var _pInfo *XWalCkptInfo // sqlite3.c:56217:24
- _ = _pInfo
- var _3_y uint32 // sqlite3.c:56252:11
- _ = _3_y
- var _8_nSize int64 // sqlite3.c:56271:11
- _ = _8_nSize
- var _8_nBackfill uint32 // sqlite3.c:56272:11
- _ = _8_nBackfill
- var _10_nReq int64 // sqlite3.c:56285:13
- _ = _10_nReq
- var _12_iOffset int64 // sqlite3.c:56295:13
- _ = _12_iOffset
- var _16_szDb int64 // sqlite3.c:56317:15
- _ = _16_szDb
- var _22_salt1 uint32 // sqlite3.c:56350:11
- _ = _22_salt1
+// Copy as much content as we can from the WAL back into the database file
+// in response to an sqlite3_wal_checkpoint() request or the equivalent.
+//
+// The amount of information copies from WAL to database might be limited
+// by active readers. This routine will never overwrite a database page
+// that a concurrent reader might be using.
+//
+// All I/O barrier operations (a.k.a fsyncs) occur in this routine when
+// SQLite is in WAL-mode in synchronous=NORMAL. That means that if
+// checkpoints are always run by a background thread or background
+// process, foreground threads will never block on a lengthy fsync call.
+//
+// Fsync is called on the WAL before writing content out of the WAL and
+// into the database. This ensures that if the new content is persistent
+// in the WAL and can be recovered following a power-loss or hard reset.
+//
+// Fsync is also called on the database file if (and only if) the entire
+// WAL content is copied into the database file. This second fsync makes
+// it safe to delete the WAL since the new content will persist in the
+// database file.
+//
+// This routine uses and updates the nBackfill field of the wal-index header.
+// This is the only routine that will increase the value of nBackfill.
+// (A WAL reset or recovery will revert nBackfill to zero, but not increase
+// its value.)
+//
+// The caller must be holding sufficient locks to ensure that no other
+// checkpoint is running (in any other thread or process) at the same
+// time.
+func _walCheckpoint(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _eMode int32, _xBusy func(*crt.TLS, unsafe.Pointer) int32, _pBusyArg unsafe.Pointer, _sync_flags int32, _zBuf *uint8) (r0 int32) {
+ var _rc, _szPage, _i int32
+ var _8_nSize, _10_nReq, _12_iOffset, _16_szDb int64
+ var _iDbpage, _iFrame, _mxSafeFrame, _mxPage, _3_y, _8_nBackfill, _22_salt1 uint32
+ var _pInfo *XWalCkptInfo
+ var _pIter *XWalIterator
_rc = i32(0)
_pIter = nil
_iDbpage = u32(0)
@@ -23518,17 +22480,13 @@ func _walCheckpoint(tls *crt.TLS, _pWal *XWal, _db *Xsqlite3, _eMode int32, _xBu
if (_pInfo.X0) >= ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
goto _0
}
-
_rc = _walIteratorInit(tls, _pWal, &_pIter)
- if _rc == i32(0) {
- goto _1
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_1:
func() {
if _pIter == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56230), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22552)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56230), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22894)))
crt.X__builtin_abort(tls)
}
}()
@@ -23538,7 +22496,7 @@ _1:
}{_xBusy})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{nil})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56234), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22112)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56234), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22486)))
crt.X__builtin_abort(tls)
}
}()
@@ -23549,187 +22507,132 @@ _7:
if _i >= i32(5) {
goto _10
}
-
_3_y = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_i)))
if _mxSafeFrame <= _3_y {
goto _11
}
-
func() {
if _3_y > ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56254), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22560)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56254), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22900)))
crt.X__builtin_abort(tls)
}
}()
_rc = _walBusyLock(tls, _pWal, _xBusy, _pBusyArg, i32(3)+_i, i32(1))
- if _rc != i32(0) {
- goto _14
+ if _rc == i32(0) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_i))) = func() uint32 {
+ if _i == i32(1) {
+ return _mxSafeFrame
+ }
+ return u32(4294967295)
+ }()
+ _walUnlockExclusive(tls, _pWal, i32(3)+_i, i32(1))
+ goto _17
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_i))) = func() uint32 {
- if _i == i32(1) {
- return _mxSafeFrame
- }
- return u32(4294967295)
- }()
- _walUnlockExclusive(tls, _pWal, i32(3)+_i, i32(1))
- goto _17
-
-_14:
- if _rc != i32(5) {
- goto _18
+ if _rc == i32(5) {
+ _mxSafeFrame = _3_y
+ _xBusy = nil
+ goto _19
}
-
- _mxSafeFrame = _3_y
- _xBusy = nil
- goto _19
-
-_18:
goto _walcheckpoint_out
-
_19:
_17:
_11:
_i += 1
goto _7
-
_10:
if (_pInfo.X0) >= _mxSafeFrame || store1(&_rc, _walBusyLock(tls, _pWal, _xBusy, _pBusyArg, i32(3), i32(1))) != i32(0) {
goto _21
}
-
_8_nBackfill = _pInfo.X0
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(32 /* X3 */))) = _mxSafeFrame
- if _sync_flags == 0 {
- goto _22
+ if _sync_flags != 0 {
+ _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pWal.X2), _sync_flags)
}
-
- _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pWal.X2), _sync_flags)
-_22:
if _rc != i32(0) {
goto _23
}
-
_10_nReq = int64(_mxPage) * int64(_szPage)
_rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pWal.X1), &_8_nSize)
- if _rc != i32(0) || _8_nSize >= _10_nReq {
- goto _25
+ if (_rc == i32(0)) && (_8_nSize < _10_nReq) {
+ _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pWal.X1), i32(5), (unsafe.Pointer)(&_10_nReq))
}
-
- _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pWal.X1), i32(5), (unsafe.Pointer)(&_10_nReq))
-_25:
_23:
_26:
if _rc != i32(0) || i32(0) != _walIteratorNext(tls, _pIter, &_iDbpage, &_iFrame) {
goto _27
}
-
func() {
if _walFramePgno(tls, _pWal, _iFrame) != _iDbpage {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56296), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56296), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22921)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) == 0 {
- goto _31
+ if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) != 0 {
+ _rc = func() int32 {
+ if (_db.X17) != 0 {
+ return _sqlite3NomemError(tls, i32(56298))
+ }
+ return i32(9)
+ }()
+ goto _27
}
-
- _rc = func() int32 {
- if (_db.X17) != 0 {
- return _sqlite3NomemError(tls, i32(56298))
- }
- return i32(9)
- }()
- goto _27
-
-_31:
- if _iFrame > _8_nBackfill && _iFrame <= _mxSafeFrame && _iDbpage <= _mxPage {
- goto _36
+ if ((_iFrame <= _8_nBackfill) || (_iFrame > _mxSafeFrame)) || (_iDbpage > _mxPage) {
+ goto _26
}
-
- goto _26
-
-_36:
_12_iOffset = (int64(i32(32)) + (int64(_iFrame-uint32(i32(1))) * int64(_szPage+i32(24)))) + int64(i32(24))
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(_zBuf), _szPage, _12_iOffset)
- if _rc == i32(0) {
- goto _37
+ if _rc != i32(0) {
+ goto _27
}
-
- goto _27
-
-_37:
_12_iOffset = int64(_iDbpage-uint32(i32(1))) * int64(_szPage)
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pWal.X1), (unsafe.Pointer)(_zBuf), _szPage, _12_iOffset)
- if _rc == i32(0) {
- goto _38
+ if _rc != i32(0) {
+ goto _27
}
-
- goto _27
-
-_38:
goto _26
-
_27:
if _rc != i32(0) {
goto _39
}
-
if _mxSafeFrame != (_walIndexHdr(tls, _pWal).X6) {
goto _40
}
-
_16_szDb = int64((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X7) * int64(_szPage)
_rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pWal.X1), _16_szDb)
- if _rc != i32(0) || _sync_flags == 0 {
- goto _42
+ if (_rc == i32(0)) && _sync_flags != 0 {
+ _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pWal.X1), _sync_flags)
}
-
- _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pWal.X1), _sync_flags)
-_42:
_40:
- if _rc != i32(0) {
- goto _43
+ if _rc == i32(0) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(0 /* X0 */))) = _mxSafeFrame
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(0 /* X0 */))) = _mxSafeFrame
-_43:
_39:
_walUnlockExclusive(tls, _pWal, i32(3), i32(1))
_21:
- if _rc != i32(5) {
- goto _44
+ if _rc == i32(5) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_44:
_0:
if _rc != i32(0) || _eMode == i32(0) {
goto _46
}
-
func() {
if (_pWal.X12) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56346), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(14700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56346), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(15606)))
crt.X__builtin_abort(tls)
}
}()
- if (_pInfo.X0) >= ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
- goto _49
+ if (_pInfo.X0) < ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
+ _rc = i32(5)
+ goto _50
}
-
- _rc = i32(5)
- goto _50
-
-_49:
if _eMode < i32(2) {
goto _51
}
-
Xsqlite3_randomness(tls, i32(4), (unsafe.Pointer)(&_22_salt1))
func() {
if (_pInfo.X0) != ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56352), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22620)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56352), unsafe.Pointer((*int8)(unsafe.Pointer(&_walCheckpointØ00__func__Ø000))), unsafe.Pointer(str(22957)))
crt.X__builtin_abort(tls)
}
}()
@@ -23737,14 +22640,10 @@ _49:
if _rc != i32(0) {
goto _54
}
-
- if _eMode != i32(3) {
- goto _55
+ if _eMode == i32(3) {
+ _walRestartHdr(tls, _pWal, _22_salt1)
+ _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pWal.X2), int64(i32(0)))
}
-
- _walRestartHdr(tls, _pWal, _22_salt1)
- _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pWal.X2), int64(i32(0)))
-_55:
_walUnlockExclusive(tls, _pWal, i32(4), i32(4))
_54:
_51:
@@ -23755,37 +22654,26 @@ _walcheckpoint_out:
return _rc
}
-func _walIteratorInit(tls *crt.TLS, _pWal *XWal, _pp **XWalIterator) (r0 int32) { // sqlite3.c:56032:1
- var _p *XWalIterator // sqlite3.c:56033:15
- _ = _p
- var _nSegment int32 // sqlite3.c:56034:7
- _ = _nSegment
- var _iLast uint32 // sqlite3.c:56035:7
- _ = _iLast
- var _nByte int32 // sqlite3.c:56036:7
- _ = _nByte
- var _i int32 // sqlite3.c:56037:7
- _ = _i
- var _aTmp *uint16 // sqlite3.c:56038:11
- _ = _aTmp
- var _rc int32 // sqlite3.c:56039:7
- _ = _rc
- var _3_aHash *uint16 // sqlite3.c:56070:22
- _ = _3_aHash
- var _3_iZero uint32 // sqlite3.c:56071:9
- _ = _3_iZero
- var _3_aPgno *uint32 // sqlite3.c:56072:18
- _ = _3_aPgno
- var _4_j int32 // sqlite3.c:56076:11
- _ = _4_j
- var _4_nEntry int32 // sqlite3.c:56077:11
- _ = _4_nEntry
- var _4_aIndex *uint16 // sqlite3.c:56078:15
- _ = _4_aIndex
+// Construct a WalInterator object that can be used to loop over all
+// pages in the WAL in ascending order. The caller must hold the checkpoint
+// lock.
+//
+// On success, make *pp point to the newly allocated WalInterator object
+// return SQLITE_OK. Otherwise, return an error code. If this routine
+// returns an error, the value of *pp is undefined.
+//
+// The calling routine should invoke walIteratorFree() to destroy the
+// WalIterator object when it has finished with it.
+func _walIteratorInit(tls *crt.TLS, _pWal *XWal, _pp **XWalIterator) (r0 int32) {
+ var _nSegment, _nByte, _i, _rc, _4_j, _4_nEntry int32
+ var _iLast, _3_iZero uint32
+ var _3_aPgno *uint32
+ var _aTmp, _3_aHash, _4_aIndex *uint16
+ var _p *XWalIterator
_rc = i32(0)
func() {
if (_pWal.X13) == 0 || ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56044), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIteratorInitØ00__func__Ø000))), unsafe.Pointer(str(22656)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56044), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIteratorInitØ00__func__Ø000))), unsafe.Pointer(str(22993)))
crt.X__builtin_abort(tls)
}
}()
@@ -23793,12 +22681,9 @@ func _walIteratorInit(tls *crt.TLS, _pWal *XWal, _pp **XWalIterator) (r0 int32)
_nSegment = _walFramePage(tls, _iLast) + i32(1)
_nByte = int32((u32(28) + (uint32(_nSegment-i32(1)) * u32(20))) + (_iLast * u32(2)))
_p = (*XWalIterator)(Xsqlite3_malloc64(tls, uint64(_nByte)))
- if _p != nil {
- goto _3
+ if _p == nil {
+ return _sqlite3NomemError(tls, i32(56054))
}
- return _sqlite3NomemError(tls, i32(56054))
-
-_3:
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), uint32(_nByte))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = _nSegment
_aTmp = (*uint16)(Xsqlite3_malloc64(tls, uint64(u32(2)*func() uint32 {
@@ -23807,32 +22692,23 @@ _3:
}
return _iLast
}())))
- if _aTmp != nil {
- goto _6
+ if _aTmp == nil {
+ _rc = _sqlite3NomemError(tls, i32(56066))
}
-
- _rc = _sqlite3NomemError(tls, i32(56066))
-_6:
_i = i32(0)
_7:
if _rc != i32(0) || _i >= _nSegment {
goto _11
}
-
_rc = _walHashGet(tls, _pWal, _i, &_3_aHash, &_3_aPgno, &_3_iZero)
if _rc != i32(0) {
goto _12
}
-
*(*uintptr)(unsafe.Pointer(&_3_aPgno)) += uintptr(4)
- if (_i + i32(1)) != _nSegment {
- goto _13
+ if (_i + i32(1)) == _nSegment {
+ _4_nEntry = int32(_iLast - _3_iZero)
+ goto _14
}
-
- _4_nEntry = int32(_iLast - _3_iZero)
- goto _14
-
-_13:
_4_nEntry = int32((uintptr(unsafe.Pointer((*uint32)(unsafe.Pointer(_3_aHash)))) - uintptr(unsafe.Pointer(_3_aPgno))) / 4)
_14:
_4_aIndex = (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TWalSegment)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TWalSegment)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr(_p.X1))))) + 2*uintptr(_3_iZero)))
@@ -23842,11 +22718,9 @@ _15:
if _4_j >= _4_nEntry {
goto _18
}
-
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_aIndex)) + 2*uintptr(_4_j))) = uint16(_4_j)
_4_j += 1
goto _15
-
_18:
_walMergesort(tls, _3_aPgno, _aTmp, _4_aIndex, &_4_nEntry)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TWalSegment)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TWalSegment)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr(_i))))) + uintptr(16 /* X4 */))) = int32(_3_iZero)
@@ -23856,44 +22730,42 @@ _18:
_12:
_i += 1
goto _7
-
_11:
Xsqlite3_free(tls, (unsafe.Pointer)(_aTmp))
- if _rc == i32(0) {
- goto _19
+ if _rc != i32(0) {
+ _walIteratorFree(tls, _p)
}
-
- _walIteratorFree(tls, _p)
-_19:
*_pp = _p
return _rc
}
-var _walIteratorInitØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_walIteratorInitØ00__func__Ø000[0], str(22696), 16)
-}
-
-func _walMergesort(tls *crt.TLS, _aContent *uint32, _aBuffer *uint16, _aList *uint16, _pnList *int32) { // sqlite3.c:55953:1
- var _nList int32 // sqlite3.c:55964:13
- _ = _nList
- var _nMerge int32 // sqlite3.c:55965:7
- _ = _nMerge
- var _aMerge *uint16 // sqlite3.c:55966:11
- _ = _aMerge
- var _iList int32 // sqlite3.c:55967:7
- _ = _iList
- var _iSub uint32 // sqlite3.c:55968:7
- _ = _iSub
- var _aSub [13]TSublist // sqlite3.c:55969:18
- _ = _aSub
- var _2_p *TSublist // sqlite3.c:55979:22
- _ = _2_p
- var _4_p *TSublist // sqlite3.c:55992:22
- _ = _4_p
- var _5_i int32 // sqlite3.c:56005:9
- _ = _5_i
+var _walIteratorInitØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_walIteratorInitØ00__func__Ø000[0], str(23031), 16)
+}
+
+// Sort the elements in list aList using aContent[] as the sort key.
+// Remove elements with duplicate keys, preferring to keep the
+// larger aList[] values.
+//
+// The aList[] entries are indices into aContent[]. The values in
+// aList[] are to be sorted so that for all J i32(4096) || _nList <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55972), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(22712)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55972), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(23047)))
crt.X__builtin_abort(tls)
}
}()
@@ -23911,7 +22783,6 @@ _3:
if _iList >= _nList {
goto _6
}
-
_nMerge = i32(1)
_aMerge = (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aList)) + 2*uintptr(_iList)))
_iSub = uint32(i32(0))
@@ -23919,75 +22790,67 @@ _7:
if (_iList & (i32(1) << uint(int32(_iSub)))) == 0 {
goto _10
}
-
func() {
if _iSub >= uint32(i32(13)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55980), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(22748)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55980), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(23081)))
crt.X__builtin_abort(tls)
}
}()
_2_p = (*TSublist)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aSub)) + 8*uintptr(_iSub)))
func() {
if (_2_p.X1) == nil || (_2_p.X0) > (i32(1)<= uint32(i32(13)) {
goto _21
}
-
- if (_nList & (i32(1) << uint(int32(_iSub)))) == 0 {
- goto _22
+ if (_nList & (i32(1) << uint(int32(_iSub)))) != 0 {
+ func() {
+ if _iSub >= uint32(i32(13)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55993), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(23081)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _4_p = (*TSublist)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aSub)) + 8*uintptr(_iSub)))
+ func() {
+ if (_4_p.X0) > (i32(1) << uint(int32(_iSub))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55995), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(23173)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_4_p.X1) != (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aList))+2*uintptr(_nList&(^((i32(2)<= uint32(i32(13)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55993), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(22748)))
- crt.X__builtin_abort(tls)
- }
- }()
- _4_p = (*TSublist)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aSub)) + 8*uintptr(_iSub)))
- func() {
- if (_4_p.X0) > (i32(1) << uint(int32(_iSub))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55995), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(22844)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_4_p.X1) != (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aList))+2*uintptr(_nList&(^((i32(2)<= (*_pnList) {
goto _34
}
-
func() {
if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aList)) + 2*uintptr(_5_i))))))) <= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aList)) + 2*uintptr(_5_i-i32(1)))))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56007), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(22920)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56007), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergesortØ00__func__Ø000))), unsafe.Pointer(str(23246)))
crt.X__builtin_abort(tls)
}
}()
_5_i += 1
goto _31
-
_34:
+ _ = _aSub
}
-var _walMergesortØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_walMergesortØ00__func__Ø000[0], str(22964), 13)
-}
-
-func _walMerge(tls *crt.TLS, _aContent *uint32, _aLeft *uint16, _nLeft int32, _paRight **uint16, _pnRight *int32, _aTmp *uint16) { // sqlite3.c:55896:1
- var _iLeft int32 // sqlite3.c:55904:7
- _ = _iLeft
- var _iRight int32 // sqlite3.c:55905:7
- _ = _iRight
- var _iOut int32 // sqlite3.c:55906:7
- _ = _iOut
- var _nRight int32 // sqlite3.c:55907:7
- _ = _nRight
- var _aRight *uint16 // sqlite3.c:55908:11
- _ = _aRight
- var _1_logpage uint16 // sqlite3.c:55912:13
- _ = _1_logpage
- var _1_dbpage uint32 // sqlite3.c:55913:10
- _ = _1_dbpage
+var _walMergesortØ00__func__Ø000 [13]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_walMergesortØ00__func__Ø000[0], str(23288), 13)
+}
+
+// This function merges two sorted lists into a single sorted list.
+//
+// aLeft[] and aRight[] are arrays of indices. The sort key is
+// aContent[aLeft[]] and aContent[aRight[]]. Upon entry, the following
+// is guaranteed for all J= _nRight && _iLeft >= _nLeft {
goto _4
}
-
- if _iLeft >= _nLeft || _iRight < _nRight && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLeft)) + 2*uintptr(_iLeft))))))) >= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRight)) + 2*uintptr(_iRight))))))) {
- goto _8
+ if (_iLeft < _nLeft) && ((_iRight >= _nRight) || ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLeft)) + 2*uintptr(_iLeft))))))) < (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRight)) + 2*uintptr(_iRight))))))))) {
+ _1_logpage = *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLeft)) + 2*uintptr(postInc1(&_iLeft, int32(1)))))
+ goto _9
}
-
- _1_logpage = *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLeft)) + 2*uintptr(postInc1(&_iLeft, int32(1)))))
- goto _9
-
-_8:
_1_logpage = *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRight)) + 2*uintptr(postInc1(&_iRight, int32(1)))))
_9:
_1_dbpage = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(_1_logpage)))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTmp)) + 2*uintptr(postInc1(&_iOut, int32(1))))) = _1_logpage
- if _iLeft >= _nLeft || (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLeft)) + 2*uintptr(_iLeft))))))) != _1_dbpage {
- goto _11
+ if (_iLeft < _nLeft) && ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLeft)) + 2*uintptr(_iLeft))))))) == _1_dbpage) {
+ _iLeft += 1
}
-
- _iLeft += 1
-_11:
func() {
if _iLeft < _nLeft && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLeft)) + 2*uintptr(_iLeft))))))) <= _1_dbpage {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55927), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergeØ00__func__Ø000))), unsafe.Pointer(str(23000)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55927), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergeØ00__func__Ø000))), unsafe.Pointer(str(23321)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iRight < _nRight && (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aContent)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRight)) + 2*uintptr(_iRight))))))) <= _1_dbpage {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55928), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergeØ00__func__Ø000))), unsafe.Pointer(str(23048)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55928), unsafe.Pointer((*int8)(unsafe.Pointer(&_walMergeØ00__func__Ø000))), unsafe.Pointer(str(23367)))
crt.X__builtin_abort(tls)
}
}()
goto _3
-
_4:
*_paRight = _aLeft
*_pnRight = _iOut
crt.Xmemcpy(tls, (unsafe.Pointer)(_aLeft), (unsafe.Pointer)(_aTmp), u32(2)*uint32(_iOut))
}
-var _walMergeØ00__func__Ø000 [9]int8 // -
+var _walMergeØ00__func__Ø000 [9]int8
func init() {
- crt.Xstrncpy(nil, &_walMergeØ00__func__Ø000[0], str(23100), 9)
+ crt.Xstrncpy(nil, &_walMergeØ00__func__Ø000[0], str(23417), 9)
}
-func _walIteratorFree(tls *crt.TLS, _p *XWalIterator) { // sqlite3.c:56016:1
+// Free an iterator allocated by walIteratorInit().
+func _walIteratorFree(tls *crt.TLS, _p *XWalIterator) {
Xsqlite3_free(tls, (unsafe.Pointer)(_p))
}
-var _walCheckpointØ00__func__Ø000 [14]int8 // -
+var _walCheckpointØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_walCheckpointØ00__func__Ø000[0], str(23112), 14)
+ crt.Xstrncpy(nil, &_walCheckpointØ00__func__Ø000[0], str(23426), 14)
}
-func _walIteratorNext(tls *crt.TLS, _p *XWalIterator, _piPage *uint32, _piFrame *uint32) (r0 int32) { // sqlite3.c:55843:1
- var _iMin uint32 // sqlite3.c:55848:7
- _ = _iMin
- var _iRet uint32 // sqlite3.c:55849:7
- _ = _iRet
- var _i int32 // sqlite3.c:55850:7
- _ = _i
- var _1_pSegment *TWalSegment // sqlite3.c:55855:23
- _ = _1_pSegment
- var _2_iPg uint32 // sqlite3.c:55857:11
- _ = _2_iPg
+// Find the smallest page number out of all pages held in the WAL that
+// has not been returned by any prior invocation of this method on the
+// same WalIterator object. Write into *piFrame the frame index where
+// that page was last written into the WAL. Write into *piPage the page
+// number.
+//
+// Return 0 on success. If there are no pages in the WAL with a page
+// number larger than *piPage, then return 1.
+func _walIteratorNext(tls *crt.TLS, _p *XWalIterator, _piPage *uint32, _piFrame *uint32) (r0 int32) {
+ var _i int32
+ var _iMin, _iRet, _2_iPg uint32
+ var _1_pSegment *TWalSegment
_iRet = u32(4294967295)
_iMin = uint32(_p.X0)
func() {
if _iMin >= u32(4294967295) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55853), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIteratorNextØ00__func__Ø000))), unsafe.Pointer(str(23128)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55853), unsafe.Pointer((*int8)(unsafe.Pointer(&_walIteratorNextØ00__func__Ø000))), unsafe.Pointer(str(23440)))
crt.X__builtin_abort(tls)
}
}()
@@ -24125,53 +22991,56 @@ _2:
if _i < i32(0) {
goto _5
}
-
_1_pSegment = (*TWalSegment)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TWalSegment)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 20*uintptr(_i)))
_6:
if (_1_pSegment.X0) >= (_1_pSegment.X3) {
goto _7
}
-
_2_iPg = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSegment.X2)) + 4*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSegment.X1)) + 2*uintptr(_1_pSegment.X0))))))
if _2_iPg <= _iMin {
goto _8
}
-
- if _2_iPg >= _iRet {
- goto _9
+ if _2_iPg < _iRet {
+ _iRet = _2_iPg
+ *_piFrame = uint32((_1_pSegment.X4) + int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSegment.X1)) + 2*uintptr(_1_pSegment.X0)))))
}
-
- _iRet = _2_iPg
- *_piFrame = uint32((_1_pSegment.X4) + int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSegment.X1)) + 2*uintptr(_1_pSegment.X0)))))
-_9:
goto _7
-
_8:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSegment)) + uintptr(0 /* X0 */))) += 1
goto _6
-
_7:
_i -= 1
goto _2
-
_5:
*_piPage = uint32(store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))), int32(_iRet)))
return bool2int(_iRet == u32(4294967295))
}
-var _walIteratorNextØ00__func__Ø000 [16]int8 // -
+var _walIteratorNextØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_walIteratorNextØ00__func__Ø000[0], str(23144), 16)
+ crt.Xstrncpy(nil, &_walIteratorNextØ00__func__Ø000[0], str(23456), 16)
}
-func _walRestartHdr(tls *crt.TLS, _pWal *XWal, _salt1 uint32) { // sqlite3.c:56153:1
- var _pInfo *XWalCkptInfo // sqlite3.c:56154:24
- _ = _pInfo
- var _i int32 // sqlite3.c:56155:7
- _ = _i
- var _aSalt *uint32 // sqlite3.c:56156:7
- _ = _aSalt
+// The following is guaranteed when this function is called:
+//
+// a) the WRITER lock is held,
+// b) the entire log file has been checkpointed, and
+// c) any existing readers are reading exclusively from the database
+// file - there are no readers that may attempt to read a frame from
+// the log file.
+//
+// This function updates the shared-memory structures so that the next
+// client to write to the database (which may be this one) does so by
+// writing frames into the start of the log file.
+//
+// The value of parameter salt1 is used as the aSalt[1] value in the
+// new wal-index header. It should be passed a pseudo-random value (i.e.
+// one obtained from sqlite3_randomness()).
+func _walRestartHdr(tls *crt.TLS, _pWal *XWal, _salt1 uint32) {
+ var _i int32
+ var _aSalt *uint32
+ var _pInfo *XWalCkptInfo
_pInfo = _walCkptInfo(tls, _pWal)
_aSalt = (*uint32)(unsafe.Pointer((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(32 /* X9 */)))))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(112 /* X22 */))) += 1
@@ -24187,190 +23056,178 @@ _0:
if _i >= i32(5) {
goto _3
}
-
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_i))) = u32(4294967295)
_i += 1
goto _0
-
_3:
func() {
if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(i32(0))))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56166), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRestartHdrØ00__func__Ø000))), unsafe.Pointer(str(23160)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56166), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRestartHdrØ00__func__Ø000))), unsafe.Pointer(str(23472)))
crt.X__builtin_abort(tls)
}
}()
}
-var _walRestartHdrØ00__func__Ø000 [14]int8 // -
+var _walRestartHdrØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_walRestartHdrØ00__func__Ø000[0], str(23184), 14)
+ crt.Xstrncpy(nil, &_walRestartHdrØ00__func__Ø000[0], str(23495), 14)
}
-func _walLimitSize(tls *crt.TLS, _pWal *XWal, _nMax int64) { // sqlite3.c:56386:1
- var _sz int64 // sqlite3.c:56387:7
- _ = _sz
- var _rx int32 // sqlite3.c:56388:7
- _ = _rx
+// If the WAL file is currently larger than nMax bytes in size, truncate
+// it to exactly nMax bytes. If an error occurs while doing so, ignore it.
+func _walLimitSize(tls *crt.TLS, _pWal *XWal, _nMax int64) {
+ var _rx int32
+ var _sz int64
_sqlite3BeginBenignMalloc(tls)
_rx = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pWal.X2), &_sz)
- if _rx != i32(0) || _sz <= _nMax {
- goto _1
+ if (_rx == i32(0)) && (_sz > _nMax) {
+ _rx = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pWal.X2), _nMax)
}
-
- _rx = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pWal.X2), _nMax)
-_1:
_sqlite3EndBenignMalloc(tls)
- if _rx == 0 {
- goto _2
+ if _rx != 0 {
+ Xsqlite3_log(tls, _rx, str(23509), unsafe.Pointer(_pWal.X21))
}
-
- Xsqlite3_log(tls, _rx, str(23200), unsafe.Pointer(_pWal.X21))
-_2:
}
-func _walIndexClose(tls *crt.TLS, _pWal *XWal, _isDelete int32) { // sqlite3.c:55728:1
- var _1_i int32 // sqlite3.c:55730:9
- _ = _1_i
+// Close an open wal-index.
+func _walIndexClose(tls *crt.TLS, _pWal *XWal, _isDelete int32) {
+ var _1_i int32
if int32(_pWal.X11) != i32(2) {
goto _0
}
-
_1_i = i32(0)
_1:
if _1_i >= (_pWal.X5) {
goto _4
}
-
Xsqlite3_free(tls, (unsafe.Pointer)(*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_1_i)))))
*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(_1_i))) = nil
_1_i += 1
goto _1
-
_4:
goto _5
-
_0:
_sqlite3OsShmUnmap(tls, (*Xsqlite3_file)(_pWal.X1), _isDelete)
_5:
}
-func _sqlite3OsShmUnmap(tls *crt.TLS, _id *Xsqlite3_file, _deleteFlag int32) (r0 int32) { // sqlite3.c:20240:1
+func _sqlite3OsShmUnmap(tls *crt.TLS, _id *Xsqlite3_file, _deleteFlag int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
}{((*Xsqlite3_io_methods)(_id.X0).X16)})))(tls, _id, _deleteFlag)
}
-func _pagerSyncHotJournal(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:50906:1
- var _rc int32 // sqlite3.c:50907:7
- _ = _rc
+// This function is called before attempting a hot-journal rollback. It
+// syncs the journal file to disk, then sets pPager->journalHdr to the
+// size of the journal file so that the pager_playback() routine knows
+// that the entire journal file has been synced.
+//
+// Syncing a hot-journal to disk before attempting to roll it back ensures
+// that if a power-failure occurs during the rollback, the process that
+// attempts rollback following system recovery sees the same journal
+// content as this process.
+//
+// If everything goes as planned, SQLITE_OK is returned. Otherwise,
+// an SQLite error code.
+func _pagerSyncHotJournal(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc int32
_rc = i32(0)
- if (_pPager.X4) != 0 {
- goto _0
+ if (_pPager.X4) == 0 {
+ _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), i32(2))
}
-
- _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), i32(2))
-_0:
- if _rc != i32(0) {
- goto _1
+ if _rc == i32(0) {
+ _rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X32), (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(84 /* X35 */))))
}
-
- _rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X32), (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(84 /* X35 */))))
-_1:
return _rc
}
-func _sqlite3PcacheClose(tls *crt.TLS, _pCache *XPCache) { // sqlite3.c:44804:1
+// Close a cache.
+func _sqlite3PcacheClose(tls *crt.TLS, _pCache *XPCache) {
func() {
if (_pCache.X12) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheCloseØ00__func__Ø000))), unsafe.Pointer(str(15076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheCloseØ00__func__Ø000))), unsafe.Pointer(str(15958)))
crt.X__builtin_abort(tls)
}
}()
((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X11)(tls, _pCache.X12)
}
-var _sqlite3PcacheCloseØ00__func__Ø000 [19]int8 // -
+var _sqlite3PcacheCloseØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheCloseØ00__func__Ø000[0], str(23228), 19)
+ crt.Xstrncpy(nil, &_sqlite3PcacheCloseØ00__func__Ø000[0], str(23535), 19)
}
-func _freeTempSpace(tls *crt.TLS, _pBt *XBtShared) { // sqlite3.c:61587:1
- if (_pBt.X27) == nil {
- goto _0
- }
-
- {
- p := (**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(80 /* X27 */)))
- *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(i32(4))))
- sink11 = *p
+// Free the pBt->pTmpSpace allocation
+func _freeTempSpace(tls *crt.TLS, _pBt *XBtShared) {
+ if (_pBt.X27) != nil {
+ {
+ p := (**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(80 /* X27 */)))
+ *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(i32(4))))
+ sink13 = *p
+ }
+ _sqlite3PageFree(tls, (unsafe.Pointer)(_pBt.X27))
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(80 /* X27 */))) = nil
}
- _sqlite3PageFree(tls, (unsafe.Pointer)(_pBt.X27))
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(80 /* X27 */))) = nil
-_0:
}
-var _sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000 [32]int8 // -
+var _sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000 [32]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000[0], str(23248), 32)
+ crt.Xstrncpy(nil, &_sqlite3LeaveMutexAndCloseZombieØ00__func__Ø000[0], str(23554), 32)
}
-func _functionDestroy(tls *crt.TLS, _db *Xsqlite3, _p *XFuncDef) { // sqlite3.c:141455:1
- var _pDestructor *XFuncDestructor // sqlite3.c:141456:18
- _ = _pDestructor
- _pDestructor = (*XFuncDestructor)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))))))
+// Invoke the destructor function associated with FuncDef p, if any. Except,
+// if this is not the last copy of the function, do not invoke it. Multiple
+// copies of a single function are created when create_function() is called
+// with SQLITE_ANY as the encoding.
+func _functionDestroy(tls *crt.TLS, _db *Xsqlite3, _p *XFuncDef) {
+ var _pDestructor *XFuncDestructor
+ _pDestructor = (*XFuncDestructor)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))))))
if _pDestructor == nil {
goto _0
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDestructor)) + uintptr(0 /* X0 */))) -= 1
- if (_pDestructor.X0) != i32(0) {
- goto _1
+ if (_pDestructor.X0) == i32(0) {
+ (_pDestructor.X1)(tls, _pDestructor.X2)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pDestructor))
}
-
- (_pDestructor.X1)(tls, _pDestructor.X2)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pDestructor))
-_1:
_0:
}
-func _sqlite3VtabEponymousTableClear(tls *crt.TLS, _db *Xsqlite3, _pMod *XModule) { // sqlite3.c:126158:1
- var _pTab *XTable // sqlite3.c:126159:9
- _ = _pTab
+// Erase the eponymous virtual table instance associated with
+// virtual table module pMod, if it exists.
+func _sqlite3VtabEponymousTableClear(tls *crt.TLS, _db *Xsqlite3, _pMod *XModule) {
+ var _pTab *XTable
_pTab = (*XTable)(_pMod.X4)
- if _pTab == nil {
- goto _0
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(2))
- sink5 = *p
+ if _pTab != nil {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(2))
+ sink5 = *p
+ }
+ _sqlite3DeleteTable(tls, _db, _pTab)
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMod)) + uintptr(16 /* X4 */))))) = nil
}
- _sqlite3DeleteTable(tls, _db, _pTab)
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMod)) + uintptr(16 /* X4 */))))) = nil
-_0:
}
-func _sqlite3ValueFree(tls *crt.TLS, _v *XMem) { // sqlite3.c:71388:1
- if _v != nil {
- goto _0
+// Free an sqlite3_value object
+func _sqlite3ValueFree(tls *crt.TLS, _v *XMem) {
+ if _v == nil {
+ return
}
- return
-
-_0:
_sqlite3VdbeMemRelease(tls, _v)
_sqlite3DbFreeNN(tls, (*Xsqlite3)(_v.X9), (unsafe.Pointer)(_v))
}
-func _sqlite3CloseExtensions(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:112414:1
- var _i int32 // sqlite3.c:112415:7
- _ = _i
+// Call this routine when the database connection is closing in order
+// to clean up loaded extensions
+func _sqlite3CloseExtensions(tls *crt.TLS, _db *Xsqlite3) {
+ var _i int32
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(112416), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CloseExtensionsØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(112416), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CloseExtensionsØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -24379,28 +23236,25 @@ _2:
if _i >= (_db.X39) {
goto _5
}
-
_sqlite3OsDlClose(tls, (*Xsqlite3_vfs)(_db.X0), *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db.X40)) + 4*uintptr(_i))))
_i += 1
goto _2
-
_5:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_db.X40))
}
-var _sqlite3CloseExtensionsØ00__func__Ø000 [23]int8 // -
+var _sqlite3CloseExtensionsØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3CloseExtensionsØ00__func__Ø000[0], str(23280), 23)
+ crt.Xstrncpy(nil, &_sqlite3CloseExtensionsØ00__func__Ø000[0], str(23586), 23)
}
-func Xsqlite3_collation_needed(tls *crt.TLS, _db *Xsqlite3, _pCollNeededArg unsafe.Pointer, _xCollNeeded func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, *int8)) (r0 int32) { // sqlite3.c:143715:12
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
+// Register a collation sequence factory callback with the database handle
+// db. Replace any previously installed collation sequence factory.
+func Xsqlite3_collation_needed(tls *crt.TLS, _db *Xsqlite3, _pCollNeededArg unsafe.Pointer, _xCollNeeded func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, *int8)) (r0 int32) {
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ return _sqlite3MisuseError(tls, i32(143721))
}
- return _sqlite3MisuseError(tls, i32(143721))
-
-_0:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, *int8))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, *int8))(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(228 /* X53 */))))) = _xCollNeeded
*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, unsafe.Pointer))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(232 /* X54 */))))) = nil
@@ -24409,13 +23263,12 @@ _0:
return i32(0)
}
-func Xsqlite3_collation_needed16(tls *crt.TLS, _db *Xsqlite3, _pCollNeededArg unsafe.Pointer, _xCollNeeded16 func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, unsafe.Pointer)) (r0 int32) { // sqlite3.c:143736:12
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
+// Register a collation sequence factory callback with the database handle
+// db. Replace any previously installed collation sequence factory.
+func Xsqlite3_collation_needed16(tls *crt.TLS, _db *Xsqlite3, _pCollNeededArg unsafe.Pointer, _xCollNeeded16 func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, unsafe.Pointer)) (r0 int32) {
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ return _sqlite3MisuseError(tls, i32(143742))
}
- return _sqlite3MisuseError(tls, i32(143742))
-
-_0:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, *int8))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, *int8))(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(228 /* X53 */))))) = nil
*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, unsafe.Pointer))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(232 /* X54 */))))) = _xCollNeeded16
@@ -24424,44 +23277,43 @@ _0:
return i32(0)
}
-func Xsqlite3_column_blob(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 unsafe.Pointer) { // sqlite3.c:77116:12
- var _val unsafe.Pointer // sqlite3.c:77117:14
- _ = _val
+// *************************** sqlite3_column_ *******************************
+// The following routines are used to access elements of the current row
+// in the result set.
+func Xsqlite3_column_blob(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 unsafe.Pointer) {
+ var _val unsafe.Pointer
_val = Xsqlite3_value_blob(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_value_blob(tls *crt.TLS, _pVal *XMem) (r0 unsafe.Pointer) { // sqlite3.c:76266:12
- var _p *XMem // sqlite3.c:76267:7
- _ = _p
+// *************************** sqlite3_value_ *******************************
+// The following routines extract information from a Mem or sqlite3_value
+// structure.
+func Xsqlite3_value_blob(tls *crt.TLS, _pVal *XMem) (r0 unsafe.Pointer) {
+ var _p *XMem
_p = _pVal
if (int32(_p.X1) & i32(18)) == 0 {
goto _0
}
-
if func() int32 {
if (int32(_p.X1) & i32(16384)) != 0 {
return _sqlite3VdbeMemExpandBlob(tls, _p)
}
return i32(0)
- }() == i32(0) {
- goto _3
+ }() != i32(0) {
+ func() {
+ if int32(_p.X1) != i32(1) || (_p.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_value_blobØ00__func__Ø000))), unsafe.Pointer(str(23609)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return nil
}
-
- func() {
- if int32(_p.X1) != i32(1) || (_p.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_value_blobØ00__func__Ø000))), unsafe.Pointer(str(23304)))
- crt.X__builtin_abort(tls)
- }
- }()
- return nil
-
-_3:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) | i32(16))
- sink12 = *p
+ sink14 = *p
}
return (unsafe.Pointer)(func() *int8 {
if (_p.X4) != 0 {
@@ -24474,115 +23326,121 @@ _0:
return (unsafe.Pointer)(Xsqlite3_value_text(tls, _pVal))
}
-var _sqlite3_value_blobØ00__func__Ø000 [19]int8 // -
+var _sqlite3_value_blobØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_value_blobØ00__func__Ø000[0], str(23336), 19)
+ crt.Xstrncpy(nil, &_sqlite3_value_blobØ00__func__Ø000[0], str(23639), 19)
}
-func _columnMem(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *XMem) { // sqlite3.c:77061:1
- var _pVm *TVdbe // sqlite3.c:77062:8
- _ = _pVm
- var _pOut *XMem // sqlite3.c:77063:7
- _ = _pOut
+// Check to see if column iCol of the given statement is valid. If
+// it is, return a pointer to the Mem for the value of that column.
+// If iCol is not valid, return a pointer to a Mem which has a value
+// of NULL.
+func _columnMem(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *XMem) {
+ var _pVm *TVdbe
+ var _pOut *XMem
_pVm = (*TVdbe)(_pStmt)
- if _pVm != nil {
- goto _0
+ if _pVm == nil {
+ return _columnNullValue(tls)
}
- return _columnNullValue(tls)
-
-_0:
func() {
if (*Xsqlite3)(_pVm.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77067), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnMemØ00__func__Ø000))), unsafe.Pointer(str(23356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77067), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnMemØ00__func__Ø000))), unsafe.Pointer(str(23658)))
crt.X__builtin_abort(tls)
}
}()
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pVm.X0).X3))
- if (*XMem)(_pVm.X21) == nil || _i >= int32(_pVm.X29) || _i < i32(0) {
- goto _5
+ if (((*XMem)(_pVm.X21) != nil) && (_i < int32(_pVm.X29))) && (_i >= i32(0)) {
+ _pOut = (*XMem)(unsafe.Pointer(uintptr(_pVm.X21) + 48*uintptr(_i)))
+ goto _6
}
-
- _pOut = (*XMem)(unsafe.Pointer(uintptr(_pVm.X21) + 48*uintptr(_i)))
- goto _6
-
-_5:
_sqlite3Error(tls, (*Xsqlite3)(_pVm.X0), i32(25))
_pOut = _columnNullValue(tls)
_6:
return _pOut
}
-func _columnNullValue(tls *crt.TLS) (r0 *XMem) { // sqlite3.c:77021:1
+// Return a pointer to static memory containing an SQL NULL value.
+func _columnNullValue(tls *crt.TLS) (r0 *XMem) {
return &_columnNullValueØ00nullMemØ001
}
-var _columnNullValueØ00nullMemØ001 XMem // sqlite3.c:77031:20
+var _columnNullValueØ00nullMemØ001 XMem
func init() {
- _columnNullValueØ00nullMemØ001 = XMem{X0: t13{}, X1: u16(1), X2: u8(0), X3: u8(0), X4: i32(0), X5: nil, X6: nil, X7: i32(0), X8: u32(0), X9: nil, X10: nil, X11: nil, X12: nil}
+ _columnNullValueØ00nullMemØ001 = XMem{X0: t15{}, X1: u16(1), X2: u8(0), X3: u8(0), X4: i32(0), X5: nil, X6: nil, X7: i32(0), X8: u32(0), X9: nil, X10: nil, X11: nil, X12: nil}
}
-var _columnMemØ00__func__Ø000 [10]int8 // -
+var _columnMemØ00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_columnMemØ00__func__Ø000[0], str(23364), 10)
+ crt.Xstrncpy(nil, &_columnMemØ00__func__Ø000[0], str(23666), 10)
}
-func _columnMallocFailure(tls *crt.TLS, _pStmt unsafe.Pointer) { // sqlite3.c:77096:1
- var _p *TVdbe // sqlite3.c:77103:8
- _ = _p
+// This function is called after invoking an sqlite3_value_XXX function on a
+// column value (i.e. a value returned by evaluating an SQL expression in the
+// select list of a SELECT statement) that may cause a malloc() failure. If
+// malloc() has failed, the threads mallocFailed flag is cleared and the result
+// code of statement pStmt set to SQLITE_NOMEM.
+//
+// Specifically, this is called from within:
+//
+// sqlite3_column_int()
+// sqlite3_column_int64()
+// sqlite3_column_text()
+// sqlite3_column_text16()
+// sqlite3_column_real()
+// sqlite3_column_bytes()
+// sqlite3_column_bytes16()
+// sqiite3_column_blob()
+func _columnMallocFailure(tls *crt.TLS, _pStmt unsafe.Pointer) {
+ var _p *TVdbe
_p = (*TVdbe)(_pStmt)
- if _p == nil {
- goto _0
+ if _p != nil {
+ func() {
+ if (*Xsqlite3)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77105), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnMallocFailureØ00__func__Ø000))), unsafe.Pointer(str(23676)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77106), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnMallocFailureØ00__func__Ø000))), unsafe.Pointer(str(8984)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3ApiExit(tls, (*Xsqlite3)(_p.X0), _p.X10)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
}
-
- func() {
- if (*Xsqlite3)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77105), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnMallocFailureØ00__func__Ø000))), unsafe.Pointer(str(23376)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77106), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnMallocFailureØ00__func__Ø000))), unsafe.Pointer(str(7676)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3ApiExit(tls, (*Xsqlite3)(_p.X0), _p.X10)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_0:
}
-var _columnMallocFailureØ00__func__Ø000 [20]int8 // -
+var _columnMallocFailureØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_columnMallocFailureØ00__func__Ø000[0], str(23388), 20)
+ crt.Xstrncpy(nil, &_columnMallocFailureØ00__func__Ø000[0], str(23685), 20)
}
-func Xsqlite3_column_bytes(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) { // sqlite3.c:77126:12
- var _val int32 // sqlite3.c:77127:7
- _ = _val
+func Xsqlite3_column_bytes(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) {
+ var _val int32
_val = Xsqlite3_value_bytes(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_column_bytes16(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) { // sqlite3.c:77131:12
- var _val int32 // sqlite3.c:77132:7
- _ = _val
+func Xsqlite3_column_bytes16(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) {
+ var _val int32
_val = Xsqlite3_value_bytes16(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_value_bytes16(tls *crt.TLS, _pVal *XMem) (r0 int32) { // sqlite3.c:76282:12
+func Xsqlite3_value_bytes16(tls *crt.TLS, _pVal *XMem) (r0 int32) {
return _sqlite3ValueBytes(tls, _pVal, uint8(i32(2)))
}
-func Xsqlite3_column_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:77003:12
- var _pVm *TVdbe // sqlite3.c:77004:8
- _ = _pVm
+// Return the number of columns in the result set for the statement pStmt.
+func Xsqlite3_column_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) {
+ var _pVm *TVdbe
_pVm = (*TVdbe)(_pStmt)
return func() int32 {
if _pVm != nil {
@@ -24592,33 +23450,41 @@ func Xsqlite3_column_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { //
}()
}
-func Xsqlite3_column_decltype(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 *int8) { // sqlite3.c:77261:12
+// Return the column declaration type (if applicable) of the 'i'th column
+// of the result set of SQL statement pStmt.
+func Xsqlite3_column_decltype(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 *int8) {
return (*int8)(_columnName(tls, _pStmt, _N, *(*func(*crt.TLS, *XMem) unsafe.Pointer)(unsafe.Pointer(&struct{ f func(*crt.TLS, *XMem) *uint8 }{Xsqlite3_value_text})), i32(1)))
}
-func _columnName(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32, _xFunc func(*crt.TLS, *XMem) unsafe.Pointer, _useType int32) (r0 unsafe.Pointer) { // sqlite3.c:77194:1
- var _ret unsafe.Pointer // sqlite3.c:77200:14
- _ = _ret
- var _p *TVdbe // sqlite3.c:77201:8
- _ = _p
- var _n int32 // sqlite3.c:77202:7
- _ = _n
- var _db *Xsqlite3 // sqlite3.c:77203:11
- _ = _db
- if _pStmt != nil {
- goto _0
+// Convert the N-th element of pStmt->pColName[] into a string using
+// xFunc() then return that string. If N is out of range, return 0.
+//
+// There are up to 5 names for each column. useType determines which
+// name is returned. Here are the names:
+//
+// 0 The column name as it should be displayed for output
+// 1 The datatype name for the column
+// 2 The name of the database that the column derives from
+// 3 The name of the table that the column derives from
+// 4 The name of the table column that the result column derives from
+//
+// If the result is not a simple column reference (if it is an expression
+// or a constant) then useTypes 2, 3, and 4 return NULL.
+func _columnName(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32, _xFunc func(*crt.TLS, *XMem) unsafe.Pointer, _useType int32) (r0 unsafe.Pointer) {
+ var _n int32
+ var _ret unsafe.Pointer
+ var _db *Xsqlite3
+ var _p *TVdbe
+ if _pStmt == nil {
+ _sqlite3MisuseError(tls, i32(77206))
+ return nil
}
-
- _sqlite3MisuseError(tls, i32(77206))
- return nil
-
-_0:
_ret = nil
_p = (*TVdbe)(_pStmt)
_db = (*Xsqlite3)(_p.X0)
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77213), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnNameØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77213), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnNameØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
@@ -24626,7 +23492,6 @@ _0:
if _N >= _n || _N < i32(0) {
goto _4
}
-
{
p := &_N
*p = (*p) + (_useType * _n)
@@ -24635,164 +23500,155 @@ _0:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
func() {
if int32(_db.X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77218), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnNameØ00__func__Ø000))), unsafe.Pointer(str(1248)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77218), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnNameØ00__func__Ø000))), unsafe.Pointer(str(1244)))
crt.X__builtin_abort(tls)
}
}()
_ret = _xFunc(tls, (*XMem)(unsafe.Pointer(uintptr(_p.X20)+48*uintptr(_N))))
- if (_db.X17) == 0 {
- goto _7
+ if (_db.X17) != 0 {
+ _sqlite3OomClear(tls, _db)
+ _ret = nil
}
-
- _sqlite3OomClear(tls, _db)
- _ret = nil
-_7:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
_4:
return _ret
}
-var _columnNameØ00__func__Ø000 [11]int8 // -
+var _columnNameØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_columnNameØ00__func__Ø000[0], str(23408), 11)
+ crt.Xstrncpy(nil, &_columnNameØ00__func__Ø000[0], str(23705), 11)
}
-func Xsqlite3_column_decltype16(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 unsafe.Pointer) { // sqlite3.c:77266:12
+func Xsqlite3_column_decltype16(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 unsafe.Pointer) {
return _columnName(tls, _pStmt, _N, Xsqlite3_value_text16, i32(1))
}
-func Xsqlite3_value_text16(tls *crt.TLS, _pVal *XMem) (r0 unsafe.Pointer) { // sqlite3.c:76302:12
+func Xsqlite3_value_text16(tls *crt.TLS, _pVal *XMem) (r0 unsafe.Pointer) {
return _sqlite3ValueText(tls, _pVal, uint8(i32(2)))
}
-func Xsqlite3_column_double(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 float64) { // sqlite3.c:77136:12
- var _val float64 // sqlite3.c:77137:10
- _ = _val
+func Xsqlite3_column_double(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 float64) {
+ var _val float64
_val = Xsqlite3_value_double(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_column_int(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) { // sqlite3.c:77141:12
- var _val int32 // sqlite3.c:77142:7
- _ = _val
+func Xsqlite3_column_int(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) {
+ var _val int32
_val = Xsqlite3_value_int(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_value_int(tls *crt.TLS, _pVal *XMem) (r0 int32) { // sqlite3.c:76288:12
+func Xsqlite3_value_int(tls *crt.TLS, _pVal *XMem) (r0 int32) {
return int32(_sqlite3VdbeIntValue(tls, _pVal))
}
-func _sqlite3VdbeIntValue(tls *crt.TLS, _pMem *XMem) (r0 int64) { // sqlite3.c:70167:1
- var _flags int32 // sqlite3.c:70168:7
- _ = _flags
+func _sqlite3VdbeIntValue(tls *crt.TLS, _pMem *XMem) (r0 int64) {
+ var _flags int32
func() {
if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70169), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntValueØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70169), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntValueØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70170), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntValueØ00__func__Ø000))), unsafe.Pointer(str(4716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70170), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntValueØ00__func__Ø000))), unsafe.Pointer(str(6321)))
crt.X__builtin_abort(tls)
}
}()
_flags = int32(_pMem.X1)
- if (_flags & i32(4)) == 0 {
- goto _5
- }
-
- /* X0 */
- return *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0)))))
-
-_5:
- if (_flags & i32(8)) == 0 {
- goto _7
- }
-
- /* X0 */
- return _doubleToInt64(tls, *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0))))))
-
-_7:
- if (_flags & i32(18)) == 0 {
- goto _9
+ if (_flags & i32(4)) != 0 {
+ /* X0 */
+ return *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0)))))
+ }
+ if (_flags & i32(8)) != 0 {
+ /* X0 */
+ return _doubleToInt64(tls, *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0))))))
+ }
+ if (_flags & i32(18)) != 0 {
+ func() {
+ if (_pMem.X5) == nil && (_pMem.X4) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70177), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntValueØ00__func__Ø000))), unsafe.Pointer(str(23716)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _memIntValue(tls, _pMem)
}
-
- func() {
- if (_pMem.X5) == nil && (_pMem.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70177), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntValueØ00__func__Ø000))), unsafe.Pointer(str(23420)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _memIntValue(tls, _pMem)
-
-_9:
return int64(i32(0))
}
-var _sqlite3VdbeIntValueØ00__func__Ø000 [20]int8 // -
+var _sqlite3VdbeIntValueØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeIntValueØ00__func__Ø000[0], str(23444), 20)
+ crt.Xstrncpy(nil, &_sqlite3VdbeIntValueØ00__func__Ø000[0], str(23738), 20)
}
-func _doubleToInt64(tls *crt.TLS, _r float64) (r0 int64) { // sqlite3.c:70126:1
- if _r > float64(_doubleToInt64Ø00minIntØ002) {
- goto _0
+// Convert a 64-bit IEEE double into a 64-bit signed integer.
+// If the double is out of range of a 64-bit signed integer then
+// return the closest available 64-bit signed integer.
+func _doubleToInt64(tls *crt.TLS, _r float64) (r0 int64) {
+ if _r <= float64(_doubleToInt64Ø00minIntØ002) {
+ return _doubleToInt64Ø00minIntØ002
}
- return _doubleToInt64Ø00minIntØ002
-
-_0:
- if _r < float64(_doubleToInt64Ø00maxIntØ001) {
- goto _2
+ if _r >= float64(_doubleToInt64Ø00maxIntØ001) {
+ return _doubleToInt64Ø00maxIntØ001
}
- return _doubleToInt64Ø00maxIntØ001
-
-_2:
return int64(_r)
}
-var _doubleToInt64Ø00minIntØ002 int64 // sqlite3.c:70139:20
+var _doubleToInt64Ø00minIntØ002 int64
func init() {
_doubleToInt64Ø00minIntØ002 = i64(-9223372036854775808)
}
-var _doubleToInt64Ø00maxIntØ001 int64 // sqlite3.c:70138:20
+var _doubleToInt64Ø00maxIntØ001 int64
func init() {
_doubleToInt64Ø00maxIntØ001 = i64(9223372036854775807)
}
-func _memIntValue(tls *crt.TLS, _pMem *XMem) (r0 int64) { // sqlite3.c:70162:1
- var _value int64 // sqlite3.c:70163:7
- _ = _value
+// Return some kind of integer value which is the best we can do
+// at representing the value that *pMem describes as an integer.
+// If pMem is an integer, then the value is exact. If pMem is
+// a floating-point then the value returned is the integer part.
+// If pMem is a string or blob, then we make an attempt to convert
+// it into an integer and return that. If pMem represents an
+// an SQL-NULL value, return 0.
+//
+// If pMem represents a string value, its encoding might be changed.
+func _memIntValue(tls *crt.TLS, _pMem *XMem) (r0 int64) {
+ var _value int64
_value = i64(0)
_sqlite3Atoi64(tls, _pMem.X5, &_value, _pMem.X4, _pMem.X2)
return _value
}
-func _sqlite3Atoi64(tls *crt.TLS, _zNum *int8, _pNum *int64, _length int32, _enc uint8) (r0 int32) { // sqlite3.c:28227:1
- var _incr int32 // sqlite3.c:28228:7
- _ = _incr
- var _u uint64 // sqlite3.c:28229:7
- _ = _u
- var _neg int32 // sqlite3.c:28230:7
- _ = _neg
- var _i int32 // sqlite3.c:28231:7
- _ = _i
- var _c int32 // sqlite3.c:28232:7
- _ = _c
- var _nonNum int32 // sqlite3.c:28233:7
- _ = _nonNum
- var _zStart *int8 // sqlite3.c:28234:14
- _ = _zStart
- var _zEnd *int8 // sqlite3.c:28235:14
- _ = _zEnd
+// Convert zNum to a 64-bit signed integer. zNum must be decimal. This
+// routine does *not* accept hexadecimal notation.
+//
+// If the zNum value is representable as a 64-bit twos-complement
+// integer, then write that value into *pNum and return 0.
+//
+// If zNum is exactly 9223372036854775808, return 2. This special
+// case is broken out because while 9223372036854775808 cannot be a
+// signed 64-bit integer, its negative -9223372036854775808 can be.
+//
+// If zNum is too big for a 64-bit integer and is not
+// 9223372036854775808 or if zNum contains any non-numeric text,
+// then return 1.
+//
+// length is the number of bytes in the string (bytes, not characters).
+// The string is not necessarily zero-terminated. The encoding is
+// given by enc.
+func _sqlite3Atoi64(tls *crt.TLS, _zNum *int8, _pNum *int64, _length int32, _enc uint8) (r0 int32) {
+ var _incr, _neg, _i, _c, _nonNum int32
+ var _u uint64
+ var _zStart, _zEnd *int8
_u = u64(0)
_neg = i32(0)
_c = i32(0)
@@ -24800,18 +23656,14 @@ func _sqlite3Atoi64(tls *crt.TLS, _zNum *int8, _pNum *int64, _length int32, _enc
_zEnd = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zNum)) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_length)))))))
func() {
if int32(_enc) != i32(1) && int32(_enc) != i32(2) && int32(_enc) != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(5556)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(7088)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_enc) != i32(1) {
- goto _4
+ if int32(_enc) == i32(1) {
+ _incr = i32(1)
+ goto _5
}
-
- _incr = i32(1)
- goto _5
-
-_4:
_incr = i32(2)
i32(0)
_i = i32(3) - int32(_enc)
@@ -24819,14 +23671,12 @@ _6:
if _i >= _length || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i)))) != i32(0) {
goto _10
}
-
{
p := &_i
*p = (*p) + i32(2)
sink1 = *p
}
goto _6
-
_10:
_nonNum = bool2int(_i < _length)
_zEnd = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i^i32(1))))
@@ -24837,67 +23687,50 @@ _10:
}
_5:
_11:
- if uintptr(unsafe.Pointer(_zNum)) >= uintptr(unsafe.Pointer(_zEnd)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zNum)))))&i32(1)) == 0 {
- goto _12
- }
-
- {
- p := &_zNum
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+ if (uintptr(unsafe.Pointer(_zNum)) < uintptr(unsafe.Pointer(_zEnd))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zNum)))))&i32(1)) != 0 {
+ {
+ p := &_zNum
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ goto _11
}
- goto _11
-
-_12:
if uintptr(unsafe.Pointer(_zNum)) >= uintptr(unsafe.Pointer(_zEnd)) {
goto _14
}
-
- if int32(*_zNum) != i32(45) {
- goto _15
- }
-
- _neg = i32(1)
- {
- p := &_zNum
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
- }
- goto _16
-
-_15:
- if int32(*_zNum) != i32(43) {
- goto _17
+ if int32(*_zNum) == i32(45) {
+ _neg = i32(1)
+ {
+ p := &_zNum
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ goto _16
}
-
- {
- p := &_zNum
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+ if int32(*_zNum) == i32(43) {
+ {
+ p := &_zNum
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
}
-_17:
_16:
_14:
_zStart = _zNum
_18:
- if uintptr(unsafe.Pointer(_zNum)) >= uintptr(unsafe.Pointer(_zEnd)) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) != i32(48) {
- goto _19
- }
-
- {
- p := &_zNum
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
- sink0 = *p
+ if (uintptr(unsafe.Pointer(_zNum)) < uintptr(unsafe.Pointer(_zEnd))) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) == i32(48)) {
+ {
+ p := &_zNum
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_incr)))
+ sink0 = *p
+ }
+ goto _18
}
- goto _18
-
-_19:
_i = i32(0)
_21:
if uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum))+1*uintptr(_i))))) >= uintptr(unsafe.Pointer(_zEnd)) || store1(&_c, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i))))) < i32(48) || _c > i32(57) {
goto _26
}
-
_u = ((_u * uint64(i32(10))) + uint64(_c)) - uint64(i32(48))
{
p := &_i
@@ -24905,74 +23738,51 @@ _21:
sink1 = *p
}
goto _21
-
_26:
- if _u <= uint64(i64(9223372036854775807)) {
- goto _27
+ if _u > uint64(i64(9223372036854775807)) {
+ *_pNum = func() int64 {
+ if _neg != 0 {
+ return i64(-9223372036854775808)
+ }
+ return i64(9223372036854775807)
+ }()
+ goto _30
}
-
- *_pNum = func() int64 {
- if _neg != 0 {
- return i64(-9223372036854775808)
- }
- return i64(9223372036854775807)
- }()
- goto _30
-
-_27:
- if _neg == 0 {
- goto _31
+ if _neg != 0 {
+ *_pNum = -int64(_u)
+ goto _32
}
-
- *_pNum = -int64(_u)
- goto _32
-
-_31:
*_pNum = int64(_u)
_32:
_30:
- if uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum))+1*uintptr(_i))))) >= uintptr(unsafe.Pointer(_zEnd)) && (_i != i32(0) || _zStart != _zNum) && _i <= (i32(19)*_incr) && _nonNum == 0 {
- goto _37
+ if (((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum))+1*uintptr(_i))))) < uintptr(unsafe.Pointer(_zEnd))) || ((_i == i32(0)) && (_zStart == _zNum))) || (_i > (i32(19) * _incr))) || _nonNum != 0 {
+ return i32(1)
}
- return i32(1)
-
-_37:
- if _i >= (i32(19) * _incr) {
- goto _39
+ if _i < (i32(19) * _incr) {
+ func() {
+ if _u > uint64(i64(9223372036854775807)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28281), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(23758)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(0)
}
-
- func() {
- if _u > uint64(i64(9223372036854775807)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28281), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(23464)))
- crt.X__builtin_abort(tls)
- }
- }()
- return i32(0)
-
-_39:
_c = _compare2pow63(tls, _zNum, _incr)
- if _c >= i32(0) {
- goto _43
+ if _c < i32(0) {
+ func() {
+ if _u > uint64(i64(9223372036854775807)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(23758)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(0)
}
-
- func() {
- if _u > uint64(i64(9223372036854775807)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(23464)))
- crt.X__builtin_abort(tls)
- }
- }()
- return i32(0)
-
-_43:
- if _c <= i32(0) {
- goto _47
+ if _c > i32(0) {
+ return i32(1)
}
- return i32(1)
-
-_47:
func() {
if (_u - uint64(i32(1))) != uint64(i64(9223372036854775807)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28296), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(23484)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28296), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Atoi64Ø00__func__Ø000))), unsafe.Pointer(str(23775)))
crt.X__builtin_abort(tls)
}
}()
@@ -24984,119 +23794,115 @@ _47:
}()
}
-var _sqlite3Atoi64Ø00__func__Ø000 [14]int8 // -
+var _sqlite3Atoi64Ø00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3Atoi64Ø00__func__Ø000[0], str(23504), 14)
+ crt.Xstrncpy(nil, &_sqlite3Atoi64Ø00__func__Ø000[0], str(23794), 14)
}
-func _compare2pow63(tls *crt.TLS, _zNum *int8, _incr int32) (r0 int32) { // sqlite3.c:28191:1
- var _c int32 // sqlite3.c:28192:7
- _ = _c
- var _i int32 // sqlite3.c:28193:7
- _ = _i
- var _pow63 *int8 // sqlite3.c:28195:14
- _ = _pow63
+// Compare the 19-character string zNum against the text representation
+// value 2^63: 9223372036854775808. Return negative, zero, or positive
+// if zNum is less than, equal to, or greater than the string.
+// Note that zNum must contain exactly 19 characters.
+//
+// Unlike memcmp() this routine is guaranteed to return the difference
+// in the values of the last digit if the only difference is in the
+// last digit. So, for example,
+//
+// compare2pow63("9223372036854775800", 1)
+//
+// will return -8.
+func _compare2pow63(tls *crt.TLS, _zNum *int8, _incr int32) (r0 int32) {
+ var _c, _i int32
+ var _pow63 *int8
_c = i32(0)
- _pow63 = str(23520)
+ _pow63 = str(23808)
_i = i32(0)
_0:
if _c != i32(0) || _i >= i32(18) {
goto _4
}
-
_c = (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i*_incr)))) - int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pow63)) + 1*uintptr(_i))))) * i32(10)
_i += 1
goto _0
-
_4:
- if _c != i32(0) {
- goto _5
+ if _c == i32(0) {
+ _c = int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(18)*_incr)))) - i32(56)
}
-
- _c = int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(18)*_incr)))) - i32(56)
-_5:
return _c
}
-func Xsqlite3_column_int64(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int64) { // sqlite3.c:77146:12
- var _val int64 // sqlite3.c:77147:16
- _ = _val
+func Xsqlite3_column_int64(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int64) {
+ var _val int64
_val = Xsqlite3_value_int64(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_value_int64(tls *crt.TLS, _pVal *XMem) (r0 int64) { // sqlite3.c:76291:12
+func Xsqlite3_value_int64(tls *crt.TLS, _pVal *XMem) (r0 int64) {
return _sqlite3VdbeIntValue(tls, _pVal)
}
-func Xsqlite3_column_name(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 *int8) { // sqlite3.c:77236:12
+// Return the name of the Nth column of the result set returned by SQL
+// statement pStmt.
+func Xsqlite3_column_name(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 *int8) {
return (*int8)(_columnName(tls, _pStmt, _N, *(*func(*crt.TLS, *XMem) unsafe.Pointer)(unsafe.Pointer(&struct{ f func(*crt.TLS, *XMem) *uint8 }{Xsqlite3_value_text})), i32(0)))
}
-func Xsqlite3_column_name16(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 unsafe.Pointer) { // sqlite3.c:77241:12
+func Xsqlite3_column_name16(tls *crt.TLS, _pStmt unsafe.Pointer, _N int32) (r0 unsafe.Pointer) {
return _columnName(tls, _pStmt, _N, Xsqlite3_value_text16, i32(0))
}
-func Xsqlite3_column_text(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *uint8) { // sqlite3.c:77151:12
- var _val *uint8 // sqlite3.c:77152:23
- _ = _val
+func Xsqlite3_column_text(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *uint8) {
+ var _val *uint8
_val = Xsqlite3_value_text(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_column_text16(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 unsafe.Pointer) { // sqlite3.c:77166:12
- var _val unsafe.Pointer // sqlite3.c:77167:14
- _ = _val
+func Xsqlite3_column_text16(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 unsafe.Pointer) {
+ var _val unsafe.Pointer
_val = Xsqlite3_value_text16(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _val
}
-func Xsqlite3_column_type(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) { // sqlite3.c:77172:12
- var _iType int32 // sqlite3.c:77173:7
- _ = _iType
+// SQLITE_OMIT_UTF16
+func Xsqlite3_column_type(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 int32) {
+ var _iType int32
_iType = Xsqlite3_value_type(tls, _columnMem(tls, _pStmt, _i))
_columnMallocFailure(tls, _pStmt)
return _iType
}
-func Xsqlite3_column_value(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *XMem) { // sqlite3.c:77156:12
- var _pOut *XMem // sqlite3.c:77157:7
- _ = _pOut
+func Xsqlite3_column_value(tls *crt.TLS, _pStmt unsafe.Pointer, _i int32) (r0 *XMem) {
+ var _pOut *XMem
_pOut = _columnMem(tls, _pStmt, _i)
- if (int32(_pOut.X1) & i32(2048)) == 0 {
- goto _0
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-2049))
- sink12 = *p
- }
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(4096))
- sink12 = *p
+ if (int32(_pOut.X1) & i32(2048)) != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-2049))
+ sink14 = *p
+ }
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(4096))
+ sink14 = *p
+ }
}
-_0:
_columnMallocFailure(tls, _pStmt)
return _pOut
}
-func Xsqlite3_commit_hook(tls *crt.TLS, _db *Xsqlite3, _xCallback func(*crt.TLS, unsafe.Pointer) int32, _pArg unsafe.Pointer) (r0 unsafe.Pointer) { // sqlite3.c:142376:12
- var _pOld unsafe.Pointer // sqlite3.c:142381:8
- _ = _pOld
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
+// Register a function to be invoked when a transaction commits.
+// If the invoked function returns non-zero, then the commit becomes a
+// rollback.
+func Xsqlite3_commit_hook(tls *crt.TLS, _db *Xsqlite3, _xCallback func(*crt.TLS, unsafe.Pointer) int32, _pArg unsafe.Pointer) (r0 unsafe.Pointer) {
+ var _pOld unsafe.Pointer
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ _sqlite3MisuseError(tls, i32(142385))
+ return nil
}
-
- _sqlite3MisuseError(tls, i32(142385))
- return nil
-
-_0:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
_pOld = _db.X45
*(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(200 /* X46 */))) = _xCallback
@@ -25105,29 +23911,69 @@ _0:
return _pOld
}
-func Xsqlite3_complete(tls *crt.TLS, _zSql *int8) (r0 int32) { // sqlite3.c:140188:12
- var _state uint8 // sqlite3.c:140189:6
- _ = _state
- var _token uint8 // sqlite3.c:140190:6
- _ = _token
- var _14_c int32 // sqlite3.c:140274:13
- _ = _14_c
- var _17_nId int32 // sqlite3.c:140287:15
- _ = _17_nId
+// Return TRUE if the given SQL string ends in a semicolon.
+//
+// Special handling is require for CREATE TRIGGER statements.
+// Whenever the CREATE TRIGGER keywords are seen, the statement
+// must end with ";END;".
+//
+// This implementation uses a state machine with 8 states:
+//
+// (0) INVALID We have not yet seen a non-whitespace character.
+//
+// (1) START At the beginning or end of an SQL statement. This routine
+// returns 1 if it ends in the START state and 0 if it ends
+// in any other state.
+//
+// (2) NORMAL We are in the middle of statement which ends with a single
+// semicolon.
+//
+// (3) EXPLAIN The keyword EXPLAIN has been seen at the beginning of
+// a statement.
+//
+// (4) CREATE The keyword CREATE has been seen at the beginning of a
+// statement, possibly preceded by EXPLAIN and/or followed by
+// TEMP or TEMPORARY
+//
+// (5) TRIGGER We are in the middle of a trigger definition that must be
+// ended by a semicolon, the keyword END, and another semicolon.
+//
+// (6) SEMI We've seen the first semicolon in the ";END;" that occurs at
+// the end of a trigger definition.
+//
+// (7) END We've seen the ";END" of the ";END;" that occurs at the end
+// of a trigger definition.
+//
+// Transitions between states above are determined by tokens extracted
+// from the input. The following tokens are significant:
+//
+// (0) tkSEMI A semicolon.
+// (1) tkWS Whitespace.
+// (2) tkOTHER Any other SQL token.
+// (3) tkEXPLAIN The "explain" keyword.
+// (4) tkCREATE The "create" keyword.
+// (5) tkTEMP The "temp" or "temporary" keyword.
+// (6) tkTRIGGER The "trigger" keyword.
+// (7) tkEND The "end" keyword.
+//
+// Whitespace never causes a state transition and is always ignored.
+// This means that a SQL string of all whitespace is invalid.
+//
+// If we compile with SQLITE_OMIT_TRIGGER, all of the computation needed
+// to recognize the end of a trigger can be omitted. All we have to do
+// is look for a semicolon that is not part of an string or comment.
+func Xsqlite3_complete(tls *crt.TLS, _zSql *int8) (r0 int32) {
+ var _14_c, _17_nId int32
+ var _state, _token uint8
_state = u8(0)
- if _zSql != nil {
- goto _0
+ if _zSql == nil {
+ _sqlite3MisuseError(tls, i32(140223))
+ return i32(0)
}
-
- _sqlite3MisuseError(tls, i32(140223))
- return i32(0)
-
-_0:
_1:
if (*_zSql) == 0 {
goto _2
}
-
switch int32(*_zSql) {
case i32(9):
goto _7
@@ -25160,7 +24006,6 @@ _1:
_4:
_token = uint8(i32(0))
goto _17
-
_5:
_6:
_7:
@@ -25168,124 +24013,80 @@ _8:
_9:
_token = uint8(i32(1))
goto _17
-
_10:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(1))))) == i32(42) {
- goto _18
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(1))))) != i32(42) {
+ _token = uint8(i32(2))
+ goto _17
}
-
- _token = uint8(i32(2))
- goto _17
-
-_18:
{
p := &_zSql
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(2))))
sink0 = *p
}
_19:
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == 0 || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == i32(42) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(1))))) == i32(47) {
- goto _20
+ if ((*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) != 0) && ((int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) != i32(42)) || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(1))))) != i32(47))) {
+ *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
+ goto _19
}
-
- *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
- goto _19
-
-_20:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) != i32(0) {
- goto _23
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == i32(0) {
+ return i32(0)
}
- return i32(0)
-
-_23:
*(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
_token = uint8(i32(1))
goto _17
-
_11:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(1))))) == i32(45) {
- goto _24
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(1))))) != i32(45) {
+ _token = uint8(i32(2))
+ goto _17
}
-
- _token = uint8(i32(2))
- goto _17
-
-_24:
_25:
- if (*_zSql) == 0 || int32(*_zSql) == i32(10) {
- goto _26
+ if ((*_zSql) != 0) && (int32(*_zSql) != i32(10)) {
+ *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
+ goto _25
}
-
- *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
- goto _25
-
-_26:
- if int32(*_zSql) != i32(0) {
- goto _28
+ if int32(*_zSql) == i32(0) {
+ return bool2int(int32(_state) == i32(1))
}
- return bool2int(int32(_state) == i32(1))
-
-_28:
_token = uint8(i32(1))
goto _17
-
_12:
*(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
_29:
- if (*_zSql) == 0 || int32(*_zSql) == i32(93) {
- goto _30
+ if ((*_zSql) != 0) && (int32(*_zSql) != i32(93)) {
+ *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
+ goto _29
}
-
- *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
- goto _29
-
-_30:
- if int32(*_zSql) != i32(0) {
- goto _32
+ if int32(*_zSql) == i32(0) {
+ return i32(0)
}
- return i32(0)
-
-_32:
_token = uint8(i32(2))
goto _17
-
_13:
_14:
_15:
_14_c = int32(*_zSql)
*(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
_33:
- if (*_zSql) == 0 || int32(*_zSql) == _14_c {
- goto _34
+ if ((*_zSql) != 0) && (int32(*_zSql) != _14_c) {
+ *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
+ goto _33
}
-
- *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
- goto _33
-
-_34:
- if int32(*_zSql) != i32(0) {
- goto _36
+ if int32(*_zSql) == i32(0) {
+ return i32(0)
}
- return i32(0)
-
-_36:
_token = uint8(i32(2))
goto _17
-
_16:
if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_zSql))))) & i32(70)) == i32(0) {
goto _37
}
-
_17_nId = i32(1)
_38:
if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(_17_nId)))))))) & i32(70)) == i32(0) {
goto _41
}
-
_17_nId += 1
goto _38
-
_41:
switch int32(*_zSql) {
case i32(67):
@@ -25306,77 +24107,49 @@ _41:
_43:
_44:
- if _17_nId != i32(6) || Xsqlite3_strnicmp(tls, _zSql, str(23540), i32(6)) != i32(0) {
- goto _51
+ if (_17_nId == i32(6)) && (Xsqlite3_strnicmp(tls, _zSql, str(23827), i32(6)) == i32(0)) {
+ _token = uint8(i32(4))
+ goto _52
}
-
- _token = uint8(i32(4))
- goto _52
-
-_51:
_token = uint8(i32(2))
_52:
goto _53
-
_45:
_46:
- if _17_nId != i32(7) || Xsqlite3_strnicmp(tls, _zSql, str(23548), i32(7)) != i32(0) {
- goto _55
+ if (_17_nId == i32(7)) && (Xsqlite3_strnicmp(tls, _zSql, str(23834), i32(7)) == i32(0)) {
+ _token = uint8(i32(6))
+ goto _56
}
-
- _token = uint8(i32(6))
- goto _56
-
-_55:
- if _17_nId != i32(4) || Xsqlite3_strnicmp(tls, _zSql, str(23556), i32(4)) != i32(0) {
- goto _58
+ if (_17_nId == i32(4)) && (Xsqlite3_strnicmp(tls, _zSql, str(23842), i32(4)) == i32(0)) {
+ _token = uint8(i32(5))
+ goto _59
}
-
- _token = uint8(i32(5))
- goto _59
-
-_58:
- if _17_nId != i32(9) || Xsqlite3_strnicmp(tls, _zSql, str(23564), i32(9)) != i32(0) {
- goto _61
+ if (_17_nId == i32(9)) && (Xsqlite3_strnicmp(tls, _zSql, str(23847), i32(9)) == i32(0)) {
+ _token = uint8(i32(5))
+ goto _62
}
-
- _token = uint8(i32(5))
- goto _62
-
-_61:
_token = uint8(i32(2))
_62:
_59:
_56:
goto _53
-
_47:
_48:
- if _17_nId != i32(3) || Xsqlite3_strnicmp(tls, _zSql, str(23576), i32(3)) != i32(0) {
- goto _64
+ if (_17_nId == i32(3)) && (Xsqlite3_strnicmp(tls, _zSql, str(23857), i32(3)) == i32(0)) {
+ _token = uint8(i32(7))
+ goto _65
}
-
- _token = uint8(i32(7))
- goto _65
-
-_64:
- if _17_nId != i32(7) || Xsqlite3_strnicmp(tls, _zSql, str(23580), i32(7)) != i32(0) {
- goto _67
+ if (_17_nId == i32(7)) && (Xsqlite3_strnicmp(tls, _zSql, str(23861), i32(7)) == i32(0)) {
+ _token = uint8(i32(3))
+ goto _68
}
-
- _token = uint8(i32(3))
- goto _68
-
-_67:
_token = uint8(i32(2))
_68:
_65:
goto _53
-
_49:
_token = uint8(i32(2))
goto _53
-
_53:
{
p := &_zSql
@@ -25384,75 +24157,63 @@ _53:
sink0 = *p
}
goto _69
-
_37:
_token = uint8(i32(2))
_69:
goto _17
-
_17:
_state = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3_completeØ00transØ001))+8*uintptr(_state))))) + 1*uintptr(_token)))
*(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
goto _1
-
_2:
return bool2int(int32(_state) == i32(1))
}
-var _sqlite3_completeØ00transØ001 [8][8]uint8 // sqlite3.c:140196:19
+var _sqlite3_completeØ00transØ001 [8][8]uint8
func init() {
_sqlite3_completeØ00transØ001 = [8][8]uint8{[8]uint8{u8(1), u8(0), u8(2), u8(3), u8(4), u8(2), u8(2), u8(2)}, [8]uint8{u8(1), u8(1), u8(2), u8(3), u8(4), u8(2), u8(2), u8(2)}, [8]uint8{u8(1), u8(2), u8(2), u8(2), u8(2), u8(2), u8(2), u8(2)}, [8]uint8{u8(1), u8(3), u8(3), u8(2), u8(4), u8(2), u8(2), u8(2)}, [8]uint8{u8(1), u8(4), u8(2), u8(2), u8(2), u8(4), u8(5), u8(2)}, [8]uint8{u8(6), u8(5), u8(5), u8(5), u8(5), u8(5), u8(5), u8(5)}, [8]uint8{u8(6), u8(6), u8(5), u8(5), u8(5), u8(5), u8(5), u8(7)}, [8]uint8{u8(1), u8(7), u8(5), u8(5), u8(5), u8(5), u8(5), u8(5)}}
}
-func Xsqlite3_complete16(tls *crt.TLS, _zSql unsafe.Pointer) (r0 int32) { // sqlite3.c:140353:12
- var _pVal *XMem // sqlite3.c:140354:17
- _ = _pVal
- var _zSql8 *int8 // sqlite3.c:140355:14
- _ = _zSql8
- var _rc int32 // sqlite3.c:140356:7
- _ = _rc
+// This routine is the same as the sqlite3_complete() routine described
+// above, except that the parameter is required to be UTF-16 encoded, not
+// UTF-8.
+func Xsqlite3_complete16(tls *crt.TLS, _zSql unsafe.Pointer) (r0 int32) {
+ var _rc int32
+ var _zSql8 *int8
+ var _pVal *XMem
_rc = Xsqlite3_initialize(tls)
- if _rc == 0 {
- goto _0
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_0:
_pVal = _sqlite3ValueNew(tls, nil)
_sqlite3ValueSetStr(tls, _pVal, i32(-1), _zSql, uint8(i32(2)), nil)
_zSql8 = (*int8)(_sqlite3ValueText(tls, _pVal, uint8(i32(1))))
- if _zSql8 == nil {
- goto _1
+ if _zSql8 != nil {
+ _rc = Xsqlite3_complete(tls, _zSql8)
+ goto _2
}
-
- _rc = Xsqlite3_complete(tls, _zSql8)
- goto _2
-
-_1:
_rc = _sqlite3NomemError(tls, i32(140368))
_2:
_sqlite3ValueFree(tls, _pVal)
return _rc & i32(255)
}
-func Xsqlite3_create_collation(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _enc int32, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32) (r0 int32) { // sqlite3.c:143647:12
+// Register a new collation sequence with the database handle db.
+func Xsqlite3_create_collation(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _enc int32, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32) (r0 int32) {
return Xsqlite3_create_collation_v2(tls, _db, _zName, _enc, _pCtx, _xCompare, nil)
}
-func Xsqlite3_create_collation_v2(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _enc int32, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:143660:12
- var _rc int32 // sqlite3.c:143668:7
- _ = _rc
- if _sqlite3SafetyCheckOk(tls, _db) != 0 && _zName != nil {
- goto _1
+// Register a new collation sequence with the database handle db.
+func Xsqlite3_create_collation_v2(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _enc int32, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
+ var _rc int32
+ if (_sqlite3SafetyCheckOk(tls, _db) == 0) || (_zName == nil) {
+ return _sqlite3MisuseError(tls, i32(143671))
}
- return _sqlite3MisuseError(tls, i32(143671))
-
-_1:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
func() {
if (_db.X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(143674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_collation_v2Ø00__func__Ø000))), unsafe.Pointer(str(23588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(143674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_collation_v2Ø00__func__Ø000))), unsafe.Pointer(str(23869)))
crt.X__builtin_abort(tls)
}
}()
@@ -25462,93 +24223,66 @@ _1:
return _rc
}
-var _sqlite3_create_collation_v2Ø00__func__Ø000 [28]int8 // -
+var _sqlite3_create_collation_v2Ø00__func__Ø000 [28]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_create_collation_v2Ø00__func__Ø000[0], str(23608), 28)
+ crt.Xstrncpy(nil, &_sqlite3_create_collation_v2Ø00__func__Ø000[0], str(23887), 28)
}
-func _createCollation(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _enc uint8, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:142810:1
- var _pColl *XCollSeq // sqlite3.c:142818:11
- _ = _pColl
- var _enc2 int32 // sqlite3.c:142819:7
- _ = _enc2
- var _5_aColl *XCollSeq // sqlite3.c:142857:15
- _ = _5_aColl
- var _5_j int32 // sqlite3.c:142858:11
- _ = _5_j
- var _6_p *XCollSeq // sqlite3.c:142860:17
- _ = _6_p
+// Create a new collating function for database "db". The name is zName
+// and the encoding is enc.
+func _createCollation(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _enc uint8, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
+ var _enc2, _5_j int32
+ var _pColl, _5_aColl, _6_p *XCollSeq
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142821), unsafe.Pointer((*int8)(unsafe.Pointer(&_createCollationØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142821), unsafe.Pointer((*int8)(unsafe.Pointer(&_createCollationØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
_enc2 = int32(_enc)
- if _enc2 != i32(4) && _enc2 != i32(8) {
- goto _3
+ if (_enc2 == i32(4)) || (_enc2 == i32(8)) {
+ _enc2 = i32(2)
}
-
- _enc2 = i32(2)
-_3:
- if _enc2 >= i32(1) && _enc2 <= i32(3) {
- goto _5
+ if (_enc2 < i32(1)) || (_enc2 > i32(3)) {
+ return _sqlite3MisuseError(tls, i32(142834))
}
- return _sqlite3MisuseError(tls, i32(142834))
-
-_5:
_pColl = _sqlite3FindCollSeq(tls, _db, uint8(_enc2), _zName, i32(0))
if _pColl == nil || (_pColl.X3) == nil {
goto _7
}
-
- if (_db.X34) == 0 {
- goto _8
+ if (_db.X34) != 0 {
+ _sqlite3ErrorWithMsg(tls, _db, i32(5), str(23915))
+ return i32(5)
}
-
- _sqlite3ErrorWithMsg(tls, _db, i32(5), str(23636))
- return i32(5)
-
-_8:
_sqlite3ExpirePreparedStatements(tls, _db)
if (int32(_pColl.X1) & i32(-9)) != _enc2 {
goto _9
}
-
_5_aColl = (*XCollSeq)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(360 /* X70 */))), _zName))
_5_j = i32(0)
_10:
if _5_j >= i32(3) {
goto _13
}
-
_6_p = (*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_aColl)) + 20*uintptr(_5_j)))
if int32(_6_p.X1) != int32(_pColl.X1) {
goto _14
}
-
- if (_6_p.X4) == nil {
- goto _15
+ if (_6_p.X4) != nil {
+ (_6_p.X4)(tls, _6_p.X2)
}
-
- (_6_p.X4)(tls, _6_p.X2)
-_15:
*(*func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_p)) + uintptr(12 /* X3 */))) = nil
_14:
_5_j += 1
goto _10
-
_13:
_9:
_7:
_pColl = _sqlite3FindCollSeq(tls, _db, uint8(_enc2), _zName, i32(1))
- if _pColl != nil {
- goto _16
+ if _pColl == nil {
+ return _sqlite3NomemError(tls, i32(142872))
}
- return _sqlite3NomemError(tls, i32(142872))
-
-_16:
*(*func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl)) + uintptr(12 /* X3 */))) = _xCompare
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl)) + uintptr(8 /* X2 */))) = _pCtx
*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl)) + uintptr(16 /* X4 */))) = _xDel
@@ -25557,63 +24291,73 @@ _16:
return i32(0)
}
-var _createCollationØ00__func__Ø000 [16]int8 // -
+var _createCollationØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_createCollationØ00__func__Ø000[0], str(23704), 16)
+ crt.Xstrncpy(nil, &_createCollationØ00__func__Ø000[0], str(23983), 16)
}
-func _sqlite3FindCollSeq(tls *crt.TLS, _db *Xsqlite3, _enc uint8, _zName *int8, _create int32) (r0 *XCollSeq) { // sqlite3.c:104349:1
- var _pColl *XCollSeq // sqlite3.c:104355:11
- _ = _pColl
- if _zName == nil {
- goto _0
+// Parameter zName points to a UTF-8 encoded string nName bytes long.
+// Return the CollSeq* pointer for the collation sequence named zName
+// for the encoding 'enc' from the database 'db'.
+//
+// If the entry specified is not found and 'create' is true, then create a
+// new entry. Otherwise return NULL.
+//
+// A separate function sqlite3LocateCollSeq() is a wrapper around
+// this routine. sqlite3LocateCollSeq() invokes the collation factory
+// if necessary and generates an error message if the collating sequence
+// cannot be found.
+//
+// See also: sqlite3LocateCollSeq(), sqlite3GetCollSeq()
+func _sqlite3FindCollSeq(tls *crt.TLS, _db *Xsqlite3, _enc uint8, _zName *int8, _create int32) (r0 *XCollSeq) {
+ var _pColl *XCollSeq
+ if _zName != nil {
+ _pColl = _findCollSeqEntry(tls, _db, _zName, _create)
+ goto _1
}
-
- _pColl = _findCollSeqEntry(tls, _db, _zName, _create)
- goto _1
-
-_0:
_pColl = (*XCollSeq)(_db.X2)
_1:
i32(0)
func() {
if int32(_enc) < i32(1) || int32(_enc) > i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindCollSeqØ00__func__Ø000))), unsafe.Pointer(str(23720)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindCollSeqØ00__func__Ø000))), unsafe.Pointer(str(23999)))
crt.X__builtin_abort(tls)
}
}()
- if _pColl == nil {
- goto _5
- }
-
- {
- p := &_pColl
- *p = (*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 20*uintptr(int32(_enc)-i32(1))))
- sink30 = *p
+ if _pColl != nil {
+ {
+ p := &_pColl
+ *p = (*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 20*uintptr(int32(_enc)-i32(1))))
+ sink32 = *p
+ }
}
-_5:
return _pColl
}
-func _findCollSeqEntry(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _create int32) (r0 *XCollSeq) { // sqlite3.c:104296:1
- var _pColl *XCollSeq // sqlite3.c:104301:11
- _ = _pColl
- var _1_nName int32 // sqlite3.c:104305:9
- _ = _1_nName
- var _2_pDel *XCollSeq // sqlite3.c:104308:15
- _ = _2_pDel
+// Locate and return an entry from the db.aCollSeq hash table. If the entry
+// specified by zName and nName is not found and parameter 'create' is
+// true, then create a new entry. Otherwise return NULL.
+//
+// Each pointer stored in the sqlite3.aCollSeq hash table contains an
+// array of three CollSeq structures. The first is the collation sequence
+// preferred for UTF-8, the second UTF-16le, and the third UTF-16be.
+//
+// Stored immediately after the three collation sequences is a copy of
+// the collation sequence name. A pointer to this string is stored in
+// each collation sequence structure.
+func _findCollSeqEntry(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _create int32) (r0 *XCollSeq) {
+ var _1_nName int32
+ var _pColl, _2_pDel *XCollSeq
_pColl = (*XCollSeq)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(360 /* X70 */))), _zName))
if nil != _pColl || _create == 0 {
goto _1
}
-
_1_nName = _sqlite3Strlen30(tls, _zName)
_pColl = (*XCollSeq)(_sqlite3DbMallocZero(tls, _db, uint64((u32(60)+uint32(_1_nName))+uint32(i32(1)))))
if _pColl == nil {
goto _2
}
-
_2_pDel = nil
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl))+20*uintptr(i32(0)))))) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer((*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl)) + 20*uintptr(i32(3))))))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl))+20*uintptr(i32(0)))))) + uintptr(4 /* X1 */))) = uint8(i32(1))
@@ -25626,38 +24370,35 @@ func _findCollSeqEntry(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _create int32)
_2_pDel = (*XCollSeq)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(360 /* X70 */))), (*XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl))+20*uintptr(i32(0)))).X0, (unsafe.Pointer)(_pColl)))
func() {
if _2_pDel != nil && _2_pDel != _pColl {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104323), unsafe.Pointer((*int8)(unsafe.Pointer(&_findCollSeqEntryØ00__func__Ø000))), unsafe.Pointer(str(23760)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104323), unsafe.Pointer((*int8)(unsafe.Pointer(&_findCollSeqEntryØ00__func__Ø000))), unsafe.Pointer(str(24039)))
crt.X__builtin_abort(tls)
}
}()
- if _2_pDel == nil {
- goto _6
+ if _2_pDel != nil {
+ _sqlite3OomFault(tls, _db)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_2_pDel))
+ _pColl = nil
}
-
- _sqlite3OomFault(tls, _db)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_2_pDel))
- _pColl = nil
-_6:
_2:
_1:
- r0 = _pColl
- return
+ return _pColl
}
-func _sqlite3HashFind(tls *crt.TLS, _pH *XHash, _pKey *int8) (r0 unsafe.Pointer) { // sqlite3.c:29441:1
- var _elem *XHashElem // sqlite3.c:29442:12
- _ = _elem
- var _h uint32 // sqlite3.c:29443:16
- _ = _h
+// Attempt to locate an element of the hash table pH with a key
+// that matches pKey. Return the data for this element if it is
+// found, or NULL if there is no match.
+func _sqlite3HashFind(tls *crt.TLS, _pH *XHash, _pKey *int8) (r0 unsafe.Pointer) {
+ var _h uint32
+ var _elem *XHashElem
func() {
if _pH == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29445), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashFindØ00__func__Ø000))), unsafe.Pointer(str(20712)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29445), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashFindØ00__func__Ø000))), unsafe.Pointer(str(21170)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pKey == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(29446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashFindØ00__func__Ø000))), unsafe.Pointer(str(21164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HashFindØ00__func__Ø000))), unsafe.Pointer(str(21605)))
crt.X__builtin_abort(tls)
}
}()
@@ -25668,180 +24409,163 @@ func _sqlite3HashFind(tls *crt.TLS, _pH *XHash, _pKey *int8) (r0 unsafe.Pointer)
}
return nil
}()
+
+ _ = _h
+ panic(0)
}
-var _sqlite3HashFindØ00__func__Ø000 [16]int8 // -
+var _sqlite3HashFindØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3HashFindØ00__func__Ø000[0], str(23784), 16)
+ crt.Xstrncpy(nil, &_sqlite3HashFindØ00__func__Ø000[0], str(24062), 16)
}
-var _findCollSeqEntryØ00__func__Ø000 [17]int8 // -
+var _findCollSeqEntryØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_findCollSeqEntryØ00__func__Ø000[0], str(23800), 17)
+ crt.Xstrncpy(nil, &_findCollSeqEntryØ00__func__Ø000[0], str(24078), 17)
}
-var _sqlite3FindCollSeqØ00__func__Ø000 [19]int8 // -
+var _sqlite3FindCollSeqØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FindCollSeqØ00__func__Ø000[0], str(23820), 19)
+ crt.Xstrncpy(nil, &_sqlite3FindCollSeqØ00__func__Ø000[0], str(24095), 19)
}
-func Xsqlite3_create_collation16(tls *crt.TLS, _db *Xsqlite3, _zName unsafe.Pointer, _enc int32, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32) (r0 int32) { // sqlite3.c:143685:12
- var _rc int32 // sqlite3.c:143692:7
- _ = _rc
- var _zName8 *int8 // sqlite3.c:143693:8
- _ = _zName8
+// Register a new collation sequence with the database handle db.
+func Xsqlite3_create_collation16(tls *crt.TLS, _db *Xsqlite3, _zName unsafe.Pointer, _enc int32, _pCtx unsafe.Pointer, _xCompare func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32) (r0 int32) {
+ var _rc int32
+ var _zName8 *int8
_rc = i32(0)
- if _sqlite3SafetyCheckOk(tls, _db) != 0 && _zName != nil {
- goto _1
+ if (_sqlite3SafetyCheckOk(tls, _db) == 0) || (_zName == nil) {
+ return _sqlite3MisuseError(tls, i32(143696))
}
- return _sqlite3MisuseError(tls, i32(143696))
-
-_1:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
func() {
if (_db.X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(143699), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_collation16Ø00__func__Ø000))), unsafe.Pointer(str(23588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(143699), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_collation16Ø00__func__Ø000))), unsafe.Pointer(str(23869)))
crt.X__builtin_abort(tls)
}
}()
_zName8 = _sqlite3Utf16to8(tls, _db, _zName, i32(-1), uint8(i32(2)))
- if _zName8 == nil {
- goto _4
+ if _zName8 != nil {
+ _rc = _createCollation(tls, _db, _zName8, uint8(_enc), _pCtx, _xCompare, nil)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName8))
}
-
- _rc = _createCollation(tls, _db, _zName8, uint8(_enc), _pCtx, _xCompare, nil)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName8))
-_4:
_rc = _sqlite3ApiExit(tls, _db, _rc)
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
return _rc
}
-var _sqlite3_create_collation16Ø00__func__Ø000 [27]int8 // -
+var _sqlite3_create_collation16Ø00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_create_collation16Ø00__func__Ø000[0], str(23840), 27)
+ crt.Xstrncpy(nil, &_sqlite3_create_collation16Ø00__func__Ø000[0], str(24114), 27)
}
-func _sqlite3Utf16to8(tls *crt.TLS, _db *Xsqlite3, _z unsafe.Pointer, _nByte int32, _enc uint8) (r0 *int8) { // sqlite3.c:27560:1
- var _m XMem // sqlite3.c:27561:7
- _ = _m
+// Convert a UTF-16 string in the native encoding into a UTF-8 string.
+// Memory to hold the UTF-8 string is obtained from sqlite3_malloc and must
+// be freed by the calling function.
+//
+// NULL is returned if there is an allocation error.
+func _sqlite3Utf16to8(tls *crt.TLS, _db *Xsqlite3, _z unsafe.Pointer, _nByte int32, _enc uint8) (r0 *int8) {
+ var _m XMem
crt.Xmemset(tls, (unsafe.Pointer)(&_m), i32(0), u32(48))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_m)) + uintptr(32 /* X9 */))))) = _db
_sqlite3VdbeMemSetStr(tls, &_m, (*int8)(_z), _nByte, _enc, nil)
_sqlite3VdbeChangeEncoding(tls, &_m, i32(1))
- if (_db.X17) == 0 {
- goto _0
+ if (_db.X17) != 0 {
+ _sqlite3VdbeMemRelease(tls, &_m)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_m)) + uintptr(16 /* X5 */))) = nil
}
-
- _sqlite3VdbeMemRelease(tls, &_m)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_m)) + uintptr(16 /* X5 */))) = nil
-_0:
func() {
if (int32(_m.X1)&i32(512)) == i32(0) && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27570), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf16to8Ø00__func__Ø000))), unsafe.Pointer(str(23868)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27570), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf16to8Ø00__func__Ø000))), unsafe.Pointer(str(24141)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_m.X1)&i32(2)) == i32(0) && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf16to8Ø00__func__Ø000))), unsafe.Pointer(str(23912)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf16to8Ø00__func__Ø000))), unsafe.Pointer(str(24185)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_m.X5) == nil && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf16to8Ø00__func__Ø000))), unsafe.Pointer(str(23956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf16to8Ø00__func__Ø000))), unsafe.Pointer(str(24228)))
crt.X__builtin_abort(tls)
}
}()
return _m.X5
+
+ _ = _m
+ panic(0)
}
-var _sqlite3Utf16to8Ø00__func__Ø000 [16]int8 // -
+var _sqlite3Utf16to8Ø00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3Utf16to8Ø00__func__Ø000[0], str(23980), 16)
+ crt.Xstrncpy(nil, &_sqlite3Utf16to8Ø00__func__Ø000[0], str(24252), 16)
}
-func Xsqlite3_create_function(tls *crt.TLS, _db *Xsqlite3, _zFunc *int8, _nArg int32, _enc int32, _p unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context)) (r0 int32) { // sqlite3.c:142168:12
+// Create new user functions.
+func Xsqlite3_create_function(tls *crt.TLS, _db *Xsqlite3, _zFunc *int8, _nArg int32, _enc int32, _p unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context)) (r0 int32) {
return Xsqlite3_create_function_v2(tls, _db, _zFunc, _nArg, _enc, _p, _xSFunc, _xStep, _xFinal, nil)
}
-func Xsqlite3_create_function_v2(tls *crt.TLS, _db *Xsqlite3, _zFunc *int8, _nArg int32, _enc int32, _p unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context), _xDestroy func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:142182:12
- var _rc int32 // sqlite3.c:142193:7
- _ = _rc
- var _pArg *XFuncDestructor // sqlite3.c:142194:18
- _ = _pArg
+func Xsqlite3_create_function_v2(tls *crt.TLS, _db *Xsqlite3, _zFunc *int8, _nArg int32, _enc int32, _p unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context), _xDestroy func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
+ var _rc int32
+ var _pArg *XFuncDestructor
_rc = i32(1)
_pArg = nil
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
+ if _sqlite3SafetyCheckOk(tls, _db) == 0 {
+ return _sqlite3MisuseError(tls, i32(142198))
}
- return _sqlite3MisuseError(tls, i32(142198))
-
-_0:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
if _xDestroy == nil {
goto _1
}
-
_pArg = (*XFuncDestructor)(_sqlite3DbMallocZero(tls, _db, uint64(u32(12))))
- if _pArg != nil {
- goto _2
+ if _pArg == nil {
+ _xDestroy(tls, _p)
+ goto _out
}
-
- _xDestroy(tls, _p)
- goto _out
-
-_2:
*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pArg)) + uintptr(4 /* X1 */))) = _xDestroy
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pArg)) + uintptr(8 /* X2 */))) = _p
_1:
_rc = _sqlite3CreateFunc(tls, _db, _zFunc, _nArg, _enc, _p, _xSFunc, _xStep, _xFinal, _pArg)
- if _pArg == nil || (_pArg.X0) != i32(0) {
- goto _4
+ if (_pArg != nil) && ((_pArg.X0) == i32(0)) {
+ func() {
+ if _rc == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142213), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_function_v2Ø00__func__Ø000))), unsafe.Pointer(str(18512)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _xDestroy(tls, _p)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pArg))
}
-
- func() {
- if _rc == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142213), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_function_v2Ø00__func__Ø000))), unsafe.Pointer(str(17916)))
- crt.X__builtin_abort(tls)
- }
- }()
- _xDestroy(tls, _p)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pArg))
-_4:
_out:
_rc = _sqlite3ApiExit(tls, _db, _rc)
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
return _rc
}
-func _sqlite3CreateFunc(tls *crt.TLS, _db *Xsqlite3, _zFunctionName *int8, _nArg int32, _enc int32, _pUserData unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context), _pDestructor *XFuncDestructor) (r0 int32) { // sqlite3.c:142069:1
- var _p *XFuncDef // sqlite3.c:142080:11
- _ = _p
- var _nName int32 // sqlite3.c:142081:7
- _ = _nName
- var _extraFlags int32 // sqlite3.c:142082:7
- _ = _extraFlags
- var _3_rc int32 // sqlite3.c:142109:9
- _ = _3_rc
+// This function is exactly the same as sqlite3_create_function(), except
+// that it is designed to be called by internal code. The difference is
+// that if a malloc() fails in sqlite3_create_function(), an error code
+// is returned and the mallocFailed flag cleared.
+func _sqlite3CreateFunc(tls *crt.TLS, _db *Xsqlite3, _zFunctionName *int8, _nArg int32, _enc int32, _pUserData unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context), _pDestructor *XFuncDestructor) (r0 int32) {
+ var _nName, _extraFlags, _3_rc int32
+ var _p *XFuncDef
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142084), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateFuncØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142084), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateFuncØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
- if _zFunctionName != nil && (_xSFunc == nil || _xFinal == nil && _xStep == nil) && (_xSFunc != nil || (_xFinal == nil || _xStep != nil)) && (_xSFunc != nil || (_xFinal != nil || _xStep == nil)) && (_nArg >= i32(-1) && _nArg <= i32(127)) && i32(255) >= store1(&_nName, _sqlite3Strlen30(tls, _zFunctionName)) {
- goto _14
+ if (((((_zFunctionName == nil) || ((_xSFunc != nil) && ((_xFinal != nil) || (_xStep != nil)))) || ((_xSFunc == nil) && ((_xFinal != nil) && (_xStep == nil)))) || ((_xSFunc == nil) && ((_xFinal == nil) && (_xStep != nil)))) || ((_nArg < i32(-1)) || (_nArg > i32(127)))) || (i32(255) < store1(&_nName, _sqlite3Strlen30(tls, _zFunctionName))) {
+ return _sqlite3MisuseError(tls, i32(142091))
}
- return _sqlite3MisuseError(tls, i32(142091))
-
-_14:
i32(0)
_extraFlags = _enc & i32(2048)
{
@@ -25849,31 +24573,20 @@ _14:
*p = (*p) & i32(7)
sink1 = *p
}
- if _enc != i32(4) {
- goto _15
+ if _enc == i32(4) {
+ _enc = i32(2)
+ goto _16
}
-
- _enc = i32(2)
- goto _16
-
-_15:
if _enc != i32(5) {
goto _17
}
-
_3_rc = _sqlite3CreateFunc(tls, _db, _zFunctionName, _nArg, i32(1)|_extraFlags, _pUserData, _xSFunc, _xStep, _xFinal, _pDestructor)
- if _3_rc != i32(0) {
- goto _18
- }
-
- _3_rc = _sqlite3CreateFunc(tls, _db, _zFunctionName, _nArg, i32(2)|_extraFlags, _pUserData, _xSFunc, _xStep, _xFinal, _pDestructor)
-_18:
if _3_rc == i32(0) {
- goto _19
+ _3_rc = _sqlite3CreateFunc(tls, _db, _zFunctionName, _nArg, i32(2)|_extraFlags, _pUserData, _xSFunc, _xStep, _xFinal, _pDestructor)
+ }
+ if _3_rc != i32(0) {
+ return _3_rc
}
- return _3_rc
-
-_19:
_enc = i32(3)
_17:
_16:
@@ -25881,44 +24594,33 @@ _16:
if _p == nil || (int32(_p.X1)&i32(3)) != _enc || int32(_p.X0) != _nArg {
goto _22
}
-
- if (_db.X34) == 0 {
- goto _23
+ if (_db.X34) != 0 {
+ _sqlite3ErrorWithMsg(tls, _db, i32(5), str(24268))
+ func() {
+ if (_db.X17) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142135), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateFuncØ00__func__Ø000))), unsafe.Pointer(str(23869)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(5)
}
-
- _sqlite3ErrorWithMsg(tls, _db, i32(5), str(23996))
- func() {
- if (_db.X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142135), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateFuncØ00__func__Ø000))), unsafe.Pointer(str(23588)))
- crt.X__builtin_abort(tls)
- }
- }()
- return i32(5)
-
-_23:
_sqlite3ExpirePreparedStatements(tls, _db)
_22:
_p = _sqlite3FindFunction(tls, _db, _zFunctionName, _nArg, uint8(_enc), uint8(i32(1)))
func() {
if _p == nil && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateFuncØ00__func__Ø000))), unsafe.Pointer(str(24060)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateFuncØ00__func__Ø000))), unsafe.Pointer(str(24331)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil {
- goto _30
+ if _p == nil {
+ return _sqlite3NomemError(tls, i32(142145))
}
- return _sqlite3NomemError(tls, i32(142145))
-
-_30:
_functionDestroy(tls, _db, _p)
- if _pDestructor == nil {
- goto _31
+ if _pDestructor != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDestructor)) + uintptr(0 /* X0 */))) += 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDestructor)) + uintptr(0 /* X0 */))) += 1
-_31:
- *(**XFuncDestructor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))))))) = _pDestructor
+ *(**XFuncDestructor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))))))) = _pDestructor
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(2 /* X1 */))) = uint16((int32(_p.X1) & i32(3)) | _extraFlags)
*(*func(*crt.TLS, *Xsqlite3_context, int32, **XMem))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))))) = func() func(*crt.TLS, *Xsqlite3_context, int32, **XMem) {
if _xSFunc != nil {
@@ -25930,42 +24632,48 @@ _31:
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */))) = _pUserData
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = int8(uint16(_nArg))
return i32(0)
-}
-
-var _sqlite3CreateFuncØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CreateFuncØ00__func__Ø000[0], str(24084), 18)
-}
-func _sqlite3FindFunction(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _nArg int32, _enc uint8, _createFlag uint8) (r0 *XFuncDef) { // sqlite3.c:104491:1
- var _p *XFuncDef // sqlite3.c:104498:11
- _ = _p
- var _pBest *XFuncDef // sqlite3.c:104499:11
- _ = _pBest
- var _bestScore int32 // sqlite3.c:104500:7
- _ = _bestScore
- var _h int32 // sqlite3.c:104501:7
- _ = _h
- var _nName int32 // sqlite3.c:104502:7
_ = _nName
- var _1_score int32 // sqlite3.c:104512:9
- _ = _1_score
- var _4_score int32 // sqlite3.c:104537:11
- _ = _4_score
- var _6_pOther *XFuncDef // sqlite3.c:104552:13
- _ = _6_pOther
+ panic(0)
+}
+
+var _sqlite3CreateFuncØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3CreateFuncØ00__func__Ø000[0], str(24353), 18)
+}
+
+// Locate a user function given a name, a number of arguments and a flag
+// indicating whether the function prefers UTF-16 over UTF-8. Return a
+// pointer to the FuncDef structure that defines that function, or return
+// NULL if the function does not exist.
+//
+// If the createFlag argument is true, then a new (blank) FuncDef
+// structure is created and liked into the "db" structure if a
+// no matching function previously existed.
+//
+// If nArg is -2, then the first valid function found is returned. A
+// function is valid if xSFunc is non-zero. The nArg==(-2)
+// case is used to see if zName is a valid function name for some number
+// of arguments. If nArg is -2, then createFlag must be 0.
+//
+// If createFlag is false, then a function with the required name and
+// number of arguments may be returned even if the eTextRep flag does not
+// match that requested.
+func _sqlite3FindFunction(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _nArg int32, _enc uint8, _createFlag uint8) (r0 *XFuncDef) {
+ var _bestScore, _h, _nName, _1_score, _4_score int32
+ var _p, _pBest, _6_pOther *XFuncDef
_pBest = nil
_bestScore = i32(0)
func() {
if _nArg < i32(-2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104504), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindFunctionØ00__func__Ø000))), unsafe.Pointer(str(24104)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104504), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindFunctionØ00__func__Ø000))), unsafe.Pointer(str(24371)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nArg < i32(-1) && int32(_createFlag) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104505), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindFunctionØ00__func__Ø000))), unsafe.Pointer(str(24116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104505), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindFunctionØ00__func__Ø000))), unsafe.Pointer(str(24382)))
crt.X__builtin_abort(tls)
}
}()
@@ -25975,23 +24683,17 @@ _5:
if _p == nil {
goto _6
}
-
_1_score = _matchQuality(tls, _p, _nArg, _enc)
- if _1_score <= _bestScore {
- goto _7
+ if _1_score > _bestScore {
+ _pBest = _p
+ _bestScore = _1_score
}
-
- _pBest = _p
- _bestScore = _1_score
-_7:
_p = (*XFuncDef)(_p.X3)
goto _5
-
_6:
if _createFlag != 0 || _pBest != nil && ((_db.X6)&i32(2097152)) == i32(0) {
goto _10
}
-
_bestScore = i32(0)
_h = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zName)) + 1*uintptr(i32(0))))))))) + _nName) % i32(23)
_p = _functionSearch(tls, _h, _zName)
@@ -25999,141 +24701,105 @@ _11:
if _p == nil {
goto _12
}
-
_4_score = _matchQuality(tls, _p, _nArg, _enc)
- if _4_score <= _bestScore {
- goto _13
+ if _4_score > _bestScore {
+ _pBest = _p
+ _bestScore = _4_score
}
-
- _pBest = _p
- _bestScore = _4_score
-_13:
_p = (*XFuncDef)(_p.X3)
goto _11
-
_12:
_10:
- if _createFlag == 0 || _bestScore >= i32(6) || store31(&_pBest, (*XFuncDef)(_sqlite3DbMallocZero(tls, _db, uint64((u32(28)+uint32(_nName))+uint32(i32(1)))))) == nil {
+ if _createFlag == 0 || _bestScore >= i32(6) || store33(&_pBest, (*XFuncDef)(_sqlite3DbMallocZero(tls, _db, uint64((u32(28)+uint32(_nName))+uint32(i32(1)))))) == nil {
goto _16
}
-
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBest)) + uintptr(20 /* X6 */))) = (*int8)(unsafe.Pointer((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBest)) + 28*uintptr(i32(1))))))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBest)) + uintptr(0 /* X0 */))) = int8(uint16(_nArg))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBest)) + uintptr(2 /* X1 */))) = uint16(_enc)
crt.Xmemcpy(tls, (unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBest))+28*uintptr(i32(1))))), (unsafe.Pointer)(_zName), uint32(_nName+i32(1)))
_6_pOther = (*XFuncDef)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(344 /* X69 */))), _pBest.X6, (unsafe.Pointer)(_pBest)))
- if _6_pOther != _pBest {
- goto _17
+ if _6_pOther == _pBest {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pBest))
+ _sqlite3OomFault(tls, _db)
+ return nil
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pBest))
- _sqlite3OomFault(tls, _db)
- return nil
-
-_17:
*(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBest)) + uintptr(8 /* X3 */))))) = _6_pOther
_16:
- if _pBest == nil || (*(*func(*crt.TLS, *Xsqlite3_context, int32, **XMem))(unsafe.Pointer(&struct {
+ if (_pBest != nil) && (((*(*func(*crt.TLS, *Xsqlite3_context, int32, **XMem))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer)
- }{(_pBest.X4)}))) == nil && _createFlag == 0 {
- goto _21
+ }{(_pBest.X4)}))) != nil) || (_createFlag != 0)) {
+ return _pBest
}
- return _pBest
-
-_21:
return nil
}
-var _sqlite3FindFunctionØ00__func__Ø000 [20]int8 // -
+var _sqlite3FindFunctionØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FindFunctionØ00__func__Ø000[0], str(24144), 20)
+ crt.Xstrncpy(nil, &_sqlite3FindFunctionØ00__func__Ø000[0], str(24410), 20)
}
-func _matchQuality(tls *crt.TLS, _p *XFuncDef, _nArg int32, _enc uint8) (r0 int32) { // sqlite3.c:104396:1
- var _match int32 // sqlite3.c:104401:7
- _ = _match
- if _nArg != i32(-2) {
- goto _0
+// The score for a perfect match
+func _matchQuality(tls *crt.TLS, _p *XFuncDef, _nArg int32, _enc uint8) (r0 int32) {
+ var _match int32
+ if _nArg == i32(-2) {
+ return func() int32 {
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{(*(*func(*crt.TLS, *Xsqlite3_context, int32, **XMem))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer)
+ }{(_p.X4)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ }{nil})) {
+ return i32(0)
+ }
+ return i32(6)
+ }()
}
- return func() int32 {
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{(*(*func(*crt.TLS, *Xsqlite3_context, int32, **XMem))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer)
- }{(_p.X4)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
- }{nil})) {
- return i32(0)
- }
- return i32(6)
- }()
-
-_0:
- if int32(_p.X0) == _nArg || int32(_p.X0) < i32(0) {
- goto _4
+ if (int32(_p.X0) != _nArg) && (int32(_p.X0) >= i32(0)) {
+ return i32(0)
}
- return i32(0)
-
-_4:
- if int32(_p.X0) != _nArg {
- goto _5
+ if int32(_p.X0) == _nArg {
+ _match = i32(4)
+ goto _6
}
-
- _match = i32(4)
- goto _6
-
-_5:
_match = i32(1)
_6:
- if int32(_enc) != (int32(_p.X1) & i32(3)) {
- goto _7
- }
-
- {
- p := &_match
- *p = (*p) + i32(2)
- sink1 = *p
- }
- goto _8
-
-_7:
- if ((int32(_enc) & int32(_p.X1)) & i32(2)) == i32(0) {
- goto _9
+ if int32(_enc) == (int32(_p.X1) & i32(3)) {
+ {
+ p := &_match
+ *p = (*p) + i32(2)
+ sink1 = *p
+ }
+ goto _8
}
-
- {
- p := &_match
- *p = (*p) + i32(1)
- sink1 = *p
+ if ((int32(_enc) & int32(_p.X1)) & i32(2)) != i32(0) {
+ {
+ p := &_match
+ *p = (*p) + i32(1)
+ sink1 = *p
+ }
}
-_9:
_8:
- r0 = _match
- return
+ return _match
}
-var _sqlite3_create_function_v2Ø00__func__Ø000 [27]int8 // -
+var _sqlite3_create_function_v2Ø00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_create_function_v2Ø00__func__Ø000[0], str(24164), 27)
+ crt.Xstrncpy(nil, &_sqlite3_create_function_v2Ø00__func__Ø000[0], str(24430), 27)
}
-func Xsqlite3_create_function16(tls *crt.TLS, _db *Xsqlite3, _zFunctionName unsafe.Pointer, _nArg int32, _eTextRep int32, _p unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context)) (r0 int32) { // sqlite3.c:142225:12
- var _rc int32 // sqlite3.c:142235:7
- _ = _rc
- var _zFunc8 *int8 // sqlite3.c:142236:8
- _ = _zFunc8
- if _sqlite3SafetyCheckOk(tls, _db) != 0 && _zFunctionName != nil {
- goto _1
+func Xsqlite3_create_function16(tls *crt.TLS, _db *Xsqlite3, _zFunctionName unsafe.Pointer, _nArg int32, _eTextRep int32, _p unsafe.Pointer, _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xStep func(*crt.TLS, *Xsqlite3_context, int32, **XMem), _xFinal func(*crt.TLS, *Xsqlite3_context)) (r0 int32) {
+ var _rc int32
+ var _zFunc8 *int8
+ if (_sqlite3SafetyCheckOk(tls, _db) == 0) || (_zFunctionName == nil) {
+ return _sqlite3MisuseError(tls, i32(142239))
}
- return _sqlite3MisuseError(tls, i32(142239))
-
-_1:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
func() {
if (_db.X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142242), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_function16Ø00__func__Ø000))), unsafe.Pointer(str(23588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142242), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_create_function16Ø00__func__Ø000))), unsafe.Pointer(str(23869)))
crt.X__builtin_abort(tls)
}
}()
@@ -26145,63 +24811,53 @@ _1:
return _rc
}
-var _sqlite3_create_function16Ø00__func__Ø000 [26]int8 // -
+var _sqlite3_create_function16Ø00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_create_function16Ø00__func__Ø000[0], str(24192), 26)
+ crt.Xstrncpy(nil, &_sqlite3_create_function16Ø00__func__Ø000[0], str(24457), 26)
}
-func Xsqlite3_create_module(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _pModule *Xsqlite3_module, _pAux unsafe.Pointer) (r0 int32) { // sqlite3.c:125083:12
- if _sqlite3SafetyCheckOk(tls, _db) != 0 && _zName != nil {
- goto _1
+// External API function used to create a new virtual-table module.
+func Xsqlite3_create_module(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _pModule *Xsqlite3_module, _pAux unsafe.Pointer) (r0 int32) {
+ if (_sqlite3SafetyCheckOk(tls, _db) == 0) || (_zName == nil) {
+ return _sqlite3MisuseError(tls, i32(125090))
}
- return _sqlite3MisuseError(tls, i32(125090))
-
-_1:
return _createModule(tls, _db, _zName, _pModule, _pAux, nil)
}
-func _createModule(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _pModule *Xsqlite3_module, _pAux unsafe.Pointer, _xDestroy func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:125058:1
- var _rc int32 // sqlite3.c:125065:7
- _ = _rc
+// The actual function that does the work of creating a new module.
+// This function implements the sqlite3_create_module() and
+// sqlite3_create_module_v2() interfaces.
+func _createModule(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _pModule *Xsqlite3_module, _pAux unsafe.Pointer, _xDestroy func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
+ var _rc int32
_rc = i32(0)
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
- if _sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zName) == nil {
- goto _0
+ if _sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zName) != nil {
+ _rc = _sqlite3MisuseError(tls, i32(125069))
+ goto _1
}
-
- _rc = _sqlite3MisuseError(tls, i32(125069))
- goto _1
-
-_0:
_sqlite3VtabCreateModule(tls, _db, _zName, _pModule, _pAux, _xDestroy)
_1:
_rc = _sqlite3ApiExit(tls, _db, _rc)
- if _rc == i32(0) || _xDestroy == nil {
- goto _3
+ if (_rc != i32(0)) && (_xDestroy != nil) {
+ _xDestroy(tls, _pAux)
}
-
- _xDestroy(tls, _pAux)
-_3:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
return _rc
}
-func _sqlite3VtabCreateModule(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _pModule *Xsqlite3_module, _pAux unsafe.Pointer, _xDestroy func(*crt.TLS, unsafe.Pointer)) (r0 *XModule) { // sqlite3.c:125023:1
- var _pMod *XModule // sqlite3.c:125030:10
- _ = _pMod
- var _nName int32 // sqlite3.c:125031:7
- _ = _nName
- var _1_pDel *XModule // sqlite3.c:125034:12
- _ = _1_pDel
- var _1_zCopy *int8 // sqlite3.c:125035:10
- _ = _1_zCopy
+// Construct and install a Module object for a virtual table. When this
+// routine is called, it is guaranteed that all appropriate locks are held
+// and the module is not already part of the connection.
+func _sqlite3VtabCreateModule(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _pModule *Xsqlite3_module, _pAux unsafe.Pointer, _xDestroy func(*crt.TLS, unsafe.Pointer)) (r0 *XModule) {
+ var _nName int32
+ var _1_zCopy *int8
+ var _pMod, _1_pDel *XModule
_nName = _sqlite3Strlen30(tls, _zName)
_pMod = (*XModule)(_sqlite3DbMallocRawNN(tls, _db, uint64((u32(20)+uint32(_nName))+uint32(i32(1)))))
if _pMod == nil {
goto _0
}
-
_1_zCopy = (*int8)(unsafe.Pointer((*XModule)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMod)) + 20*uintptr(i32(1))))))
crt.Xmemcpy(tls, (unsafe.Pointer)(_1_zCopy), (unsafe.Pointer)(_zName), uint32(_nName+i32(1)))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMod)) + uintptr(4 /* X1 */))) = _1_zCopy
@@ -26212,43 +24868,41 @@ func _sqlite3VtabCreateModule(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _pModul
_1_pDel = (*XModule)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _1_zCopy, (unsafe.Pointer)(_pMod)))
func() {
if _1_pDel != nil && _1_pDel != _pMod {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125043), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCreateModuleØ00__func__Ø000))), unsafe.Pointer(str(24220)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125043), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCreateModuleØ00__func__Ø000))), unsafe.Pointer(str(24483)))
crt.X__builtin_abort(tls)
}
}()
- if _1_pDel == nil {
- goto _4
+ if _1_pDel != nil {
+ _sqlite3OomFault(tls, _db)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pDel))
+ _pMod = nil
}
-
- _sqlite3OomFault(tls, _db)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pDel))
- _pMod = nil
-_4:
_0:
- r0 = _pMod
- return
+ return _pMod
}
-var _sqlite3VtabCreateModuleØ00__func__Ø000 [24]int8 // -
+var _sqlite3VtabCreateModuleØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabCreateModuleØ00__func__Ø000[0], str(24244), 24)
+ crt.Xstrncpy(nil, &_sqlite3VtabCreateModuleØ00__func__Ø000[0], str(24505), 24)
}
-func Xsqlite3_data_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:77012:12
- var _pVm *TVdbe // sqlite3.c:77013:8
- _ = _pVm
+// Return the number of values available from the current row of the
+// currently executing statement pStmt.
+func Xsqlite3_data_count(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) {
+ var _pVm *TVdbe
_pVm = (*TVdbe)(_pStmt)
- if _pVm != nil && (*XMem)(_pVm.X21) != nil {
- goto _1
+ if (_pVm == nil) || ((*XMem)(_pVm.X21) == nil) {
+ return i32(0)
}
- return i32(0)
-
-_1:
return int32(_pVm.X29)
}
-func Xsqlite3_db_handle(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 *Xsqlite3) { // sqlite3.c:77654:12
+// Return the sqlite3* database handle to which the prepared statement given
+// in the argument belongs. This is the same database handle that was
+// the first argument to the sqlite3_prepare() that was used to create
+// the statement in the first place.
+func Xsqlite3_db_handle(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 *Xsqlite3) {
return func() *Xsqlite3 {
if _pStmt != nil {
return (*Xsqlite3)((*TVdbe)(_pStmt).X0)
@@ -26257,67 +24911,49 @@ func Xsqlite3_db_handle(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 *Xsqlite3) { //
}()
}
-func Xsqlite3_declare_vtab(tls *crt.TLS, _db *Xsqlite3, _zCreateTable *int8) (r0 int32) { // sqlite3.c:125721:12
- var _pCtx *XVtabCtx // sqlite3.c:125722:11
- _ = _pCtx
- var _pParse *XParse // sqlite3.c:125723:9
- _ = _pParse
- var _rc int32 // sqlite3.c:125724:7
- _ = _rc
- var _pTab *XTable // sqlite3.c:125725:9
- _ = _pTab
- var _zErr *int8 // sqlite3.c:125726:8
- _ = _zErr
- var _6_pNew *XTable // sqlite3.c:125758:15
- _ = _6_pNew
- var _6_pIdx *XIndex // sqlite3.c:125759:15
- _ = _6_pIdx
+// This function is used to set the schema of a virtual table. It is only
+// valid to call this function from within the xCreate() or xConnect() of a
+// virtual table module.
+func Xsqlite3_declare_vtab(tls *crt.TLS, _db *Xsqlite3, _zCreateTable *int8) (r0 int32) {
+ var _rc int32
+ var _zErr *int8
+ var _pTab, _6_pNew *XTable
+ var _pParse *XParse
+ var _6_pIdx *XIndex
+ var _pCtx *XVtabCtx
_rc = i32(0)
_zErr = nil
- if _sqlite3SafetyCheckOk(tls, _db) != 0 && _zCreateTable != nil {
- goto _1
+ if (_sqlite3SafetyCheckOk(tls, _db) == 0) || (_zCreateTable == nil) {
+ return _sqlite3MisuseError(tls, i32(125730))
}
- return _sqlite3MisuseError(tls, i32(125730))
-
-_1:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
_pCtx = (*XVtabCtx)(_db.X66)
- if _pCtx != nil && (_pCtx.X3) == 0 {
- goto _3
+ if (_pCtx == nil) || (_pCtx.X3) != 0 {
+ _sqlite3Error(tls, _db, i32(21))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
+ return _sqlite3MisuseError(tls, i32(125738))
}
-
- _sqlite3Error(tls, _db, i32(21))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
- return _sqlite3MisuseError(tls, i32(125738))
-
-_3:
_pTab = (*XTable)(_pCtx.X1)
func() {
if (_pTab.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125741), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125741), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24529)))
crt.X__builtin_abort(tls)
}
}()
_pParse = (*XParse)(_sqlite3DbMallocZero(tls, _db, uint64(u32(484))))
- if _pParse != nil {
- goto _6
+ if _pParse == nil {
+ _rc = _sqlite3NomemError(tls, i32(125745))
+ goto _7
}
-
- _rc = _sqlite3NomemError(tls, i32(125745))
- goto _7
-
-_6:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(412 /* X55 */))) = uint8(i32(1))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(0 /* X0 */))))) = _db
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(144 /* X42 */))) = uint32(i32(1))
if i32(0) != _sqlite3RunParser(tls, _pParse, _zCreateTable, &_zErr) || (*XTable)(_pParse.X63) == nil || (_db.X17) != 0 || (*XSelect)((*XTable)(_pParse.X63).X3) != nil || ((*XTable)(_pParse.X63).X16) != 0 {
goto _12
}
-
if (*XColumn)(_pTab.X1) != nil {
goto _13
}
-
_6_pNew = (*XTable)(_pParse.X63)
*(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(4 /* X1 */))))) = (*XColumn)(_6_pNew.X1)
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(42 /* X11 */))) = _6_pNew.X11
@@ -26330,45 +24966,38 @@ _6:
*(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pNew)) + uintptr(4 /* X1 */))))) = nil
func() {
if (*XIndex)(_pTab.X2) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24545)))
crt.X__builtin_abort(tls)
}
}()
- if ((_6_pNew.X9)&uint32(i32(32))) == uint32(i32(0)) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ if (((_6_pNew.X9) & uint32(i32(32))) != uint32(i32(0))) && (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32
}{(*(*func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer, *int64) int32
- }{((*Xsqlite3_module)((*XModule)((*XVTable)(_pCtx.X0).X1).X0).X13)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{((*Xsqlite3_module)((*XModule)((*XVTable)(_pCtx.X0).X1).X0).X13)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32
- }{nil})) {
- goto _17
+ }{nil}))) {
+ _rc = i32(1)
}
-
- _rc = i32(1)
-_17:
_6_pIdx = (*XIndex)(_6_pNew.X2)
- if _6_pIdx == nil {
- goto _18
+ if _6_pIdx != nil {
+ func() {
+ if (*XIndex)(_6_pIdx.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24561)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(8 /* X2 */))))) = _6_pIdx
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pNew)) + uintptr(8 /* X2 */))))) = nil
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx)) + uintptr(12 /* X3 */))))) = _pTab
}
-
- func() {
- if (*XIndex)(_6_pIdx.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24300)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(8 /* X2 */))))) = _6_pIdx
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pNew)) + uintptr(8 /* X2 */))))) = nil
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx)) + uintptr(12 /* X3 */))))) = _pTab
-_18:
_13:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCtx)) + uintptr(12 /* X3 */))) = i32(1)
goto _21
-
_12:
_sqlite3ErrorWithMsg(tls, _db, i32(1), func() *int8 {
if _zErr != nil {
- return str(24316)
+ return str(24576)
}
return nil
}(), unsafe.Pointer(_zErr))
@@ -26376,19 +25005,16 @@ _12:
_rc = i32(1)
_21:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(412 /* X55 */))) = uint8(i32(0))
- if (*TVdbe)(_pParse.X2) == nil {
- goto _24
+ if (*TVdbe)(_pParse.X2) != nil {
+ _sqlite3VdbeFinalize(tls, (*TVdbe)(_pParse.X2))
}
-
- _sqlite3VdbeFinalize(tls, (*TVdbe)(_pParse.X2))
-_24:
_sqlite3DeleteTable(tls, _db, (*XTable)(_pParse.X63))
_sqlite3ParserReset(tls, _pParse)
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pParse))
_7:
func() {
if (_rc & i32(255)) != _rc {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125793), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24320)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125793), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_declare_vtabØ00__func__Ø000))), unsafe.Pointer(str(24579)))
crt.X__builtin_abort(tls)
}
}()
@@ -26397,55 +25023,43 @@ _7:
return _rc
}
-var _sqlite3_declare_vtabØ00__func__Ø000 [21]int8 // -
+var _sqlite3_declare_vtabØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_declare_vtabØ00__func__Ø000[0], str(24336), 21)
+ crt.Xstrncpy(nil, &_sqlite3_declare_vtabØ00__func__Ø000[0], str(24593), 21)
}
-func _sqlite3RunParser(tls *crt.TLS, _pParse *XParse, _zSql *int8, _pzErrMsg **int8) (r0 int32) { // sqlite3.c:139941:1
- var _nErr int32 // sqlite3.c:139942:7
- _ = _nErr
- var _pEngine unsafe.Pointer // sqlite3.c:139943:8
- _ = _pEngine
- var _n int32 // sqlite3.c:139944:7
- _ = _n
- var _tokenType int32 // sqlite3.c:139945:7
- _ = _tokenType
- var _lastTokenParsed int32 // sqlite3.c:139946:7
- _ = _lastTokenParsed
- var _db *Xsqlite3 // sqlite3.c:139947:11
- _ = _db
- var _mxSqlLen int32 // sqlite3.c:139948:7
- _ = _mxSqlLen
- var _sEngine XyyParser // sqlite3.c:139950:12
- _ = _sEngine
- var _19_p *TAggInfo_func // sqlite3.c:140070:17
- _ = _19_p
- var _20_p *XTable // sqlite3.c:140075:11
- _ = _20_p
+// Run the parser on the given SQL string. The parser structure is
+// passed in. An SQLITE_ status code is returned. If an error occurs
+// then an and attempt is made to write an error message into
+// memory obtained from sqlite3_malloc() and to make *pzErrMsg point to that
+// error message.
+func _sqlite3RunParser(tls *crt.TLS, _pParse *XParse, _zSql *int8, _pzErrMsg **int8) (r0 int32) {
+ var _nErr, _n, _tokenType, _lastTokenParsed, _mxSqlLen int32
+ var _pEngine unsafe.Pointer
+ var _db *Xsqlite3
+ var _20_p *XTable
+ var _19_p *TAggInfo_func
+ var _sEngine XyyParser
_nErr = i32(0)
_n = i32(0)
_lastTokenParsed = i32(-1)
_db = (*Xsqlite3)(_pParse.X0)
func() {
if _zSql == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139953), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24360)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139953), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24614)))
crt.X__builtin_abort(tls)
}
}()
_mxSqlLen = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(1))))
- if (_db.X34) != i32(0) {
- goto _2
+ if (_db.X34) == i32(0) {
+ *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(0)
}
-
- *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(0)
-_2:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(0)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(440 /* X62 */))) = _zSql
func() {
if _pzErrMsg == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24622)))
crt.X__builtin_abort(tls)
}
}()
@@ -26453,25 +25067,25 @@ _2:
_sqlite3ParserInit(tls, _pEngine)
func() {
if (*XTable)(_pParse.X63) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139972), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139972), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24634)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XTrigger)(_pParse.X64) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139973), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24404)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139973), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24655)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pParse.X52) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139974), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24428)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139974), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24678)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pParse.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24444)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24694)))
crt.X__builtin_abort(tls)
}
}()
@@ -26479,39 +25093,25 @@ _13:
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == i32(0) {
goto _15
}
-
_n = _sqlite3GetToken(tls, (*uint8)(unsafe.Pointer(_zSql)), &_tokenType)
{
p := &_mxSqlLen
*p = (*p) - _n
sink1 = *p
}
- if _mxSqlLen >= i32(0) {
- goto _16
+ if _mxSqlLen < i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(18)
+ goto _14
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(18)
- goto _14
-
-_16:
goto _17
-
_15:
- if _lastTokenParsed != i32(1) {
- goto _18
+ if _lastTokenParsed == i32(1) {
+ _tokenType = i32(0)
+ goto _19
}
-
- _tokenType = i32(0)
- goto _19
-
-_18:
- if _lastTokenParsed != i32(0) {
- goto _20
+ if _lastTokenParsed == i32(0) {
+ goto _14
}
-
- goto _14
-
-_20:
_tokenType = i32(1)
_19:
{
@@ -26523,36 +25123,26 @@ _17:
if _tokenType < i32(163) {
goto _22
}
-
func() {
if _tokenType != i32(163) && _tokenType != i32(164) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139997), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24464)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139997), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24712)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) == 0 {
- goto _26
+ if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(9)
+ goto _14
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(9)
- goto _14
-
-_26:
- if _tokenType != i32(164) {
- goto _27
+ if _tokenType == i32(164) {
+ _sqlite3ErrorMsg(tls, _pParse, str(24757), _n, unsafe.Pointer(_zSql))
+ goto _14
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(24512), _n, unsafe.Pointer(_zSql))
- goto _14
-
-_27:
{
p := &_zSql
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
sink0 = *p
}
goto _28
-
_22:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(400 /* X51 */))))) + uintptr(0 /* X0 */))) = _zSql
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(400 /* X51 */))))) + uintptr(4 /* X1 */))) = uint32(_n)
@@ -26563,147 +25153,124 @@ _22:
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
sink0 = *p
}
- if (_pParse.X3) == i32(0) && (_db.X17) == 0 {
- goto _30
+ if ((_pParse.X3) != i32(0)) || ((_db.X17) != 0) {
+ goto _14
}
-
- goto _14
-
-_30:
_28:
goto _13
-
_14:
func() {
if _nErr != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(140016), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(140016), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24784)))
crt.X__builtin_abort(tls)
}
}()
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(440 /* X62 */))) = _zSql
_sqlite3ParserFinalize(tls, _pEngine)
- if (_db.X17) == 0 {
- goto _33
+ if (_db.X17) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _sqlite3NomemError(tls, i32(140031))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _sqlite3NomemError(tls, i32(140031))
-_33:
- if (_pParse.X3) == i32(0) || (_pParse.X3) == i32(101) || (_pParse.X1) != nil {
- goto _36
+ if (((_pParse.X3) != i32(0)) && ((_pParse.X3) != i32(101))) && ((_pParse.X1) == nil) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(4 /* X1 */))) = _sqlite3MPrintf(tls, _db, str(24576), unsafe.Pointer(_sqlite3ErrStr(tls, _pParse.X3)))
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(4 /* X1 */))) = _sqlite3MPrintf(tls, _db, str(24316), unsafe.Pointer(_sqlite3ErrStr(tls, _pParse.X3)))
-_36:
func() {
if _pzErrMsg == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(140036), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(140036), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24622)))
crt.X__builtin_abort(tls)
}
}()
- if (_pParse.X1) == nil {
- goto _39
+ if (_pParse.X1) != nil {
+ *_pzErrMsg = _pParse.X1
+ Xsqlite3_log(tls, _pParse.X3, str(24576), unsafe.Pointer(*_pzErrMsg))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(4 /* X1 */))) = nil
+ _nErr += 1
}
-
- *_pzErrMsg = _pParse.X1
- Xsqlite3_log(tls, _pParse.X3, str(24316), unsafe.Pointer(*_pzErrMsg))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(4 /* X1 */))) = nil
- _nErr += 1
-_39:
- if (*TVdbe)(_pParse.X2) == nil || (_pParse.X16) <= i32(0) || int32(_pParse.X6) != i32(0) {
- goto _42
+ if (((*TVdbe)(_pParse.X2) != nil) && ((_pParse.X16) > i32(0))) && (int32(_pParse.X6) == i32(0)) {
+ _sqlite3VdbeDelete(tls, (*TVdbe)(_pParse.X2))
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(8 /* X2 */))))) = nil
}
-
- _sqlite3VdbeDelete(tls, (*TVdbe)(_pParse.X2))
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(8 /* X2 */))))) = nil
-_42:
- if int32(_pParse.X6) != i32(0) {
- goto _43
+ if int32(_pParse.X6) == i32(0) {
+ _sqlite3DbFree(tls, _db, _pParse.X37)
+ *(**XTableLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(124 /* X37 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(120 /* X36 */))) = i32(0)
}
-
- _sqlite3DbFree(tls, _db, _pParse.X37)
- *(**XTableLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(124 /* X37 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(120 /* X36 */))) = i32(0)
-_43:
Xsqlite3_free(tls, (unsafe.Pointer)(_pParse.X67))
- if (_pParse.X55) != 0 {
- goto _44
+ if (_pParse.X55) == 0 {
+ _sqlite3DeleteTable(tls, _db, (*XTable)(_pParse.X63))
}
-
- _sqlite3DeleteTable(tls, _db, (*XTable)(_pParse.X63))
-_44:
- if (*XWith)(_pParse.X71) == nil {
- goto _45
+ if (*XWith)(_pParse.X71) != nil {
+ _sqlite3WithDelete(tls, _db, (*XWith)(_pParse.X71))
}
-
- _sqlite3WithDelete(tls, _db, (*XWith)(_pParse.X71))
-_45:
_sqlite3DeleteTrigger(tls, _db, (*XTrigger)(_pParse.X64))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pParse.X60))
_46:
- if (*TAggInfo_func)(_pParse.X38) == nil {
- goto _47
+ if (*TAggInfo_func)(_pParse.X38) != nil {
+ _19_p = (*TAggInfo_func)(_pParse.X38)
+ *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(128 /* X38 */))))) = (*TAggInfo_func)(_19_p.X0)
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_19_p))
+ goto _46
}
-
- _19_p = (*TAggInfo_func)(_pParse.X38)
- *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(128 /* X38 */))))) = (*TAggInfo_func)(_19_p.X0)
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_19_p))
- goto _46
-
-_47:
_48:
- if (*XTable)(_pParse.X68) == nil {
- goto _49
+ if (*XTable)(_pParse.X68) != nil {
+ _20_p = (*XTable)(_pParse.X68)
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(468 /* X68 */))))) = (*XTable)(_20_p.X21)
+ _sqlite3DeleteTable(tls, _db, _20_p)
+ goto _48
}
-
- _20_p = (*XTable)(_pParse.X68)
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(468 /* X68 */))))) = (*XTable)(_20_p.X21)
- _sqlite3DeleteTable(tls, _db, _20_p)
- goto _48
-
-_49:
func() {
if _nErr != i32(0) && (_pParse.X3) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(140079), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(140079), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunParserØ00__func__Ø000))), unsafe.Pointer(str(24792)))
crt.X__builtin_abort(tls)
}
}()
return _nErr
+
+ _ = _sEngine
+ panic(0)
}
-var _sqlite3RunParserØ00__func__Ø000 [17]int8 // -
+var _sqlite3RunParserØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3RunParserØ00__func__Ø000[0], str(24584), 17)
+ crt.Xstrncpy(nil, &_sqlite3RunParserØ00__func__Ø000[0], str(24825), 17)
}
-func _sqlite3ParserInit(tls *crt.TLS, _yypParser unsafe.Pointer) { // sqlite3.c:136899:1
- var _pParser *XyyParser // sqlite3.c:136900:12
- _ = _pParser
+// Initialize a new parser that has already been allocated.
+func _sqlite3ParserInit(tls *crt.TLS, _yypParser unsafe.Pointer) {
+ var _pParser *XyyParser
_pParser = (*XyyParser)(_yypParser)
*(**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParser)) + uintptr(0 /* X0 */))))) = (*XyyStackEntry)(unsafe.Pointer((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParser)) + uintptr(8 /* X2 */)))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParser))+uintptr(8 /* X2 */)))))+16*uintptr(i32(0)))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParser))+uintptr(8 /* X2 */)))))+16*uintptr(i32(0)))))) + uintptr(2 /* X1 */))) = uint8(i32(0))
}
-func _sqlite3ErrorMsg(tls *crt.TLS, _pParse *XParse, _zFormat *int8, args ...interface{}) { // sqlite3.c:27867:1
- var _zMsg *int8 // sqlite3.c:27868:8
- _ = _zMsg
- var _ap []interface{} // sqlite3.c:27869:11
- _ = _ap
- var _db *Xsqlite3 // sqlite3.c:27870:11
- _ = _db
+// Add an error message to pParse->zErrMsg and increment pParse->nErr.
+// The following formatting characters are allowed:
+//
+// %s Insert a string
+// %z A string that should be freed after use
+// %d Insert an integer
+// %T Insert a token
+// %S Insert the first element of a SrcList
+//
+// This function should be used to report any error that occurs while
+// compiling an SQL statement (i.e. within sqlite3_prepare()). The
+// last thing the sqlite3_prepare() function does is copy the error
+// stored by this function into the database handle using sqlite3Error().
+// Functions sqlite3Error() or sqlite3ErrorWithMsg() should be used
+// during statement execution (sqlite3_step() etc.).
+func _sqlite3ErrorMsg(tls *crt.TLS, _pParse *XParse, _zFormat *int8, args ...interface{}) {
+ var _zMsg *int8
+ var _ap []interface{}
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_pParse.X0)
_ap = args
_zMsg = _sqlite3VMPrintf(tls, _db, _zFormat, _ap)
_ap = nil
- if (_db.X21) == 0 {
- goto _0
+ if (_db.X21) != 0 {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zMsg))
+ goto _1
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zMsg))
- goto _1
-
-_0:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(36 /* X16 */))) += 1
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pParse.X1))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(4 /* X1 */))) = _zMsg
@@ -26711,63 +25278,62 @@ _0:
_1:
}
-func _sqlite3Parser(tls *crt.TLS, _yyp unsafe.Pointer, _yymajor int32, _yyminor XToken, _pParse *XParse) { // sqlite3.c:139018:1
- var _yyminorunion XYYMINORTYPE // sqlite3.c:139024:15
- _ = _yyminorunion
- var _yyact uint32 // sqlite3.c:139025:16
- _ = _yyact
- var _yypParser *XyyParser // sqlite3.c:139032:12
- _ = _yypParser
- var _7_i *XyyStackEntry // sqlite3.c:139162:18
- _ = _7_i
- var _7_cDiv int8 // sqlite3.c:139163:10
- _ = _7_cDiv
+// The main parser program.
+// The first argument is a pointer to a structure obtained from
+// "sqlite3ParserAlloc" which describes the current state of the parser.
+// The second argument is the major token number. The third is
+// the minor token. The fourth optional argument is whatever the
+// user wants (and specified in the grammar) and is available for
+// use by the action routines.
+//
+// Inputs:
+//
+// - A pointer to the parser (an opaque structure.)
+//
- The major token number.
+//
- The minor token number.
+//
- An option argument of a grammar-specified type.
+//
+//
+// Outputs:
+// None.
+func _sqlite3Parser(tls *crt.TLS, _yyp unsafe.Pointer, _yymajor int32, _yyminor XToken, _pParse *XParse) {
+ var _7_cDiv int8
+ var _yyact uint32
+ var _yypParser *XyyParser
+ var _yyminorunion XYYMINORTYPE
+ var _7_i *XyyStackEntry
_yypParser = (*XyyParser)(_yyp)
func() {
if (*XyyStackEntry)(_yypParser.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139035), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ParserØ00__func__Ø000))), unsafe.Pointer(str(24604)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139035), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ParserØ00__func__Ø000))), unsafe.Pointer(str(24842)))
crt.X__builtin_abort(tls)
}
}()
*(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser)) + uintptr(4 /* X1 */))))) = _pParse
- if _yyTraceFILE == nil {
- goto _2
+ if _yyTraceFILE != nil {
+ crt.Xfprintf(tls, _yyTraceFILE, str(24862), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_yymajor)))))
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(24624), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_yymajor)))))
-_2:
_3:
_yyact = _yy_find_shift_action(tls, _yypParser, uint8(_yymajor))
- if _yyact > uint32(i32(999)) {
- goto _4
+ if _yyact <= uint32(i32(999)) {
+ _yy_shift(tls, _yypParser, int32(_yyact), _yymajor, _yyminor)
+ _yymajor = i32(252)
+ goto _5
}
-
- _yy_shift(tls, _yypParser, int32(_yyact), _yymajor, _yyminor)
- _yymajor = i32(252)
- goto _5
-
-_4:
- if _yyact > uint32(i32(1331)) {
- goto _6
+ if _yyact <= uint32(i32(1331)) {
+ _yy_reduce(tls, _yypParser, _yyact-uint32(i32(1000)))
+ goto _7
}
-
- _yy_reduce(tls, _yypParser, _yyact-uint32(i32(1000)))
- goto _7
-
-_6:
func() {
if _yyact != uint32(i32(1332)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(139058), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ParserØ00__func__Ø000))), unsafe.Pointer(str(24640)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(139058), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ParserØ00__func__Ø000))), unsafe.Pointer(str(24876)))
crt.X__builtin_abort(tls)
}
}()
*(*XToken)(unsafe.Pointer(&_yyminorunion)) = _yyminor
- if _yyTraceFILE == nil {
- goto _10
+ if _yyTraceFILE != nil {
+ crt.Xfprintf(tls, _yyTraceFILE, str(24901), unsafe.Pointer(_yyTracePrompt))
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(24668), unsafe.Pointer(_yyTracePrompt))
-_10:
_yy_syntax_error(tls, _yypParser, _yymajor, _yyminor)
_yy_destructor(tls, _yypParser, uint8(_yymajor), &_yyminorunion)
_yymajor = i32(252)
@@ -26776,64 +25342,54 @@ _5:
if (_yymajor != i32(252)) && (uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) > uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */)))))))) {
goto _3
}
-
if _yyTraceFILE == nil {
goto _12
}
-
_7_cDiv = i8(91)
- crt.Xfprintf(tls, _yyTraceFILE, str(24688), unsafe.Pointer(_yyTracePrompt))
+ crt.Xfprintf(tls, _yyTraceFILE, str(24918), unsafe.Pointer(_yyTracePrompt))
_7_i = (*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */))))) + 16*uintptr(i32(1))))
_13:
if uintptr(unsafe.Pointer(_7_i)) > uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) {
goto _16
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(24708), int32(_7_cDiv), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_7_i.X1)))))
+ crt.Xfprintf(tls, _yyTraceFILE, str(24935), int32(_7_cDiv), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_7_i.X1)))))
_7_cDiv = int8(i32(32))
*(*uintptr)(unsafe.Pointer(&_7_i)) += uintptr(16)
goto _13
-
_16:
- crt.Xfprintf(tls, _yyTraceFILE, str(24716))
+ crt.Xfprintf(tls, _yyTraceFILE, str(24940))
_12:
+ _ = _yyminorunion
}
-var _sqlite3ParserØ00__func__Ø000 [14]int8 // -
+var _sqlite3ParserØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ParserØ00__func__Ø000[0], str(24720), 14)
+ crt.Xstrncpy(nil, &_sqlite3ParserØ00__func__Ø000[0], str(24943), 14)
}
-var _yyTraceFILE *crt.XFILE // sqlite3.c:136415:13
+var _yyTraceFILE *crt.XFILE
-var _yyTracePrompt *int8 // sqlite3.c:136416:13
+var _yyTracePrompt *int8
-var _yyTokenName [251]*int8 // sqlite3.c:136448:19
+var _yyTokenName [251]*int8
func init() {
- _yyTokenName = [251]*int8{str(24736), str(24740), str(24748), str(24756), str(24764), str(24772), str(24780), str(24792), str(24804), str(24816), str(24828), str(24836), str(24840), str(24852), str(24864), str(24872), str(24876), str(24884), str(24892), str(24896), str(24900), str(24908), str(24916), str(24920), str(24924), str(24928), str(24936), str(24944), str(24948), str(24956), str(24964), str(24972), str(24980), str(24984), str(24992), str(25000), str(25004), str(25012), str(25020), str(25032), str(25044), str(25056), str(25064), str(25072), str(25080), str(25088), str(25092), str(25100), str(25112), str(25120), str(25128), str(25136), str(25140), str(25144), str(25148), str(25156), str(25164), str(25172), str(25184), str(25192), str(25204), str(25208), str(25216), str(25224), str(25232), str(25240), str(25248), str(25256), str(25264), str(25276), str(25280), str(25284), str(25288), str(25292), str(25300), str(25304), str(25312), str(25320), str(25324), str(25328), str(25332), str(25336), str(25340), str(25344), str(25352), str(25360), str(25368), str(25376), str(25384), str(25392), str(25400), str(25408), str(25416), str(25420), str(25428), str(25436), str(25444), str(25452), str(25460), str(25468), str(25480), str(200), str(25488), str(25496), str(25504), str(25512), str(25524), str(25536), str(25540), str(25548), str(25556), str(25564), str(25568), str(25580), str(25588), str(25596), str(25604), str(25608), str(25616), str(25628), str(25636), str(25644), str(25656), str(25660), str(25668), str(25676), str(25684), str(25692), str(25700), str(25708), str(25716), str(25724), str(25732), str(25740), str(25748), str(25756), str(25768), str(25776), str(25784), str(25792), str(25800), str(25808), str(25816), str(25820), str(25828), str(25836), str(25844), str(23580), str(25852), str(25860), str(25864), str(25876), str(25888), str(25892), str(25908), str(25924), str(25944), str(23556), str(25956), str(25968), str(25976), str(25988), str(26004), str(26020), str(26028), str(26040), str(26052), str(26064), str(26076), str(26084), str(26096), str(26108), str(26116), str(26124), str(26132), str(26140), str(26152), str(26160), str(26172), str(26180), str(26196), str(26204), str(26212), str(26236), str(26248), str(26260), str(26268), str(26280), str(26288), str(26308), str(26316), str(26328), str(26340), str(26352), str(26364), str(26380), str(26392), str(26400), str(26416), str(26428), str(26440), str(26448), str(26460), str(26472), str(26484), str(26496), str(26508), str(26516), str(26528), str(26540), str(26548), str(26552), str(26564), str(26576), str(26584), str(26596), str(26604), str(26616), str(26624), str(26632), str(26644), str(26656), str(26664), str(26676), str(26684), str(26700), str(26716), str(26732), str(26744), str(26756), str(26764), str(26772), str(26788), str(26808), str(26824), str(26840), str(26856), str(26868), str(26880), str(26888), str(26896), str(26912), str(26920), str(26940), str(26956), str(26968), str(26980), str(26988), str(27004), str(27008), str(27016)}
+ _yyTokenName = [251]*int8{str(24957), str(24959), str(24964), str(24972), str(24978), str(24983), str(24989), str(25001), str(25010), str(25020), str(25030), str(25037), str(25041), str(25050), str(25060), str(25068), str(25071), str(25077), str(25084), str(25087), str(25091), str(25098), str(25103), str(25106), str(25109), str(25112), str(25120), str(25126), str(25129), str(25135), str(25142), str(25148), str(25156), str(25160), str(25167), str(25174), str(25177), str(25185), str(25190), str(25199), str(25208), str(25217), str(25222), str(25229), str(25234), str(25239), str(25243), str(25250), str(25260), str(25268), str(25276), str(25282), str(25285), str(25289), str(25292), str(25299), str(25306), str(25312), str(25322), str(25330), str(25339), str(25343), str(25351), str(25358), str(25363), str(25371), str(25376), str(25384), str(25391), str(25400), str(25404), str(25407), str(25411), str(25414), str(25422), str(25425), str(25432), str(25440), str(25443), str(25446), str(25449), str(25452), str(25455), str(25458), str(25465), str(25472), str(25478), str(25485), str(25492), str(25497), str(25503), str(25508), str(25514), str(25518), str(25525), str(25533), str(25540), str(25548), str(25555), str(25563), str(25574), str(155), str(25582), str(25590), str(25597), str(25603), str(25614), str(25623), str(25626), str(25633), str(25640), str(25647), str(25651), str(25662), str(25670), str(25675), str(25681), str(25685), str(25692), str(25702), str(25709), str(25716), str(25725), str(25729), str(25734), str(25739), str(25745), str(25751), str(25757), str(25764), str(25770), str(25776), str(25781), str(25787), str(25792), str(25800), str(25809), str(25814), str(25819), str(25824), str(25829), str(25835), str(25841), str(25845), str(25851), str(25857), str(25865), str(23861), str(25870), str(25875), str(25879), str(25889), str(25899), str(25902), str(25916), str(25929), str(25947), str(23842), str(25956), str(25968), str(25973), str(25984), str(25997), str(26011), str(26018), str(26029), str(26038), str(26048), str(26057), str(26064), str(26073), str(26083), str(26089), str(26094), str(26099), str(26106), str(26116), str(26124), str(26136), str(26144), str(26160), str(26167), str(26174), str(26197), str(26206), str(26217), str(26223), str(26232), str(26240), str(26260), str(26267), str(26279), str(26289), str(26298), str(26307), str(26320), str(26330), str(26335), str(26350), str(26359), str(26370), str(26375), str(26385), str(26397), str(26408), str(26420), str(26430), str(26437), str(26447), str(26456), str(26461), str(26464), str(26475), str(26486), str(26493), str(26505), str(26512), str(26522), str(26529), str(26537), str(26548), str(26559), str(26566), str(26577), str(26583), str(26598), str(26611), str(26625), str(26635), str(26646), str(26654), str(26660), str(26673), str(26690), str(26703), str(26717), str(26732), str(26744), str(26756), str(26761), str(26769), str(26785), str(26793), str(26813), str(26826), str(26838), str(26850), str(26858), str(26871), str(26874), str(26882)}
}
-func _yy_find_shift_action(tls *crt.TLS, _pParser *XyyParser, _iLookAhead uint8) (r0 uint32) { // sqlite3.c:137113:1
- var _i int32 // sqlite3.c:137117:7
- _ = _i
- var _stateno int32 // sqlite3.c:137118:7
- _ = _stateno
- var _2_iFallback uint8 // sqlite3.c:137128:18
- _ = _2_iFallback
- var _5_j int32 // sqlite3.c:137144:13
- _ = _5_j
+// Find the appropriate action for a parser given the terminal
+// look-ahead token iLookAhead.
+func _yy_find_shift_action(tls *crt.TLS, _pParser *XyyParser, _iLookAhead uint8) (r0 uint32) {
+ var _i, _stateno, _5_j int32
+ var _2_iFallback uint8
_stateno = int32((*XyyStackEntry)(_pParser.X0).X0)
- if _stateno < i32(1000) {
- goto _0
+ if _stateno >= i32(1000) {
+ return uint32(_stateno)
}
- return uint32(_stateno)
-
-_0:
func() {
if _stateno > i32(455) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(137121), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_find_shift_actionØ00__func__Ø000))), unsafe.Pointer(str(27024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(137121), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_find_shift_actionØ00__func__Ø000))), unsafe.Pointer(str(26889)))
crt.X__builtin_abort(tls)
}
}()
@@ -26841,7 +25397,7 @@ _3:
_i = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yy_shift_ofst)) + 2*uintptr(_stateno))))
func() {
if int32(_iLookAhead) == i32(252) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(137124), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_find_shift_actionØ00__func__Ø000))), unsafe.Pointer(str(27052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(137124), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_find_shift_actionØ00__func__Ø000))), unsafe.Pointer(str(26915)))
crt.X__builtin_abort(tls)
}
}()
@@ -26853,38 +25409,28 @@ _3:
if _i >= i32(0) && _i < i32(1566) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yy_lookahead)) + 1*uintptr(_i)))) == int32(_iLookAhead) {
goto _8
}
-
if uint32(_iLookAhead) >= u32(69) || int32(store2(&_2_iFallback, *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyFallback)) + 1*uintptr(_iLookAhead))))) == i32(0) {
goto _10
}
-
- if _yyTraceFILE == nil {
- goto _11
+ if _yyTraceFILE != nil {
+ crt.Xfprintf(tls, _yyTraceFILE, str(26936), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_iLookAhead)))), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_2_iFallback)))))
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(27076), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_iLookAhead)))), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_2_iFallback)))))
-_11:
func() {
if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyFallback)) + 1*uintptr(_2_iFallback)))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(137137), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_find_shift_actionØ00__func__Ø000))), unsafe.Pointer(str(27100)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(137137), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_find_shift_actionØ00__func__Ø000))), unsafe.Pointer(str(26957)))
crt.X__builtin_abort(tls)
}
}()
_iLookAhead = _2_iFallback
goto _3
-
_10:
_5_j = (_i - int32(_iLookAhead)) + i32(69)
if _5_j < i32(0) || _5_j >= i32(1566) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yy_lookahead)) + 1*uintptr(_5_j)))) != i32(69) || int32(_iLookAhead) <= i32(0) {
goto _17
}
-
- if _yyTraceFILE == nil {
- goto _18
+ if _yyTraceFILE != nil {
+ crt.Xfprintf(tls, _yyTraceFILE, str(26982), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_iLookAhead)))), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(i32(69))))))
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(27128), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_iLookAhead)))), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(i32(69))))))
-_18:
return uint32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yy_action)) + 2*uintptr(_5_j))))
_17:
@@ -26894,65 +25440,58 @@ _8:
return uint32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yy_action)) + 2*uintptr(_i))))
}
-var _yy_find_shift_actionØ00__func__Ø000 [21]int8 // -
+var _yy_find_shift_actionØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_yy_find_shift_actionØ00__func__Ø000[0], str(27152), 21)
+ crt.Xstrncpy(nil, &_yy_find_shift_actionØ00__func__Ø000[0], str(27003), 21)
}
-var _yy_shift_ofst [456]int16 // sqlite3.c:136142:20
+var _yy_shift_ofst [456]int16
func init() {
_yy_shift_ofst = [456]int16{i16(5), i16(1117), i16(1312), i16(1128), i16(1274), i16(1274), i16(1274), i16(1274), i16(61), i16(-19), i16(57), i16(57), i16(183), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(66), i16(66), i16(201), i16(-29), i16(331), i16(318), i16(133), i16(259), i16(335), i16(411), i16(487), i16(563), i16(639), i16(689), i16(765), i16(841), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(891), i16(941), i16(891), i16(991), i16(1041), i16(1041), i16(1217), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1363), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(1274), i16(-70), i16(-47), i16(-47), i16(-47), i16(-47), i16(-47), i16(24), i16(11), i16(146), i16(296), i16(524), i16(444), i16(529), i16(529), i16(296), i16(3), i16(2), i16(-30), i16(1566), i16(1566), i16(1566), i16(-17), i16(-17), i16(-17), i16(145), i16(145), i16(497), i16(497), i16(265), i16(603), i16(653), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(701), i16(1078), i16(147), i16(147), i16(2), i16(164), i16(164), i16(164), i16(164), i16(164), i16(164), i16(1566), i16(1566), i16(1566), i16(223), i16(56), i16(56), i16(268), i16(269), i16(220), i16(347), i16(351), i16(415), i16(359), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(632), i16(632), i16(632), i16(296), i16(296), i16(498), i16(296), i16(296), i16(296), i16(570), i16(296), i16(296), i16(654), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(296), i16(636), i16(200), i16(596), i16(596), i16(596), i16(575), i16(-114), i16(971), i16(740), i16(454), i16(503), i16(503), i16(1134), i16(454), i16(1134), i16(353), i16(588), i16(628), i16(762), i16(503), i16(189), i16(762), i16(762), i16(916), i16(330), i16(668), i16(1245), i16(1167), i16(1167), i16(1255), i16(1255), i16(1167), i16(1277), i16(1230), i16(1172), i16(1291), i16(1291), i16(1291), i16(1291), i16(1167), i16(1310), i16(1172), i16(1277), i16(1230), i16(1230), i16(1172), i16(1167), i16(1310), i16(1204), i16(1299), i16(1167), i16(1167), i16(1310), i16(1335), i16(1167), i16(1310), i16(1167), i16(1310), i16(1335), i16(1258), i16(1258), i16(1258), i16(1329), i16(1335), i16(1258), i16(1273), i16(1258), i16(1329), i16(1258), i16(1258), i16(1256), i16(1288), i16(1256), i16(1288), i16(1256), i16(1288), i16(1256), i16(1288), i16(1167), i16(1375), i16(1167), i16(1267), i16(1335), i16(1320), i16(1320), i16(1335), i16(1287), i16(1295), i16(1294), i16(1301), i16(1172), i16(1407), i16(1408), i16(1422), i16(1422), i16(1433), i16(1433), i16(1433), i16(1433), i16(1566), i16(1566), i16(1566), i16(1566), i16(1566), i16(1566), i16(1566), i16(1566), i16(558), i16(537), i16(684), i16(719), i16(734), i16(799), i16(840), i16(1019), i16(14), i16(1020), i16(1021), i16(1025), i16(1026), i16(1027), i16(1070), i16(1072), i16(997), i16(1047), i16(999), i16(1079), i16(1126), i16(1074), i16(1141), i16(694), i16(819), i16(1174), i16(1136), i16(981), i16(1445), i16(1451), i16(1434), i16(1313), i16(1448), i16(1398), i16(1450), i16(1444), i16(1446), i16(1348), i16(1339), i16(1360), i16(1349), i16(1453), i16(1350), i16(1458), i16(1475), i16(1354), i16(1347), i16(1401), i16(1402), i16(1403), i16(1404), i16(1372), i16(1388), i16(1452), i16(1364), i16(1484), i16(1483), i16(1467), i16(1383), i16(1351), i16(1439), i16(1468), i16(1440), i16(1441), i16(1457), i16(1395), i16(1479), i16(1485), i16(1487), i16(1392), i16(1405), i16(1486), i16(1455), i16(1489), i16(1490), i16(1491), i16(1493), i16(1461), i16(1480), i16(1494), i16(1465), i16(1481), i16(1495), i16(1496), i16(1498), i16(1497), i16(1406), i16(1502), i16(1503), i16(1505), i16(1499), i16(1409), i16(1506), i16(1507), i16(1432), i16(1500), i16(1510), i16(1410), i16(1511), i16(1501), i16(1512), i16(1504), i16(1517), i16(1511), i16(1518), i16(1519), i16(1520), i16(1521), i16(1522), i16(1524), i16(1533), i16(1525), i16(1527), i16(1509), i16(1526), i16(1528), i16(1531), i16(1530), i16(1526), i16(1532), i16(1534), i16(1535), i16(1536), i16(1538), i16(1428), i16(1435), i16(1442), i16(1443), i16(1539), i16(1546), i16(1562)}
}
-var _yy_lookahead [1566]uint8 // sqlite3.c:135979:25
+var _yy_lookahead [1566]uint8
func init() {
_yy_lookahead = [1566]uint8{19, 115, 19, 117, 118, 24, 1, 2, 27, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 144, 145, 146, 147, 58, 49, 50, 79, 80, 81, 82, 22, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 221, 222, 223, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 94, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 94, 97, 108, 109, 110, 99, 100, 101, 102, 103, 104, 105, 32, 119, 120, 78, 27, 152, 112, 93, 94, 41, 88, 89, 90, 91, 92, 93, 94, 49, 50, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 58, 157, 119, 120, 163, 68, 163, 65, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 97, 88, 89, 196, 101, 196, 26, 172, 173, 96, 97, 98, 210, 100, 22, 152, 108, 109, 110, 27, 107, 27, 109, 221, 222, 223, 219, 238, 219, 49, 50, 152, 169, 170, 54, 132, 133, 134, 228, 232, 171, 231, 207, 208, 237, 132, 237, 134, 179, 19, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 27, 65, 30, 152, 49, 50, 34, 52, 90, 91, 92, 93, 94, 96, 97, 98, 97, 22, 230, 27, 48, 217, 27, 172, 173, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 172, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 148, 149, 152, 218, 24, 152, 154, 207, 156, 172, 152, 22, 68, 27, 152, 163, 27, 164, 96, 97, 98, 99, 172, 173, 102, 103, 104, 169, 170, 49, 50, 90, 88, 89, 152, 113, 186, 96, 97, 98, 96, 97, 160, 57, 27, 101, 164, 137, 196, 139, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 11, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 132, 133, 134, 23, 218, 152, 96, 97, 98, 96, 97, 98, 230, 99, 22, 152, 102, 103, 104, 27, 244, 152, 152, 27, 26, 152, 22, 113, 65, 49, 50, 27, 194, 195, 58, 172, 173, 96, 97, 98, 185, 65, 172, 173, 206, 172, 173, 190, 191, 186, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 175, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 175, 207, 208, 23, 207, 208, 119, 120, 108, 109, 110, 27, 96, 97, 98, 116, 96, 97, 98, 152, 121, 152, 179, 180, 96, 97, 98, 250, 106, 49, 50, 188, 19, 221, 222, 223, 168, 169, 170, 172, 173, 172, 173, 250, 124, 172, 221, 222, 223, 26, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 50, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 207, 208, 12, 23, 96, 97, 98, 221, 222, 223, 194, 195, 152, 199, 23, 19, 225, 26, 28, 152, 152, 152, 206, 209, 164, 190, 191, 241, 152, 49, 50, 152, 124, 152, 44, 219, 46, 152, 21, 172, 173, 172, 173, 183, 107, 185, 16, 163, 58, 112, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 207, 130, 152, 23, 196, 64, 152, 172, 173, 22, 152, 24, 152, 98, 27, 61, 96, 63, 26, 211, 212, 186, 172, 173, 49, 50, 172, 173, 23, 49, 50, 26, 172, 173, 88, 89, 186, 24, 238, 124, 27, 238, 22, 23, 103, 187, 26, 152, 73, 74, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 101, 152, 132, 23, 134, 140, 152, 12, 97, 36, 168, 169, 170, 69, 98, 152, 22, 23, 140, 50, 26, 172, 173, 28, 51, 152, 172, 173, 193, 49, 50, 22, 59, 24, 97, 172, 173, 152, 152, 44, 124, 46, 0, 1, 2, 172, 173, 22, 23, 19, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 69, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 152, 107, 152, 193, 49, 50, 181, 22, 23, 111, 108, 109, 110, 7, 8, 9, 16, 247, 248, 69, 172, 173, 172, 173, 152, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 152, 242, 152, 69, 152, 166, 167, 172, 173, 32, 61, 152, 63, 152, 193, 152, 152, 152, 41, 152, 172, 173, 172, 173, 172, 173, 152, 152, 152, 49, 50, 172, 173, 172, 173, 172, 173, 172, 173, 172, 173, 132, 138, 134, 152, 152, 172, 173, 172, 173, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 152, 22, 152, 195, 24, 152, 27, 172, 173, 193, 193, 152, 152, 152, 206, 152, 217, 152, 152, 152, 172, 173, 172, 173, 152, 172, 173, 152, 152, 49, 50, 172, 173, 172, 173, 172, 173, 172, 173, 172, 173, 152, 138, 152, 172, 173, 108, 109, 110, 19, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 152, 97, 152, 152, 49, 50, 26, 193, 172, 173, 152, 152, 152, 146, 147, 132, 152, 134, 217, 181, 172, 173, 172, 173, 19, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 152, 193, 152, 193, 49, 50, 181, 193, 172, 173, 166, 167, 245, 246, 211, 212, 152, 22, 217, 152, 172, 173, 172, 173, 19, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 152, 187, 152, 123, 49, 50, 23, 23, 23, 26, 26, 26, 23, 23, 23, 26, 26, 26, 7, 8, 172, 173, 172, 173, 19, 90, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 152, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 152, 116, 152, 217, 49, 50, 121, 23, 172, 173, 26, 100, 101, 27, 101, 27, 23, 122, 152, 26, 172, 173, 172, 173, 152, 112, 163, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 163, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 19, 20, 152, 22, 23, 152, 163, 65, 27, 196, 163, 19, 20, 23, 22, 213, 26, 19, 37, 27, 152, 196, 172, 173, 152, 172, 173, 27, 23, 37, 152, 26, 152, 97, 152, 97, 210, 56, 163, 196, 163, 163, 100, 196, 172, 173, 65, 152, 56, 68, 172, 173, 172, 173, 172, 173, 152, 65, 163, 163, 68, 23, 152, 234, 26, 152, 152, 172, 173, 88, 89, 196, 152, 196, 196, 152, 95, 96, 97, 98, 88, 89, 101, 152, 152, 207, 208, 95, 96, 97, 98, 196, 196, 101, 96, 233, 152, 97, 152, 152, 19, 20, 207, 22, 152, 152, 152, 191, 27, 152, 152, 152, 152, 132, 133, 134, 135, 136, 37, 152, 152, 152, 152, 152, 132, 133, 134, 135, 136, 210, 197, 210, 210, 198, 150, 184, 239, 56, 201, 214, 214, 201, 239, 180, 214, 227, 198, 38, 176, 68, 175, 175, 175, 122, 155, 200, 159, 19, 20, 40, 22, 159, 159, 22, 70, 27, 130, 243, 240, 88, 89, 90, 189, 18, 201, 37, 95, 96, 97, 98, 192, 5, 101, 192, 220, 240, 10, 11, 12, 13, 14, 159, 18, 17, 56, 158, 192, 201, 192, 220, 189, 189, 201, 159, 158, 137, 68, 31, 45, 33, 236, 159, 159, 132, 133, 134, 135, 136, 42, 158, 235, 22, 177, 159, 158, 158, 88, 89, 159, 107, 174, 55, 177, 95, 96, 97, 98, 174, 62, 101, 47, 65, 66, 106, 174, 125, 19, 20, 174, 22, 177, 176, 174, 182, 27, 216, 174, 174, 182, 107, 159, 22, 215, 215, 37, 216, 216, 216, 137, 215, 132, 133, 134, 135, 136, 215, 159, 177, 94, 177, 129, 224, 205, 56, 226, 126, 128, 203, 229, 204, 114, 229, 127, 202, 201, 68, 25, 162, 26, 13, 161, 153, 153, 6, 151, 151, 178, 151, 151, 165, 165, 178, 165, 4, 249, 88, 89, 141, 3, 142, 22, 249, 95, 96, 97, 98, 246, 15, 101, 67, 16, 23, 120, 23, 131, 111, 123, 20, 16, 125, 1, 123, 131, 78, 78, 78, 78, 111, 96, 1, 122, 35, 5, 22, 107, 140, 53, 53, 26, 132, 133, 134, 135, 136, 43, 60, 107, 24, 112, 20, 19, 52, 22, 29, 105, 22, 22, 52, 23, 22, 22, 52, 23, 23, 39, 23, 116, 26, 22, 26, 23, 22, 96, 23, 23, 122, 22, 24, 124, 35, 35, 26, 26, 35, 23, 23, 23, 23, 11, 23, 22, 26, 23, 22, 122, 23, 26, 22, 24, 23, 22, 122, 23, 23, 22, 15, 23, 1, 122, 122}
}
-var _yyFallback [69]uint8 // sqlite3.c:136294:25
+var _yyFallback [69]uint8
func init() {
_yyFallback = [69]uint8{0, 0, 27, 27, 27, 27, 0, 27, 27, 27, 0, 27, 27, 27, 27, 0, 0, 0, 27, 0, 0, 27, 0, 0, 0, 27, 0, 0, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27}
}
-var _yy_action [1566]uint16 // sqlite3.c:135820:27
+var _yy_action [1566]uint16
func init() {
_yy_action = [1566]uint16{u16(325), u16(411), u16(343), u16(752), u16(752), u16(203), u16(946), u16(354), u16(976), u16(98), u16(98), u16(98), u16(98), u16(91), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(1333), u16(155), u16(155), u16(2), u16(813), u16(978), u16(978), u16(98), u16(98), u16(98), u16(98), u16(20), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(92), u16(89), u16(178), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(351), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(340), u16(976), u16(262), u16(365), u16(251), u16(212), u16(169), u16(287), u16(405), u16(282), u16(404), u16(199), u16(791), u16(242), u16(412), u16(21), u16(957), u16(379), u16(280), u16(93), u16(351), u16(792), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(978), u16(978), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(813), u16(329), u16(242), u16(412), u16(913), u16(832), u16(913), u16(132), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(450), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(825), u16(349), u16(348), u16(120), u16(819), u16(120), u16(75), u16(52), u16(52), u16(957), u16(958), u16(959), u16(760), u16(984), u16(146), u16(361), u16(262), u16(370), u16(261), u16(957), u16(982), u16(961), u16(983), u16(92), u16(89), u16(178), u16(371), u16(230), u16(371), u16(978), u16(978), u16(817), u16(361), u16(360), u16(101), u16(824), u16(824), u16(826), u16(384), u16(24), u16(964), u16(381), u16(428), u16(413), u16(369), u16(985), u16(380), u16(985), u16(708), u16(325), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(373), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(957), u16(132), u16(897), u16(450), u16(978), u16(978), u16(896), u16(60), u16(94), u16(94), u16(94), u16(93), u16(351), u16(957), u16(958), u16(959), u16(961), u16(103), u16(361), u16(957), u16(385), u16(334), u16(702), u16(52), u16(52), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(698), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(455), u16(670), u16(450), u16(227), u16(61), u16(157), u16(243), u16(344), u16(114), u16(701), u16(888), u16(147), u16(832), u16(957), u16(373), u16(747), u16(957), u16(320), u16(957), u16(958), u16(959), u16(194), u16(10), u16(10), u16(402), u16(399), u16(398), u16(888), u16(890), u16(978), u16(978), u16(762), u16(171), u16(170), u16(157), u16(397), u16(337), u16(957), u16(958), u16(959), u16(702), u16(825), u16(310), u16(153), u16(957), u16(819), u16(321), u16(82), u16(23), u16(80), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(894), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(824), u16(824), u16(826), u16(277), u16(231), u16(300), u16(957), u16(958), u16(959), u16(957), u16(958), u16(959), u16(888), u16(194), u16(25), u16(450), u16(402), u16(399), u16(398), u16(957), u16(355), u16(300), u16(450), u16(957), u16(74), u16(450), u16(1), u16(397), u16(132), u16(978), u16(978), u16(957), u16(224), u16(224), u16(813), u16(10), u16(10), u16(957), u16(958), u16(959), u16(968), u16(132), u16(52), u16(52), u16(415), u16(52), u16(52), u16(739), u16(739), u16(339), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(790), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(789), u16(428), u16(418), u16(706), u16(428), u16(427), u16(1270), u16(1270), u16(262), u16(370), u16(261), u16(957), u16(957), u16(958), u16(959), u16(757), u16(957), u16(958), u16(959), u16(450), u16(756), u16(450), u16(734), u16(713), u16(957), u16(958), u16(959), u16(443), u16(711), u16(978), u16(978), u16(734), u16(394), u16(92), u16(89), u16(178), u16(447), u16(447), u16(447), u16(51), u16(51), u16(52), u16(52), u16(439), u16(778), u16(700), u16(92), u16(89), u16(178), u16(172), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(198), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(428), u16(408), u16(916), u16(699), u16(957), u16(958), u16(959), u16(92), u16(89), u16(178), u16(224), u16(224), u16(157), u16(241), u16(221), u16(419), u16(299), u16(776), u16(917), u16(416), u16(375), u16(450), u16(415), u16(58), u16(324), u16(737), u16(737), u16(920), u16(379), u16(978), u16(978), u16(379), u16(777), u16(449), u16(918), u16(363), u16(740), u16(296), u16(686), u16(9), u16(9), u16(52), u16(52), u16(234), u16(330), u16(234), u16(256), u16(417), u16(741), u16(280), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(450), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(423), u16(72), u16(450), u16(833), u16(120), u16(368), u16(450), u16(10), u16(10), u16(5), u16(301), u16(203), u16(450), u16(177), u16(976), u16(253), u16(420), u16(255), u16(776), u16(200), u16(175), u16(233), u16(10), u16(10), u16(842), u16(842), u16(36), u16(36), u16(1299), u16(978), u16(978), u16(729), u16(37), u16(37), u16(349), u16(348), u16(425), u16(203), u16(260), u16(776), u16(976), u16(232), u16(937), u16(1326), u16(876), u16(338), u16(1326), u16(422), u16(854), u16(857), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(268), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(846), u16(450), u16(985), u16(818), u16(985), u16(1209), u16(450), u16(916), u16(976), u16(720), u16(350), u16(350), u16(350), u16(935), u16(177), u16(450), u16(937), u16(1327), u16(254), u16(198), u16(1327), u16(12), u16(12), u16(917), u16(403), u16(450), u16(27), u16(27), u16(250), u16(978), u16(978), u16(118), u16(721), u16(162), u16(976), u16(38), u16(38), u16(268), u16(176), u16(918), u16(776), u16(433), u16(1275), u16(946), u16(354), u16(39), u16(39), u16(317), u16(998), u16(325), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(935), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(450), u16(330), u16(450), u16(358), u16(978), u16(978), u16(717), u16(317), u16(936), u16(341), u16(900), u16(900), u16(387), u16(673), u16(674), u16(675), u16(275), u16(996), u16(318), u16(999), u16(40), u16(40), u16(41), u16(41), u16(268), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(450), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(450), u16(356), u16(450), u16(999), u16(450), u16(692), u16(331), u16(42), u16(42), u16(791), u16(270), u16(450), u16(273), u16(450), u16(228), u16(450), u16(298), u16(450), u16(792), u16(450), u16(28), u16(28), u16(29), u16(29), u16(31), u16(31), u16(450), u16(817), u16(450), u16(978), u16(978), u16(43), u16(43), u16(44), u16(44), u16(45), u16(45), u16(11), u16(11), u16(46), u16(46), u16(893), u16(78), u16(893), u16(268), u16(268), u16(105), u16(105), u16(47), u16(47), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(450), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(325), u16(450), u16(117), u16(450), u16(749), u16(158), u16(450), u16(696), u16(48), u16(48), u16(229), u16(919), u16(450), u16(928), u16(450), u16(415), u16(450), u16(335), u16(450), u16(245), u16(450), u16(33), u16(33), u16(49), u16(49), u16(450), u16(50), u16(50), u16(246), u16(817), u16(978), u16(978), u16(34), u16(34), u16(122), u16(122), u16(123), u16(123), u16(124), u16(124), u16(56), u16(56), u16(268), u16(81), u16(249), u16(35), u16(35), u16(197), u16(196), u16(195), u16(325), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(450), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(450), u16(696), u16(450), u16(817), u16(978), u16(978), u16(975), u16(884), u16(106), u16(106), u16(268), u16(886), u16(268), u16(944), u16(2), u16(892), u16(268), u16(892), u16(336), u16(716), u16(53), u16(53), u16(107), u16(107), u16(325), u16(99), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(450), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(450), u16(746), u16(450), u16(742), u16(978), u16(978), u16(715), u16(267), u16(108), u16(108), u16(446), u16(331), u16(332), u16(133), u16(223), u16(175), u16(301), u16(225), u16(386), u16(933), u16(104), u16(104), u16(121), u16(121), u16(325), u16(99), u16(88), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(817), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(450), u16(347), u16(450), u16(167), u16(978), u16(978), u16(932), u16(815), u16(372), u16(319), u16(202), u16(202), u16(374), u16(263), u16(395), u16(202), u16(74), u16(208), u16(726), u16(727), u16(119), u16(119), u16(112), u16(112), u16(325), u16(407), u16(100), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(450), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(450), u16(757), u16(450), u16(345), u16(978), u16(978), u16(756), u16(278), u16(111), u16(111), u16(74), u16(719), u16(718), u16(709), u16(286), u16(883), u16(754), u16(1289), u16(257), u16(77), u16(109), u16(109), u16(110), u16(110), u16(908), u16(285), u16(810), u16(90), u16(853), u16(856), u16(845), u16(845), u16(97), u16(97), u16(98), u16(98), u16(98), u16(98), u16(911), u16(96), u16(96), u16(96), u16(96), u16(95), u16(95), u16(94), u16(94), u16(94), u16(93), u16(351), u16(86), u16(445), u16(450), u16(3), u16(1202), u16(450), u16(745), u16(132), u16(352), u16(120), u16(689), u16(86), u16(445), u16(785), u16(3), u16(767), u16(202), u16(377), u16(448), u16(352), u16(907), u16(120), u16(55), u16(55), u16(450), u16(57), u16(57), u16(828), u16(879), u16(448), u16(450), u16(208), u16(450), u16(709), u16(450), u16(883), u16(237), u16(434), u16(436), u16(120), u16(440), u16(429), u16(362), u16(120), u16(54), u16(54), u16(132), u16(450), u16(434), u16(832), u16(52), u16(52), u16(26), u16(26), u16(30), u16(30), u16(382), u16(132), u16(409), u16(444), u16(832), u16(694), u16(264), u16(390), u16(116), u16(269), u16(272), u16(32), u16(32), u16(83), u16(84), u16(120), u16(274), u16(120), u16(120), u16(276), u16(85), u16(352), u16(452), u16(451), u16(83), u16(84), u16(819), u16(730), u16(714), u16(428), u16(430), u16(85), u16(352), u16(452), u16(451), u16(120), u16(120), u16(819), u16(378), u16(218), u16(281), u16(828), u16(783), u16(816), u16(86), u16(445), u16(410), u16(3), u16(763), u16(774), u16(431), u16(432), u16(352), u16(302), u16(303), u16(823), u16(697), u16(824), u16(824), u16(826), u16(827), u16(19), u16(448), u16(691), u16(680), u16(679), u16(681), u16(951), u16(824), u16(824), u16(826), u16(827), u16(19), u16(289), u16(159), u16(291), u16(293), u16(7), u16(316), u16(173), u16(259), u16(434), u16(805), u16(364), u16(252), u16(910), u16(376), u16(713), u16(295), u16(435), u16(168), u16(993), u16(400), u16(832), u16(284), u16(881), u16(880), u16(205), u16(954), u16(308), u16(927), u16(86), u16(445), u16(990), u16(3), u16(925), u16(333), u16(144), u16(130), u16(352), u16(72), u16(135), u16(59), u16(83), u16(84), u16(761), u16(137), u16(366), u16(802), u16(448), u16(85), u16(352), u16(452), u16(451), u16(139), u16(226), u16(819), u16(140), u16(156), u16(62), u16(315), u16(314), u16(313), u16(215), u16(311), u16(367), u16(393), u16(683), u16(434), u16(185), u16(141), u16(912), u16(142), u16(160), u16(148), u16(812), u16(875), u16(383), u16(189), u16(67), u16(832), u16(180), u16(389), u16(248), u16(895), u16(775), u16(219), u16(824), u16(824), u16(826), u16(827), u16(19), u16(247), u16(190), u16(266), u16(154), u16(391), u16(271), u16(191), u16(192), u16(83), u16(84), u16(682), u16(406), u16(733), u16(182), u16(322), u16(85), u16(352), u16(452), u16(451), u16(732), u16(183), u16(819), u16(342), u16(132), u16(181), u16(711), u16(731), u16(421), u16(76), u16(445), u16(705), u16(3), u16(323), u16(704), u16(283), u16(724), u16(352), u16(771), u16(703), u16(966), u16(723), u16(71), u16(204), u16(6), u16(288), u16(290), u16(448), u16(772), u16(770), u16(769), u16(79), u16(292), u16(824), u16(824), u16(826), u16(827), u16(19), u16(294), u16(297), u16(438), u16(346), u16(442), u16(102), u16(861), u16(753), u16(434), u16(238), u16(426), u16(73), u16(305), u16(239), u16(304), u16(326), u16(240), u16(424), u16(306), u16(307), u16(832), u16(213), u16(688), u16(22), u16(952), u16(453), u16(214), u16(216), u16(217), u16(454), u16(677), u16(115), u16(676), u16(671), u16(125), u16(126), u16(235), u16(127), u16(669), u16(327), u16(83), u16(84), u16(359), u16(353), u16(244), u16(166), u16(328), u16(85), u16(352), u16(452), u16(451), u16(134), u16(179), u16(819), u16(357), u16(113), u16(891), u16(811), u16(889), u16(136), u16(128), u16(138), u16(743), u16(258), u16(184), u16(906), u16(143), u16(145), u16(63), u16(64), u16(65), u16(66), u16(129), u16(909), u16(905), u16(187), u16(186), u16(8), u16(13), u16(188), u16(265), u16(898), u16(149), u16(202), u16(824), u16(824), u16(826), u16(827), u16(19), u16(388), u16(987), u16(150), u16(161), u16(285), u16(685), u16(392), u16(396), u16(151), u16(722), u16(193), u16(68), u16(14), u16(401), u16(279), u16(15), u16(69), u16(236), u16(831), u16(830), u16(131), u16(859), u16(751), u16(70), u16(16), u16(414), u16(755), u16(4), u16(784), u16(220), u16(222), u16(174), u16(152), u16(437), u16(779), u16(201), u16(17), u16(77), u16(74), u16(18), u16(874), u16(860), u16(858), u16(915), u16(863), u16(914), u16(207), u16(206), u16(941), u16(163), u16(210), u16(942), u16(209), u16(164), u16(441), u16(862), u16(165), u16(211), u16(829), u16(695), u16(87), u16(312), u16(309), u16(947), u16(1291), u16(1290)}
}
-var _yy_default [456]uint16 // sqlite3.c:136229:27
+var _yy_default [456]uint16
func init() {
_yy_default = [456]uint16{u16(1280), u16(1270), u16(1270), u16(1270), u16(1202), u16(1202), u16(1202), u16(1202), u16(1270), u16(1096), u16(1125), u16(1125), u16(1254), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1201), u16(1332), u16(1332), u16(1332), u16(1332), u16(1270), u16(1100), u16(1131), u16(1332), u16(1332), u16(1332), u16(1332), u16(1203), u16(1204), u16(1332), u16(1332), u16(1332), u16(1253), u16(1255), u16(1141), u16(1140), u16(1139), u16(1138), u16(1236), u16(1112), u16(1136), u16(1129), u16(1133), u16(1203), u16(1197), u16(1198), u16(1196), u16(1200), u16(1204), u16(1332), u16(1132), u16(1167), u16(1181), u16(1166), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1175), u16(1180), u16(1187), u16(1179), u16(1176), u16(1169), u16(1168), u16(1170), u16(1171), u16(1332), u16(1019), u16(1067), u16(1332), u16(1332), u16(1332), u16(1172), u16(1332), u16(1173), u16(1184), u16(1183), u16(1182), u16(1261), u16(1288), u16(1287), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1280), u16(1270), u16(1025), u16(1025), u16(1332), u16(1270), u16(1270), u16(1270), u16(1270), u16(1270), u16(1270), u16(1266), u16(1100), u16(1091), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1258), u16(1256), u16(1332), u16(1217), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1096), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1282), u16(1332), u16(1231), u16(1096), u16(1096), u16(1096), u16(1098), u16(1080), u16(1090), u16(1004), u16(1135), u16(1114), u16(1114), u16(1321), u16(1135), u16(1321), u16(1042), u16(1302), u16(1039), u16(1125), u16(1114), u16(1199), u16(1125), u16(1125), u16(1097), u16(1090), u16(1332), u16(1324), u16(1105), u16(1105), u16(1323), u16(1323), u16(1105), u16(1146), u16(1070), u16(1135), u16(1076), u16(1076), u16(1076), u16(1076), u16(1105), u16(1016), u16(1135), u16(1146), u16(1070), u16(1070), u16(1135), u16(1105), u16(1016), u16(1235), u16(1318), u16(1105), u16(1105), u16(1016), u16(1210), u16(1105), u16(1016), u16(1105), u16(1016), u16(1210), u16(1068), u16(1068), u16(1068), u16(1057), u16(1210), u16(1068), u16(1042), u16(1068), u16(1057), u16(1068), u16(1068), u16(1118), u16(1113), u16(1118), u16(1113), u16(1118), u16(1113), u16(1118), u16(1113), u16(1105), u16(1205), u16(1105), u16(1332), u16(1210), u16(1214), u16(1214), u16(1210), u16(1130), u16(1119), u16(1128), u16(1126), u16(1135), u16(1022), u16(1060), u16(1285), u16(1285), u16(1281), u16(1281), u16(1281), u16(1281), u16(1329), u16(1329), u16(1266), u16(1297), u16(1297), u16(1044), u16(1044), u16(1297), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1292), u16(1332), u16(1219), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1152), u16(1332), u16(1000), u16(1263), u16(1332), u16(1332), u16(1262), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1320), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1234), u16(1233), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1082), u16(1332), u16(1332), u16(1332), u16(1306), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1127), u16(1332), u16(1120), u16(1332), u16(1332), u16(1311), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1272), u16(1332), u16(1332), u16(1332), u16(1271), u16(1332), u16(1332), u16(1332), u16(1332), u16(1332), u16(1154), u16(1332), u16(1153), u16(1157), u16(1332), u16(1010), u16(1332)}
}
-func _yy_shift(tls *crt.TLS, _yypParser *XyyParser, _yyNewState int32, _yyMajor int32, _yyMinor XToken) { // sqlite3.c:137246:1
- var _yytos *XyyStackEntry // sqlite3.c:137252:16
- _ = _yytos
+// Perform a shift action.
+func _yy_shift(tls *crt.TLS, _yypParser *XyyParser, _yyNewState int32, _yyMajor int32, _yyMinor XToken) {
+ var _yytos *XyyStackEntry
*(*uintptr)(unsafe.Pointer((**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser)) + uintptr(0 /* X0 */))))))) += uintptr(16)
- if uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) < uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */)))))+16*uintptr(i32(100)))))) {
- goto _0
+ if uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) >= uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */)))))+16*uintptr(i32(100)))))) {
+ *(*uintptr)(unsafe.Pointer((**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser)) + uintptr(0 /* X0 */))))))) += uintptr(4294967280)
+ _yyStackOverflow(tls, _yypParser)
+ return
}
-
- *(*uintptr)(unsafe.Pointer((**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser)) + uintptr(0 /* X0 */))))))) += uintptr(4294967280)
- _yyStackOverflow(tls, _yypParser)
- return
-
-_0:
- if _yyNewState <= i32(455) {
- goto _1
- }
-
- {
- p := &_yyNewState
- *p = (*p) + i32(332)
- sink1 = *p
+ if _yyNewState > i32(455) {
+ {
+ p := &_yyNewState
+ *p = (*p) + i32(332)
+ sink1 = *p
+ }
}
-_1:
_yytos = (*XyyStackEntry)(_yypParser.X0)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yytos)) + uintptr(0 /* X0 */))) = uint16(_yyNewState)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yytos)) + uintptr(2 /* X1 */))) = uint8(_yyMajor)
@@ -26960,63 +25499,61 @@ _1:
_yyTraceShift(tls, _yypParser, _yyNewState)
}
-func _yyStackOverflow(tls *crt.TLS, _yypParser *XyyParser) { // sqlite3.c:137206:1
- var _pParse *XParse // sqlite3.c:137207:4
- _ = _pParse
+// The following routine is called if the stack overflows.
+func _yyStackOverflow(tls *crt.TLS, _yypParser *XyyParser) {
+ var _pParse *XParse
_pParse = (*XParse)(_yypParser.X1)
- if _yyTraceFILE == nil {
- goto _0
+ if _yyTraceFILE != nil {
+ crt.Xfprintf(tls, _yyTraceFILE, str(27024), unsafe.Pointer(_yyTracePrompt))
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(27176), unsafe.Pointer(_yyTracePrompt))
-_0:
_1:
- if uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) <= uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */))))))) {
- goto _2
+ if uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) > uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */))))))) {
+ _yy_pop_parser_stack(tls, _yypParser)
+ goto _1
}
-
- _yy_pop_parser_stack(tls, _yypParser)
- goto _1
-
-_2:
- _sqlite3ErrorMsg(tls, _pParse, str(27196))
+ _sqlite3ErrorMsg(tls, _pParse, str(27043))
*(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser)) + uintptr(4 /* X1 */))))) = _pParse
}
-func _yy_pop_parser_stack(tls *crt.TLS, _pParser *XyyParser) { // sqlite3.c:137052:1
- var _yytos *XyyStackEntry // sqlite3.c:137053:16
- _ = _yytos
+// Pop the parser's stack once.
+//
+// If there is a destructor routine associated with the token which
+// is popped from the stack, then call it.
+func _yy_pop_parser_stack(tls *crt.TLS, _pParser *XyyParser) {
+ var _yytos *XyyStackEntry
func() {
if (*XyyStackEntry)(_pParser.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(137054), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_pop_parser_stackØ00__func__Ø000))), unsafe.Pointer(str(27220)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(137054), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_pop_parser_stackØ00__func__Ø000))), unsafe.Pointer(str(27065)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer((*XyyStackEntry)(_pParser.X0))) <= uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParser))+uintptr(8 /* X2 */))))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(137055), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_pop_parser_stackØ00__func__Ø000))), unsafe.Pointer(str(27240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(137055), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_pop_parser_stackØ00__func__Ø000))), unsafe.Pointer(str(27083)))
crt.X__builtin_abort(tls)
}
}()
- _yytos = postInc32((**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParser))+uintptr(0 /* X0 */))))), -16)
- if _yyTraceFILE == nil {
- goto _4
+ _yytos = postInc34((**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParser))+uintptr(0 /* X0 */))))), -16)
+ if _yyTraceFILE != nil {
+ crt.Xfprintf(tls, _yyTraceFILE, str(27117), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_yytos.X1)))))
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(27276), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr(_yytos.X1)))))
-_4:
_yy_destructor(tls, _pParser, _yytos.X1, (*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yytos))+uintptr(4 /* X2 */))))
}
-var _yy_pop_parser_stackØ00__func__Ø000 [20]int8 // -
+var _yy_pop_parser_stackØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_yy_pop_parser_stackØ00__func__Ø000[0], str(27292), 20)
+ crt.Xstrncpy(nil, &_yy_pop_parser_stackØ00__func__Ø000[0], str(27131), 20)
}
-func _yy_destructor(tls *crt.TLS, _yypParser *XyyParser, _yymajor uint8, _yypminor *XYYMINORTYPE) { // sqlite3.c:136950:1
- var _pParse *XParse // sqlite3.c:136955:3
- _ = _pParse
+// The following function deletes the "minor type" or semantic value
+// associated with a symbol. The symbol can be either a terminal
+// or nonterminal. "yymajor" is the symbol code, and "yypminor" is
+// a pointer to the value to be deleted. The code used to do the
+// deletions is derived from the %destructor and/or %token_destructor
+// directives of the input grammar.
+func _yy_destructor(tls *crt.TLS, _yypParser *XyyParser, _yymajor uint8, _yypminor *XYYMINORTYPE) {
+ var _pParse *XParse
_pParse = (*XParse)(_yypParser.X1)
switch int32(_yymajor) {
case i32(163):
@@ -27103,12 +25640,10 @@ _3:
_4:
_sqlite3SelectDelete(tls, (*Xsqlite3)(_pParse.X0), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer(_yypminor))))
goto _39
-
_5:
_6:
_sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)((*XExprSpan)(unsafe.Pointer(_yypminor)).X0))
goto _39
-
_7:
_8:
_9:
@@ -27123,19 +25658,16 @@ _17:
_18:
_sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer(_yypminor))))
goto _39
-
_19:
_20:
_21:
_22:
_sqlite3SrcListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer(_yypminor))))
goto _39
-
_23:
_24:
_sqlite3WithDelete(tls, (*Xsqlite3)(_pParse.X0), (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer(_yypminor))))
goto _39
-
_25:
_26:
_27:
@@ -27145,158 +25677,66 @@ _30:
_31:
_sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer(_yypminor))))
goto _39
-
_32:
_33:
_34:
_sqlite3IdListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer(_yypminor))))
goto _39
-
_35:
_36:
_sqlite3DeleteTriggerStep(tls, (*Xsqlite3)(_pParse.X0), (*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer(_yypminor))))
goto _39
-
_37:
_sqlite3IdListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XIdList)((*T_ht)(unsafe.Pointer(_yypminor)).X1))
goto _39
-
_38:
goto _39
-
_39:
}
-func _yyTraceShift(tls *crt.TLS, _yypParser *XyyParser, _yyNewState int32) { // sqlite3.c:137227:1
+func _yyTraceShift(tls *crt.TLS, _yypParser *XyyParser, _yyNewState int32) {
if _yyTraceFILE == nil {
goto _0
}
-
- if _yyNewState >= i32(456) {
- goto _1
+ if _yyNewState < i32(456) {
+ crt.Xfprintf(tls, _yyTraceFILE, str(27151), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr((*XyyStackEntry)(_yypParser.X0).X1)))), _yyNewState)
+ goto _2
}
-
- crt.Xfprintf(tls, _yyTraceFILE, str(27312), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr((*XyyStackEntry)(_yypParser.X0).X1)))), _yyNewState)
- goto _2
-
-_1:
- crt.Xfprintf(tls, _yyTraceFILE, str(27344), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr((*XyyStackEntry)(_yypParser.X0).X1)))))
+ crt.Xfprintf(tls, _yyTraceFILE, str(27181), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyTokenName)) + 4*uintptr((*XyyStackEntry)(_yypParser.X0).X1)))))
_2:
_0:
}
-func _yy_reduce(tls *crt.TLS, _yypParser *XyyParser, _yyruleno uint32) { // sqlite3.c:137632:1
- var _yygoto int32 // sqlite3.c:137636:7
- _ = _yygoto
- var _yyact int32 // sqlite3.c:137637:7
- _ = _yyact
- var _yymsp *XyyStackEntry // sqlite3.c:137638:16
- _ = _yymsp
- var _yysize int32 // sqlite3.c:137639:7
- _ = _yysize
- var _pParse *XParse // sqlite3.c:137640:3
- _ = _pParse
- var _4_yylhsminor XYYMINORTYPE // sqlite3.c:137686:21
- _ = _4_yylhsminor
- var _34_v XExprSpan // sqlite3.c:137810:12
- _ = _34_v
- var _35_v XExprSpan // sqlite3.c:137819:12
- _ = _35_v
- var _70_dest XSelectDest // sqlite3.c:137947:14
- _ = _70_dest
- var _71_p *XSelect // sqlite3.c:137954:10
- _ = _71_p
- var _74_pRhs *XSelect // sqlite3.c:137966:10
- _ = _74_pRhs
- var _74_pLhs *XSelect // sqlite3.c:137967:10
- _ = _74_pLhs
- var _75_pFrom *XSrcList // sqlite3.c:137969:13
- _ = _75_pFrom
- var _75_x XToken // sqlite3.c:137970:11
- _ = _75_x
- var _80_s XToken // sqlite3.c:137998:9
- _ = _80_s
- var _81_z *int8 // sqlite3.c:138012:16
- _ = _81_z
- var _81_i int32 // sqlite3.c:138013:9
- _ = _81_i
- var _85_pRight *XSelect // sqlite3.c:138034:10
- _ = _85_pRight
- var _85_pLeft *XSelect // sqlite3.c:138034:19
- _ = _85_pLeft
- var _92_p *XExpr // sqlite3.c:138069:8
- _ = _92_p
- var _93_pRight *XExpr // sqlite3.c:138075:8
- _ = _93_pRight
- var _93_pLeft *XExpr // sqlite3.c:138076:8
- _ = _93_pLeft
- var _93_pDot *XExpr // sqlite3.c:138077:8
- _ = _93_pDot
- var _105_pNew *TSrcList_item // sqlite3.c:138128:29
- _ = _105_pNew
- var _105_pOld *TSrcList_item // sqlite3.c:138129:29
- _ = _105_pOld
- var _106_pSubquery *XSelect // sqlite3.c:138138:14
- _ = _106_pSubquery
- var _143_temp1 *XExpr // sqlite3.c:138300:8
- _ = _143_temp1
- var _143_temp2 *XExpr // sqlite3.c:138301:8
- _ = _143_temp2
- var _144_temp1 *XExpr // sqlite3.c:138308:8
- _ = _144_temp1
- var _144_temp2 *XExpr // sqlite3.c:138309:8
- _ = _144_temp2
- var _144_temp3 *XExpr // sqlite3.c:138310:8
- _ = _144_temp3
- var _144_temp4 *XExpr // sqlite3.c:138311:8
- _ = _144_temp4
- var _147_n uint32 // sqlite3.c:138328:9
- _ = _147_n
- var _148_t XToken // sqlite3.c:138335:11
- _ = _148_t
- var _158_pList *XExprList // sqlite3.c:138390:12
- _ = _158_pList
- var _163_pList *XExprList // sqlite3.c:138416:12
- _ = _163_pList
- var _163_bNot int32 // sqlite3.c:138417:7
- _ = _163_bNot
- var _164_pList *XExprList // sqlite3.c:138429:12
- _ = _164_pList
- var _164_bNot int32 // sqlite3.c:138430:7
- _ = _164_bNot
- var _173_pList *XExprList // sqlite3.c:138475:12
- _ = _173_pList
- var _178_pRHS *XExpr // sqlite3.c:138517:12
- _ = _178_pRHS
- var _185_pSrc *XSrcList // sqlite3.c:138557:13
- _ = _185_pSrc
- var _185_pSelect *XSelect // sqlite3.c:138558:12
- _ = _185_pSelect
- var _186_p *XExpr // sqlite3.c:138568:10
- _ = _186_p
- var _209_all XToken // sqlite3.c:138662:9
- _ = _209_all
+// Perform a reduce action and the shift that must immediately
+// follow the reduce.
+func _yy_reduce(tls *crt.TLS, _yypParser *XyyParser, _yyruleno uint32) {
+ var _yygoto, _yyact, _yysize, _81_i, _163_bNot, _164_bNot int32
+ var _147_n uint32
+ var _81_z *int8
+ var _75_x, _80_s, _148_t, _209_all XToken
+ var _75_pFrom, _185_pSrc *XSrcList
+ var _105_pNew, _105_pOld *TSrcList_item
+ var _158_pList, _163_pList, _164_pList, _173_pList *XExprList
+ var _71_p, _74_pRhs, _74_pLhs, _85_pRight, _85_pLeft, _106_pSubquery, _185_pSelect *XSelect
+ var _92_p, _93_pRight, _93_pLeft, _93_pDot, _143_temp1, _143_temp2, _144_temp1, _144_temp2, _144_temp3, _144_temp4, _178_pRHS, _186_p *XExpr
+ var _pParse *XParse
+ var _34_v, _35_v XExprSpan
+ var _70_dest XSelectDest
+ var _4_yylhsminor XYYMINORTYPE
+ var _yymsp *XyyStackEntry
_pParse = (*XParse)(_yypParser.X1)
_yymsp = (*XyyStackEntry)(_yypParser.X0)
- if _yyTraceFILE == nil || _yyruleno >= uint32(i32(332)) {
- goto _1
+ if (_yyTraceFILE != nil) && (_yyruleno < uint32(i32(332))) {
+ _yysize = int32((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo)) + 2*uintptr(_yyruleno))).X1)
+ crt.Xfprintf(tls, _yyTraceFILE, str(27195), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleName)) + 4*uintptr(_yyruleno)))), int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(-_yysize))).X0))
}
-
- _yysize = int32((*t33)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo)) + 2*uintptr(_yyruleno))).X1)
- crt.Xfprintf(tls, _yyTraceFILE, str(27360), unsafe.Pointer(_yyTracePrompt), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleName)) + 4*uintptr(_yyruleno)))), int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(-_yysize))).X0))
-_1:
- if int32((*t33)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo))+2*uintptr(_yyruleno))).X1) != i32(0) {
+ if int32((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo))+2*uintptr(_yyruleno))).X1) != i32(0) {
goto _2
}
-
- if uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) < uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */)))))+16*uintptr(i32(99)))))) {
- goto _3
+ if uintptr(unsafe.Pointer((*XyyStackEntry)(_yypParser.X0))) >= uintptr(unsafe.Pointer((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser))+uintptr(8 /* X2 */)))))+16*uintptr(i32(99)))))) {
+ _yyStackOverflow(tls, _yypParser)
+ return
}
-
- _yyStackOverflow(tls, _yypParser)
- return
-
-_3:
_2:
switch _yyruleno {
case u32(0):
@@ -27856,58 +26296,45 @@ _2:
_5:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(411 /* X54 */))) = uint8(i32(1))
goto _281
-
_6:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(411 /* X54 */))) = uint8(i32(2))
goto _281
-
_7:
_sqlite3FinishCoding(tls, _pParse)
goto _281
-
_8:
_sqlite3BeginTransaction(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_9:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))) = i32(7)
goto _281
-
_10:
_11:
_12:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp)) + 16*uintptr(i32(0)))).X1)
goto _281
-
_13:
_14:
_sqlite3CommitTransaction(tls, _pParse)
goto _281
-
_15:
_sqlite3RollbackTransaction(tls, _pParse)
goto _281
-
_16:
_sqlite3Savepoint(tls, _pParse, i32(0), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_17:
_sqlite3Savepoint(tls, _pParse, i32(1), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_18:
_sqlite3Savepoint(tls, _pParse, i32(2), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_19:
_sqlite3StartTable(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))), i32(0), i32(0), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_20:
_disableLookaside(tls, _pParse)
goto _281
-
_21:
_22:
_23:
@@ -27919,174 +26346,134 @@ _28:
_29:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_30:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))) = i32(1)
goto _281
-
_31:
_32:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(1)
goto _281
-
_33:
_sqlite3EndTable(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), uint8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), nil)
goto _281
-
_34:
_sqlite3EndTable(tls, _pParse, nil, nil, uint8(i32(0)), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
_sqlite3SelectDelete(tls, (*Xsqlite3)(_pParse.X0), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_35:
- if ((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1) != uint32(i32(5)) || Xsqlite3_strnicmp(tls, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0, str(27392), i32(5)) != i32(0) {
- goto _283
+ if (((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1) == uint32(i32(5))) && (Xsqlite3_strnicmp(tls, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0, str(27227), i32(5)) == i32(0)) {
+ *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(96)
+ goto _284
}
-
- *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(96)
- goto _284
-
-_283:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(0)
- _sqlite3ErrorMsg(tls, _pParse, str(27400), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1, unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
+ _sqlite3ErrorMsg(tls, _pParse, str(27233), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1, unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
_284:
goto _281
-
_36:
_sqlite3AddColumn(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_37:
_38:
_39:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = uint32(i32(0))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = nil
goto _281
-
_40:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = uint32(int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))+1*uintptr((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1))))) - uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0))) / 1))
goto _281
-
_41:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = uint32(int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))+1*uintptr((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1))))) - uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))).X0))) / 1))
goto _281
-
_42:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = ((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1) + uint32(int32((uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))-uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0)))/1))
goto _281
-
_43:
_44:
*(*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(84 /* X28 */))) = *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
goto _281
-
_45:
_46:
_sqlite3AddDefaultValue(tls, _pParse, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_47:
_sqlite3AddDefaultValue(tls, _pParse, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
goto _281
-
_48:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_34_v)) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(155), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0), nil)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_34_v)) + uintptr(4 /* X1 */))) = (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))).X0
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_34_v)) + uintptr(8 /* X2 */))) = (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X2
_sqlite3AddDefaultValue(tls, _pParse, &_34_v)
goto _281
-
_49:
_spanExpr(tls, &_35_v, _pParse, i32(97), *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
_sqlite3AddDefaultValue(tls, _pParse, &_35_v)
goto _281
-
_50:
_sqlite3AddNotNull(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_51:
_sqlite3AddPrimaryKey(tls, _pParse, nil, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_52:
_sqlite3CreateIndex(tls, _pParse, nil, nil, nil, nil, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))), nil, nil, i32(0), i32(0), uint8(i32(1)))
goto _281
-
_53:
_sqlite3AddCheckConstraint(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_54:
_sqlite3CreateForeignKey(tls, _pParse, nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_55:
_sqlite3DeferForeignKey(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_56:
_sqlite3AddCollateType(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_57:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_58:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = ((*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) & (^((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1))) | ((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0)
goto _281
-
_59:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = i32(0)
goto _281
-
_60:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = i32(0)
goto _281
-
_61:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = i32(255)
goto _281
-
_62:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = (*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))) << uint(i32(8))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*crt.Xstruct_timeval)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = i32(65280)
goto _281
-
_63:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(7)
goto _281
-
_64:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(8)
goto _281
-
_65:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(9)
goto _281
-
_66:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(6)
goto _281
-
_67:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_68:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_69:
_70:
_71:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
goto _281
-
_72:
_73:
_74:
@@ -28094,100 +26481,76 @@ _75:
_76:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(1)
goto _281
-
_77:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_78:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(84 /* X28 */))))) + uintptr(4 /* X1 */))) = uint32(i32(0))
goto _281
-
_79:
_sqlite3AddPrimaryKey(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))), i32(0))
goto _281
-
_80:
_sqlite3CreateIndex(tls, _pParse, nil, nil, nil, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))), nil, nil, i32(0), i32(0), uint8(i32(1)))
goto _281
-
_81:
_sqlite3AddCheckConstraint(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_82:
_sqlite3CreateForeignKey(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
_sqlite3DeferForeignKey(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_83:
_84:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))) = i32(10)
goto _281
-
_85:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))) = *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
goto _281
-
_86:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(4)
goto _281
-
_87:
_88:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(5)
goto _281
-
_89:
_sqlite3DropTable(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), i32(0), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_90:
_sqlite3CreateView(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7)))))) + uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_91:
_sqlite3DropTable(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), i32(1), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_92:
_70_dest = XSelectDest{X0: u8(9), X1: nil, X2: i32(0), X3: i32(0), X4: i32(0), X5: nil}
_sqlite3Select(tls, _pParse, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), &_70_dest)
_sqlite3SelectDelete(tls, (*Xsqlite3)(_pParse.X0), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_93:
_71_p = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
- if _71_p == nil {
- goto _285
+ if _71_p != nil {
+ *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_71_p)) + uintptr(76 /* X17 */))))) = (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
+ _parserDoubleLinkSelect(tls, _pParse, _71_p)
+ goto _286
}
-
- *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_71_p)) + uintptr(76 /* X17 */))))) = (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
- _parserDoubleLinkSelect(tls, _pParse, _71_p)
- goto _286
-
-_285:
_sqlite3WithDelete(tls, (*Xsqlite3)(_pParse.X0), (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
_286:
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = _71_p
goto _281
-
_94:
_74_pRhs = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
_74_pLhs = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))
- if _74_pRhs == nil || (*XSelect)(_74_pRhs.X13) == nil {
- goto _288
+ if (_74_pRhs != nil) && ((*XSelect)(_74_pRhs.X13) != nil) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_75_x)) + uintptr(4 /* X1 */))) = uint32(i32(0))
+ _parserDoubleLinkSelect(tls, _pParse, _74_pRhs)
+ _75_pFrom = _sqlite3SrcListAppendFromTerm(tls, _pParse, nil, nil, nil, &_75_x, _74_pRhs, nil, nil)
+ _74_pRhs = _sqlite3SelectNew(tls, _pParse, nil, _75_pFrom, nil, nil, nil, nil, uint32(i32(0)), nil, nil)
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_75_x)) + uintptr(4 /* X1 */))) = uint32(i32(0))
- _parserDoubleLinkSelect(tls, _pParse, _74_pRhs)
- _75_pFrom = _sqlite3SrcListAppendFromTerm(tls, _pParse, nil, nil, nil, &_75_x, _74_pRhs, nil, nil)
- _74_pRhs = _sqlite3SelectNew(tls, _pParse, nil, _75_pFrom, nil, nil, nil, nil, uint32(i32(0)), nil, nil)
-_288:
if _74_pRhs == nil {
goto _289
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_74_pRhs)) + uintptr(4 /* X1 */))) = uint8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_74_pRhs)) + uintptr(60 /* X13 */))))) = _74_pLhs
if func() int32 {
@@ -28195,103 +26558,79 @@ _288:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(137979), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(137979), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _292
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_74_pLhs)) + uintptr(8 /* X3 */)))
- *p = (*p) & uint32(i32(-1025))
- sink5 = *p
+ }() != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_74_pLhs)) + uintptr(8 /* X3 */)))
+ *p = (*p) & uint32(i32(-1025))
+ sink5 = *p
+ }
}
-_292:
{
p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_74_pRhs)) + uintptr(8 /* X3 */)))
*p = (*p) & uint32(i32(-1025))
sink5 = *p
}
- if (*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) == i32(116) {
- goto _293
+ if (*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) != i32(116) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(22 /* X10 */))) = uint8(i32(1))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(22 /* X10 */))) = uint8(i32(1))
-_293:
goto _294
-
_289:
_sqlite3SelectDelete(tls, (*Xsqlite3)(_pParse.X0), _74_pLhs)
_294:
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = _74_pRhs
goto _281
-
_95:
_96:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp)) + 16*uintptr(i32(0)))).X1)
goto _281
-
_97:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(116)
goto _281
-
_98:
_80_s = *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */)))))
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))))) = _sqlite3SelectNew(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), uint32(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0), (*XExpr)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1))
if (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */)))))) == nil {
goto _295
}
-
_81_z = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_80_s.X0)) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(6))))))))
- Xsqlite3_snprintf(tls, int32(u32(12)), (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))))+uintptr(20 /* X6 */))))), str(27428), preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(112 /* X34 */))), 1))
+ Xsqlite3_snprintf(tls, int32(u32(12)), (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))))+uintptr(20 /* X6 */))))), str(27260), preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(112 /* X34 */))), 1))
_296:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_z)) + 1*uintptr(i32(0))))) != i32(32) {
- goto _297
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_z)) + 1*uintptr(i32(0))))) == i32(32) {
+ *(*uintptr)(unsafe.Pointer(&_81_z)) += uintptr(1)
+ goto _296
}
-
- *(*uintptr)(unsafe.Pointer(&_81_z)) += uintptr(1)
- goto _296
-
-_297:
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_z)) + 1*uintptr(i32(0))))) != i32(47) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_z)) + 1*uintptr(i32(1))))) != i32(42) {
goto _299
}
-
{
p := &_81_z
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(2))))
sink0 = *p
}
_300:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_z)) + 1*uintptr(i32(0))))) != i32(32) {
- goto _301
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_z)) + 1*uintptr(i32(0))))) == i32(32) {
+ *(*uintptr)(unsafe.Pointer(&_81_z)) += uintptr(1)
+ goto _300
}
-
- *(*uintptr)(unsafe.Pointer(&_81_z)) += uintptr(1)
- goto _300
-
-_301:
_81_i = i32(0)
_302:
if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_z)) + 1*uintptr(_81_i)))))))) & i32(6)) == 0 {
goto _305
}
-
_81_i += 1
goto _302
-
_305:
- Xsqlite3_snprintf(tls, int32(u32(12)), (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))))+uintptr(20 /* X6 */))))), str(27432), _81_i, unsafe.Pointer(_81_z))
+ Xsqlite3_snprintf(tls, int32(u32(12)), (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))))+uintptr(20 /* X6 */))))), str(27264), _81_i, unsafe.Pointer(_81_z))
_299:
_295:
goto _281
-
_99:
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))) = _sqlite3SelectNew(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), nil, nil, nil, nil, nil, uint32(i32(512)), nil, nil)
goto _281
-
_100:
_85_pLeft = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))
_85_pRight = _sqlite3SelectNew(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), nil, nil, nil, nil, nil, uint32(i32(1536)), nil, nil)
@@ -28300,42 +26639,32 @@ _100:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138036), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138036), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _308
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_85_pLeft)) + uintptr(8 /* X3 */)))
- *p = (*p) & uint32(i32(-1025))
- sink5 = *p
+ }() != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_85_pLeft)) + uintptr(8 /* X3 */)))
+ *p = (*p) & uint32(i32(-1025))
+ sink5 = *p
+ }
}
-_308:
- if _85_pRight == nil {
- goto _309
+ if _85_pRight != nil {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_85_pRight)) + uintptr(4 /* X1 */))) = uint8(i32(116))
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_85_pRight)) + uintptr(60 /* X13 */))))) = _85_pLeft
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _85_pRight
+ goto _310
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_85_pRight)) + uintptr(4 /* X1 */))) = uint8(i32(116))
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_85_pRight)) + uintptr(60 /* X13 */))))) = _85_pLeft
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _85_pRight
- goto _310
-
-_309:
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _85_pLeft
_310:
goto _281
-
_101:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(1)
goto _281
-
_102:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(2)
goto _281
-
_103:
_104:
_105:
@@ -28344,111 +26673,84 @@ _107:
_108:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))))) = nil
goto _281
-
_109:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0))
- if ((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1) <= uint32(i32(0)) {
- goto _311
+ if ((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1) > uint32(i32(0)) {
+ _sqlite3ExprListSetName(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), i32(1))
}
-
- _sqlite3ExprListSetName(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), i32(1))
-_311:
_sqlite3ExprListSetSpan(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
goto _281
-
_110:
_92_p = _sqlite3Expr(tls, (*Xsqlite3)(_pParse.X0), i32(161), nil)
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), _92_p)
goto _281
-
_111:
_93_pRight = _sqlite3PExpr(tls, _pParse, i32(161), nil, nil)
_93_pLeft = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(27), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), i32(1))
_93_pDot = _sqlite3PExpr(tls, _pParse, i32(122), _93_pLeft, _93_pRight)
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), _93_pDot)
goto _281
-
_112:
_113:
_114:
_115:
*(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
goto _281
-
_116:
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))))) = (*XSrcList)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(76))))
goto _281
-
_117:
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
_sqlite3SrcListShiftJoinType(tls, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_118:
if func() int32 {
if ((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) != nil) && (((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))).X0) > i32(0)) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138098), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138098), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _315
+ }() != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))+uintptr(8 /* X2 */)))))+68*uintptr(((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))).X0)-i32(1))))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = uint8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))+uintptr(8 /* X2 */)))))+68*uintptr(((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))).X0)-i32(1))))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = uint8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
-_315:
goto _281
-
_119:
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))))) = nil
goto _281
-
_120:
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))) = _sqlite3SrcListAppendFromTerm(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), nil, (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
_sqlite3SrcListIndexedBy(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))
goto _281
-
_121:
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))))) = _sqlite3SrcListAppendFromTerm(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), nil, (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
_sqlite3SrcListFuncArgs(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */)))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_122:
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))) = _sqlite3SrcListAppendFromTerm(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), nil, nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_123:
- if (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))) != nil || ((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X1) != uint32(i32(0)) || (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) != nil || (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))) != nil {
- goto _319
+ if ((((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))) == nil) && (((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))).X1) == uint32(i32(0)))) && ((*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) == nil)) && ((*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))) == nil) {
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))) = (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))
+ goto _320
}
-
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))) = (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))
- goto _320
-
-_319:
if ((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))).X0) != i32(1) {
goto _321
}
-
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))) = _sqlite3SrcListAppendFromTerm(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), nil, nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), nil, (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
- if (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))) == nil {
- goto _322
+ if (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))) != nil {
+ _105_pNew = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))+uintptr(8 /* X2 */))))) + 68*uintptr(((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))).X0)-i32(1))))
+ _105_pOld = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))) + uintptr(8 /* X2 */)))))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pNew)) + uintptr(8 /* X2 */))) = _105_pOld.X2
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pNew)) + uintptr(4 /* X1 */))) = _105_pOld.X1
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pNew)) + uintptr(20 /* X5 */))))) = (*XSelect)(_105_pOld.X5)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pOld)) + uintptr(8 /* X2 */))) = store0((**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pOld))+uintptr(4 /* X1 */))), nil)
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pOld)) + uintptr(20 /* X5 */))))) = nil
}
-
- _105_pNew = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))+uintptr(8 /* X2 */))))) + 68*uintptr(((*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))).X0)-i32(1))))
- _105_pOld = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))) + uintptr(8 /* X2 */)))))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pNew)) + uintptr(8 /* X2 */))) = _105_pOld.X2
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pNew)) + uintptr(4 /* X1 */))) = _105_pOld.X1
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pNew)) + uintptr(20 /* X5 */))))) = (*XSelect)(_105_pOld.X5)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pOld)) + uintptr(8 /* X2 */))) = store0((**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pOld))+uintptr(4 /* X1 */))), nil)
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_105_pOld)) + uintptr(20 /* X5 */))))) = nil
-_322:
_sqlite3SrcListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))))
goto _323
-
_321:
_sqlite3SrcListShiftJoinType(tls, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))))
_106_pSubquery = _sqlite3SelectNew(tls, _pParse, nil, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), nil, nil, nil, nil, uint32(i32(2048)), nil, nil)
@@ -28456,40 +26758,32 @@ _321:
_323:
_320:
goto _281
-
_124:
_125:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = nil
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = uint32(i32(0))
goto _281
-
_126:
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = _sqlite3SrcListAppend(tls, (*Xsqlite3)(_pParse.X0), nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_127:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(1)
goto _281
-
_128:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = _sqlite3JoinType(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), nil, nil)
goto _281
-
_129:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))) = _sqlite3JoinType(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), nil)
goto _281
-
_130:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))) = _sqlite3JoinType(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
goto _281
-
_131:
_132:
_133:
_134:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0)
goto _281
-
_135:
_136:
_137:
@@ -28497,149 +26791,119 @@ _138:
_139:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))))) = nil
goto _281
-
_140:
*(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))) = *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
goto _281
-
_141:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = nil
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = uint32(i32(1))
goto _281
-
_142:
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))) = (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_143:
_144:
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))))) = nil
goto _281
-
_145:
_146:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_147:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0))
_sqlite3ExprListSetSortOrder(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_148:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, nil, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0))
_sqlite3ExprListSetSortOrder(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_149:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_150:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(1)
goto _281
-
_151:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))) = i32(-1)
goto _281
-
_152:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = nil
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))))) = nil
goto _281
-
_153:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0)
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))))) = nil
goto _281
-
_154:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))).X0)
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0)
goto _281
-
_155:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))).X0)
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_pcache_page)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0)
goto _281
-
_156:
_sqlite3WithPush(tls, _pParse, (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */)))))), uint8(i32(1)))
_sqlite3SrcListIndexedBy(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
_sqlite3DeleteFrom(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_157:
_sqlite3WithPush(tls, _pParse, (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7)))))) + uintptr(4 /* X2 */)))))), uint8(i32(1)))
_sqlite3SrcListIndexedBy(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))
- _sqlite3ExprListCheckLength(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), str(27440))
+ _sqlite3ExprListCheckLength(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), str(27269))
_sqlite3Update(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_158:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
_sqlite3ExprListSetName(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), i32(1))
goto _281
-
_159:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppendVector(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_160:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(&_4_yylhsminor)))) = _sqlite3ExprListAppend(tls, _pParse, nil, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
_sqlite3ExprListSetName(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer(&_4_yylhsminor))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), i32(1))
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer(&_4_yylhsminor)))
goto _281
-
_161:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppendVector(tls, _pParse, nil, (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_162:
_sqlite3WithPush(tls, _pParse, (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */)))))), uint8(i32(1)))
_sqlite3Insert(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_163:
_sqlite3WithPush(tls, _pParse, (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */)))))), uint8(i32(1)))
_sqlite3Insert(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), nil, (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_164:
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_165:
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = _sqlite3IdListAppend(tls, (*Xsqlite3)(_pParse.X0), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_166:
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))) = _sqlite3IdListAppend(tls, (*Xsqlite3)(_pParse.X0), nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_167:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))).X0)
goto _281
-
_168:
_169:
_170:
_spanExpr(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), _pParse, int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))).X1), *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_171:
_172:
_spanExpr(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), _pParse, i32(27), *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_173:
_143_temp1 = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(27), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), i32(1))
_143_temp2 = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(27), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), i32(1))
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(122), _143_temp1, _143_temp2)
goto _281
-
_174:
_144_temp1 = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(27), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), i32(1))
_144_temp2 = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(27), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), i32(1))
@@ -28648,125 +26912,92 @@ _174:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(122), _144_temp1, _144_temp4)
goto _281
-
_175:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(134), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), i32(1))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)))) + uintptr(4 /* X1 */))) = (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)))) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1)))))))
- if (*XExpr)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) == nil {
- goto _324
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(8388612))
- sink5 = *p
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) != nil {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(8388612))
+ sink5 = *p
+ }
}
-_324:
*(*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = *(*XExprSpan)(unsafe.Pointer(&_4_yylhsminor))
goto _281
-
_176:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr(i32(0))))) == i32(35) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr(i32(1)))))))))&i32(4)) != 0 {
- goto _326
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr(i32(0))))) != i32(35) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr(i32(1)))))))))&i32(4)) == 0 {
+ _147_n = (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1
+ _spanExpr(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), _pParse, i32(135), *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
+ _sqlite3ExprAssignVarNumber(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0), _147_n)
+ goto _327
}
-
- _147_n = (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1
- _spanExpr(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), _pParse, i32(135), *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
- _sqlite3ExprAssignVarNumber(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0), _147_n)
- goto _327
-
-_326:
_148_t = *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
func() {
if (_148_t.X1) < uint32(i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138336), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138336), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27278)))
crt.X__builtin_abort(tls)
}
}()
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), &_148_t, &_148_t)
- if int32(_pParse.X6) != i32(0) {
- goto _330
+ if int32(_pParse.X6) == i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(27285), unsafe.Pointer(&_148_t))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = nil
+ goto _331
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(27460), unsafe.Pointer(&_148_t))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = nil
- goto _331
-
-_330:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(157), nil, nil)
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _332
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ _sqlite3GetInt32(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_148_t.X0))+1*uintptr(i32(1)))), (*int32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)+uintptr(28 /* X8 */))))
}
-
- _sqlite3GetInt32(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_148_t.X0))+1*uintptr(i32(1)))), (*int32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)+uintptr(28 /* X8 */))))
-_332:
_331:
_327:
goto _281
-
_177:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAddCollateToken(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), i32(1))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1)))
goto _281
-
_178:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(37), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), i32(1))
_sqlite3ExprAttachSubtrees(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))).X0), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0), nil)
goto _281
-
_179:
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) == nil || ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))).X0) <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(6))))) {
- goto _334
+ if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) != nil) && (((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))).X0) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(6)))))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(27309), unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */)))))))
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(27484), unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */)))))))
-_334:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)))) + uintptr(0 /* X0 */))))) = _sqlite3ExprFunction(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))
_spanSet(tls, (*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
- if (*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))) != i32(1) || (*XExpr)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) == nil {
- goto _336
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(16))
- sink5 = *p
+ if ((*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))) == i32(1)) && ((*XExpr)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) != nil) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(16))
+ sink5 = *p
+ }
}
-_336:
*(*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))) = *(*XExprSpan)(unsafe.Pointer(&_4_yylhsminor))
goto _281
-
_180:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)))) + uintptr(0 /* X0 */))))) = _sqlite3ExprFunction(tls, _pParse, nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))
_spanSet(tls, (*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))) = *(*XExprSpan)(unsafe.Pointer(&_4_yylhsminor))
goto _281
-
_181:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)))) + uintptr(0 /* X0 */))))) = _sqlite3ExprFunction(tls, _pParse, nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
_spanSet(tls, (*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = *(*XExprSpan)(unsafe.Pointer(&_4_yylhsminor))
goto _281
-
_182:
_158_pList = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(158), nil, nil)
- if (*XExpr)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) == nil {
- goto _337
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) != nil {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) + uintptr(20 /* X6 */))))))) = _158_pList
+ _spanSet(tls, (*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
+ goto _338
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)).X0) + uintptr(20 /* X6 */))))))) = _158_pList
- _spanSet(tls, (*XExprSpan)(unsafe.Pointer(&_4_yylhsminor)), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
- goto _338
-
-_337:
_sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _158_pList)
_338:
*(*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))) = *(*XExprSpan)(unsafe.Pointer(&_4_yylhsminor))
goto _281
-
_183:
_184:
_185:
@@ -28777,7 +27008,6 @@ _189:
_190:
_spanBinaryExpr(tls, _pParse, int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))).X1), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_191:
*(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
{
@@ -28786,7 +27016,6 @@ _191:
sink5 = *p
}
goto _281
-
_192:
_163_bNot = int32(((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))).X1) & u32(2147483648))
{
@@ -28799,18 +27028,14 @@ _192:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprFunction(tls, _pParse, _163_pList, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
_exprNot(tls, _pParse, _163_bNot, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(8 /* X2 */))) = (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X2
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _339
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(128))
- sink5 = *p
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(128))
+ sink5 = *p
+ }
}
-_339:
goto _281
-
_193:
_164_bNot = int32(((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))).X1) & u32(2147483648))
{
@@ -28824,86 +27049,64 @@ _193:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprFunction(tls, _pParse, _164_pList, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))
_exprNot(tls, _pParse, _164_bNot, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(8 /* X2 */))) = (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X2
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _340
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(128))
- sink5 = *p
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(128))
+ sink5 = *p
+ }
}
-_340:
goto _281
-
_194:
_spanUnaryPostfix(tls, _pParse, int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))).X1), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_195:
_spanUnaryPostfix(tls, _pParse, i32(76), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_196:
_spanBinaryExpr(tls, _pParse, i32(72), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
_binaryToUnaryIfNull(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0), i32(75))
goto _281
-
_197:
_spanBinaryExpr(tls, _pParse, i32(148), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
_binaryToUnaryIfNull(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0), i32(76))
goto _281
-
_198:
_199:
_spanUnaryPrefix(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), _pParse, int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))).X1), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
goto _281
-
_200:
_spanUnaryPrefix(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), _pParse, i32(155), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
goto _281
-
_201:
_spanUnaryPrefix(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), _pParse, i32(156), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
goto _281
-
_202:
_203:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_204:
_173_pList = _sqlite3ExprListAppend(tls, _pParse, nil, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0))
_173_pList = _sqlite3ExprListAppend(tls, _pParse, _173_pList, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(73), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0), nil)
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _341
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(20 /* X6 */))))))) = _173_pList
+ goto _342
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(20 /* X6 */))))))) = _173_pList
- goto _342
-
-_341:
_sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _173_pList)
_342:
_exprNot(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(8 /* X2 */))) = (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X2
goto _281
-
_205:
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) != nil {
- goto _343
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) == nil {
+ _sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(134), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3IntTokens))+8*uintptr(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))))), i32(1))
+ goto _344
}
-
- _sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(134), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3IntTokens))+8*uintptr(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))))), i32(1))
- goto _344
-
-_343:
if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))).X0) != i32(1) {
goto _345
}
-
_178_pRHS = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))))) + uintptr(0 /* X0 */))))) = nil
_sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
@@ -28912,25 +27115,22 @@ _343:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138522), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138522), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _348
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_178_pRHS)) + uintptr(4 /* X2 */)))
- *p = (*p) & uint32(i32(-257))
- sink5 = *p
- }
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_178_pRHS)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(512))
- sink5 = *p
+ }() != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_178_pRHS)) + uintptr(4 /* X2 */)))
+ *p = (*p) & uint32(i32(-257))
+ sink5 = *p
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_178_pRHS)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(512))
+ sink5 = *p
+ }
}
-_348:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, func() int32 {
if (*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))) != 0 {
return i32(77)
@@ -28938,18 +27138,13 @@ _348:
return i32(78)
}(), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0), _178_pRHS)
goto _351
-
_345:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(74), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0), nil)
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _352
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(20 /* X6 */))))))) = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
+ _sqlite3ExprSetHeightAndFlags(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0))
+ goto _353
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(20 /* X6 */))))))) = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
- _sqlite3ExprSetHeightAndFlags(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0))
- goto _353
-
-_352:
_sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
_353:
_exprNot(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))
@@ -28957,34 +27152,28 @@ _351:
_344:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1)))
goto _281
-
_206:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(119), nil, nil)
_sqlite3PExprAddSelect(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_207:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(74), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0), nil)
_sqlite3PExprAddSelect(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
_exprNot(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X1)))
goto _281
-
_208:
_185_pSrc = _sqlite3SrcListAppend(tls, (*Xsqlite3)(_pParse.X0), nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
_185_pSelect = _sqlite3SelectNew(tls, _pParse, nil, _185_pSrc, nil, nil, nil, nil, uint32(i32(0)), nil, nil)
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))) == nil {
- goto _354
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))) != nil {
+ _sqlite3SrcListFuncArgs(tls, _pParse, func() *XSrcList {
+ if _185_pSelect != nil {
+ return _185_pSrc
+ }
+ return nil
+ }(), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
}
-
- _sqlite3SrcListFuncArgs(tls, _pParse, func() *XSrcList {
- if _185_pSelect != nil {
- return _185_pSrc
- }
- return nil
- }(), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
-_354:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(74), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0), nil)
_sqlite3PExprAddSelect(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0), _185_pSelect)
_exprNot(tls, _pParse, *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))), (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))
@@ -28995,121 +27184,94 @@ _354:
return (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0)) + 1*uintptr((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X1)))
}()
goto _281
-
_209:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
- _186_p = store34((**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */)))))))+uintptr(0 /* X0 */))))), _sqlite3PExpr(tls, _pParse, i32(20), nil, nil))
+ _186_p = store36((**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */)))))))+uintptr(0 /* X0 */))))), _sqlite3PExpr(tls, _pParse, i32(20), nil, nil))
_sqlite3PExprAddSelect(tls, _pParse, _186_p, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_210:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(136), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), nil)
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _359
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(20 /* X6 */))))))) = func() *XExprList {
+ if (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) != nil {
+ return _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
+ }
+ return (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))
+ }()
+ _sqlite3ExprSetHeightAndFlags(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0))
+ goto _362
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0) + uintptr(20 /* X6 */))))))) = func() *XExprList {
- if (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) != nil {
- return _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
- }
- return (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))
- }()
- _sqlite3ExprSetHeightAndFlags(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0))
- goto _362
-
-_359:
_sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))))
_sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
_362:
goto _281
-
_211:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0))
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_212:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, nil, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))).X0))
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_213:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0)
goto _281
-
_214:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_215:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))) = _sqlite3ExprListAppend(tls, _pParse, nil, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_216:
_217:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_218:
_sqlite3CreateIndex(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6))))))+uintptr(4 /* X2 */))))), _sqlite3SrcListAppend(tls, (*Xsqlite3)(_pParse.X0), nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), nil), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-10)))))) + uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-11))))))+uintptr(4 /* X2 */))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), i32(0), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))), uint8(i32(0)))
goto _281
-
_219:
_220:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(2)
goto _281
-
_221:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))) = i32(0)
goto _281
-
_222:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _parserAddExprIdListTerm(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_223:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = _parserAddExprIdListTerm(tls, _pParse, nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_224:
_sqlite3DropIndex(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_225:
_sqlite3Vacuum(tls, _pParse, nil)
goto _281
-
_226:
_sqlite3Vacuum(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_227:
_sqlite3Pragma(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), nil, i32(0))
goto _281
-
_228:
_sqlite3Pragma(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), i32(0))
goto _281
-
_229:
_sqlite3Pragma(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), i32(0))
goto _281
-
_230:
_sqlite3Pragma(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), i32(1))
goto _281
-
_231:
_sqlite3Pragma(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), i32(1))
goto _281
-
_232:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_209_all)) + uintptr(0 /* X0 */))) = (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))).X0
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_209_all)) + uintptr(4 /* X1 */))) = uint32(int32((uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))-uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0)))/1)) + ((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X1)
_sqlite3FinishTrigger(tls, _pParse, (*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), &_209_all)
goto _281
-
_233:
_sqlite3BeginTrigger(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6))))))+uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */))))), (*T_ht)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X0, (*XIdList)((*T_ht)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))).X1), (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-10)))))) + uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-8)))))) + uintptr(4 /* X2 */))))))
*(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-10)))))) + uintptr(4 /* X2 */))))) = func() XToken {
@@ -29119,400 +27281,344 @@ _233:
return (*(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))
}()
goto _281
-
_234:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(34)
goto _281
-
_235:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(30)
goto _281
-
_236:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))) = i32(48)
goto _281
-
_237:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))) = i32(34)
goto _281
-
_238:
_239:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp)) + 16*uintptr(i32(0)))).X1)
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))))) = nil
goto _281
-
_240:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))) = i32(110)
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))))) = (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_241:
_242:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))))) = nil
goto _281
-
_243:
_244:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))).X0)
goto _281
-
_245:
func() {
if (*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138703), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138703), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27343)))
crt.X__builtin_abort(tls)
}
}()
*(**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))).X9) + uintptr(28 /* X8 */))))) = (*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
*(**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */)))))) + uintptr(32 /* X9 */))))) = (*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_246:
func() {
if (*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138710), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138710), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27368)))
crt.X__builtin_abort(tls)
}
}()
*(**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))) + uintptr(32 /* X9 */))))) = (*XTriggerStep)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_247:
*(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))) = *(*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))
- _sqlite3ErrorMsg(tls, _pParse, str(27576))
+ _sqlite3ErrorMsg(tls, _pParse, str(27393))
goto _281
-
_248:
- _sqlite3ErrorMsg(tls, _pParse, str(27672))
+ _sqlite3ErrorMsg(tls, _pParse, str(27488))
goto _281
-
_249:
- _sqlite3ErrorMsg(tls, _pParse, str(27756))
+ _sqlite3ErrorMsg(tls, _pParse, str(27572))
goto _281
-
_250:
*(**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-6)))))) + uintptr(4 /* X2 */))))))) = _sqlite3TriggerUpdateStep(tls, (*Xsqlite3)(_pParse.X0), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4))))))+uintptr(4 /* X2 */))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), uint8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_251:
*(**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _sqlite3TriggerInsertStep(tls, (*Xsqlite3)(_pParse.X0), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), uint8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_252:
*(**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))) = _sqlite3TriggerDeleteStep(tls, (*Xsqlite3)(_pParse.X0), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_253:
*(**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))) = _sqlite3TriggerSelectStep(tls, (*Xsqlite3)(_pParse.X0), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_254:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(56), nil, nil)
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _369
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ *(*int8)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0) + uintptr(1 /* X1 */))) = int8(i32(4))
}
-
- *(*int8)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0) + uintptr(1 /* X1 */))) = int8(i32(4))
-_369:
goto _281
-
_255:
_spanSet(tls, (*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(56), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), i32(1))
- if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))).X0) == nil {
- goto _370
+ if (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))).X0) != nil {
+ *(*int8)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))).X0) + uintptr(1 /* X1 */))) = int8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))
}
-
- *(*int8)(unsafe.Pointer(uintptr((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))).X0) + uintptr(1 /* X1 */))) = int8(*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */))))))
-_370:
goto _281
-
_256:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(1)
goto _281
-
_257:
*(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))) = i32(3)
goto _281
-
_258:
_sqlite3DropTrigger(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_259:
_sqlite3Attach(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))).X0), (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0), (*XExpr)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_260:
_sqlite3Detach(tls, _pParse, (*XExpr)((*XExprSpan)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))).X0))
goto _281
-
_261:
_sqlite3Reindex(tls, _pParse, nil, nil)
goto _281
-
_262:
_sqlite3Reindex(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_263:
_sqlite3Analyze(tls, _pParse, nil, nil)
goto _281
-
_264:
_sqlite3Analyze(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_265:
_sqlite3AlterRenameTable(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_266:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))) + uintptr(4 /* X1 */))) = uint32(int32((uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(400 /* X51 */))).X0))-uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))).X0)))/1)) + ((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(400 /* X51 */))).X1)
_sqlite3AlterFinishAddColumn(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1))))))+uintptr(4 /* X2 */))))))
goto _281
-
_267:
_disableLookaside(tls, _pParse)
_sqlite3AlterBeginAddColumn(tls, _pParse, (*XSrcList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_268:
_sqlite3VtabFinishParse(tls, _pParse, nil)
goto _281
-
_269:
_sqlite3VtabFinishParse(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_270:
_sqlite3VtabBeginParse(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-3))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2))))))+uintptr(4 /* X2 */))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))), *(*int32)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_271:
_sqlite3VtabArgInit(tls, _pParse)
goto _281
-
_272:
_273:
_274:
_sqlite3VtabArgExtend(tls, _pParse, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0))))))+uintptr(4 /* X2 */))))))
goto _281
-
_275:
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(1)))))) + uintptr(4 /* X2 */))))))) = nil
goto _281
-
_276:
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */))))))) = (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_277:
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-2)))))) + uintptr(4 /* X2 */))))))) = (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(0)))))) + uintptr(4 /* X2 */))))))
goto _281
-
_278:
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5)))))) + uintptr(4 /* X2 */))))))) = _sqlite3WithAdd(tls, _pParse, nil, (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_279:
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7)))))) + uintptr(4 /* X2 */))))))) = _sqlite3WithAdd(tls, _pParse, (*XWith)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-7)))))) + uintptr(4 /* X2 */)))))), (*XToken)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-5))))))+uintptr(4 /* X2 */))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-4)))))) + uintptr(4 /* X2 */)))))), (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*XYYMINORTYPE)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(i32(-1)))))) + uintptr(4 /* X2 */)))))))
goto _281
-
_280:
func() {
if _yyruleno == uint32(i32(277)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138857), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27844)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138857), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27657)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(294)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138874), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138874), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27671)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(295)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138875), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138875), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27685)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(301)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138881), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138881), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27699)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(303)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138883), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27908)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138883), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27713)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(304)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138884), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138884), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27727)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(305)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138885), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27940)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138885), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27741)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(309)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138889), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138889), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27755)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(312)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138892), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27972)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138892), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27769)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _yyruleno == uint32(i32(313)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138893), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138893), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27783)))
crt.X__builtin_abort(tls)
}
}()
goto _281
-
_281:
func() {
if _yyruleno >= u32(332) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138915), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(28004)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138915), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27797)))
crt.X__builtin_abort(tls)
}
}()
- _yygoto = int32((*t33)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo)) + 2*uintptr(_yyruleno))).X0)
- _yysize = int32((*t33)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo)) + 2*uintptr(_yyruleno))).X1)
+ _yygoto = int32((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo)) + 2*uintptr(_yyruleno))).X0)
+ _yysize = int32((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_yyRuleInfo)) + 2*uintptr(_yyruleno))).X1)
_yyact = _yy_find_reduce_action(tls, int32((*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp))+16*uintptr(-_yysize))).X0), uint8(_yygoto))
if _yyact > i32(999) {
goto _393
}
-
- if _yyact <= i32(455) {
- goto _394
- }
-
- {
- p := &_yyact
- *p = (*p) + i32(332)
- sink1 = *p
+ if _yyact > i32(455) {
+ {
+ p := &_yyact
+ *p = (*p) + i32(332)
+ sink1 = *p
+ }
}
-_394:
{
p := &_yymsp
*p = (*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 16*uintptr(_yysize-i32(1))))
- sink32 = *p
+ sink34 = *p
}
*(**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser)) + uintptr(0 /* X0 */))))) = _yymsp
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp)) + uintptr(0 /* X0 */))) = uint16(_yyact)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yymsp)) + uintptr(2 /* X1 */))) = uint8(_yygoto)
_yyTraceShift(tls, _yypParser, _yyact)
goto _395
-
_393:
func() {
if _yyact != i32(1333) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(138929), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(28056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(138929), unsafe.Pointer((*int8)(unsafe.Pointer(&_yy_reduceØ00__func__Ø000))), unsafe.Pointer(str(27847)))
crt.X__builtin_abort(tls)
}
}()
{
p := (**XyyStackEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_yypParser)) + uintptr(0 /* X0 */)))))
*p = (*XyyStackEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 16*uintptr(_yysize)))
- sink32 = *p
+ sink34 = *p
}
_yy_accept(tls, _yypParser)
_395:
+ _ = _4_yylhsminor
+ _ = _34_v
+ _ = _35_v
+ _ = _70_dest
+ _ = _75_x
+ _ = _80_s
+ _ = _148_t
+ _ = _209_all
}
var _yyRuleInfo [332]struct {
X0 uint8
X1 uint8
-} // sqlite3.c:137291:3
+}
func init() {
_yyRuleInfo = [332]struct {
X0 uint8
X1 uint8
- }{t33{X0: u8(147), X1: u8(1)}, t33{X0: u8(147), X1: u8(3)}, t33{X0: u8(148), X1: u8(1)}, t33{X0: u8(149), X1: u8(3)}, t33{X0: u8(150), X1: u8(0)}, t33{X0: u8(150), X1: u8(1)}, t33{X0: u8(150), X1: u8(1)}, t33{X0: u8(150), X1: u8(1)}, t33{X0: u8(149), X1: u8(2)}, t33{X0: u8(149), X1: u8(2)}, t33{X0: u8(149), X1: u8(2)}, t33{X0: u8(149), X1: u8(2)}, t33{X0: u8(149), X1: u8(3)}, t33{X0: u8(149), X1: u8(5)}, t33{X0: u8(154), X1: u8(6)}, t33{X0: u8(156), X1: u8(1)}, t33{X0: u8(158), X1: u8(0)}, t33{X0: u8(158), X1: u8(3)}, t33{X0: u8(157), X1: u8(1)}, t33{X0: u8(157), X1: u8(0)}, t33{X0: u8(155), X1: u8(5)}, t33{X0: u8(155), X1: u8(2)}, t33{X0: u8(162), X1: u8(0)}, t33{X0: u8(162), X1: u8(2)}, t33{X0: u8(164), X1: u8(2)}, t33{X0: u8(166), X1: u8(0)}, t33{X0: u8(166), X1: u8(4)}, t33{X0: u8(166), X1: u8(6)}, t33{X0: u8(167), X1: u8(2)}, t33{X0: u8(171), X1: u8(2)}, t33{X0: u8(171), X1: u8(2)}, t33{X0: u8(171), X1: u8(4)}, t33{X0: u8(171), X1: u8(3)}, t33{X0: u8(171), X1: u8(3)}, t33{X0: u8(171), X1: u8(2)}, t33{X0: u8(171), X1: u8(3)}, t33{X0: u8(171), X1: u8(5)}, t33{X0: u8(171), X1: u8(2)}, t33{X0: u8(171), X1: u8(4)}, t33{X0: u8(171), X1: u8(4)}, t33{X0: u8(171), X1: u8(1)}, t33{X0: u8(171), X1: u8(2)}, t33{X0: u8(176), X1: u8(0)}, t33{X0: u8(176), X1: u8(1)}, t33{X0: u8(178), X1: u8(0)}, t33{X0: u8(178), X1: u8(2)}, t33{X0: u8(180), X1: u8(2)}, t33{X0: u8(180), X1: u8(3)}, t33{X0: u8(180), X1: u8(3)}, t33{X0: u8(180), X1: u8(3)}, t33{X0: u8(181), X1: u8(2)}, t33{X0: u8(181), X1: u8(2)}, t33{X0: u8(181), X1: u8(1)}, t33{X0: u8(181), X1: u8(1)}, t33{X0: u8(181), X1: u8(2)}, t33{X0: u8(179), X1: u8(3)}, t33{X0: u8(179), X1: u8(2)}, t33{X0: u8(182), X1: u8(0)}, t33{X0: u8(182), X1: u8(2)}, t33{X0: u8(182), X1: u8(2)}, t33{X0: u8(161), X1: u8(0)}, t33{X0: u8(184), X1: u8(1)}, t33{X0: u8(185), X1: u8(2)}, t33{X0: u8(185), X1: u8(7)}, t33{X0: u8(185), X1: u8(5)}, t33{X0: u8(185), X1: u8(5)}, t33{X0: u8(185), X1: u8(10)}, t33{X0: u8(188), X1: u8(0)}, t33{X0: u8(174), X1: u8(0)}, t33{X0: u8(174), X1: u8(3)}, t33{X0: u8(189), X1: u8(0)}, t33{X0: u8(189), X1: u8(2)}, t33{X0: u8(190), X1: u8(1)}, t33{X0: u8(190), X1: u8(1)}, t33{X0: u8(149), X1: u8(4)}, t33{X0: u8(192), X1: u8(2)}, t33{X0: u8(192), X1: u8(0)}, t33{X0: u8(149), X1: u8(9)}, t33{X0: u8(149), X1: u8(4)}, t33{X0: u8(149), X1: u8(1)}, t33{X0: u8(163), X1: u8(2)}, t33{X0: u8(194), X1: u8(3)}, t33{X0: u8(197), X1: u8(1)}, t33{X0: u8(197), X1: u8(2)}, t33{X0: u8(197), X1: u8(1)}, t33{X0: u8(195), X1: u8(9)}, t33{X0: u8(206), X1: u8(4)}, t33{X0: u8(206), X1: u8(5)}, t33{X0: u8(198), X1: u8(1)}, t33{X0: u8(198), X1: u8(1)}, t33{X0: u8(198), X1: u8(0)}, t33{X0: u8(209), X1: u8(0)}, t33{X0: u8(199), X1: u8(3)}, t33{X0: u8(199), X1: u8(2)}, t33{X0: u8(199), X1: u8(4)}, t33{X0: u8(210), X1: u8(2)}, t33{X0: u8(210), X1: u8(0)}, t33{X0: u8(200), X1: u8(0)}, t33{X0: u8(200), X1: u8(2)}, t33{X0: u8(212), X1: u8(2)}, t33{X0: u8(212), X1: u8(0)}, t33{X0: u8(211), X1: u8(7)}, t33{X0: u8(211), X1: u8(9)}, t33{X0: u8(211), X1: u8(7)}, t33{X0: u8(211), X1: u8(7)}, t33{X0: u8(159), X1: u8(0)}, t33{X0: u8(159), X1: u8(2)}, t33{X0: u8(193), X1: u8(2)}, t33{X0: u8(213), X1: u8(1)}, t33{X0: u8(213), X1: u8(2)}, t33{X0: u8(213), X1: u8(3)}, t33{X0: u8(213), X1: u8(4)}, t33{X0: u8(215), X1: u8(2)}, t33{X0: u8(215), X1: u8(0)}, t33{X0: u8(214), X1: u8(0)}, t33{X0: u8(214), X1: u8(3)}, t33{X0: u8(214), X1: u8(2)}, t33{X0: u8(216), X1: u8(4)}, t33{X0: u8(216), X1: u8(0)}, t33{X0: u8(204), X1: u8(0)}, t33{X0: u8(204), X1: u8(3)}, t33{X0: u8(186), X1: u8(4)}, t33{X0: u8(186), X1: u8(2)}, t33{X0: u8(175), X1: u8(1)}, t33{X0: u8(175), X1: u8(1)}, t33{X0: u8(175), X1: u8(0)}, t33{X0: u8(202), X1: u8(0)}, t33{X0: u8(202), X1: u8(3)}, t33{X0: u8(203), X1: u8(0)}, t33{X0: u8(203), X1: u8(2)}, t33{X0: u8(205), X1: u8(0)}, t33{X0: u8(205), X1: u8(2)}, t33{X0: u8(205), X1: u8(4)}, t33{X0: u8(205), X1: u8(4)}, t33{X0: u8(149), X1: u8(6)}, t33{X0: u8(201), X1: u8(0)}, t33{X0: u8(201), X1: u8(2)}, t33{X0: u8(149), X1: u8(8)}, t33{X0: u8(218), X1: u8(5)}, t33{X0: u8(218), X1: u8(7)}, t33{X0: u8(218), X1: u8(3)}, t33{X0: u8(218), X1: u8(5)}, t33{X0: u8(149), X1: u8(6)}, t33{X0: u8(149), X1: u8(7)}, t33{X0: u8(219), X1: u8(2)}, t33{X0: u8(219), X1: u8(1)}, t33{X0: u8(220), X1: u8(0)}, t33{X0: u8(220), X1: u8(3)}, t33{X0: u8(217), X1: u8(3)}, t33{X0: u8(217), X1: u8(1)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(172), X1: u8(1)}, t33{X0: u8(173), X1: u8(1)}, t33{X0: u8(173), X1: u8(1)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(172), X1: u8(1)}, t33{X0: u8(172), X1: u8(1)}, t33{X0: u8(172), X1: u8(1)}, t33{X0: u8(173), X1: u8(1)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(6)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(173), X1: u8(4)}, t33{X0: u8(172), X1: u8(1)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(221), X1: u8(2)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(173), X1: u8(2)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(4)}, t33{X0: u8(173), X1: u8(2)}, t33{X0: u8(173), X1: u8(2)}, t33{X0: u8(173), X1: u8(2)}, t33{X0: u8(173), X1: u8(2)}, t33{X0: u8(222), X1: u8(1)}, t33{X0: u8(222), X1: u8(2)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(223), X1: u8(1)}, t33{X0: u8(223), X1: u8(2)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(173), X1: u8(3)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(173), X1: u8(4)}, t33{X0: u8(173), X1: u8(5)}, t33{X0: u8(226), X1: u8(5)}, t33{X0: u8(226), X1: u8(4)}, t33{X0: u8(227), X1: u8(2)}, t33{X0: u8(227), X1: u8(0)}, t33{X0: u8(225), X1: u8(1)}, t33{X0: u8(225), X1: u8(0)}, t33{X0: u8(208), X1: u8(0)}, t33{X0: u8(207), X1: u8(3)}, t33{X0: u8(207), X1: u8(1)}, t33{X0: u8(224), X1: u8(0)}, t33{X0: u8(224), X1: u8(3)}, t33{X0: u8(149), X1: u8(12)}, t33{X0: u8(228), X1: u8(1)}, t33{X0: u8(228), X1: u8(0)}, t33{X0: u8(177), X1: u8(0)}, t33{X0: u8(177), X1: u8(3)}, t33{X0: u8(187), X1: u8(5)}, t33{X0: u8(187), X1: u8(3)}, t33{X0: u8(229), X1: u8(0)}, t33{X0: u8(229), X1: u8(2)}, t33{X0: u8(149), X1: u8(4)}, t33{X0: u8(149), X1: u8(1)}, t33{X0: u8(149), X1: u8(2)}, t33{X0: u8(149), X1: u8(3)}, t33{X0: u8(149), X1: u8(5)}, t33{X0: u8(149), X1: u8(6)}, t33{X0: u8(149), X1: u8(5)}, t33{X0: u8(149), X1: u8(6)}, t33{X0: u8(169), X1: u8(2)}, t33{X0: u8(170), X1: u8(2)}, t33{X0: u8(149), X1: u8(5)}, t33{X0: u8(231), X1: u8(11)}, t33{X0: u8(233), X1: u8(1)}, t33{X0: u8(233), X1: u8(1)}, t33{X0: u8(233), X1: u8(2)}, t33{X0: u8(233), X1: u8(0)}, t33{X0: u8(234), X1: u8(1)}, t33{X0: u8(234), X1: u8(1)}, t33{X0: u8(234), X1: u8(3)}, t33{X0: u8(236), X1: u8(0)}, t33{X0: u8(236), X1: u8(2)}, t33{X0: u8(232), X1: u8(3)}, t33{X0: u8(232), X1: u8(2)}, t33{X0: u8(238), X1: u8(3)}, t33{X0: u8(239), X1: u8(3)}, t33{X0: u8(239), X1: u8(2)}, t33{X0: u8(237), X1: u8(7)}, t33{X0: u8(237), X1: u8(5)}, t33{X0: u8(237), X1: u8(5)}, t33{X0: u8(237), X1: u8(1)}, t33{X0: u8(173), X1: u8(4)}, t33{X0: u8(173), X1: u8(6)}, t33{X0: u8(191), X1: u8(1)}, t33{X0: u8(191), X1: u8(1)}, t33{X0: u8(191), X1: u8(1)}, t33{X0: u8(149), X1: u8(4)}, t33{X0: u8(149), X1: u8(6)}, t33{X0: u8(149), X1: u8(3)}, t33{X0: u8(241), X1: u8(0)}, t33{X0: u8(241), X1: u8(2)}, t33{X0: u8(149), X1: u8(1)}, t33{X0: u8(149), X1: u8(3)}, t33{X0: u8(149), X1: u8(1)}, t33{X0: u8(149), X1: u8(3)}, t33{X0: u8(149), X1: u8(6)}, t33{X0: u8(149), X1: u8(7)}, t33{X0: u8(242), X1: u8(1)}, t33{X0: u8(149), X1: u8(1)}, t33{X0: u8(149), X1: u8(4)}, t33{X0: u8(244), X1: u8(8)}, t33{X0: u8(246), X1: u8(0)}, t33{X0: u8(247), X1: u8(1)}, t33{X0: u8(247), X1: u8(3)}, t33{X0: u8(248), X1: u8(1)}, t33{X0: u8(196), X1: u8(0)}, t33{X0: u8(196), X1: u8(2)}, t33{X0: u8(196), X1: u8(3)}, t33{X0: u8(250), X1: u8(6)}, t33{X0: u8(250), X1: u8(8)}, t33{X0: u8(144), X1: u8(1)}, t33{X0: u8(145), X1: u8(2)}, t33{X0: u8(145), X1: u8(1)}, t33{X0: u8(146), X1: u8(1)}, t33{X0: u8(146), X1: u8(3)}, t33{X0: u8(147), X1: u8(0)}, t33{X0: u8(151), X1: u8(0)}, t33{X0: u8(151), X1: u8(1)}, t33{X0: u8(151), X1: u8(2)}, t33{X0: u8(153), X1: u8(1)}, t33{X0: u8(153), X1: u8(0)}, t33{X0: u8(149), X1: u8(2)}, t33{X0: u8(160), X1: u8(4)}, t33{X0: u8(160), X1: u8(2)}, t33{X0: u8(152), X1: u8(1)}, t33{X0: u8(152), X1: u8(1)}, t33{X0: u8(152), X1: u8(1)}, t33{X0: u8(166), X1: u8(1)}, t33{X0: u8(167), X1: u8(1)}, t33{X0: u8(168), X1: u8(1)}, t33{X0: u8(168), X1: u8(1)}, t33{X0: u8(165), X1: u8(2)}, t33{X0: u8(165), X1: u8(0)}, t33{X0: u8(171), X1: u8(2)}, t33{X0: u8(161), X1: u8(2)}, t33{X0: u8(183), X1: u8(3)}, t33{X0: u8(183), X1: u8(1)}, t33{X0: u8(184), X1: u8(0)}, t33{X0: u8(188), X1: u8(1)}, t33{X0: u8(190), X1: u8(1)}, t33{X0: u8(194), X1: u8(1)}, t33{X0: u8(195), X1: u8(1)}, t33{X0: u8(209), X1: u8(2)}, t33{X0: u8(210), X1: u8(1)}, t33{X0: u8(173), X1: u8(1)}, t33{X0: u8(221), X1: u8(1)}, t33{X0: u8(208), X1: u8(1)}, t33{X0: u8(230), X1: u8(1)}, t33{X0: u8(230), X1: u8(1)}, t33{X0: u8(230), X1: u8(1)}, t33{X0: u8(230), X1: u8(1)}, t33{X0: u8(230), X1: u8(1)}, t33{X0: u8(169), X1: u8(1)}, t33{X0: u8(235), X1: u8(0)}, t33{X0: u8(235), X1: u8(3)}, t33{X0: u8(238), X1: u8(1)}, t33{X0: u8(239), X1: u8(0)}, t33{X0: u8(240), X1: u8(1)}, t33{X0: u8(240), X1: u8(0)}, t33{X0: u8(243), X1: u8(0)}, t33{X0: u8(243), X1: u8(1)}, t33{X0: u8(245), X1: u8(1)}, t33{X0: u8(245), X1: u8(3)}, t33{X0: u8(246), X1: u8(2)}, t33{X0: u8(249), X1: u8(0)}, t33{X0: u8(249), X1: u8(4)}, t33{X0: u8(249), X1: u8(2)}}
+ }{t35{X0: u8(147), X1: u8(1)}, t35{X0: u8(147), X1: u8(3)}, t35{X0: u8(148), X1: u8(1)}, t35{X0: u8(149), X1: u8(3)}, t35{X0: u8(150), X1: u8(0)}, t35{X0: u8(150), X1: u8(1)}, t35{X0: u8(150), X1: u8(1)}, t35{X0: u8(150), X1: u8(1)}, t35{X0: u8(149), X1: u8(2)}, t35{X0: u8(149), X1: u8(2)}, t35{X0: u8(149), X1: u8(2)}, t35{X0: u8(149), X1: u8(2)}, t35{X0: u8(149), X1: u8(3)}, t35{X0: u8(149), X1: u8(5)}, t35{X0: u8(154), X1: u8(6)}, t35{X0: u8(156), X1: u8(1)}, t35{X0: u8(158), X1: u8(0)}, t35{X0: u8(158), X1: u8(3)}, t35{X0: u8(157), X1: u8(1)}, t35{X0: u8(157), X1: u8(0)}, t35{X0: u8(155), X1: u8(5)}, t35{X0: u8(155), X1: u8(2)}, t35{X0: u8(162), X1: u8(0)}, t35{X0: u8(162), X1: u8(2)}, t35{X0: u8(164), X1: u8(2)}, t35{X0: u8(166), X1: u8(0)}, t35{X0: u8(166), X1: u8(4)}, t35{X0: u8(166), X1: u8(6)}, t35{X0: u8(167), X1: u8(2)}, t35{X0: u8(171), X1: u8(2)}, t35{X0: u8(171), X1: u8(2)}, t35{X0: u8(171), X1: u8(4)}, t35{X0: u8(171), X1: u8(3)}, t35{X0: u8(171), X1: u8(3)}, t35{X0: u8(171), X1: u8(2)}, t35{X0: u8(171), X1: u8(3)}, t35{X0: u8(171), X1: u8(5)}, t35{X0: u8(171), X1: u8(2)}, t35{X0: u8(171), X1: u8(4)}, t35{X0: u8(171), X1: u8(4)}, t35{X0: u8(171), X1: u8(1)}, t35{X0: u8(171), X1: u8(2)}, t35{X0: u8(176), X1: u8(0)}, t35{X0: u8(176), X1: u8(1)}, t35{X0: u8(178), X1: u8(0)}, t35{X0: u8(178), X1: u8(2)}, t35{X0: u8(180), X1: u8(2)}, t35{X0: u8(180), X1: u8(3)}, t35{X0: u8(180), X1: u8(3)}, t35{X0: u8(180), X1: u8(3)}, t35{X0: u8(181), X1: u8(2)}, t35{X0: u8(181), X1: u8(2)}, t35{X0: u8(181), X1: u8(1)}, t35{X0: u8(181), X1: u8(1)}, t35{X0: u8(181), X1: u8(2)}, t35{X0: u8(179), X1: u8(3)}, t35{X0: u8(179), X1: u8(2)}, t35{X0: u8(182), X1: u8(0)}, t35{X0: u8(182), X1: u8(2)}, t35{X0: u8(182), X1: u8(2)}, t35{X0: u8(161), X1: u8(0)}, t35{X0: u8(184), X1: u8(1)}, t35{X0: u8(185), X1: u8(2)}, t35{X0: u8(185), X1: u8(7)}, t35{X0: u8(185), X1: u8(5)}, t35{X0: u8(185), X1: u8(5)}, t35{X0: u8(185), X1: u8(10)}, t35{X0: u8(188), X1: u8(0)}, t35{X0: u8(174), X1: u8(0)}, t35{X0: u8(174), X1: u8(3)}, t35{X0: u8(189), X1: u8(0)}, t35{X0: u8(189), X1: u8(2)}, t35{X0: u8(190), X1: u8(1)}, t35{X0: u8(190), X1: u8(1)}, t35{X0: u8(149), X1: u8(4)}, t35{X0: u8(192), X1: u8(2)}, t35{X0: u8(192), X1: u8(0)}, t35{X0: u8(149), X1: u8(9)}, t35{X0: u8(149), X1: u8(4)}, t35{X0: u8(149), X1: u8(1)}, t35{X0: u8(163), X1: u8(2)}, t35{X0: u8(194), X1: u8(3)}, t35{X0: u8(197), X1: u8(1)}, t35{X0: u8(197), X1: u8(2)}, t35{X0: u8(197), X1: u8(1)}, t35{X0: u8(195), X1: u8(9)}, t35{X0: u8(206), X1: u8(4)}, t35{X0: u8(206), X1: u8(5)}, t35{X0: u8(198), X1: u8(1)}, t35{X0: u8(198), X1: u8(1)}, t35{X0: u8(198), X1: u8(0)}, t35{X0: u8(209), X1: u8(0)}, t35{X0: u8(199), X1: u8(3)}, t35{X0: u8(199), X1: u8(2)}, t35{X0: u8(199), X1: u8(4)}, t35{X0: u8(210), X1: u8(2)}, t35{X0: u8(210), X1: u8(0)}, t35{X0: u8(200), X1: u8(0)}, t35{X0: u8(200), X1: u8(2)}, t35{X0: u8(212), X1: u8(2)}, t35{X0: u8(212), X1: u8(0)}, t35{X0: u8(211), X1: u8(7)}, t35{X0: u8(211), X1: u8(9)}, t35{X0: u8(211), X1: u8(7)}, t35{X0: u8(211), X1: u8(7)}, t35{X0: u8(159), X1: u8(0)}, t35{X0: u8(159), X1: u8(2)}, t35{X0: u8(193), X1: u8(2)}, t35{X0: u8(213), X1: u8(1)}, t35{X0: u8(213), X1: u8(2)}, t35{X0: u8(213), X1: u8(3)}, t35{X0: u8(213), X1: u8(4)}, t35{X0: u8(215), X1: u8(2)}, t35{X0: u8(215), X1: u8(0)}, t35{X0: u8(214), X1: u8(0)}, t35{X0: u8(214), X1: u8(3)}, t35{X0: u8(214), X1: u8(2)}, t35{X0: u8(216), X1: u8(4)}, t35{X0: u8(216), X1: u8(0)}, t35{X0: u8(204), X1: u8(0)}, t35{X0: u8(204), X1: u8(3)}, t35{X0: u8(186), X1: u8(4)}, t35{X0: u8(186), X1: u8(2)}, t35{X0: u8(175), X1: u8(1)}, t35{X0: u8(175), X1: u8(1)}, t35{X0: u8(175), X1: u8(0)}, t35{X0: u8(202), X1: u8(0)}, t35{X0: u8(202), X1: u8(3)}, t35{X0: u8(203), X1: u8(0)}, t35{X0: u8(203), X1: u8(2)}, t35{X0: u8(205), X1: u8(0)}, t35{X0: u8(205), X1: u8(2)}, t35{X0: u8(205), X1: u8(4)}, t35{X0: u8(205), X1: u8(4)}, t35{X0: u8(149), X1: u8(6)}, t35{X0: u8(201), X1: u8(0)}, t35{X0: u8(201), X1: u8(2)}, t35{X0: u8(149), X1: u8(8)}, t35{X0: u8(218), X1: u8(5)}, t35{X0: u8(218), X1: u8(7)}, t35{X0: u8(218), X1: u8(3)}, t35{X0: u8(218), X1: u8(5)}, t35{X0: u8(149), X1: u8(6)}, t35{X0: u8(149), X1: u8(7)}, t35{X0: u8(219), X1: u8(2)}, t35{X0: u8(219), X1: u8(1)}, t35{X0: u8(220), X1: u8(0)}, t35{X0: u8(220), X1: u8(3)}, t35{X0: u8(217), X1: u8(3)}, t35{X0: u8(217), X1: u8(1)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(172), X1: u8(1)}, t35{X0: u8(173), X1: u8(1)}, t35{X0: u8(173), X1: u8(1)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(172), X1: u8(1)}, t35{X0: u8(172), X1: u8(1)}, t35{X0: u8(172), X1: u8(1)}, t35{X0: u8(173), X1: u8(1)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(6)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(173), X1: u8(4)}, t35{X0: u8(172), X1: u8(1)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(221), X1: u8(2)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(173), X1: u8(2)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(4)}, t35{X0: u8(173), X1: u8(2)}, t35{X0: u8(173), X1: u8(2)}, t35{X0: u8(173), X1: u8(2)}, t35{X0: u8(173), X1: u8(2)}, t35{X0: u8(222), X1: u8(1)}, t35{X0: u8(222), X1: u8(2)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(223), X1: u8(1)}, t35{X0: u8(223), X1: u8(2)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(173), X1: u8(3)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(173), X1: u8(4)}, t35{X0: u8(173), X1: u8(5)}, t35{X0: u8(226), X1: u8(5)}, t35{X0: u8(226), X1: u8(4)}, t35{X0: u8(227), X1: u8(2)}, t35{X0: u8(227), X1: u8(0)}, t35{X0: u8(225), X1: u8(1)}, t35{X0: u8(225), X1: u8(0)}, t35{X0: u8(208), X1: u8(0)}, t35{X0: u8(207), X1: u8(3)}, t35{X0: u8(207), X1: u8(1)}, t35{X0: u8(224), X1: u8(0)}, t35{X0: u8(224), X1: u8(3)}, t35{X0: u8(149), X1: u8(12)}, t35{X0: u8(228), X1: u8(1)}, t35{X0: u8(228), X1: u8(0)}, t35{X0: u8(177), X1: u8(0)}, t35{X0: u8(177), X1: u8(3)}, t35{X0: u8(187), X1: u8(5)}, t35{X0: u8(187), X1: u8(3)}, t35{X0: u8(229), X1: u8(0)}, t35{X0: u8(229), X1: u8(2)}, t35{X0: u8(149), X1: u8(4)}, t35{X0: u8(149), X1: u8(1)}, t35{X0: u8(149), X1: u8(2)}, t35{X0: u8(149), X1: u8(3)}, t35{X0: u8(149), X1: u8(5)}, t35{X0: u8(149), X1: u8(6)}, t35{X0: u8(149), X1: u8(5)}, t35{X0: u8(149), X1: u8(6)}, t35{X0: u8(169), X1: u8(2)}, t35{X0: u8(170), X1: u8(2)}, t35{X0: u8(149), X1: u8(5)}, t35{X0: u8(231), X1: u8(11)}, t35{X0: u8(233), X1: u8(1)}, t35{X0: u8(233), X1: u8(1)}, t35{X0: u8(233), X1: u8(2)}, t35{X0: u8(233), X1: u8(0)}, t35{X0: u8(234), X1: u8(1)}, t35{X0: u8(234), X1: u8(1)}, t35{X0: u8(234), X1: u8(3)}, t35{X0: u8(236), X1: u8(0)}, t35{X0: u8(236), X1: u8(2)}, t35{X0: u8(232), X1: u8(3)}, t35{X0: u8(232), X1: u8(2)}, t35{X0: u8(238), X1: u8(3)}, t35{X0: u8(239), X1: u8(3)}, t35{X0: u8(239), X1: u8(2)}, t35{X0: u8(237), X1: u8(7)}, t35{X0: u8(237), X1: u8(5)}, t35{X0: u8(237), X1: u8(5)}, t35{X0: u8(237), X1: u8(1)}, t35{X0: u8(173), X1: u8(4)}, t35{X0: u8(173), X1: u8(6)}, t35{X0: u8(191), X1: u8(1)}, t35{X0: u8(191), X1: u8(1)}, t35{X0: u8(191), X1: u8(1)}, t35{X0: u8(149), X1: u8(4)}, t35{X0: u8(149), X1: u8(6)}, t35{X0: u8(149), X1: u8(3)}, t35{X0: u8(241), X1: u8(0)}, t35{X0: u8(241), X1: u8(2)}, t35{X0: u8(149), X1: u8(1)}, t35{X0: u8(149), X1: u8(3)}, t35{X0: u8(149), X1: u8(1)}, t35{X0: u8(149), X1: u8(3)}, t35{X0: u8(149), X1: u8(6)}, t35{X0: u8(149), X1: u8(7)}, t35{X0: u8(242), X1: u8(1)}, t35{X0: u8(149), X1: u8(1)}, t35{X0: u8(149), X1: u8(4)}, t35{X0: u8(244), X1: u8(8)}, t35{X0: u8(246), X1: u8(0)}, t35{X0: u8(247), X1: u8(1)}, t35{X0: u8(247), X1: u8(3)}, t35{X0: u8(248), X1: u8(1)}, t35{X0: u8(196), X1: u8(0)}, t35{X0: u8(196), X1: u8(2)}, t35{X0: u8(196), X1: u8(3)}, t35{X0: u8(250), X1: u8(6)}, t35{X0: u8(250), X1: u8(8)}, t35{X0: u8(144), X1: u8(1)}, t35{X0: u8(145), X1: u8(2)}, t35{X0: u8(145), X1: u8(1)}, t35{X0: u8(146), X1: u8(1)}, t35{X0: u8(146), X1: u8(3)}, t35{X0: u8(147), X1: u8(0)}, t35{X0: u8(151), X1: u8(0)}, t35{X0: u8(151), X1: u8(1)}, t35{X0: u8(151), X1: u8(2)}, t35{X0: u8(153), X1: u8(1)}, t35{X0: u8(153), X1: u8(0)}, t35{X0: u8(149), X1: u8(2)}, t35{X0: u8(160), X1: u8(4)}, t35{X0: u8(160), X1: u8(2)}, t35{X0: u8(152), X1: u8(1)}, t35{X0: u8(152), X1: u8(1)}, t35{X0: u8(152), X1: u8(1)}, t35{X0: u8(166), X1: u8(1)}, t35{X0: u8(167), X1: u8(1)}, t35{X0: u8(168), X1: u8(1)}, t35{X0: u8(168), X1: u8(1)}, t35{X0: u8(165), X1: u8(2)}, t35{X0: u8(165), X1: u8(0)}, t35{X0: u8(171), X1: u8(2)}, t35{X0: u8(161), X1: u8(2)}, t35{X0: u8(183), X1: u8(3)}, t35{X0: u8(183), X1: u8(1)}, t35{X0: u8(184), X1: u8(0)}, t35{X0: u8(188), X1: u8(1)}, t35{X0: u8(190), X1: u8(1)}, t35{X0: u8(194), X1: u8(1)}, t35{X0: u8(195), X1: u8(1)}, t35{X0: u8(209), X1: u8(2)}, t35{X0: u8(210), X1: u8(1)}, t35{X0: u8(173), X1: u8(1)}, t35{X0: u8(221), X1: u8(1)}, t35{X0: u8(208), X1: u8(1)}, t35{X0: u8(230), X1: u8(1)}, t35{X0: u8(230), X1: u8(1)}, t35{X0: u8(230), X1: u8(1)}, t35{X0: u8(230), X1: u8(1)}, t35{X0: u8(230), X1: u8(1)}, t35{X0: u8(169), X1: u8(1)}, t35{X0: u8(235), X1: u8(0)}, t35{X0: u8(235), X1: u8(3)}, t35{X0: u8(238), X1: u8(1)}, t35{X0: u8(239), X1: u8(0)}, t35{X0: u8(240), X1: u8(1)}, t35{X0: u8(240), X1: u8(0)}, t35{X0: u8(243), X1: u8(0)}, t35{X0: u8(243), X1: u8(1)}, t35{X0: u8(245), X1: u8(1)}, t35{X0: u8(245), X1: u8(3)}, t35{X0: u8(246), X1: u8(2)}, t35{X0: u8(249), X1: u8(0)}, t35{X0: u8(249), X1: u8(4)}, t35{X0: u8(249), X1: u8(2)}}
}
-var _yyRuleName [332]*int8 // sqlite3.c:136518:19
+var _yyRuleName [332]*int8
func init() {
- _yyRuleName = [332]*int8{str(28084), str(28104), str(28136), str(28152), str(28188), str(28204), str(28228), str(28252), str(28276), str(28304), str(28328), str(28356), str(28380), str(28416), str(28464), str(28524), str(28544), str(28560), str(28592), str(28608), str(28620), str(28688), str(28720), str(28740), str(28772), str(28800), str(28816), str(28852), str(28904), str(28936), str(28960), str(28984), str(29016), str(29044), str(29076), str(29108), str(29136), str(29184), str(29208), str(29236), str(29280), str(29308), str(29336), str(29348), str(29372), str(29384), str(29412), str(29432), str(29460), str(29488), str(29516), str(29536), str(29560), str(29580), str(29600), str(29624), str(29684), str(29740), str(29768), str(29816), str(29864), str(29884), str(29908), str(29932), str(29984), str(30024), str(30060), str(30152), str(30176), str(30188), str(30224), str(30236), str(30264), str(30288), str(30312), str(30352), str(30376), str(30392), str(30464), str(30500), str(30516), str(30548), str(30604), str(30632), str(30664), str(30700), str(30804), str(30840), str(30880), str(30904), str(30924), str(30940), str(30952), str(30980), str(31008), str(31040), str(31056), str(31064), str(31076), str(31104), str(31140), str(31156), str(31224), str(31296), str(31356), str(31420), str(31432), str(31448), str(31472), str(31496), str(31520), str(31548), str(31580), str(31600), str(31612), str(31628), str(31660), str(31688), str(31724), str(31740), str(31756), str(31792), str(31836), str(31864), str(31884), str(31904), str(31920), str(31936), str(31972), str(31988), str(32016), str(32032), str(32060), str(32100), str(32136), str(32192), str(32208), str(32236), str(32308), str(32348), str(32396), str(32420), str(32456), str(32512), str(32576), str(32608), str(32632), str(32648), str(32676), str(32704), str(32720), str(32740), str(32756), str(32776), str(32796), str(32816), str(32844), str(32864), str(32880), str(32900), str(32920), str(32952), str(32992), str(33036), str(33068), str(33088), str(33124), str(33148), str(33172), str(33204), str(33232), str(33280), str(33312), str(33348), str(33376), str(33408), str(33436), str(33476), str(33508), str(33532), str(33556), str(33584), str(33604), str(33628), str(33648), str(33668), str(33692), str(33720), str(33760), str(33776), str(33796), str(33832), str(33856), str(33892), str(33936), str(33968), str(34024), str(34076), str(34116), str(34140), str(34156), str(34180), str(34200), str(34216), str(34252), str(34272), str(34292), str(34328), str(34416), str(34440), str(34456), str(34472), str(34504), str(34552), str(34588), str(34600), str(34632), str(34672), str(34688), str(34708), str(34732), str(34764), str(34800), str(34836), str(34876), str(34908), str(34944), str(35004), str(35120), str(35144), str(35168), str(35196), str(35216), str(35248), str(35276), str(35312), str(35328), str(35356), str(35412), str(35452), str(35472), str(35500), str(35524), str(35592), str(35648), str(35700), str(35724), str(35752), str(35792), str(35816), str(35836), str(35856), str(35896), str(35948), str(35984), str(35996), str(36020), str(36036), str(36060), str(36076), str(36100), str(36144), str(36224), str(36260), str(36280), str(36320), str(36388), str(36400), str(36424), str(36456), str(36468), str(36480), str(36504), str(36536), str(36580), str(36636), str(36656), str(36684), str(36704), str(36720), str(36748), str(36760), str(36776), str(36804), str(36836), str(36864), str(36884), str(36924), str(36976), str(37012), str(37032), str(37048), str(37064), str(37088), str(37112), str(37132), str(37156), str(37184), str(37200), str(37224), str(37256), str(37296), str(37316), str(37332), str(37372), str(37400), str(37428), str(37452), str(37480), str(37500), str(37516), str(37544), str(37568), str(37588), str(37604), str(37620), str(37640), str(37660), str(37688), str(37708), str(37740), str(37752), str(37764), str(37796), str(37816), str(37836), str(37864), str(37888), str(37932), str(37968), str(37980), str(38016)}
+ _yyRuleName = [332]*int8{str(27873), str(27893), str(27924), str(27937), str(27971), str(27985), str(28008), str(28032), str(28056), str(28081), str(28103), str(28130), str(28151), str(28184), str(28231), str(28288), str(28308), str(28324), str(28354), str(28368), str(28377), str(28443), str(28475), str(28493), str(28522), str(28550), str(28564), str(28600), str(28649), str(28681), str(28705), str(28728), str(28757), str(28785), str(28814), str(28843), str(28869), str(28916), str(28940), str(28967), str(29011), str(29037), str(29065), str(29077), str(29098), str(29110), str(29137), str(29157), str(29185), str(29213), str(29241), str(29261), str(29284), str(29303), str(29323), str(29344), str(29402), str(29456), str(29483), str(29529), str(29576), str(29593), str(29614), str(29638), str(29690), str(29729), str(29763), str(29853), str(29877), str(29888), str(29923), str(29934), str(29960), str(29983), str(30007), str(30044), str(30067), str(30080), str(30149), str(30185), str(30200), str(30229), str(30284), str(30309), str(30338), str(30374), str(30475), str(30509), str(30548), str(30570), str(30587), str(30600), str(30609), str(30637), str(30662), str(30694), str(30707), str(30714), str(30723), str(30748), str(30781), str(30796), str(30862), str(30931), str(30990), str(31053), str(31062), str(31078), str(31099), str(31121), str(31145), str(31172), str(31202), str(31221), str(31232), str(31248), str(31278), str(31306), str(31339), str(31353), str(31369), str(31403), str(31446), str(31474), str(31492), str(31511), str(31525), str(31541), str(31576), str(31591), str(31618), str(31632), str(31657), str(31694), str(31730), str(31786), str(31800), str(31825), str(31895), str(31932), str(31979), str(32002), str(32035), str(32091), str(32155), str(32184), str(32207), str(32222), str(32250), str(32277), str(32291), str(32311), str(32325), str(32345), str(32362), str(32381), str(32407), str(32427), str(32443), str(32460), str(32478), str(32510), str(32548), str(32592), str(32623), str(32641), str(32677), str(32700), str(32722), str(32753), str(32778), str(32824), str(32854), str(32888), str(32914), str(32943), str(32969), str(33007), str(33036), str(33059), str(33081), str(33107), str(33125), str(33146), str(33166), str(33185), str(33208), str(33235), str(33274), str(33287), str(33304), str(33339), str(33361), str(33394), str(33437), str(33466), str(33521), str(33573), str(33611), str(33635), str(33649), str(33671), str(33688), str(33701), str(33736), str(33755), str(33774), str(33808), str(33893), str(33915), str(33930), str(33946), str(33976), str(34023), str(34056), str(34068), str(34098), str(34135), str(34150), str(34168), str(34191), str(34223), str(34258), str(34294), str(34333), str(34365), str(34399), str(34456), str(34572), str(34596), str(34619), str(34647), str(34664), str(34696), str(34721), str(34756), str(34772), str(34798), str(34853), str(34891), str(34910), str(34936), str(34960), str(35025), str(35080), str(35131), str(35154), str(35182), str(35222), str(35245), str(35265), str(35284), str(35323), str(35375), str(35411), str(35423), str(35444), str(35460), str(35484), str(35500), str(35524), str(35566), str(35643), str(35676), str(35696), str(35734), str(35802), str(35814), str(35835), str(35866), str(35876), str(35885), str(35906), str(35937), str(35979), str(36034), str(36052), str(36077), str(36094), str(36108), str(36135), str(36147), str(36161), str(36187), str(36216), str(36244), str(36262), str(36301), str(36353), str(36388), str(36406), str(36420), str(36435), str(36458), str(36481), str(36501), str(36522), str(36550), str(36563), str(36585), str(36617), str(36656), str(36675), str(36690), str(36730), str(36756), str(36783), str(36804), str(36830), str(36847), str(36861), str(36886), str(36909), str(36928), str(36941), str(36954), str(36971), str(36989), str(37016), str(37035), str(37067), str(37079), str(37091), str(37120), str(37140), str(37157), str(37183), str(37207), str(37249), str(37282), str(37294), str(37328)}
}
-func _sqlite3FinishCoding(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:99828:1
- var _db *Xsqlite3 // sqlite3.c:99829:11
- _ = _db
- var _v *TVdbe // sqlite3.c:99830:8
- _ = _v
- var _3_iDb int32 // sqlite3.c:99869:11
- _ = _3_iDb
- var _3_i int32 // sqlite3.c:99869:16
- _ = _3_i
- var _4_pSchema *XSchema // sqlite3.c:99873:16
- _ = _4_pSchema
- var _5_vtab *int8 // sqlite3.c:99890:14
- _ = _5_vtab
- var _6_pEL *XExprList // sqlite3.c:99908:18
- _ = _6_pEL
+// This routine is called after a single SQL statement has been
+// parsed and a VDBE program to execute that statement has been
+// prepared. This routine puts the finishing touches on the
+// VDBE program and resets the pParse structure for the next
+// parse.
+//
+// Note that if an error occurred, it might be the case that
+// no VDBE code was generated.
+func _sqlite3FinishCoding(tls *crt.TLS, _pParse *XParse) {
+ var _3_iDb, _3_i int32
+ var _5_vtab *int8
+ var _db *Xsqlite3
+ var _4_pSchema *XSchema
+ var _v *TVdbe
+ var _6_pEL *XExprList
func() {
if (*XParse)(_pParse.X39) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99832), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(38040)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99832), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(37352)))
crt.X__builtin_abort(tls)
}
}()
_db = (*Xsqlite3)(_pParse.X0)
- if (_pParse.X6) == 0 {
- goto _2
+ if (_pParse.X6) != 0 {
+ return
}
- return
-
-_2:
if (_db.X17) == 0 && (_pParse.X16) == 0 {
goto _4
}
-
- if (_pParse.X3) != i32(0) {
- goto _5
+ if (_pParse.X3) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(1)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(1)
-_5:
return
-
_4:
_v = _sqlite3GetVdbe(tls, _pParse)
func() {
if (_pParse.X8) != 0 && _sqlite3VdbeAssertMayAbort(tls, _v, int32(_pParse.X9)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99844), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(38064)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99844), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(37373)))
crt.X__builtin_abort(tls)
}
}()
if _v == nil {
goto _9
}
-
_sqlite3VdbeAddOp0(tls, _v, i32(55))
if int32(_db.X17) != i32(0) || (_pParse.X30) == uint32(i32(0)) && (*XExprList)(_pParse.X27) == nil {
goto _12
}
-
func() {
if int32(_sqlite3VdbeGetOp(tls, _v, i32(0)).X0) != i32(51) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99870), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(38136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99870), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(37445)))
crt.X__builtin_abort(tls)
}
}()
@@ -29522,40 +27628,29 @@ _15:
if _3_iDb >= (_db.X5) {
goto _18
}
-
- if bool2int(((_pParse.X30)&(u32(1)<= (_pParse.X56) {
goto _25
}
-
_5_vtab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, *(**XTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse.X67)) + 4*uintptr(_3_i))))))
_sqlite3VdbeAddOp4(tls, _v, i32(155), i32(0), i32(0), i32(0), _5_vtab, i32(-8))
_3_i += 1
goto _22
-
_25:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(416 /* X56 */))) = i32(0)
_codeTableLocks(tls, _pParse)
@@ -29563,7 +27658,6 @@ _25:
if (*XExprList)(_pParse.X27) == nil {
goto _26
}
-
_6_pEL = (*XExprList)(_pParse.X27)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(23 /* X11 */))) = uint8(i32(0))
_3_i = i32(0)
@@ -29571,11 +27665,9 @@ _27:
if _3_i >= (_6_pEL.X0) {
goto _30
}
-
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEL))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i))).X0), *(*int32)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEL))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i))))) + uintptr(16 /* X5 */))))))
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEL))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i))).X0), *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEL))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i))))) + uintptr(16 /* X5 */))))))
_3_i += 1
goto _27
-
_30:
_26:
_sqlite3VdbeGoto(tls, _v, i32(1))
@@ -29584,37 +27676,31 @@ _9:
if _v == nil || (_pParse.X16) != i32(0) || (_db.X17) != 0 {
goto _33
}
-
func() {
if (_pParse.X23) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(38196)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FinishCodingØ00__func__Ø000))), unsafe.Pointer(str(37504)))
crt.X__builtin_abort(tls)
}
}()
- if (*TAggInfo_func)(_pParse.X38) == nil || (_pParse.X17) != i32(0) {
- goto _37
+ if ((*TAggInfo_func)(_pParse.X38) != nil) && ((_pParse.X17) == i32(0)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = i32(1)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = i32(1)
-_37:
_sqlite3VdbeMakeReady(tls, _v, _pParse)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(101)
goto _38
-
_33:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(1)
_38:
}
-var _sqlite3FinishCodingØ00__func__Ø000 [20]int8 // -
+var _sqlite3FinishCodingØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FinishCodingØ00__func__Ø000[0], str(38220), 20)
+ crt.Xstrncpy(nil, &_sqlite3FinishCodingØ00__func__Ø000[0], str(37527), 20)
}
-func _sqlite3GetVdbe(tls *crt.TLS, _pParse *XParse) (r0 *TVdbe) { // sqlite3.c:118368:1
- var _v *TVdbe // sqlite3.c:118369:8
- _ = _v
+func _sqlite3GetVdbe(tls *crt.TLS, _pParse *XParse) (r0 *TVdbe) {
+ var _v *TVdbe
_v = (*TVdbe)(_pParse.X2)
return func() *TVdbe {
if _v != nil {
@@ -29624,46 +27710,34 @@ func _sqlite3GetVdbe(tls *crt.TLS, _pParse *XParse) (r0 *TVdbe) { // sqlite3.c:1
}()
}
-func _allocVdbe(tls *crt.TLS, _pParse *XParse) (r0 *TVdbe) { // sqlite3.c:118358:1
- var _v *TVdbe // sqlite3.c:118359:8
- _ = _v
- _v = store36((**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(8 /* X2 */))))), _sqlite3VdbeCreate(tls, _pParse))
- if _v == nil {
- goto _0
+// Get a VDBE for the given parser context. Create a new one if necessary.
+// If an error occurs, return NULL and leave a message in pParse.
+func _allocVdbe(tls *crt.TLS, _pParse *XParse) (r0 *TVdbe) {
+ var _v *TVdbe
+ _v = store38((**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(8 /* X2 */))))), _sqlite3VdbeCreate(tls, _pParse))
+ if _v != nil {
+ _sqlite3VdbeAddOp2(tls, _v, i32(51), i32(0), i32(1))
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(51), i32(0), i32(1))
-_0:
- if (*XParse)(_pParse.X39) != nil || (int32((*Xsqlite3)(_pParse.X0).X13)&i32(8)) != i32(0) {
- goto _2
+ if ((*XParse)(_pParse.X39) == nil) && ((int32((*Xsqlite3)(_pParse.X0).X13) & i32(8)) == i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(23 /* X11 */))) = uint8(i32(1))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(23 /* X11 */))) = uint8(i32(1))
-_2:
return _v
}
-func _sqlite3VdbeCreate(tls *crt.TLS, _pParse *XParse) (r0 *TVdbe) { // sqlite3.c:71441:1
- var _db *Xsqlite3 // sqlite3.c:71442:11
- _ = _db
- var _p *TVdbe // sqlite3.c:71443:8
- _ = _p
+// Create a new virtual database engine.
+func _sqlite3VdbeCreate(tls *crt.TLS, _pParse *XParse) (r0 *TVdbe) {
+ var _db *Xsqlite3
+ var _p *TVdbe
_db = (*Xsqlite3)(_pParse.X0)
_p = (*TVdbe)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(204))))
- if _p != nil {
- goto _0
+ if _p == nil {
+ return nil
}
- return nil
-
-_0:
crt.Xmemset(tls, (unsafe.Pointer)((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(84 /* X17 */)))), i32(0), u32(120))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _db
- if (*TVdbe)(_db.X1) == nil {
- goto _1
+ if (*TVdbe)(_db.X1) != nil {
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_db.X1) + uintptr(4 /* X1 */))))) = _p
}
-
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_db.X1) + uintptr(4 /* X1 */))))) = _p
-_1:
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = (*TVdbe)(_db.X1)
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = nil
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(4 /* X1 */))))) = _p
@@ -29671,73 +27745,62 @@ _1:
*(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = _pParse
func() {
if (_pParse.X26) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71456), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(38240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71456), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(37547)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pParse.X25) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71457), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(38260)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71457), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(37565)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pParse.X19) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71458), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(38280)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71458), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(37583)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pParse.X20) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71459), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(38300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71459), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCreateØ00__func__Ø000))), unsafe.Pointer(str(37603)))
crt.X__builtin_abort(tls)
}
}()
return _p
}
-var _sqlite3VdbeCreateØ00__func__Ø000 [18]int8 // -
+var _sqlite3VdbeCreateØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeCreateØ00__func__Ø000[0], str(38324), 18)
+ crt.Xstrncpy(nil, &_sqlite3VdbeCreateØ00__func__Ø000[0], str(37624), 18)
}
-func _sqlite3VdbeAddOp2(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32) (r0 int32) { // sqlite3.c:71641:1
+func _sqlite3VdbeAddOp2(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32) (r0 int32) {
return _sqlite3VdbeAddOp3(tls, _p, _op, _p1, _p2, i32(0))
}
-func _sqlite3VdbeAddOp3(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32) (r0 int32) { // sqlite3.c:71590:1
- var _i int32 // sqlite3.c:71591:7
- _ = _i
- var _pOp *XVdbeOp // sqlite3.c:71592:10
- _ = _pOp
- var _2_jj int32 // sqlite3.c:71614:9
- _ = _2_jj
- var _2_kk int32 // sqlite3.c:71614:13
- _ = _2_kk
- var _2_pParse *XParse // sqlite3.c:71615:11
- _ = _2_pParse
- var _3_x *TyColCache // sqlite3.c:71617:24
- _ = _3_x
+func _sqlite3VdbeAddOp3(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32) (r0 int32) {
+ var _i, _2_jj, _2_kk int32
+ var _2_pParse *XParse
+ var _pOp *XVdbeOp
+ var _3_x *TyColCache
_i = _p.X27
func() {
if (_p.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71595), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOp3Ø00__func__Ø000))), unsafe.Pointer(str(38344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71595), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOp3Ø00__func__Ø000))), unsafe.Pointer(str(37642)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _op < i32(0) || _op >= i32(255) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71596), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOp3Ø00__func__Ø000))), unsafe.Pointer(str(38372)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71596), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOp3Ø00__func__Ø000))), unsafe.Pointer(str(37668)))
crt.X__builtin_abort(tls)
}
}()
- if ((*XParse)(_p.X3).X19) > _i {
- goto _5
+ if ((*XParse)(_p.X3).X19) <= _i {
+ return _growOp3(tls, _p, _op, _p1, _p2, _p3)
}
- return _growOp3(tls, _p, _op, _p1, _p2, _p3)
-
-_5:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(128 /* X27 */))) += 1
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_i)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(_op)
@@ -29745,80 +27808,90 @@ _5:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = _p1
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(8 /* X4 */))) = _p2
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(12 /* X5 */))) = _p3
- *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = nil
+ *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = nil
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(0))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(20 /* X7 */))) = nil
if (((*Xsqlite3)(_p.X0).X6) & i32(4096)) == 0 {
goto _6
}
-
_2_pParse = (*XParse)(_p.X3)
_2_jj = store1(&_2_kk, i32(0))
_7:
if _2_jj >= int32(_2_pParse.X13) {
goto _10
}
-
_3_x = (*TyColCache)(unsafe.Pointer(uintptr(unsafe.Pointer((*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pParse))+uintptr(160 /* X48 */))))))) + uintptr(unsafe.Pointer((*TyColCache)(unsafe.Pointer(uintptr(unsafe.Pointer((*TyColCache)(unsafe.Pointer(uintptr(_2_jj)))))*uintptr(unsafe.Pointer((*TyColCache)(unsafe.Pointer(uintptr(20)))))))))))
- crt.Xprintf(tls, str(38392), _3_x.X4, _3_x.X0, int32(_3_x.X1))
+ crt.Xprintf(tls, str(37685), _3_x.X4, _3_x.X0, int32(_3_x.X1))
_2_kk += 1
_2_jj += 1
goto _7
-
_10:
- if _2_kk == 0 {
- goto _11
+ if _2_kk != 0 {
+ crt.Xprintf(tls, str(37700))
}
-
- crt.Xprintf(tls, str(38408))
-_11:
_sqlite3VdbePrintOp(tls, nil, _i, (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_i))))
_test_addop_breakpoint(tls)
_6:
return _i
}
-var _sqlite3VdbeAddOp3Ø00__func__Ø000 [18]int8 // -
+var _sqlite3VdbeAddOp3Ø00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeAddOp3Ø00__func__Ø000[0], str(38412), 18)
+ crt.Xstrncpy(nil, &_sqlite3VdbeAddOp3Ø00__func__Ø000[0], str(37702), 18)
}
-func _growOp3(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32) (r0 int32) { // sqlite3.c:71584:1
+// Add a new instruction to the list of instructions current in the
+// VDBE. Return the address of the new instruction.
+//
+// Parameters:
+//
+// p Pointer to the VDBE
+//
+// op The opcode for this instruction
+//
+// p1, p2, p3 Operands
+//
+// Use the sqlite3VdbeResolveLabel() function to fix an address and
+// the sqlite3VdbeChangeP4() function to change the value of the P4
+// operand.
+func _growOp3(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32) (r0 int32) {
func() {
if ((*XParse)(_p.X3).X19) > (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71585), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOp3Ø00__func__Ø000))), unsafe.Pointer(str(38432)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71585), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOp3Ø00__func__Ø000))), unsafe.Pointer(str(37720)))
crt.X__builtin_abort(tls)
}
}()
- if _growOpArray(tls, _p, i32(1)) == 0 {
- goto _2
+ if _growOpArray(tls, _p, i32(1)) != 0 {
+ return i32(1)
}
- return i32(1)
-
-_2:
func() {
if ((*XParse)(_p.X3).X19) <= (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71587), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOp3Ø00__func__Ø000))), unsafe.Pointer(str(38460)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71587), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOp3Ø00__func__Ø000))), unsafe.Pointer(str(37748)))
crt.X__builtin_abort(tls)
}
}()
return _sqlite3VdbeAddOp3(tls, _p, _op, _p1, _p2, _p3)
}
-var _growOp3Ø00__func__Ø000 [8]int8 // -
+var _growOp3Ø00__func__Ø000 [8]int8
func init() {
- crt.Xstrncpy(nil, &_growOp3Ø00__func__Ø000[0], str(38488), 8)
+ crt.Xstrncpy(nil, &_growOp3Ø00__func__Ø000[0], str(37775), 8)
}
-func _growOpArray(tls *crt.TLS, _v *TVdbe, _nOp int32) (r0 int32) { // sqlite3.c:71522:1
- var _pNew *XVdbeOp // sqlite3.c:71523:10
- _ = _pNew
- var _p *XParse // sqlite3.c:71524:9
- _ = _p
- var _nNew int32 // sqlite3.c:71536:7
- _ = _nNew
+// Resize the Vdbe.aOp array so that it is at least nOp elements larger
+// than its current size. nOp is guaranteed to be less than or equal
+// to 1024/sizeof(Op).
+//
+// If an out-of-memory error occurs while resizing the array, return
+// SQLITE_NOMEM. In this case Vdbe.aOp and Parse.nOpAlloc remain
+// unchanged (this is so that any opcodes already allocated can be
+// correctly deallocated along with the rest of the Vdbe).
+func _growOpArray(tls *crt.TLS, _v *TVdbe, _nOp int32) (r0 int32) {
+ var _nNew int32
+ var _p *XParse
+ var _pNew *XVdbeOp
_p = (*XParse)(_v.X3)
_nNew = func() int32 {
if (_p.X19) != 0 {
@@ -29827,35 +27900,28 @@ func _growOpArray(tls *crt.TLS, _v *TVdbe, _nOp int32) (r0 int32) { // sqlite3.c
return i32(42)
}()
- if _nNew <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_p.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(5))))) {
- goto _2
+ if _nNew > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_p.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(5))))) {
+ _sqlite3OomFault(tls, (*Xsqlite3)(_p.X0))
+ return i32(7)
}
-
- _sqlite3OomFault(tls, (*Xsqlite3)(_p.X0))
- return i32(7)
-
-_2:
func() {
if uint32(_nOp) > u32(42) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71546), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOpArrayØ00__func__Ø000))), unsafe.Pointer(str(38496)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71546), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOpArrayØ00__func__Ø000))), unsafe.Pointer(str(37783)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nNew < ((_p.X19) + _nOp) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71547), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOpArrayØ00__func__Ø000))), unsafe.Pointer(str(38520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71547), unsafe.Pointer((*int8)(unsafe.Pointer(&_growOpArrayØ00__func__Ø000))), unsafe.Pointer(str(37806)))
crt.X__builtin_abort(tls)
}
}()
_pNew = (*XVdbeOp)(_sqlite3DbRealloc(tls, (*Xsqlite3)(_p.X0), _v.X17, uint64(uint32(_nNew)*u32(24))))
- if _pNew == nil {
- goto _7
+ if _pNew != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X20 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_pNew))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X19 */))) = int32(uint32(_p.X20) / u32(24))
+ *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(84 /* X17 */))))) = _pNew
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X20 */))) = _sqlite3DbMallocSize(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_pNew))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X19 */))) = int32(uint32(_p.X20) / u32(24))
- *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(84 /* X17 */))))) = _pNew
-_7:
return func() int32 {
if _pNew != nil {
return i32(0)
@@ -29864,64 +27930,44 @@ _7:
}()
}
-var _growOpArrayØ00__func__Ø000 [12]int8 // -
+var _growOpArrayØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_growOpArrayØ00__func__Ø000[0], str(38544), 12)
+ crt.Xstrncpy(nil, &_growOpArrayØ00__func__Ø000[0], str(37830), 12)
}
-func _sqlite3VdbePrintOp(tls *crt.TLS, _pOut *crt.XFILE, _pc int32, _pOp *XVdbeOp) { // sqlite3.c:72908:1
- var _zP4 *int8 // sqlite3.c:72909:8
- _ = _zP4
- var _zPtr [50]int8 // sqlite3.c:72910:8
- _ = _zPtr
- var _zCom [100]int8 // sqlite3.c:72911:8
- _ = _zCom
- if _pOut != nil {
- goto _0
+// Print a single opcode. This routine is used for debugging only.
+func _sqlite3VdbePrintOp(tls *crt.TLS, _pOut *crt.XFILE, _pc int32, _pOp *XVdbeOp) {
+ var _zP4 *int8
+ var _zCom [100]int8
+ var _zPtr [50]int8
+ if _pOut == nil {
+ _pOut = (*crt.XFILE)(Xstdout)
}
-
- _pOut = (*crt.XFILE)(Xstdout)
-_0:
_zP4 = _displayP4(tls, _pOp, (*int8)(unsafe.Pointer(&_zPtr)), int32(u32(50)))
_displayComment(tls, _pOp, _zP4, (*int8)(unsafe.Pointer(&_zCom)), int32(u32(100)))
crt.Xfprintf(tls, _pOut, _sqlite3VdbePrintOpØ00zFormat1Ø001, _pc, unsafe.Pointer(_sqlite3OpcodeName(tls, int32(_pOp.X0))), _pOp.X3, _pOp.X4, _pOp.X5, unsafe.Pointer(_zP4), int32(_pOp.X2), unsafe.Pointer((*int8)(unsafe.Pointer(&_zCom))))
crt.Xfflush(tls, _pOut)
+ _ = _zPtr
+ _ = _zCom
}
-func _displayP4(tls *crt.TLS, _pOp *XVdbeOp, _zTemp *int8, _nTemp int32) (r0 *int8) { // sqlite3.c:72708:1
- var _zP4 *int8 // sqlite3.c:72709:8
- _ = _zP4
- var _x XStrAccum // sqlite3.c:72710:12
- _ = _x
- var _2_j int32 // sqlite3.c:72715:11
- _ = _2_j
- var _2_pKeyInfo *XKeyInfo // sqlite3.c:72716:15
- _ = _2_pKeyInfo
- var _3_pColl *XCollSeq // sqlite3.c:72720:17
- _ = _3_pColl
- var _3_zColl *int8 // sqlite3.c:72721:20
- _ = _3_zColl
- var _4_pColl *XCollSeq // sqlite3.c:72735:15
- _ = _4_pColl
- var _5_pDef *XFuncDef // sqlite3.c:72740:15
- _ = _5_pDef
- var _6_pDef *XFuncDef // sqlite3.c:72746:15
- _ = _6_pDef
- var _10_pMem *XMem // sqlite3.c:72764:11
- _ = _10_pMem
- var _16_pVtab *Xsqlite3_vtab // sqlite3.c:72781:20
- _ = _16_pVtab
- var _17_i int32 // sqlite3.c:72787:11
- _ = _17_i
- var _17_ai *int32 // sqlite3.c:72788:11
- _ = _17_ai
- var _17_n int32 // sqlite3.c:72789:11
- _ = _17_n
+// Compute a string that describes the P4 parameter for an opcode.
+// Use zTemp for any required temporary buffer space.
+func _displayP4(tls *crt.TLS, _pOp *XVdbeOp, _zTemp *int8, _nTemp int32) (r0 *int8) {
+ var _2_j, _17_i, _17_n int32
+ var _17_ai *int32
+ var _zP4, _3_zColl *int8
+ var _10_pMem *XMem
+ var _5_pDef, _6_pDef *XFuncDef
+ var _x XStrAccum
+ var _2_pKeyInfo *XKeyInfo
+ var _3_pColl, _4_pColl *XCollSeq
+ var _16_pVtab *Xsqlite3_vtab
_zP4 = _zTemp
func() {
if _nTemp < i32(20) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72711), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(38556)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72711), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(37842)))
crt.X__builtin_abort(tls)
}
}()
@@ -29958,234 +28004,188 @@ func _displayP4(tls *crt.TLS, _pOp *XVdbeOp, _zTemp *int8, _nTemp int32) (r0 *in
}
_3:
- _2_pKeyInfo = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _2_pKeyInfo = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
func() {
if (_2_pKeyInfo.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72717), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(38568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72717), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(37852)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3XPrintf(tls, &_x, str(38592), int32(_2_pKeyInfo.X2))
+ _sqlite3XPrintf(tls, &_x, str(37876), int32(_2_pKeyInfo.X2))
_2_j = i32(0)
_19:
if _2_j >= int32(_2_pKeyInfo.X2) {
goto _22
}
-
_3_pColl = *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_2_j)))
_3_zColl = func() *int8 {
if _3_pColl != nil {
return (_3_pColl.X0)
}
- return str(196)
+ return str(0)
}()
- if crt.Xstrcmp(tls, _3_zColl, str(38600)) != i32(0) {
- goto _25
+ if crt.Xstrcmp(tls, _3_zColl, str(37881)) == i32(0) {
+ _3_zColl = str(37888)
}
-
- _3_zColl = str(38608)
-_25:
- _sqlite3XPrintf(tls, &_x, str(38612), unsafe.Pointer(func() *int8 {
+ _sqlite3XPrintf(tls, &_x, str(37890), unsafe.Pointer(func() *int8 {
if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pKeyInfo.X5)) + 1*uintptr(_2_j)))) != 0 {
- return str(38620)
+ return str(37896)
}
- return str(196)
+ return str(0)
}()), unsafe.Pointer(_3_zColl))
_2_j += 1
goto _19
-
_22:
- _sqlite3StrAccumAppend(tls, &_x, str(38624), i32(1))
+ _sqlite3StrAccumAppend(tls, &_x, str(37898), i32(1))
goto _28
-
_4:
- _4_pColl = (*XCollSeq)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- _sqlite3XPrintf(tls, &_x, str(38628), unsafe.Pointer(_4_pColl.X0))
+ _4_pColl = (*XCollSeq)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _sqlite3XPrintf(tls, &_x, str(37900), unsafe.Pointer(_4_pColl.X0))
goto _28
-
_5:
- _5_pDef = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- _sqlite3XPrintf(tls, &_x, str(38636), unsafe.Pointer(_5_pDef.X6), int32(_5_pDef.X0))
+ _5_pDef = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _sqlite3XPrintf(tls, &_x, str(37908), unsafe.Pointer(_5_pDef.X6), int32(_5_pDef.X0))
goto _28
-
_6:
- _6_pDef = (*XFuncDef)((*Xsqlite3_context)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X1)
- _sqlite3XPrintf(tls, &_x, str(38636), unsafe.Pointer(_6_pDef.X6), int32(_6_pDef.X0))
+ _6_pDef = (*XFuncDef)((*Xsqlite3_context)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X1)
+ _sqlite3XPrintf(tls, &_x, str(37908), unsafe.Pointer(_6_pDef.X6), int32(_6_pDef.X0))
goto _28
-
_7:
- _sqlite3XPrintf(tls, &_x, str(4744), *(*(**int64)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
+ _sqlite3XPrintf(tls, &_x, str(6348), *(*(**int64)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
goto _28
-
_8:
- _sqlite3XPrintf(tls, &_x, str(38644), *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _sqlite3XPrintf(tls, &_x, str(37915), *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
goto _28
-
_9:
- _sqlite3XPrintf(tls, &_x, str(6064), *(*(**float64)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
+ _sqlite3XPrintf(tls, &_x, str(7552), *(*(**float64)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
goto _28
-
_10:
- _10_pMem = (*XMem)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- if (int32(_10_pMem.X1) & i32(2)) == 0 {
- goto _29
+ _10_pMem = (*XMem)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ if (int32(_10_pMem.X1) & i32(2)) != 0 {
+ _zP4 = _10_pMem.X5
+ goto _30
}
-
- _zP4 = _10_pMem.X5
- goto _30
-
-_29:
- if (int32(_10_pMem.X1) & i32(4)) == 0 {
- goto _31
+ if (int32(_10_pMem.X1) & i32(4)) != 0 {
+ _sqlite3XPrintf(tls, &_x, str(6348), *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pMem)) + uintptr(0 /* X0 */))))))
+ goto _32
}
-
- _sqlite3XPrintf(tls, &_x, str(4744), *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pMem)) + uintptr(0 /* X0 */))))))
- goto _32
-
-_31:
- if (int32(_10_pMem.X1) & i32(8)) == 0 {
- goto _33
+ if (int32(_10_pMem.X1) & i32(8)) != 0 {
+ _sqlite3XPrintf(tls, &_x, str(7552), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pMem)) + uintptr(0 /* X0 */))))))
+ goto _34
}
-
- _sqlite3XPrintf(tls, &_x, str(6064), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pMem)) + uintptr(0 /* X0 */))))))
- goto _34
-
-_33:
- if (int32(_10_pMem.X1) & i32(1)) == 0 {
- goto _35
+ if (int32(_10_pMem.X1) & i32(1)) != 0 {
+ _zP4 = str(155)
+ goto _36
}
-
- _zP4 = str(200)
- goto _36
-
-_35:
func() {
if (int32(_10_pMem.X1) & i32(16)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72774), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(38648)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72774), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(37918)))
crt.X__builtin_abort(tls)
}
}()
- _zP4 = str(38672)
+ _zP4 = str(37941)
_36:
_34:
_32:
_30:
goto _28
-
_11:
- _16_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
- _sqlite3XPrintf(tls, &_x, str(38680), unsafe.Pointer(_16_pVtab))
+ _16_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
+ _sqlite3XPrintf(tls, &_x, str(37948), unsafe.Pointer(_16_pVtab))
goto _28
-
_12:
- _17_ai = *(**int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _17_ai = *(**int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
_17_n = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_ai)) + 4*uintptr(i32(0))))
_17_i = i32(1)
_39:
if _17_i >= _17_n {
goto _42
}
-
- _sqlite3XPrintf(tls, &_x, str(38688), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_ai)) + 4*uintptr(_17_i))))
+ _sqlite3XPrintf(tls, &_x, str(37956), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_ai)) + 4*uintptr(_17_i))))
_17_i += 1
goto _39
-
_42:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(i32(0)))) = int8(i32(91))
- _sqlite3StrAccumAppend(tls, &_x, str(38692), i32(1))
+ _sqlite3StrAccumAppend(tls, &_x, str(37960), i32(1))
goto _28
-
_13:
- _sqlite3XPrintf(tls, &_x, str(38696))
+ _sqlite3XPrintf(tls, &_x, str(37962))
goto _28
-
_14:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(i32(0)))) = int8(i32(0))
goto _28
-
_15:
- _sqlite3XPrintf(tls, &_x, str(24316), unsafe.Pointer((*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X0))
+ _sqlite3XPrintf(tls, &_x, str(24576), unsafe.Pointer((*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X0))
goto _28
-
_16:
- _zP4 = *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
- if _zP4 != nil {
- goto _43
+ _zP4 = *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ if _zP4 == nil {
+ _zP4 = _zTemp
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(i32(0)))) = int8(i32(0))
}
-
- _zP4 = _zTemp
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(i32(0)))) = int8(i32(0))
-_43:
_28:
_sqlite3StrAccumFinish(tls, &_x)
func() {
if _zP4 == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72819), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(38704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72819), unsafe.Pointer((*int8)(unsafe.Pointer(&_displayP4Ø00__func__Ø000))), unsafe.Pointer(str(37970)))
crt.X__builtin_abort(tls)
}
}()
return _zP4
+
+ _ = _x
+ panic(0)
}
-var _displayP4Ø00__func__Ø000 [10]int8 // -
+var _displayP4Ø00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_displayP4Ø00__func__Ø000[0], str(38712), 10)
+ crt.Xstrncpy(nil, &_displayP4Ø00__func__Ø000[0], str(37977), 10)
}
-func _sqlite3XPrintf(tls *crt.TLS, _p *XStrAccum, _zFormat *int8, args ...interface{}) { // sqlite3.c:26167:1
- var _ap []interface{} // sqlite3.c:26168:11
- _ = _ap
+// variable-argument wrapper around sqlite3VXPrintf(). The bFlags argument
+// can contain the bit SQLITE_PRINTF_INTERNAL enable internal formats.
+func _sqlite3XPrintf(tls *crt.TLS, _p *XStrAccum, _zFormat *int8, args ...interface{}) {
+ var _ap []interface{}
_ap = args
_sqlite3VXPrintf(tls, _p, _zFormat, _ap)
_ap = nil
}
-func _displayComment(tls *crt.TLS, _pOp *XVdbeOp, _zP4 *int8, _zTemp *int8, _nTemp int32) (r0 int32) { // sqlite3.c:72556:1
- var _zOpName *int8 // sqlite3.c:72562:14
- _ = _zOpName
- var _zSynopsis *int8 // sqlite3.c:72563:14
- _ = _zSynopsis
- var _nOpName int32 // sqlite3.c:72564:7
- _ = _nOpName
- var _ii int32 // sqlite3.c:72565:7
- _ = _ii
- var _jj int32 // sqlite3.c:72565:11
- _ = _jj
- var _zAlt [50]int8 // sqlite3.c:72566:8
- _ = _zAlt
- var _1_seenCom int32 // sqlite3.c:72570:9
- _ = _1_seenCom
- var _1_c int8 // sqlite3.c:72571:10
- _ = _1_c
- var _9_v1 int32 // sqlite3.c:72590:15
- _ = _9_v1
- var _9_v2 int32 // sqlite3.c:72591:15
- _ = _9_v2
+// Compute a string for the "comment" field of a VDBE opcode listing.
+//
+// The Synopsis: field in comments in the vdbe.c source file gets converted
+// to an extra string that is appended to the sqlite3OpcodeName(). In the
+// absence of other comments, this synopsis becomes the comment on the opcode.
+// Some translation occurs:
+//
+// "PX" -> "r[X]"
+// "PX@PY" -> "r[X..X+Y-1]" or "r[x]" if y is 0 or 1
+// "PX@PY+1" -> "r[X..X+Y]" or "r[x]" if y is 0
+// "PY..PY" -> "r[X..Y]" or "r[x]" if y<=x
+func _displayComment(tls *crt.TLS, _pOp *XVdbeOp, _zP4 *int8, _zTemp *int8, _nTemp int32) (r0 int32) {
+ var _nOpName, _ii, _jj, _1_seenCom, _9_v1, _9_v2 int32
+ var _1_c int8
+ var _zOpName, _zSynopsis *int8
+ var _zAlt [50]int8
_zOpName = _sqlite3OpcodeName(tls, int32(_pOp.X0))
_nOpName = _sqlite3Strlen30(tls, _zOpName)
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zOpName)) + 1*uintptr(_nOpName+i32(1))))) == 0 {
goto _0
}
-
_1_seenCom = i32(0)
_zSynopsis = store0(func() (**int8, *int8) {
p := &_zOpName
return p, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_nOpName+i32(1))))
}())
- if crt.Xstrncmp(tls, _zSynopsis, str(38724), uint32(i32(3))) != i32(0) {
+ if crt.Xstrncmp(tls, _zSynopsis, str(37987), uint32(i32(3))) != i32(0) {
goto _1
}
-
- if (int32(_pOp.X2) & i32(32)) == 0 {
- goto _2
+ if (int32(_pOp.X2) & i32(32)) != 0 {
+ Xsqlite3_snprintf(tls, int32(u32(50)), (*int8)(unsafe.Pointer(&_zAlt)), str(37991), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(3))))))))))
+ goto _3
}
-
- Xsqlite3_snprintf(tls, int32(u32(50)), (*int8)(unsafe.Pointer(&_zAlt)), str(38728), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(3))))))))))
- goto _3
-
-_2:
- Xsqlite3_snprintf(tls, int32(u32(50)), (*int8)(unsafe.Pointer(&_zAlt)), str(38744), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(3))))))))))
+ Xsqlite3_snprintf(tls, int32(u32(50)), (*int8)(unsafe.Pointer(&_zAlt)), str(38004), unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(3))))))))))
_3:
_zSynopsis = (*int8)(unsafe.Pointer(&_zAlt))
_1:
@@ -30194,35 +28194,24 @@ _4:
if _jj >= (_nTemp-i32(1)) || int32(store3(&_1_c, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSynopsis)) + 1*uintptr(_ii))))) == i32(0) {
goto _8
}
-
if int32(_1_c) != i32(80) {
goto _9
}
-
_1_c = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSynopsis)) + 1*uintptr(preInc1(&_ii, 1))))
- if int32(_1_c) != i32(52) {
- goto _10
+ if int32(_1_c) == i32(52) {
+ Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(24576), unsafe.Pointer(_zP4))
+ goto _11
}
-
- Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(24316), unsafe.Pointer(_zP4))
- goto _11
-
-_10:
- if int32(_1_c) != i32(88) {
- goto _12
+ if int32(_1_c) == i32(88) {
+ Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(24576), unsafe.Pointer(_pOp.X7))
+ _1_seenCom = i32(1)
+ goto _13
}
-
- Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(24316), unsafe.Pointer(_pOp.X7))
- _1_seenCom = i32(1)
- goto _13
-
-_12:
_9_v1 = _translateP(tls, _1_c, _pOp)
- Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(38644), _9_v1)
- if crt.Xstrncmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_ii)))))))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1)))))))), str(38760), uint32(i32(2))) != i32(0) {
+ Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(37915), _9_v1)
+ if crt.Xstrncmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_ii)))))))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1)))))))), str(38018), uint32(i32(2))) != i32(0) {
goto _14
}
-
{
p := &_ii
*p = (*p) + i32(3)
@@ -30234,36 +28223,26 @@ _12:
sink1 = *p
}
_9_v2 = _translateP(tls, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSynopsis)) + 1*uintptr(_ii))), _pOp)
- if crt.Xstrncmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_ii)))))))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1)))))))), str(38764), uint32(i32(2))) != i32(0) {
- goto _15
- }
-
- {
- p := &_ii
- *p = (*p) + i32(2)
- sink1 = *p
+ if crt.Xstrncmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_ii)))))))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1)))))))), str(38021), uint32(i32(2))) == i32(0) {
+ {
+ p := &_ii
+ *p = (*p) + i32(2)
+ sink1 = *p
+ }
+ _9_v2 += 1
}
- _9_v2 += 1
-_15:
- if _9_v2 <= i32(1) {
- goto _16
+ if _9_v2 > i32(1) {
+ Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(38024), (_9_v1+_9_v2)-i32(1))
}
-
- Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(38768), (_9_v1+_9_v2)-i32(1))
-_16:
goto _17
-
_14:
- if crt.Xstrncmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_ii)))))))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1)))))))), str(38776), uint32(i32(4))) != i32(0) || (_pOp.X5) != i32(0) {
- goto _19
- }
-
- {
- p := &_ii
- *p = (*p) + i32(4)
- sink1 = *p
+ if (crt.Xstrncmp(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zSynopsis))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_ii)))))))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1)))))))), str(38029), uint32(i32(4))) == i32(0)) && ((_pOp.X5) == i32(0)) {
+ {
+ p := &_ii
+ *p = (*p) + i32(4)
+ sink1 = *p
+ }
}
-_19:
_17:
_13:
_11:
@@ -30273,118 +28252,107 @@ _11:
sink1 = *p
}
goto _20
-
_9:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(postInc1(&_jj, int32(1))))) = _1_c
_20:
_ii += 1
goto _4
-
_8:
- if _1_seenCom != 0 || _jj >= (_nTemp-i32(5)) || (_pOp.X7) == nil {
- goto _23
- }
-
- Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(38784), unsafe.Pointer(_pOp.X7))
- {
- p := &_jj
- *p = (*p) + _sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))))
- sink1 = *p
+ if ((_1_seenCom == 0) && (_jj < (_nTemp - i32(5)))) && ((_pOp.X7) != nil) {
+ Xsqlite3_snprintf(tls, _nTemp-_jj, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))), str(38034), unsafe.Pointer(_pOp.X7))
+ {
+ p := &_jj
+ *p = (*p) + _sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zTemp))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_jj))))))))
+ sink1 = *p
+ }
}
-_23:
- if _jj >= _nTemp {
- goto _24
+ if _jj < _nTemp {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(_jj))) = int8(i32(0))
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(_jj))) = int8(i32(0))
-_24:
goto _25
-
_0:
- if (_pOp.X7) == nil {
- goto _26
+ if (_pOp.X7) != nil {
+ Xsqlite3_snprintf(tls, _nTemp, _zTemp, str(24576), unsafe.Pointer(_pOp.X7))
+ _jj = _sqlite3Strlen30(tls, _zTemp)
+ goto _27
}
-
- Xsqlite3_snprintf(tls, _nTemp, _zTemp, str(24316), unsafe.Pointer(_pOp.X7))
- _jj = _sqlite3Strlen30(tls, _zTemp)
- goto _27
-
-_26:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTemp)) + 1*uintptr(i32(0)))) = int8(i32(0))
_jj = i32(0)
_27:
_25:
- r0 = _jj
- return
+ return _jj
+
+ _ = _zAlt
+ panic(0)
}
-func _sqlite3OpcodeName(tls *crt.TLS, _i int32) (r0 *int8) { // sqlite3.c:29511:1
+func _sqlite3OpcodeName(tls *crt.TLS, _i int32) (r0 *int8) {
return *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeNameØ00azNameØ001)) + 4*uintptr(_i)))
}
-var _sqlite3OpcodeNameØ00azNameØ001 [166]*int8 // sqlite3.c:29512:20
+var _sqlite3OpcodeNameØ00azNameØ001 [166]*int8
func init() {
- _sqlite3OpcodeNameØ00azNameØ001 = [166]*int8{str(38792), str(38804), str(38816), str(38832), str(38844), str(38856), str(38868), str(38876), str(38884), str(38896), str(38912), str(38920), str(38952), str(38976), str(38984), str(38992), str(39008), str(39016), str(39028), str(39036), str(39056), str(39064), str(39068), str(39076), str(39128), str(39148), str(39168), str(39188), str(39208), str(39232), str(39256), str(39276), str(39300), str(39324), str(39332), str(39344), str(39356), str(39364), str(39372), str(39392), str(39412), str(39432), str(39452), str(39480), str(39524), str(39536), str(39572), str(39616), str(39660), str(39700), str(39712), str(39720), str(39740), str(39748), str(39764), str(39796), str(39804), str(39824), str(39840), str(39868), str(39888), str(39908), str(39932), str(39964), str(39988), str(40016), str(40036), str(40056), str(40084), str(40096), str(40128), str(40156), str(40184), str(40216), str(40240), str(40256), str(40288), str(40320), str(40340), str(40360), str(40380), str(40400), str(40420), str(40440), str(40452), str(40480), str(40504), str(40536), str(40568), str(40592), str(40620), str(40648), str(40676), str(40704), str(40732), str(40756), str(40780), str(40796), str(40816), str(40848), str(40864), str(40892), str(40928), str(40948), str(40960), str(40972), str(41000), str(41024), str(41052), str(41064), str(41092), str(41120), str(41132), str(41176), str(41208), str(41216), str(41232), str(41264), str(41288), str(41320), str(41352), str(41360), str(41372), str(41424), str(41448), str(41468), str(41488), str(41500), str(41524), str(41544), str(41568), str(41596), str(41620), str(41636), str(41648), str(41656), str(41672), str(41704), str(41736), str(41748), str(41764), str(41780), str(41792), str(41804), str(41820), str(41836), str(41864), str(41872), str(41896), str(41928), str(42000), str(42036), str(42072), str(42100), str(42108), str(42144), str(42152), str(42164), str(42176), str(42184), str(42212), str(42224), str(42236), str(42248), str(42260), str(42268)}
+ _sqlite3OpcodeNameØ00azNameØ001 = [166]*int8{str(38039), str(38050), str(38062), str(38075), str(38087), str(38099), str(38111), str(38117), str(38123), str(38135), str(38148), str(38156), str(38187), str(38209), str(38215), str(38222), str(38237), str(38244), str(38255), str(38261), str(38279), str(38285), str(38289), str(38296), str(38345), str(38365), str(38385), str(38405), str(38425), str(38449), str(38471), str(38490), str(38513), str(38536), str(38542), str(38553), str(38565), str(38571), str(38579), str(38598), str(38617), str(38636), str(38655), str(38683), str(38725), str(38734), str(38767), str(38808), str(38852), str(38889), str(38901), str(38908), str(38925), str(38933), str(38947), str(38977), str(38983), str(39000), str(39015), str(39042), str(39062), str(39082), str(39105), str(39137), str(39160), str(39187), str(39205), str(39225), str(39251), str(39260), str(39291), str(39317), str(39344), str(39374), str(39396), str(39410), str(39440), str(39471), str(39490), str(39509), str(39527), str(39546), str(39564), str(39583), str(39594), str(39619), str(39643), str(39672), str(39702), str(39724), str(39751), str(39778), str(39803), str(39831), str(39856), str(39877), str(39898), str(39911), str(39930), str(39960), str(39976), str(40004), str(40037), str(40057), str(40069), str(40080), str(40105), str(40129), str(40154), str(40163), str(40188), str(40213), str(40225), str(40269), str(40300), str(40307), str(40320), str(40352), str(40373), str(40404), str(40435), str(40443), str(40455), str(40504), str(40526), str(40545), str(40563), str(40572), str(40595), str(40615), str(40638), str(40663), str(40684), str(40698), str(40707), str(40714), str(40727), str(40757), str(40787), str(40796), str(40809), str(40823), str(40834), str(40845), str(40858), str(40871), str(40898), str(40905), str(40929), str(40959), str(41028), str(41064), str(41099), str(41125), str(41133), str(41167), str(41175), str(41184), str(41194), str(41201), str(41227), str(41236), str(41247), str(41257), str(41269), str(41275)}
}
-func _translateP(tls *crt.TLS, _c int8, _pOp *XVdbeOp) (r0 int32) { // sqlite3.c:72535:1
- if int32(_c) != i32(49) {
- goto _0
+// Return an integer value for one of the parameters to the opcode pOp
+// determined by character c.
+func _translateP(tls *crt.TLS, _c int8, _pOp *XVdbeOp) (r0 int32) {
+ if int32(_c) == i32(49) {
+ return _pOp.X3
}
- return _pOp.X3
-
-_0:
- if int32(_c) != i32(50) {
- goto _1
+ if int32(_c) == i32(50) {
+ return _pOp.X4
}
- return _pOp.X4
-
-_1:
- if int32(_c) != i32(51) {
- goto _2
+ if int32(_c) == i32(51) {
+ return _pOp.X5
}
- return _pOp.X5
-
-_2:
- if int32(_c) != i32(52) {
- goto _3
+ if int32(_c) == i32(52) {
+ /* X6 */
+ return *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16)))))
}
-
- /* X6 */
- return *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16)))))
-
-_3:
return int32(_pOp.X2)
}
-var _sqlite3VdbePrintOpØ00zFormat1Ø001 *int8 // sqlite3.c:72912:21
+var _sqlite3VdbePrintOpØ00zFormat1Ø001 *int8
func init() {
- _sqlite3VdbePrintOpØ00zFormat1Ø001 = str(42280)
+ _sqlite3VdbePrintOpØ00zFormat1Ø001 = str(41284)
}
-func _test_addop_breakpoint(tls *crt.TLS) { // sqlite3.c:71562:1
+// This routine is just a convenient place to set a breakpoint that will
+// fire after each opcode is inserted and displayed using
+// "PRAGMA vdbe_addoptrace=on".
+func _test_addop_breakpoint(tls *crt.TLS) {
_test_addop_breakpointØ00nØ001 += 1
}
-var _test_addop_breakpointØ00nØ001 int32 // sqlite3.c:71563:14
-
-func _sqlite3VdbeAssertMayAbort(tls *crt.TLS, _v *TVdbe, _mayAbort int32) (r0 int32) { // sqlite3.c:71916:1
- var _hasAbort int32 // sqlite3.c:71917:7
- _ = _hasAbort
- var _hasFkCounter int32 // sqlite3.c:71918:7
- _ = _hasFkCounter
- var _hasCreateTable int32 // sqlite3.c:71919:7
- _ = _hasCreateTable
- var _hasInitCoroutine int32 // sqlite3.c:71920:7
- _ = _hasInitCoroutine
- var _pOp *XVdbeOp // sqlite3.c:71921:6
- _ = _pOp
- var _sIter XVdbeOpIter // sqlite3.c:71922:14
- _ = _sIter
- var _1_opcode int32 // sqlite3.c:71927:9
- _ = _1_opcode
+var _test_addop_breakpointØ00nØ001 int32
+
+// Check if the program stored in the VM associated with pParse may
+// throw an ABORT exception (causing the statement, but not entire transaction
+// to be rolled back). This condition is true if the main program or any
+// sub-programs contains any of the following:
+//
+// * OP_Halt with P1=SQLITE_CONSTRAINT and P2=OE_Abort.
+// * OP_HaltIfNull with P1=SQLITE_CONSTRAINT and P2=OE_Abort.
+// * OP_Destroy
+// * OP_VUpdate
+// * OP_VRename
+// * OP_FkCounter with P2==0 (immediate foreign key constraint)
+// * OP_CreateTable and OP_InitCoroutine (for CREATE TABLE AS SELECT ...)
+//
+// Then check that the value of Parse.mayAbort is true if an
+// ABORT may be thrown, or false otherwise. Return true if it does
+// match, or false otherwise. This function is intended to be used as
+// part of an assert statement in the compiler. Similar to:
+//
+// assert( sqlite3VdbeAssertMayAbort(pParse->pVdbe, pParse->mayAbort) );
+func _sqlite3VdbeAssertMayAbort(tls *crt.TLS, _v *TVdbe, _mayAbort int32) (r0 int32) {
+ var _hasAbort, _hasFkCounter, _hasCreateTable, _hasInitCoroutine, _1_opcode int32
+ var _pOp *XVdbeOp
+ var _sIter XVdbeOpIter
_hasAbort = i32(0)
_hasFkCounter = i32(0)
_hasCreateTable = i32(0)
@@ -30392,198 +28360,169 @@ func _sqlite3VdbeAssertMayAbort(tls *crt.TLS, _v *TVdbe, _mayAbort int32) (r0 in
crt.Xmemset(tls, (unsafe.Pointer)(&_sIter), i32(0), u32(20))
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sIter)) + uintptr(0 /* X0 */))))) = _v
_0:
- if store38(&_pOp, _opIterNext(tls, &_sIter)) == nil {
+ if store40(&_pOp, _opIterNext(tls, &_sIter)) == nil {
goto _1
}
-
_1_opcode = int32(_pOp.X0)
- if _1_opcode != i32(133) && _1_opcode != i32(12) && _1_opcode != i32(160) && (_1_opcode != i32(55) && _1_opcode != i32(54) || (((_pOp.X3)&i32(255)) != i32(19) || (_pOp.X4) != i32(2))) {
- goto _8
+ if (((_1_opcode == i32(133)) || (_1_opcode == i32(12))) || (_1_opcode == i32(160))) || (((_1_opcode == i32(55)) || (_1_opcode == i32(54))) && ((((_pOp.X3) & i32(255)) == i32(19)) && ((_pOp.X4) == i32(2)))) {
+ _hasAbort = i32(1)
+ goto _1
}
-
- _hasAbort = i32(1)
- goto _1
-
-_8:
- if _1_opcode != i32(137) {
- goto _9
+ if _1_opcode == i32(137) {
+ _hasCreateTable = i32(1)
}
-
- _hasCreateTable = i32(1)
-_9:
- if _1_opcode != i32(15) {
- goto _10
+ if _1_opcode == i32(15) {
+ _hasInitCoroutine = i32(1)
}
-
- _hasInitCoroutine = i32(1)
-_10:
- if _1_opcode != i32(147) || (_pOp.X3) != i32(0) || (_pOp.X4) != i32(1) {
- goto _13
+ if ((_1_opcode == i32(147)) && ((_pOp.X3) == i32(0))) && ((_pOp.X4) == i32(1)) {
+ _hasFkCounter = i32(1)
}
-
- _hasFkCounter = i32(1)
-_13:
goto _0
-
_1:
_sqlite3DbFree(tls, (*Xsqlite3)(_v.X0), (unsafe.Pointer)(_sIter.X1))
return bool2int((((((*Xsqlite3)(_v.X0).X17) != 0) || (_hasAbort == _mayAbort)) || _hasFkCounter != 0) || (_hasCreateTable != 0 && _hasInitCoroutine != 0))
+
+ _ = _sIter
+ panic(0)
}
-func _opIterNext(tls *crt.TLS, _p *XVdbeOpIter) (r0 *XVdbeOp) { // sqlite3.c:71851:1
- var _v *TVdbe // sqlite3.c:71852:8
- _ = _v
- var _pRet *XVdbeOp // sqlite3.c:71853:6
- _ = _pRet
- var _aOp *XVdbeOp // sqlite3.c:71854:6
- _ = _aOp
- var _nOp int32 // sqlite3.c:71855:7
- _ = _nOp
- var _5_nByte int32 // sqlite3.c:71876:11
- _ = _5_nByte
- var _5_j int32 // sqlite3.c:71877:11
- _ = _5_j
+func _opIterNext(tls *crt.TLS, _p *XVdbeOpIter) (r0 *XVdbeOp) {
+ var _nOp, _5_nByte, _5_j int32
+ var _v *TVdbe
+ var _pRet, _aOp *XVdbeOp
_v = (*TVdbe)(_p.X0)
_pRet = nil
if (_p.X4) > (_p.X2) {
goto _0
}
-
- if (_p.X4) != i32(0) {
- goto _1
+ if (_p.X4) == i32(0) {
+ _aOp = (*XVdbeOp)(_v.X17)
+ _nOp = _v.X27
+ goto _2
}
-
- _aOp = (*XVdbeOp)(_v.X17)
- _nOp = _v.X27
- goto _2
-
-_1:
_aOp = (*XVdbeOp)((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1)) + 4*uintptr((_p.X4)-i32(1))))).X0)
_nOp = (*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1)) + 4*uintptr((_p.X4)-i32(1))))).X1
_2:
func() {
if (_p.X3) >= _nOp {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71866), unsafe.Pointer((*int8)(unsafe.Pointer(&_opIterNextØ00__func__Ø000))), unsafe.Pointer(str(42320)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71866), unsafe.Pointer((*int8)(unsafe.Pointer(&_opIterNextØ00__func__Ø000))), unsafe.Pointer(str(41321)))
crt.X__builtin_abort(tls)
}
}()
_pRet = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(_p.X3)))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) += 1
- if (_p.X3) != _nOp {
- goto _5
+ if (_p.X3) == _nOp {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) += 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = i32(0)
-_5:
if int32(_pRet.X1) != i32(-13) {
goto _6
}
-
_5_nByte = int32(uint32((_p.X2)+i32(1)) * u32(4))
_5_j = i32(0)
_7:
if _5_j >= (_p.X2) {
goto _10
}
-
- if (*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1)) + 4*uintptr(_5_j)))) != (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(16 /* X6 */)))))) {
- goto _11
+ if (*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1)) + 4*uintptr(_5_j)))) == (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(16 /* X6 */)))))) {
+ goto _10
}
-
- goto _10
-
-_11:
_5_j += 1
goto _7
-
_10:
if _5_j != (_p.X2) {
goto _12
}
-
*(***XSubProgram)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = (**XSubProgram)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_v.X0), (unsafe.Pointer)(_p.X1), uint64(_5_nByte)))
- if (**XSubProgram)(unsafe.Pointer(_p.X1)) != nil {
- goto _13
+ if (**XSubProgram)(unsafe.Pointer(_p.X1)) == nil {
+ _pRet = nil
+ goto _14
}
-
- _pRet = nil
- goto _14
-
-_13:
- *(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1)) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))), int32(1))))) = (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(16 /* X6 */))))))
+ *(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1)) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))), int32(1))))) = (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(16 /* X6 */))))))
_14:
_12:
_6:
_0:
- r0 = _pRet
- return
+ return _pRet
}
-var _opIterNextØ00__func__Ø000 [11]int8 // -
+var _opIterNextØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_opIterNextØ00__func__Ø000[0], str(42336), 11)
+ crt.Xstrncpy(nil, &_opIterNextØ00__func__Ø000[0], str(41334), 11)
}
-func _sqlite3VdbeAddOp0(tls *crt.TLS, _p *TVdbe, _op int32) (r0 int32) { // sqlite3.c:71635:1
+func _sqlite3VdbeAddOp0(tls *crt.TLS, _p *TVdbe, _op int32) (r0 int32) {
return _sqlite3VdbeAddOp3(tls, _p, _op, i32(0), i32(0), i32(0))
}
-func _sqlite3VdbeGetOp(tls *crt.TLS, _p *TVdbe, _addr int32) (r0 *XVdbeOp) { // sqlite3.c:72514:1
+// Return the opcode for a given address. If the address is -1, then
+// return the most recently inserted opcode.
+//
+// If a memory allocation error has occurred prior to the calling of this
+// routine, then a pointer to a dummy VdbeOp will be returned. That opcode
+// is readable but not writable, though it is cast to a writable value.
+// The return of a dummy opcode allows the call to continue functioning
+// after an OOM fault without having to check to see if the return from
+// this routine is a valid pointer. But because the dummy.opcode is 0,
+// dummy will never be written to. This is verified by code inspection and
+// by running with Valgrind.
+func _sqlite3VdbeGetOp(tls *crt.TLS, _p *TVdbe, _addr int32) (r0 *XVdbeOp) {
func() {
if (_p.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72518), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeGetOpØ00__func__Ø000))), unsafe.Pointer(str(38344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72518), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeGetOpØ00__func__Ø000))), unsafe.Pointer(str(37642)))
crt.X__builtin_abort(tls)
}
}()
- if _addr >= i32(0) {
- goto _2
+ if _addr < i32(0) {
+ _addr = (_p.X27) - i32(1)
}
-
- _addr = (_p.X27) - i32(1)
-_2:
func() {
if (_addr < i32(0) || _addr >= (_p.X27)) && ((*Xsqlite3)(_p.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72522), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeGetOpØ00__func__Ø000))), unsafe.Pointer(str(42348)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72522), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeGetOpØ00__func__Ø000))), unsafe.Pointer(str(41345)))
crt.X__builtin_abort(tls)
}
}()
- if ((*Xsqlite3)(_p.X0).X17) == 0 {
- goto _7
+ if ((*Xsqlite3)(_p.X0).X17) != 0 {
+ return &_sqlite3VdbeGetOpØ00dummyØ001
}
- return &_sqlite3VdbeGetOpØ00dummyØ001
-
-_7:
return (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_addr)))
}
-var _sqlite3VdbeGetOpØ00__func__Ø000 [17]int8 // -
+var _sqlite3VdbeGetOpØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeGetOpØ00__func__Ø000[0], str(42396), 17)
+ crt.Xstrncpy(nil, &_sqlite3VdbeGetOpØ00__func__Ø000[0], str(41393), 17)
}
-var _sqlite3VdbeGetOpØ00dummyØ001 XVdbeOp // sqlite3.c:72517:17
+var _sqlite3VdbeGetOpØ00dummyØ001 XVdbeOp
-func _sqlite3VdbeJumpHere(tls *crt.TLS, _p *TVdbe, _addr int32) { // sqlite3.c:72223:1
+// Change the P2 operand of instruction addr so that it points to
+// the address of the next instruction to be coded.
+func _sqlite3VdbeJumpHere(tls *crt.TLS, _p *TVdbe, _addr int32) {
_sqlite3VdbeChangeP2(tls, _p, uint32(_addr), _p.X27)
}
-func _sqlite3VdbeChangeP2(tls *crt.TLS, _p *TVdbe, _addr uint32, _val int32) { // sqlite3.c:72208:1
+func _sqlite3VdbeChangeP2(tls *crt.TLS, _p *TVdbe, _addr uint32, _val int32) {
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sqlite3VdbeGetOp(tls, _p, int32(_addr)))) + uintptr(8 /* X4 */))) = _val
}
-func _sqlite3VdbeUsesBtree(tls *crt.TLS, _p *TVdbe, _i int32) { // sqlite3.c:72832:1
+// Declare to the Vdbe that the BTree object at db->aDb[i] is used.
+//
+// The prepared statements need to know in advance the complete set of
+// attached databases that will be use. A mask of these databases
+// is maintained in p->btreeMask. The p->lockMask value is the subset of
+// p->btreeMask of databases that will require a lock.
+func _sqlite3VdbeUsesBtree(tls *crt.TLS, _p *TVdbe, _i int32) {
func() {
if _i < i32(0) || _i >= ((*Xsqlite3)(_p.X0).X5) || _i >= i32(32) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72833), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeUsesBtreeØ00__func__Ø000))), unsafe.Pointer(str(42416)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72833), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeUsesBtreeØ00__func__Ø000))), unsafe.Pointer(str(41410)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _i >= i32(32) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72834), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeUsesBtreeØ00__func__Ø000))), unsafe.Pointer(str(42468)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72834), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeUsesBtreeØ00__func__Ø000))), unsafe.Pointer(str(41459)))
crt.X__builtin_abort(tls)
}
}()
@@ -30592,119 +28531,109 @@ func _sqlite3VdbeUsesBtree(tls *crt.TLS, _p *TVdbe, _i int32) { // sqlite3.c:728
*p = (*p) | (u32(1) << uint(_i))
sink5 = *p
}
- if _i == i32(1) || _sqlite3BtreeSharable(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_p.X0).X4)+16*uintptr(_i))).X1)) == 0 {
- goto _7
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(148 /* X34 */)))
- *p = (*p) | (u32(1) << uint(_i))
- sink5 = *p
+ if (_i != i32(1)) && _sqlite3BtreeSharable(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_p.X0).X4)+16*uintptr(_i))).X1)) != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(148 /* X34 */)))
+ *p = (*p) | (u32(1) << uint(_i))
+ sink5 = *p
+ }
}
-_7:
}
-var _sqlite3VdbeUsesBtreeØ00__func__Ø000 [21]int8 // -
+var _sqlite3VdbeUsesBtreeØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeUsesBtreeØ00__func__Ø000[0], str(42500), 21)
+ crt.Xstrncpy(nil, &_sqlite3VdbeUsesBtreeØ00__func__Ø000[0], str(41489), 21)
}
-func _sqlite3BtreeSharable(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:68882:1
+// Return true if the Btree passed as the only argument is sharable.
+func _sqlite3BtreeSharable(tls *crt.TLS, _p *XBtree) (r0 int32) {
return int32(_p.X3)
}
-func _sqlite3VdbeAddOp4Int(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32, _p4 int32) (r0 int32) { // sqlite3.c:71735:1
- var _addr int32 // sqlite3.c:71743:7
- _ = _addr
- var _1_pOp *XVdbeOp // sqlite3.c:71745:12
- _ = _1_pOp
+// Add an opcode that includes the p4 value as an integer.
+func _sqlite3VdbeAddOp4Int(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32, _p4 int32) (r0 int32) {
+ var _addr int32
+ var _1_pOp *XVdbeOp
_addr = _sqlite3VdbeAddOp3(tls, _p, _op, _p1, _p2, _p3)
- if int32((*Xsqlite3)(_p.X0).X17) != i32(0) {
- goto _0
+ if int32((*Xsqlite3)(_p.X0).X17) == i32(0) {
+ _1_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_addr)))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-11))
+ *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */))))) = _p4
}
-
- _1_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_addr)))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-11))
- *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */))))) = _p4
-_0:
return _addr
}
-func _sqlite3VdbeChangeP5(tls *crt.TLS, _p *TVdbe, _p5 uint16) { // sqlite3.c:72214:1
+func _sqlite3VdbeChangeP5(tls *crt.TLS, _p *TVdbe, _p5 uint16) {
func() {
if (_p.X27) <= i32(0) && ((*Xsqlite3)(_p.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72215), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP5Ø00__func__Ø000))), unsafe.Pointer(str(42524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72215), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP5Ø00__func__Ø000))), unsafe.Pointer(str(41510)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X27) <= i32(0) {
- goto _3
+ if (_p.X27) > i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))))) + uintptr(2 /* X2 */))) = _p5
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))))) + uintptr(2 /* X2 */))) = _p5
-_3:
}
-var _sqlite3VdbeChangeP5Ø00__func__Ø000 [20]int8 // -
+var _sqlite3VdbeChangeP5Ø00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeChangeP5Ø00__func__Ø000[0], str(42556), 20)
+ crt.Xstrncpy(nil, &_sqlite3VdbeChangeP5Ø00__func__Ø000[0], str(41542), 20)
}
-func _sqlite3VdbeComment(tls *crt.TLS, _p *TVdbe, _zFormat *int8, args ...interface{}) { // sqlite3.c:72473:1
- var _ap []interface{} // sqlite3.c:72474:11
- _ = _ap
- if _p == nil {
- goto _0
+func _sqlite3VdbeComment(tls *crt.TLS, _p *TVdbe, _zFormat *int8, args ...interface{}) {
+ var _ap []interface{}
+ if _p != nil {
+ _ap = args
+ _vdbeVComment(tls, _p, _zFormat, _ap)
+ _ap = nil
}
-
- _ap = args
- _vdbeVComment(tls, _p, _zFormat, _ap)
- _ap = nil
-_0:
}
-func _vdbeVComment(tls *crt.TLS, _p *TVdbe, _zFormat *int8, _ap []interface{}) { // sqlite3.c:72464:1
+// Change the comment on the most recently coded instruction. Or
+// insert a No-op and add the comment to that new instruction. This
+// makes the code easier to read during debugging. None of this happens
+// in a production build.
+func _vdbeVComment(tls *crt.TLS, _p *TVdbe, _zFormat *int8, _ap []interface{}) {
func() {
if (_p.X27) <= i32(0) && (*XVdbeOp)(_p.X17) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72465), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeVCommentØ00__func__Ø000))), unsafe.Pointer(str(42576)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72465), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeVCommentØ00__func__Ø000))), unsafe.Pointer(str(41562)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XVdbeOp)(_p.X17) != nil && ((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))).X7) != nil && ((*Xsqlite3)(_p.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72466), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeVCommentØ00__func__Ø000))), unsafe.Pointer(str(42600)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72466), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeVCommentØ00__func__Ø000))), unsafe.Pointer(str(41584)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X27) == 0 {
- goto _7
+ if (_p.X27) != 0 {
+ func() {
+ if (*XVdbeOp)(_p.X17) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72468), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeVCommentØ00__func__Ø000))), unsafe.Pointer(str(41649)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3DbFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))).X7))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))))) + uintptr(20 /* X7 */))) = _sqlite3VMPrintf(tls, (*Xsqlite3)(_p.X0), _zFormat, _ap)
}
-
- func() {
- if (*XVdbeOp)(_p.X17) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72468), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeVCommentØ00__func__Ø000))), unsafe.Pointer(str(42668)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3DbFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))).X7))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))))) + uintptr(20 /* X7 */))) = _sqlite3VMPrintf(tls, (*Xsqlite3)(_p.X0), _zFormat, _ap)
-_7:
}
-var _vdbeVCommentØ00__func__Ø000 [13]int8 // -
+var _vdbeVCommentØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeVCommentØ00__func__Ø000[0], str(42676), 13)
+ crt.Xstrncpy(nil, &_vdbeVCommentØ00__func__Ø000[0], str(41656), 13)
}
-func _sqlite3GetVTable(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable) (r0 *XVTable) { // sqlite3.c:125129:1
- var _pVtab *XVTable // sqlite3.c:125130:10
- _ = _pVtab
+// pTab is a pointer to a Table structure representing a virtual-table.
+// Return a pointer to the VTable object used by connection db to access
+// this virtual-table, if one has been created, or NULL otherwise.
+func _sqlite3GetVTable(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable) (r0 *XVTable) {
+ var _pVtab *XVTable
func() {
if (_pTab.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125131), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetVTableØ00__func__Ø000))), unsafe.Pointer(str(24268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125131), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetVTableØ00__func__Ø000))), unsafe.Pointer(str(24529)))
crt.X__builtin_abort(tls)
}
}()
@@ -30713,133 +28642,109 @@ _2:
if _pVtab == nil || (*Xsqlite3)(_pVtab.X0) == _db {
goto _6
}
-
_pVtab = (*XVTable)(_pVtab.X6)
goto _2
-
_6:
return _pVtab
}
-var _sqlite3GetVTableØ00__func__Ø000 [17]int8 // -
+var _sqlite3GetVTableØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3GetVTableØ00__func__Ø000[0], str(42692), 17)
+ crt.Xstrncpy(nil, &_sqlite3GetVTableØ00__func__Ø000[0], str(41669), 17)
}
-func _sqlite3VdbeAddOp4(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32, _zP4 *int8, _p4type int32) (r0 int32) { // sqlite3.c:71686:1
- var _addr int32 // sqlite3.c:71695:7
- _ = _addr
+// Add an opcode that includes the p4 value as a pointer.
+func _sqlite3VdbeAddOp4(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32, _zP4 *int8, _p4type int32) (r0 int32) {
+ var _addr int32
_addr = _sqlite3VdbeAddOp3(tls, _p, _op, _p1, _p2, _p3)
_sqlite3VdbeChangeP4(tls, _p, _addr, _zP4, _p4type)
return _addr
}
-func _sqlite3VdbeChangeP4(tls *crt.TLS, _p *TVdbe, _addr int32, _zP4 *int8, _n int32) { // sqlite3.c:72385:1
- var _pOp *XVdbeOp // sqlite3.c:72386:6
- _ = _pOp
- var _db *Xsqlite3 // sqlite3.c:72387:11
- _ = _db
+func _sqlite3VdbeChangeP4(tls *crt.TLS, _p *TVdbe, _addr int32, _zP4 *int8, _n int32) {
+ var _db *Xsqlite3
+ var _pOp *XVdbeOp
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72388), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72388), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
_db = (*Xsqlite3)(_p.X0)
func() {
if (_p.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72390), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(38344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72390), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(37642)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XVdbeOp)(_p.X17) == nil && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72391), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(42712)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72391), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(41686)))
crt.X__builtin_abort(tls)
}
}()
if (_db.X17) == 0 {
goto _7
}
-
- if _n == i32(-8) {
- goto _8
+ if _n != i32(-8) {
+ _freeP4(tls, _db, _n, (unsafe.Pointer)(_zP4))
}
-
- _freeP4(tls, _db, _n, (unsafe.Pointer)(_zP4))
-_8:
return
-
_7:
func() {
if (_p.X27) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(42744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(41716)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _addr >= (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72397), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(42756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72397), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(41725)))
crt.X__builtin_abort(tls)
}
}()
- if _addr >= i32(0) {
- goto _13
+ if _addr < i32(0) {
+ _addr = (_p.X27) - i32(1)
}
-
- _addr = (_p.X27) - i32(1)
-_13:
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_addr)))
- if _n < i32(0) && (_pOp.X1) == 0 {
- goto _15
+ if (_n >= i32(0)) || ((_pOp.X1) != 0) {
+ _vdbeChangeP4Full(tls, _p, _pOp, _zP4, _n)
+ return
}
-
- _vdbeChangeP4Full(tls, _p, _pOp, _zP4, _n)
- return
-
-_15:
- if _n != i32(-11) {
- goto _16
+ if _n == i32(-11) {
+ *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = int32(uintptr(unsafe.Pointer(_zP4)))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-11))
+ goto _17
}
-
- *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = int32(uintptr(unsafe.Pointer(_zP4)))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-11))
- goto _17
-
-_16:
if _zP4 == nil {
goto _18
}
-
func() {
if _n >= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72412), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(42768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72412), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeP4Ø00__func__Ø000))), unsafe.Pointer(str(41737)))
crt.X__builtin_abort(tls)
}
}()
- *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = (unsafe.Pointer)(_zP4)
+ *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = (unsafe.Pointer)(_zP4)
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(_n)
- if _n != i32(-8) {
- goto _21
+ if _n == i32(-8) {
+ _sqlite3VtabLock(tls, (*XVTable)(unsafe.Pointer(_zP4)))
}
-
- _sqlite3VtabLock(tls, (*XVTable)(unsafe.Pointer(_zP4)))
-_21:
_18:
_17:
}
-var _sqlite3VdbeChangeP4Ø00__func__Ø000 [20]int8 // -
+var _sqlite3VdbeChangeP4Ø00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeChangeP4Ø00__func__Ø000[0], str(42772), 20)
+ crt.Xstrncpy(nil, &_sqlite3VdbeChangeP4Ø00__func__Ø000[0], str(41741), 20)
}
-func _freeP4(tls *crt.TLS, _db *Xsqlite3, _p4type int32, _p4 unsafe.Pointer) { // sqlite3.c:72251:1
+func _freeP4(tls *crt.TLS, _db *Xsqlite3, _p4type int32, _p4 unsafe.Pointer) {
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72252), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeP4Ø00__func__Ø000))), unsafe.Pointer(str(8272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72252), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeP4Ø00__func__Ø000))), unsafe.Pointer(str(9475)))
crt.X__builtin_abort(tls)
}
}()
@@ -30869,154 +28774,140 @@ func _freeP4(tls *crt.TLS, _db *Xsqlite3, _p4type int32, _p4 unsafe.Pointer) { /
_3:
_freeP4FuncCtx(tls, _db, (*Xsqlite3_context)(_p4))
goto _12
-
_4:
_5:
_6:
_7:
_sqlite3DbFree(tls, _db, _p4)
goto _12
-
_8:
- if (_db.X79) != nil {
- goto _13
+ if (_db.X79) == nil {
+ _sqlite3KeyInfoUnref(tls, (*XKeyInfo)(_p4))
}
-
- _sqlite3KeyInfoUnref(tls, (*XKeyInfo)(_p4))
-_13:
goto _12
-
_9:
_freeEphemeralFunction(tls, _db, (*XFuncDef)(_p4))
goto _12
-
_10:
- if (_db.X79) != nil {
- goto _14
+ if (_db.X79) == nil {
+ _sqlite3ValueFree(tls, (*XMem)(_p4))
+ goto _15
}
-
- _sqlite3ValueFree(tls, (*XMem)(_p4))
- goto _15
-
-_14:
_freeP4Mem(tls, _db, (*XMem)(_p4))
_15:
goto _12
-
_11:
- if (_db.X79) != nil {
- goto _16
+ if (_db.X79) == nil {
+ _sqlite3VtabUnlock(tls, (*XVTable)(_p4))
}
-
- _sqlite3VtabUnlock(tls, (*XVTable)(_p4))
-_16:
goto _12
-
_12:
}
-var _freeP4Ø00__func__Ø000 [7]int8 // -
+var _freeP4Ø00__func__Ø000 [7]int8
func init() {
- crt.Xstrncpy(nil, &_freeP4Ø00__func__Ø000[0], str(42792), 7)
+ crt.Xstrncpy(nil, &_freeP4Ø00__func__Ø000[0], str(41761), 7)
}
-func _freeP4FuncCtx(tls *crt.TLS, _db *Xsqlite3, _p *Xsqlite3_context) { // sqlite3.c:72247:1
+func _freeP4FuncCtx(tls *crt.TLS, _db *Xsqlite3, _p *Xsqlite3_context) {
_freeEphemeralFunction(tls, _db, (*XFuncDef)(_p.X1))
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
}
-func _freeEphemeralFunction(tls *crt.TLS, _db *Xsqlite3, _pDef *XFuncDef) { // sqlite3.c:72232:1
- if (int32(_pDef.X1) & i32(16)) == i32(0) {
- goto _0
+// If the input FuncDef structure is ephemeral, then free it. If
+// the FuncDef is not ephermal, then do nothing.
+func _freeEphemeralFunction(tls *crt.TLS, _db *Xsqlite3, _pDef *XFuncDef) {
+ if (int32(_pDef.X1) & i32(16)) != i32(0) {
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pDef))
}
-
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pDef))
-_0:
}
-func _sqlite3KeyInfoUnref(tls *crt.TLS, _p *XKeyInfo) { // sqlite3.c:117574:1
+// Deallocate a KeyInfo object
+func _sqlite3KeyInfoUnref(tls *crt.TLS, _p *XKeyInfo) {
if _p == nil {
goto _0
}
-
func() {
if (_p.X0) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3KeyInfoUnrefØ00__func__Ø000))), unsafe.Pointer(str(12860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3KeyInfoUnrefØ00__func__Ø000))), unsafe.Pointer(str(13857)))
crt.X__builtin_abort(tls)
}
}()
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) -= 1
- if (_p.X0) != uint32(i32(0)) {
- goto _3
+ if (_p.X0) == uint32(i32(0)) {
+ _sqlite3DbFreeNN(tls, (*Xsqlite3)(_p.X4), (unsafe.Pointer)(_p))
}
-
- _sqlite3DbFreeNN(tls, (*Xsqlite3)(_p.X4), (unsafe.Pointer)(_p))
-_3:
_0:
}
-var _sqlite3KeyInfoUnrefØ00__func__Ø000 [20]int8 // -
+var _sqlite3KeyInfoUnrefØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3KeyInfoUnrefØ00__func__Ø000[0], str(42800), 20)
+ crt.Xstrncpy(nil, &_sqlite3KeyInfoUnrefØ00__func__Ø000[0], str(41768), 20)
}
-func _freeP4Mem(tls *crt.TLS, _db *Xsqlite3, _p *XMem) { // sqlite3.c:72243:1
- if (_p.X7) == 0 {
- goto _0
+// Delete a P4 value if necessary.
+func _freeP4Mem(tls *crt.TLS, _db *Xsqlite3, _p *XMem) {
+ if (_p.X7) != 0 {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X6))
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X6))
-_0:
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
}
-func _vdbeChangeP4Full(tls *crt.TLS, _p *TVdbe, _pOp *XVdbeOp, _zP4 *int8, _n int32) { // sqlite3.c:72366:1
- if (_pOp.X1) == 0 {
- goto _0
- }
-
- _freeP4(tls, (*Xsqlite3)(_p.X0), int32(_pOp.X1), *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(0))
- *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = nil
-_0:
- if _n >= i32(0) {
- goto _1
+// Change the value of the P4 operand for a specific instruction.
+// This routine is useful when a large program is loaded from a
+// static array using sqlite3VdbeAddOpList but we want to make a
+// few minor changes to the program.
+//
+// If n>=0 then the P4 operand is dynamic, meaning that a copy of
+// the string is made into memory obtained from sqlite3_malloc().
+// A value of n==0 means copy bytes of zP4 up to and including the
+// first null byte. If n>0 then copy n+1 bytes of zP4.
+//
+// Other values of n (P4_STATIC, P4_COLLSEQ etc.) indicate that zP4 points
+// to a string or structure that is guaranteed to exist for the lifetime of
+// the Vdbe. In these cases we can just copy the pointer.
+//
+// If addr<0 then change P4 on the most recently inserted instruction.
+func _vdbeChangeP4Full(tls *crt.TLS, _p *TVdbe, _pOp *XVdbeOp, _zP4 *int8, _n int32) {
+ if (_pOp.X1) != 0 {
+ _freeP4(tls, (*Xsqlite3)(_p.X0), int32(_pOp.X1), *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(0))
+ *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = nil
+ }
+ if _n < i32(0) {
+ _sqlite3VdbeChangeP4(tls, _p, int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer((*XVdbeOp)(_p.X17))))/24), _zP4, _n)
+ goto _2
}
-
- _sqlite3VdbeChangeP4(tls, _p, int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer((*XVdbeOp)(_p.X17))))/24), _zP4, _n)
- goto _2
-
-_1:
- if _n != i32(0) {
- goto _3
+ if _n == i32(0) {
+ _n = _sqlite3Strlen30(tls, _zP4)
}
-
- _n = _sqlite3Strlen30(tls, _zP4)
-_3:
- *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = _sqlite3DbStrNDup(tls, (*Xsqlite3)(_p.X0), _zP4, uint64(_n))
+ *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = _sqlite3DbStrNDup(tls, (*Xsqlite3)(_p.X0), _zP4, uint64(_n))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-1))
_2:
}
-func _sqlite3VtabLock(tls *crt.TLS, _pVTab *XVTable) { // sqlite3.c:125119:1
+// Lock the virtual table so that it cannot be disconnected.
+// Locks nest. Every lock should have a corresponding unlock.
+// If an unlock is omitted, resources leaks will occur.
+//
+// If a disconnect is attempted while a virtual table is locked,
+// the disconnect is deferred until all locks have been removed.
+func _sqlite3VtabLock(tls *crt.TLS, _pVTab *XVTable) {
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTab)) + uintptr(12 /* X3 */))) += 1
}
-func _codeTableLocks(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:99787:1
- var _i int32 // sqlite3.c:99788:7
- _ = _i
- var _pVdbe *TVdbe // sqlite3.c:99789:8
- _ = _pVdbe
- var _1_p *XTableLock // sqlite3.c:99795:15
- _ = _1_p
- var _1_p1 int32 // sqlite3.c:99796:9
- _ = _1_p1
+// Code an OP_TableLock instruction for each table locked by the
+// statement (configured by calls to sqlite3TableLock()).
+func _codeTableLocks(tls *crt.TLS, _pParse *XParse) {
+ var _i, _1_p1 int32
+ var _pVdbe *TVdbe
+ var _1_p *XTableLock
_pVdbe = _sqlite3GetVdbe(tls, _pParse)
func() {
if _pVdbe == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99792), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTableLocksØ00__func__Ø000))), unsafe.Pointer(str(42820)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99792), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTableLocksØ00__func__Ø000))), unsafe.Pointer(str(41788)))
crt.X__builtin_abort(tls)
}
}()
@@ -31025,52 +28916,46 @@ _2:
if _i >= (_pParse.X36) {
goto _5
}
-
_1_p = (*XTableLock)(unsafe.Pointer(uintptr(_pParse.X37) + 16*uintptr(_i)))
_1_p1 = _1_p.X0
_sqlite3VdbeAddOp4(tls, _pVdbe, i32(154), _1_p1, _1_p.X1, int32(_1_p.X2), _1_p.X3, i32(-2))
_i += 1
goto _2
-
_5:
}
-var _codeTableLocksØ00__func__Ø000 [15]int8 // -
+var _codeTableLocksØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_codeTableLocksØ00__func__Ø000[0], str(42832), 15)
+ crt.Xstrncpy(nil, &_codeTableLocksØ00__func__Ø000[0], str(41797), 15)
}
-func _sqlite3AutoincrementBegin(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:109091:1
- var _p *TAggInfo_func // sqlite3.c:109092:15
- _ = _p
- var _db *Xsqlite3 // sqlite3.c:109093:11
- _ = _db
- var _pDb *XDb // sqlite3.c:109094:6
- _ = _pDb
- var _memId int32 // sqlite3.c:109095:7
- _ = _memId
- var _v *TVdbe // sqlite3.c:109096:8
- _ = _v
- var _1_aOp *XVdbeOp // sqlite3.c:109118:12
- _ = _1_aOp
+// This routine generates code that will initialize all of the
+// register used by the autoincrement tracker.
+func _sqlite3AutoincrementBegin(tls *crt.TLS, _pParse *XParse) {
+ var _memId int32
+ var _db *Xsqlite3
+ var _pDb *XDb
+ var _v *TVdbe
+ var _1_aOp *XVdbeOp
+ var _p *TAggInfo_func
_db = (*Xsqlite3)(_pParse.X0)
_v = (*TVdbe)(_pParse.X2)
func() {
if (*XTable)(_pParse.X40) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109100), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(42848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109100), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(41812)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XParse)(_pParse.X39) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109101), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(42872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109101), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(41835)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109103), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(42900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109103), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(41861)))
crt.X__builtin_abort(tls)
}
}()
@@ -31079,25 +28964,20 @@ _6:
if _p == nil {
goto _9
}
-
_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_p.X2)))
_memId = _p.X3
func() {
if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pDb.X4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109121), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(42904)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109121), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00__func__Ø000))), unsafe.Pointer(str(41863)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3OpenTable(tls, _pParse, i32(0), _p.X2, (*XTable)((*XSchema)(_pDb.X4).X6), i32(106))
_sqlite3VdbeLoadString(tls, _v, _memId-i32(1), (*XTable)(_p.X1).X0)
_1_aOp = _sqlite3VdbeAddOpList(tls, _v, i32(10), (*XVdbeOpList)(unsafe.Pointer(&_sqlite3AutoincrementBeginØ00autoIncØ002)), _sqlite3AutoincrementBeginØ00iLnØ001)
- if _1_aOp != nil {
- goto _12
+ if _1_aOp == nil {
+ goto _9
}
-
- goto _9
-
-_12:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(0)))))) + uintptr(8 /* X4 */))) = _memId
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(0)))))) + uintptr(12 /* X5 */))) = _memId + i32(1)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(2)))))) + uintptr(12 /* X5 */))) = _memId
@@ -31109,31 +28989,35 @@ _12:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(8)))))) + uintptr(8 /* X4 */))) = _memId
_p = (*TAggInfo_func)(_p.X0)
goto _6
-
_9:
}
-var _sqlite3AutoincrementBeginØ00__func__Ø000 [26]int8 // -
+var _sqlite3AutoincrementBeginØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3AutoincrementBeginØ00__func__Ø000[0], str(42948), 26)
+ crt.Xstrncpy(nil, &_sqlite3AutoincrementBeginØ00__func__Ø000[0], str(41907), 26)
}
-func _sqlite3OpenTable(tls *crt.TLS, _pParse *XParse, _iCur int32, _iDb int32, _pTab *XTable, _opcode int32) { // sqlite3.c:108861:1
- var _v *TVdbe // sqlite3.c:108868:8
- _ = _v
- var _2_pPk *XIndex // sqlite3.c:108878:11
- _ = _2_pPk
+// Generate code that will
+//
+// (1) acquire a lock for table pTab then
+// (2) open pTab as cursor iCur.
+//
+// If pTab is a WITHOUT ROWID table, then it is the PRIMARY KEY index
+// for that table that is actually opened.
+func _sqlite3OpenTable(tls *crt.TLS, _pParse *XParse, _iCur int32, _iDb int32, _pTab *XTable, _opcode int32) {
+ var _v *TVdbe
+ var _2_pPk *XIndex
func() {
if (_pTab.X16) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108869), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(42976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108869), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(41933)))
crt.X__builtin_abort(tls)
}
}()
_v = _sqlite3GetVdbe(tls, _pParse)
func() {
if _opcode != i32(107) && _opcode != i32(106) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108871), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(42996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108871), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(41950)))
crt.X__builtin_abort(tls)
}
}()
@@ -31143,49 +29027,48 @@ func _sqlite3OpenTable(tls *crt.TLS, _pParse *XParse, _iCur int32, _iDb int32, _
}
return i32(0)
}()), _pTab.X0)
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _7
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _sqlite3VdbeAddOp4Int(tls, _v, _opcode, _iCur, _pTab.X7, _iDb, int32(_pTab.X11))
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(_pTab.X0))
+ goto _8
}
-
- _sqlite3VdbeAddOp4Int(tls, _v, _opcode, _iCur, _pTab.X7, _iDb, int32(_pTab.X11))
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(_pTab.X0))
- goto _8
-
-_7:
_2_pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
func() {
if _2_pPk == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108879), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(43040)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108879), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(41994)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_2_pPk.X11) != (_pTab.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108880), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(43048)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108880), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableØ00__func__Ø000))), unsafe.Pointer(str(42001)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeAddOp3(tls, _v, _opcode, _iCur, _2_pPk.X11, _iDb)
_sqlite3VdbeSetP4KeyInfo(tls, _pParse, _2_pPk)
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(_pTab.X0))
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(_pTab.X0))
_8:
}
-var _sqlite3OpenTableØ00__func__Ø000 [17]int8 // -
+var _sqlite3OpenTableØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3OpenTableØ00__func__Ø000[0], str(43072), 17)
+ crt.Xstrncpy(nil, &_sqlite3OpenTableØ00__func__Ø000[0], str(42023), 17)
}
-func _sqlite3TableLock(tls *crt.TLS, _pParse *XParse, _iDb int32, _iTab int32, _isWriteLock uint8, _zName *int8) { // sqlite3.c:99745:1
- var _pToplevel *XParse // sqlite3.c:99752:9
- _ = _pToplevel
- var _i int32 // sqlite3.c:99753:7
- _ = _i
- var _nBytes int32 // sqlite3.c:99754:7
- _ = _nBytes
- var _p *XTableLock // sqlite3.c:99755:13
- _ = _p
+// Record the fact that we want to lock a table at run-time.
+//
+// The table to be locked has root page iTab and is found in database iDb.
+// A read or a write lock can be taken depending on isWritelock.
+//
+// This routine just records the fact that the lock is desired. The
+// code to make the lock occur is generated by a later call to
+// codeTableLocks() which occurs during sqlite3FinishCoding().
+func _sqlite3TableLock(tls *crt.TLS, _pParse *XParse, _iDb int32, _iTab int32, _isWriteLock uint8, _zName *int8) {
+ var _i, _nBytes int32
+ var _pToplevel *XParse
+ var _p *XTableLock
_pToplevel = func() *XParse {
if (*XParse)(_pParse.X39) != nil {
return (*XParse)(_pParse.X39)
@@ -31194,151 +29077,119 @@ func _sqlite3TableLock(tls *crt.TLS, _pParse *XParse, _iDb int32, _iTab int32, _
}()
func() {
if _iDb < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TableLockØ00__func__Ø000))), unsafe.Pointer(str(43092)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TableLockØ00__func__Ø000))), unsafe.Pointer(str(42040)))
crt.X__builtin_abort(tls)
}
}()
- if _iDb != i32(1) {
- goto _4
+ if _iDb == i32(1) {
+ return
}
- return
-
-_4:
- if _sqlite3BtreeSharable(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(_iDb))).X1)) != 0 {
- goto _5
+ if _sqlite3BtreeSharable(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(_iDb))).X1)) == 0 {
+ return
}
- return
-
-_5:
_i = i32(0)
_6:
if _i >= (_pToplevel.X36) {
goto _9
}
-
_p = (*XTableLock)(unsafe.Pointer(uintptr(_pToplevel.X37) + 16*uintptr(_i)))
- if (_p.X0) != _iDb || (_p.X1) != _iTab {
- goto _11
+ if ((_p.X0) == _iDb) && ((_p.X1) == _iTab) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = uint8(bool2int(((_p.X2) != 0) || (_isWriteLock != 0)))
+ return
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = uint8(bool2int(((_p.X2) != 0) || (_isWriteLock != 0)))
- return
-
-_11:
_i += 1
goto _6
-
_9:
_nBytes = int32(u32(16) * uint32((_pToplevel.X36)+i32(1)))
*(**XTableLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(124 /* X37 */))))) = (*XTableLock)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_pToplevel.X0), _pToplevel.X37, uint64(_nBytes)))
- if (*XTableLock)(_pToplevel.X37) == nil {
- goto _13
+ if (*XTableLock)(_pToplevel.X37) != nil {
+ _p = (*XTableLock)(unsafe.Pointer(uintptr(_pToplevel.X37) + 16*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel))+uintptr(120 /* X36 */))), int32(1)))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _iDb
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = _iTab
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = _isWriteLock
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = _zName
+ goto _14
}
-
- _p = (*XTableLock)(unsafe.Pointer(uintptr(_pToplevel.X37) + 16*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel))+uintptr(120 /* X36 */))), int32(1)))))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _iDb
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = _iTab
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = _isWriteLock
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = _zName
- goto _14
-
-_13:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(120 /* X36 */))) = i32(0)
_sqlite3OomFault(tls, (*Xsqlite3)(_pToplevel.X0))
_14:
}
-var _sqlite3TableLockØ00__func__Ø000 [17]int8 // -
+var _sqlite3TableLockØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3TableLockØ00__func__Ø000[0], str(43100), 17)
+ crt.Xstrncpy(nil, &_sqlite3TableLockØ00__func__Ø000[0], str(42047), 17)
}
-func _sqlite3PrimaryKeyIndex(tls *crt.TLS, _pTab *XTable) (r0 *XIndex) { // sqlite3.c:100504:1
- var _p *XIndex // sqlite3.c:100505:9
- _ = _p
+// Return the PRIMARY KEY index of a table
+func _sqlite3PrimaryKeyIndex(tls *crt.TLS, _pTab *XTable) (r0 *XIndex) {
+ var _p *XIndex
_p = (*XIndex)(_pTab.X2)
_0:
if _p == nil || int32((uint32(_p.X16)<>uint(i32(30))) == i32(2) {
goto _4
}
-
_p = (*XIndex)(_p.X5)
goto _0
-
_4:
return _p
}
-func _sqlite3VdbeSetP4KeyInfo(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex) { // sqlite3.c:72448:1
- var _v *TVdbe // sqlite3.c:72449:8
- _ = _v
- var _pKeyInfo *XKeyInfo // sqlite3.c:72450:11
- _ = _pKeyInfo
+// Set the P4 on the most recently added opcode to the KeyInfo for the
+// index given.
+func _sqlite3VdbeSetP4KeyInfo(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex) {
+ var _v *TVdbe
+ var _pKeyInfo *XKeyInfo
_v = (*TVdbe)(_pParse.X2)
func() {
if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetP4KeyInfoØ00__func__Ø000))), unsafe.Pointer(str(43120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetP4KeyInfoØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pIdx == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72452), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetP4KeyInfoØ00__func__Ø000))), unsafe.Pointer(str(43128)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72452), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetP4KeyInfoØ00__func__Ø000))), unsafe.Pointer(str(42069)))
crt.X__builtin_abort(tls)
}
}()
_pKeyInfo = _sqlite3KeyInfoOfIndex(tls, _pParse, _pIdx)
- if _pKeyInfo == nil {
- goto _4
+ if _pKeyInfo != nil {
+ _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_pKeyInfo), i32(-5))
}
-
- _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_pKeyInfo), i32(-5))
-_4:
}
-var _sqlite3VdbeSetP4KeyInfoØ00__func__Ø000 [24]int8 // -
+var _sqlite3VdbeSetP4KeyInfoØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSetP4KeyInfoØ00__func__Ø000[0], str(43136), 24)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSetP4KeyInfoØ00__func__Ø000[0], str(42077), 24)
}
-func _sqlite3KeyInfoOfIndex(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex) (r0 *XKeyInfo) { // sqlite3.c:104048:1
- var _i int32 // sqlite3.c:104049:7
- _ = _i
- var _nCol int32 // sqlite3.c:104050:7
- _ = _nCol
- var _nKey int32 // sqlite3.c:104051:7
- _ = _nKey
- var _pKey *XKeyInfo // sqlite3.c:104052:11
- _ = _pKey
- var _4_zColl *int8 // sqlite3.c:104062:18
- _ = _4_zColl
+// Return a KeyInfo structure that is appropriate for the given Index.
+//
+// The caller should invoke sqlite3KeyInfoUnref() on the returned object
+// when it has finished using it.
+func _sqlite3KeyInfoOfIndex(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex) (r0 *XKeyInfo) {
+ var _i, _nCol, _nKey int32
+ var _4_zColl *int8
+ var _pKey *XKeyInfo
_nCol = int32(_pIdx.X14)
_nKey = int32(_pIdx.X13)
- if (_pParse.X16) == 0 {
- goto _0
+ if (_pParse.X16) != 0 {
+ return nil
}
- return nil
-
-_0:
- if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _1
+ if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _pKey = _sqlite3KeyInfoAlloc(tls, (*Xsqlite3)(_pParse.X0), _nKey, _nCol-_nKey)
+ goto _2
}
-
- _pKey = _sqlite3KeyInfoAlloc(tls, (*Xsqlite3)(_pParse.X0), _nKey, _nCol-_nKey)
- goto _2
-
-_1:
_pKey = _sqlite3KeyInfoAlloc(tls, (*Xsqlite3)(_pParse.X0), _nCol, i32(0))
_2:
if _pKey == nil {
goto _3
}
-
func() {
if _sqlite3KeyInfoIsWriteable(tls, _pKey) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104060), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3KeyInfoOfIndexØ00__func__Ø000))), unsafe.Pointer(str(43160)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104060), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3KeyInfoOfIndexØ00__func__Ø000))), unsafe.Pointer(str(42101)))
crt.X__builtin_abort(tls)
}
}()
@@ -31347,7 +29198,6 @@ _6:
if _i >= _nCol {
goto _9
}
-
_4_zColl = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_i)))
*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKey))+uintptr(20 /* X6 */))))) + 4*uintptr(_i))) = func() *XCollSeq {
if _4_zColl == (*int8)(unsafe.Pointer(&_sqlite3StrBINARY)) {
@@ -31358,139 +29208,140 @@ _6:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKey.X5)) + 1*uintptr(_i))) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_i)))
_i += 1
goto _6
-
_9:
- if (_pParse.X16) == 0 {
- goto _12
+ if (_pParse.X16) != 0 {
+ _sqlite3KeyInfoUnref(tls, _pKey)
+ _pKey = nil
}
-
- _sqlite3KeyInfoUnref(tls, _pKey)
- _pKey = nil
-_12:
_3:
- r0 = _pKey
- return
+ return _pKey
}
-func _sqlite3KeyInfoAlloc(tls *crt.TLS, _db *Xsqlite3, _N int32, _X int32) (r0 *XKeyInfo) { // sqlite3.c:117554:1
- var _nExtra int32 // sqlite3.c:117555:7
- _ = _nExtra
- var _p *XKeyInfo // sqlite3.c:117556:11
- _ = _p
+// Allocate a KeyInfo object sufficient for an index of N key columns and
+// X extra columns.
+func _sqlite3KeyInfoAlloc(tls *crt.TLS, _db *Xsqlite3, _N int32, _X int32) (r0 *XKeyInfo) {
+ var _nExtra int32
+ var _p *XKeyInfo
_nExtra = int32(uint32(_N+_X) * u32(5))
_p = (*XKeyInfo)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(24)+uint32(_nExtra))))
- if _p == nil {
- goto _0
+ if _p != nil {
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = (*uint8)(unsafe.Pointer((**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */))))) + 4*uintptr(_N+_X)))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = uint16(_N)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))) = uint16(_X)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = _db.X14
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))))) = _db
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint32(i32(1))
+ crt.Xmemset(tls, (unsafe.Pointer)((*XKeyInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+24*uintptr(i32(1))))), i32(0), uint32(_nExtra))
+ goto _1
}
-
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = (*uint8)(unsafe.Pointer((**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */))))) + 4*uintptr(_N+_X)))))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = uint16(_N)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))) = uint16(_X)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = _db.X14
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))))) = _db
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint32(i32(1))
- crt.Xmemset(tls, (unsafe.Pointer)((*XKeyInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+24*uintptr(i32(1))))), i32(0), uint32(_nExtra))
- goto _1
-
-_0:
_sqlite3OomFault(tls, _db)
_1:
return _p
}
-func _sqlite3KeyInfoIsWriteable(tls *crt.TLS, _p *XKeyInfo) (r0 int32) { // sqlite3.c:117600:1
+// Return TRUE if a KeyInfo object can be change. The KeyInfo object
+// can only be changed if this is just a single reference to the object.
+//
+// This routine is used only inside of assert() statements.
+func _sqlite3KeyInfoIsWriteable(tls *crt.TLS, _p *XKeyInfo) (r0 int32) {
return bool2int((_p.X0) == uint32(i32(1)))
}
-var _sqlite3KeyInfoOfIndexØ00__func__Ø000 [22]int8 // -
+var _sqlite3KeyInfoOfIndexØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3KeyInfoOfIndexØ00__func__Ø000[0], str(43192), 22)
+ crt.Xstrncpy(nil, &_sqlite3KeyInfoOfIndexØ00__func__Ø000[0], str(42133), 22)
}
-var _sqlite3StrBINARY [7]int8 // sqlite3.c:17447:27
+var _sqlite3StrBINARY [7]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StrBINARY[0], str(38600), 7)
+ crt.Xstrncpy(nil, &_sqlite3StrBINARY[0], str(37881), 7)
}
-func _sqlite3LocateCollSeq(tls *crt.TLS, _pParse *XParse, _zName *int8) (r0 *XCollSeq) { // sqlite3.c:101133:1
- var _db *Xsqlite3 // sqlite3.c:101134:11
- _ = _db
- var _enc uint8 // sqlite3.c:101135:6
- _ = _enc
- var _initbusy uint8 // sqlite3.c:101136:6
- _ = _initbusy
- var _pColl *XCollSeq // sqlite3.c:101137:11
- _ = _pColl
+// This function returns the collation sequence for database native text
+// encoding identified by the string zName, length nName.
+//
+// If the requested collation sequence is not available, or not available
+// in the database native encoding, the collation factory is invoked to
+// request it. If the collation factory does not supply such a sequence,
+// and the sequence is available in another text encoding, then that is
+// returned instead.
+//
+// If no versions of the requested collations sequence are available, or
+// another error occurs, NULL is returned and an error message written into
+// pParse.
+//
+// This routine is a wrapper around sqlite3FindCollSeq(). This routine
+// invokes the collation factory if the named collation cannot be found
+// and generates an error message.
+//
+// See also: sqlite3FindCollSeq(), sqlite3GetCollSeq()
+func _sqlite3LocateCollSeq(tls *crt.TLS, _pParse *XParse, _zName *int8) (r0 *XCollSeq) {
+ var _enc, _initbusy uint8
+ var _db *Xsqlite3
+ var _pColl *XCollSeq
_db = (*Xsqlite3)(_pParse.X0)
_enc = _db.X14
- _initbusy = (*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2
+ _initbusy = (*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2
_pColl = _sqlite3FindCollSeq(tls, _db, _enc, _zName, int32(_initbusy))
- if _initbusy != 0 || _pColl != nil && (_pColl.X3) != nil {
- goto _2
+ if (_initbusy == 0) && ((_pColl == nil) || ((_pColl.X3) == nil)) {
+ _pColl = _sqlite3GetCollSeq(tls, _pParse, _enc, _pColl, _zName)
}
-
- _pColl = _sqlite3GetCollSeq(tls, _pParse, _enc, _pColl, _zName)
-_2:
return _pColl
}
-func _sqlite3GetCollSeq(tls *crt.TLS, _pParse *XParse, _enc uint8, _pColl *XCollSeq, _zName *int8) (r0 *XCollSeq) { // sqlite3.c:104227:1
- var _p *XCollSeq // sqlite3.c:104233:11
- _ = _p
- var _db *Xsqlite3 // sqlite3.c:104234:11
- _ = _db
+// This function is responsible for invoking the collation factory callback
+// or substituting a collation sequence of a different encoding when the
+// requested collation sequence is not available in the desired encoding.
+//
+// If it is not NULL, then pColl must point to the database native encoding
+// collation sequence with name zName, length nName.
+//
+// The return value is either the collation sequence to be used in database
+// db for collation type name zName, length nName, or NULL, if no collation
+// sequence can be found. If no collation is found, leave an error message.
+//
+// See also: sqlite3LocateCollSeq(), sqlite3FindCollSeq()
+func _sqlite3GetCollSeq(tls *crt.TLS, _pParse *XParse, _enc uint8, _pColl *XCollSeq, _zName *int8) (r0 *XCollSeq) {
+ var _db *Xsqlite3
+ var _p *XCollSeq
_db = (*Xsqlite3)(_pParse.X0)
_p = _pColl
- if _p != nil {
- goto _0
+ if _p == nil {
+ _p = _sqlite3FindCollSeq(tls, _db, _enc, _zName, i32(0))
}
-
- _p = _sqlite3FindCollSeq(tls, _db, _enc, _zName, i32(0))
-_0:
- if _p != nil && (_p.X3) != nil {
- goto _2
+ if (_p == nil) || ((_p.X3) == nil) {
+ _callCollNeeded(tls, _db, int32(_enc), _zName)
+ _p = _sqlite3FindCollSeq(tls, _db, _enc, _zName, i32(0))
}
-
- _callCollNeeded(tls, _db, int32(_enc), _zName)
- _p = _sqlite3FindCollSeq(tls, _db, _enc, _zName, i32(0))
-_2:
- if _p == nil || (_p.X3) != nil || _synthCollSeq(tls, _db, _p) == 0 {
- goto _5
+ if ((_p != nil) && ((_p.X3) == nil)) && _synthCollSeq(tls, _db, _p) != 0 {
+ _p = nil
}
-
- _p = nil
-_5:
func() {
if _p != nil && (_p.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetCollSeqØ00__func__Ø000))), unsafe.Pointer(str(43216)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetCollSeqØ00__func__Ø000))), unsafe.Pointer(str(42155)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil {
- goto _9
+ if _p == nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(42169), unsafe.Pointer(_zName))
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(43232), unsafe.Pointer(_zName))
-_9:
return _p
}
-func _callCollNeeded(tls *crt.TLS, _db *Xsqlite3, _enc int32, _zName *int8) { // sqlite3.c:104168:1
- var _1_zExternal *int8 // sqlite3.c:104171:10
- _ = _1_zExternal
- var _2_zExternal *int8 // sqlite3.c:104178:16
- _ = _2_zExternal
- var _2_pTmp *XMem // sqlite3.c:104179:19
- _ = _2_pTmp
+// Invoke the 'collation needed' callback to request a collation sequence
+// in the encoding enc of name zName, length nName.
+func _callCollNeeded(tls *crt.TLS, _db *Xsqlite3, _enc int32, _zName *int8) {
+ var _1_zExternal, _2_zExternal *int8
+ var _2_pTmp *XMem
func() {
if (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, *int8))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, *int8)
}{(_db.X53)}))) != nil && (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, unsafe.Pointer)
}{(_db.X54)}))) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104169), unsafe.Pointer((*int8)(unsafe.Pointer(&_callCollNeededØ00__func__Ø000))), unsafe.Pointer(str(43264)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104169), unsafe.Pointer((*int8)(unsafe.Pointer(&_callCollNeededØ00__func__Ø000))), unsafe.Pointer(str(42200)))
crt.X__builtin_abort(tls)
}
}()
@@ -31499,14 +29350,10 @@ func _callCollNeeded(tls *crt.TLS, _db *Xsqlite3, _enc int32, _zName *int8) { //
}{(_db.X53)}))) == nil {
goto _3
}
-
_1_zExternal = _sqlite3DbStrDup(tls, _db, _zName)
- if _1_zExternal != nil {
- goto _4
+ if _1_zExternal == nil {
+ return
}
- return
-
-_4:
(*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, *int8))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, *int8)
}{(_db.X53)})))(tls, _db.X55, _db, _enc, _1_zExternal)
@@ -31517,223 +29364,206 @@ _3:
}{(_db.X54)}))) == nil {
goto _5
}
-
_2_pTmp = _sqlite3ValueNew(tls, _db)
_sqlite3ValueSetStr(tls, _2_pTmp, i32(-1), (unsafe.Pointer)(_zName), uint8(i32(1)), nil)
_2_zExternal = (*int8)(_sqlite3ValueText(tls, _2_pTmp, uint8(i32(2))))
- if _2_zExternal == nil {
- goto _6
+ if _2_zExternal != nil {
+ (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, unsafe.Pointer)
+ }{(_db.X54)})))(tls, _db.X55, _db, int32(_db.X14), (unsafe.Pointer)(_2_zExternal))
}
-
- (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, int32, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, unsafe.Pointer)
- }{(_db.X54)})))(tls, _db.X55, _db, int32(_db.X14), (unsafe.Pointer)(_2_zExternal))
-_6:
_sqlite3ValueFree(tls, _2_pTmp)
_5:
}
-var _callCollNeededØ00__func__Ø000 [15]int8 // -
+var _callCollNeededØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_callCollNeededØ00__func__Ø000[0], str(43304), 15)
+ crt.Xstrncpy(nil, &_callCollNeededØ00__func__Ø000[0], str(42239), 15)
}
-func _sqlite3DbStrDup(tls *crt.TLS, _db *Xsqlite3, _z *int8) (r0 *int8) { // sqlite3.c:24956:1
- var _zNew *int8 // sqlite3.c:24957:8
- _ = _zNew
- var _n uint32 // sqlite3.c:24958:10
- _ = _n
- if _z != nil {
- goto _0
+// Make a copy of a string in memory obtained from sqliteMalloc(). These
+// functions call sqlite3MallocRaw() directly instead of sqliteMalloc(). This
+// is because when memory debugging is turned on, these two functions are
+// called via macros that record the current file and line number in the
+// ThreadData structure.
+func _sqlite3DbStrDup(tls *crt.TLS, _db *Xsqlite3, _z *int8) (r0 *int8) {
+ var _n uint32
+ var _zNew *int8
+ if _z == nil {
+ return nil
}
- return nil
-
-_0:
_n = crt.Xstrlen(tls, _z) + uint32(i32(1))
_zNew = (*int8)(_sqlite3DbMallocRaw(tls, _db, uint64(_n)))
- if _zNew == nil {
- goto _1
+ if _zNew != nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zNew), (unsafe.Pointer)(_z), _n)
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zNew), (unsafe.Pointer)(_z), _n)
-_1:
return _zNew
}
-func _synthCollSeq(tls *crt.TLS, _db *Xsqlite3, _pColl *XCollSeq) (r0 int32) { // sqlite3.c:104197:1
- var _pColl2 *XCollSeq // sqlite3.c:104198:11
- _ = _pColl2
- var _z *int8 // sqlite3.c:104199:8
- _ = _z
- var _i int32 // sqlite3.c:104200:7
- _ = _i
+// This routine is called if the collation factory fails to deliver a
+// collation function in the best encoding but there may be other versions
+// of this collation function (for other text encodings) available. Use one
+// of these instead if they exist. Avoid a UTF-8 <-> UTF-16 conversion if
+// possible.
+func _synthCollSeq(tls *crt.TLS, _db *Xsqlite3, _pColl *XCollSeq) (r0 int32) {
+ var _i int32
+ var _z *int8
+ var _pColl2 *XCollSeq
_z = _pColl.X0
_i = i32(0)
_0:
if _i >= i32(3) {
goto _3
}
-
_pColl2 = _sqlite3FindCollSeq(tls, _db, *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_synthCollSeqØ00aEncØ001)) + 1*uintptr(_i))), _z, i32(0))
if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32
- }{(_pColl2.X3)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(_pColl2.X3)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, unsafe.Pointer, int32, unsafe.Pointer) int32
}{nil})) {
- goto _4
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pColl), (unsafe.Pointer)(_pColl2), u32(20))
+ *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl)) + uintptr(16 /* X4 */))) = nil
+ return i32(0)
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pColl), (unsafe.Pointer)(_pColl2), u32(20))
- *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColl)) + uintptr(16 /* X4 */))) = nil
- return i32(0)
-
-_4:
_i += 1
goto _0
-
_3:
return i32(1)
}
-var _synthCollSeqØ00aEncØ001 [3]uint8 // sqlite3.c:104201:19
+var _synthCollSeqØ00aEncØ001 [3]uint8
func init() {
_synthCollSeqØ00aEncØ001 = [3]uint8{3, 2, 1}
}
-var _sqlite3GetCollSeqØ00__func__Ø000 [18]int8 // -
+var _sqlite3GetCollSeqØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3GetCollSeqØ00__func__Ø000[0], str(43320), 18)
+ crt.Xstrncpy(nil, &_sqlite3GetCollSeqØ00__func__Ø000[0], str(42254), 18)
}
-func _sqlite3VdbeAppendP4(tls *crt.TLS, _p *TVdbe, _pP4 unsafe.Pointer, _n int32) { // sqlite3.c:72428:1
- var _pOp *XVdbeOp // sqlite3.c:72429:10
- _ = _pOp
+// Change the P4 operand of the most recently coded instruction
+// to the value defined by the arguments. This is a high-speed
+// version of sqlite3VdbeChangeP4().
+//
+// The P4 operand must not have been previously defined. And the new
+// P4 must not be P4_INT32. Use sqlite3VdbeChangeP4() in either of
+// those cases.
+func _sqlite3VdbeAppendP4(tls *crt.TLS, _p *TVdbe, _pP4 unsafe.Pointer, _n int32) {
+ var _pOp *XVdbeOp
func() {
if _n == i32(-11) || _n == i32(-8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(43340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(42272)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _n > i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(43368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(42298)))
crt.X__builtin_abort(tls)
}
}()
- if ((*Xsqlite3)(_p.X0).X17) == 0 {
- goto _5
+ if ((*Xsqlite3)(_p.X0).X17) != 0 {
+ _freeP4(tls, (*Xsqlite3)(_p.X0), _n, _pP4)
+ goto _6
}
-
- _freeP4(tls, (*Xsqlite3)(_p.X0), _n, _pP4)
- goto _6
-
-_5:
func() {
if _pP4 == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72435), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(43376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72435), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(42303)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X27) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(42744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(41716)))
crt.X__builtin_abort(tls)
}
}()
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr((_p.X27)-i32(1))))
func() {
if int32(_pOp.X1) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72438), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(43384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72438), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAppendP4Ø00__func__Ø000))), unsafe.Pointer(str(42310)))
crt.X__builtin_abort(tls)
}
}()
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(_n)
- *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = _pP4
+ *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = _pP4
_6:
}
-var _sqlite3VdbeAppendP4Ø00__func__Ø000 [20]int8 // -
+var _sqlite3VdbeAppendP4Ø00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeAppendP4Ø00__func__Ø000[0], str(43408), 20)
+ crt.Xstrncpy(nil, &_sqlite3VdbeAppendP4Ø00__func__Ø000[0], str(42334), 20)
}
-func _sqlite3VdbeLoadString(tls *crt.TLS, _p *TVdbe, _iDest int32, _zStr *int8) (r0 int32) { // sqlite3.c:71654:1
+// Generate code to cause the string zStr to be loaded into
+// register iDest
+func _sqlite3VdbeLoadString(tls *crt.TLS, _p *TVdbe, _iDest int32, _zStr *int8) (r0 int32) {
return _sqlite3VdbeAddOp4(tls, _p, i32(97), i32(0), _iDest, i32(0), _zStr, i32(0))
}
-func _sqlite3VdbeAddOpList(tls *crt.TLS, _p *TVdbe, _nOp int32, _aOp *XVdbeOpList, _iLineno int32) (r0 *XVdbeOp) { // sqlite3.c:72126:1
- var _i int32 // sqlite3.c:72132:7
- _ = _i
- var _pOut *XVdbeOp // sqlite3.c:72133:10
- _ = _pOut
- var _pFirst *XVdbeOp // sqlite3.c:72133:17
- _ = _pFirst
+// Add a whole list of operations to the operation stack. Return a
+// pointer to the first operation inserted.
+//
+// Non-zero P2 arguments to jump instructions are automatically adjusted
+// so that the jump target is relative to the first operation inserted.
+func _sqlite3VdbeAddOpList(tls *crt.TLS, _p *TVdbe, _nOp int32, _aOp *XVdbeOpList, _iLineno int32) (r0 *XVdbeOp) {
+ var _i int32
+ var _pOut, _pFirst *XVdbeOp
func() {
if _nOp <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOpListØ00__func__Ø000))), unsafe.Pointer(str(43428)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOpListØ00__func__Ø000))), unsafe.Pointer(str(42354)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72135), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOpListØ00__func__Ø000))), unsafe.Pointer(str(38344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72135), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOpListØ00__func__Ø000))), unsafe.Pointer(str(37642)))
crt.X__builtin_abort(tls)
}
}()
- if ((_p.X27)+_nOp) <= ((*XParse)(_p.X3).X19) || _growOpArray(tls, _p, _nOp) == 0 {
- goto _5
+ if (((_p.X27) + _nOp) > ((*XParse)(_p.X3).X19)) && _growOpArray(tls, _p, _nOp) != 0 {
+ return nil
}
- return nil
-
-_5:
- _pFirst = store38(&_pOut, (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_p.X27))))
+ _pFirst = store40(&_pOut, (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_p.X27))))
_i = i32(0)
_6:
if _i >= _nOp {
goto _9
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))) = _aOp.X0
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(4 /* X3 */))) = int32(_aOp.X1)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X4 */))) = int32(_aOp.X2)
func() {
if int32(_aOp.X2) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72144), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOpListØ00__func__Ø000))), unsafe.Pointer(str(43436)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72144), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAddOpListØ00__func__Ø000))), unsafe.Pointer(str(42360)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeProperty)) + 1*uintptr(_aOp.X0))))&i32(1)) == i32(0) || int32(_aOp.X2) <= i32(0) {
- goto _13
- }
-
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X4 */)))
- *p = (*p) + (_p.X27)
- sink1 = *p
+ if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeProperty)) + 1*uintptr(_aOp.X0)))) & i32(1)) != i32(0)) && (int32(_aOp.X2) > i32(0)) {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X4 */)))
+ *p = (*p) + (_p.X27)
+ sink1 = *p
+ }
}
-_13:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X5 */))) = int32(_aOp.X3)
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(1 /* X1 */))) = int8(i32(0))
- *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(16 /* X6 */))))) = nil
+ *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(16 /* X6 */))))) = nil
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(2 /* X2 */))) = uint16(i32(0))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(20 /* X7 */))) = nil
- if (((*Xsqlite3)(_p.X0).X6) & i32(4096)) == 0 {
- goto _14
+ if (((*Xsqlite3)(_p.X0).X6) & i32(4096)) != 0 {
+ _sqlite3VdbePrintOp(tls, nil, _i+(_p.X27), (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_i+(_p.X27)))))
}
-
- _sqlite3VdbePrintOp(tls, nil, _i+(_p.X27), (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_i+(_p.X27)))))
-_14:
*(*uintptr)(unsafe.Pointer(func() **XVdbeOp {
*(*uintptr)(unsafe.Pointer(func() **XVdbeOpList { _i += 1; return &_aOp }())) += uintptr(4)
return &_pOut
}())) += uintptr(24)
goto _6
-
_9:
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(128 /* X27 */)))
@@ -31743,166 +29573,87 @@ _9:
return _pFirst
}
-var _sqlite3VdbeAddOpListØ00__func__Ø000 [21]int8 // -
+var _sqlite3VdbeAddOpListØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeAddOpListØ00__func__Ø000[0], str(43448), 21)
+ crt.Xstrncpy(nil, &_sqlite3VdbeAddOpListØ00__func__Ø000[0], str(42371), 21)
}
-var _sqlite3OpcodeProperty [166]uint8 // sqlite3.c:17442:36
+var _sqlite3OpcodeProperty [166]uint8
func init() {
_sqlite3OpcodeProperty = [166]uint8{0, 0, 0, 1, 1, 1, 1, 1, 0, 16, 0, 1, 0, 1, 1, 1, 3, 3, 1, 18, 1, 3, 3, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35, 11, 1, 1, 3, 3, 3, 1, 1, 1, 2, 2, 8, 0, 16, 16, 16, 16, 0, 16, 16, 0, 0, 16, 16, 0, 0, 0, 38, 38, 0, 2, 2, 3, 3, 11, 11, 11, 11, 11, 11, 1, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 2, 18, 0, 16, 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 4, 4, 0, 0, 16, 16, 16, 0, 0, 16, 16, 0, 0, 0, 0, 0, 0, 0, 6, 16, 0, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0}
}
-var _sqlite3AutoincrementBeginØ00autoIncØ002 [10]XVdbeOpList // sqlite3.c:109106:29
+var _sqlite3AutoincrementBeginØ00autoIncØ002 [10]XVdbeOpList
func init() {
_sqlite3AutoincrementBeginØ00autoIncØ002 = [10]XVdbeOpList{XVdbeOpList{X0: u8(59), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(37), X1: i8(0), X2: i8(9), X3: i8(0)}, XVdbeOpList{X0: u8(99), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(77), X1: i8(0), X2: i8(7), X3: i8(0)}, XVdbeOpList{X0: u8(125), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(99), X1: i8(0), X2: i8(1), X3: i8(0)}, XVdbeOpList{X0: u8(13), X1: i8(0), X2: i8(9), X3: i8(0)}, XVdbeOpList{X0: u8(7), X1: i8(0), X2: i8(2), X3: i8(0)}, XVdbeOpList{X0: u8(56), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(114), X1: i8(0), X2: i8(0), X3: i8(0)}}
}
-var _sqlite3AutoincrementBeginØ00iLnØ001 int32 // sqlite3.c:109105:22
+var _sqlite3AutoincrementBeginØ00iLnØ001 int32
-func _sqlite3ExprCode(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) { // sqlite3.c:95057:1
- var _inReg int32 // sqlite3.c:95058:7
- _ = _inReg
+// Generate code that will evaluate expression pExpr and store the
+// results in register target. The results are guaranteed to appear
+// in register target.
+func _sqlite3ExprCode(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) {
+ var _inReg int32
func() {
if _target <= i32(0) || _target > (_pParse.X18) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95060), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeØ00__func__Ø000))), unsafe.Pointer(str(43472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95060), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeØ00__func__Ø000))), unsafe.Pointer(str(42392)))
crt.X__builtin_abort(tls)
}
}()
- if _pExpr == nil || int32(_pExpr.X0) != i32(157) {
- goto _4
+ if (_pExpr != nil) && (int32(_pExpr.X0) == i32(157)) {
+ _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(64), _pExpr.X8, _target)
+ goto _5
}
-
- _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(64), _pExpr.X8, _target)
- goto _5
-
-_4:
_inReg = _sqlite3ExprCodeTarget(tls, _pParse, _pExpr, _target)
func() {
if (*TVdbe)(_pParse.X2) == nil && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95065), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeØ00__func__Ø000))), unsafe.Pointer(str(43508)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95065), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeØ00__func__Ø000))), unsafe.Pointer(str(42425)))
crt.X__builtin_abort(tls)
}
}()
- if _inReg == _target || (*TVdbe)(_pParse.X2) == nil {
- goto _10
+ if (_inReg != _target) && ((*TVdbe)(_pParse.X2) != nil) {
+ _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(65), _inReg, _target)
}
-
- _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(65), _inReg, _target)
-_10:
_5:
}
-var _sqlite3ExprCodeØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeØ00__func__Ø000[0], str(43556), 16)
-}
-
-func _sqlite3ExprCodeTarget(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) (r0 int32) { // sqlite3.c:94339:1
- var _v *TVdbe // sqlite3.c:94340:8
- _ = _v
- var _op int32 // sqlite3.c:94341:7
- _ = _op
- var _inReg int32 // sqlite3.c:94342:7
- _ = _inReg
- var _regFree1 int32 // sqlite3.c:94343:7
- _ = _regFree1
- var _regFree2 int32 // sqlite3.c:94344:7
- _ = _regFree2
- var _r1 int32 // sqlite3.c:94345:7
- _ = _r1
- var _r2 int32 // sqlite3.c:94345:11
- _ = _r2
- var _tempX XExpr // sqlite3.c:94346:8
- _ = _tempX
- var _p5 int32 // sqlite3.c:94347:7
- _ = _p5
- var _5_pAggInfo *XAggInfo // sqlite3.c:94362:15
- _ = _5_pAggInfo
- var _5_pCol *TAggInfo_col // sqlite3.c:94363:26
- _ = _5_pCol
- var _8_iTab int32 // sqlite3.c:94375:11
- _ = _8_iTab
- var _16_n int32 // sqlite3.c:94412:11
- _ = _16_n
- var _16_z *int8 // sqlite3.c:94413:18
- _ = _16_z
- var _16_zBlob *int8 // sqlite3.c:94414:12
- _ = _16_zBlob
- var _18_z *int8 // sqlite3.c:94432:20
- _ = _18_z
- var _22_pLeft *XExpr // sqlite3.c:94468:12
- _ = _22_pLeft
- var _26_pLeft *XExpr // sqlite3.c:94518:12
- _ = _26_pLeft
- var _31_addr int32 // sqlite3.c:94551:11
- _ = _31_addr
- var _32_pInfo *XAggInfo // sqlite3.c:94565:15
- _ = _32_pInfo
- var _35_pFarg *XExprList // sqlite3.c:94575:16
- _ = _35_pFarg
- var _35_nFarg int32 // sqlite3.c:94576:11
- _ = _35_nFarg
- var _35_pDef *XFuncDef // sqlite3.c:94577:15
- _ = _35_pDef
- var _35_zId *int8 // sqlite3.c:94578:18
- _ = _35_zId
- var _35_constMask uint32 // sqlite3.c:94579:11
- _ = _35_constMask
- var _35_i int32 // sqlite3.c:94580:11
- _ = _35_i
- var _35_db *Xsqlite3 // sqlite3.c:94581:15
- _ = _35_db
- var _35_enc uint8 // sqlite3.c:94582:10
- _ = _35_enc
- var _35_pColl *XCollSeq // sqlite3.c:94583:15
- _ = _35_pColl
- var _40_endCoalesce int32 // sqlite3.c:94615:13
- _ = _40_endCoalesce
- var _43_azAff [5]*int8 // sqlite3.c:94644:20
- _ = _43_azAff
- var _43_aff int8 // sqlite3.c:94645:14
- _ = _43_aff
- var _50_exprOp uint8 // sqlite3.c:94677:14
- _ = _50_exprOp
- var _57_nCol int32 // sqlite3.c:94731:11
- _ = _57_nCol
- var _60_n int32 // sqlite3.c:94742:11
- _ = _60_n
- var _63_destIfFalse int32 // sqlite3.c:94756:11
- _ = _63_destIfFalse
- var _63_destIfNull int32 // sqlite3.c:94757:11
- _ = _63_destIfNull
- var _66_pTab *XTable // sqlite3.c:94816:13
- _ = _66_pTab
- var _66_p1 int32 // sqlite3.c:94817:11
- _ = _66_p1
- var _69_addrINR int32 // sqlite3.c:94852:11
- _ = _69_addrINR
- var _70_endLabel int32 // sqlite3.c:94884:11
- _ = _70_endLabel
- var _70_nextCase int32 // sqlite3.c:94885:11
- _ = _70_nextCase
- var _70_nExpr int32 // sqlite3.c:94886:11
- _ = _70_nExpr
- var _70_i int32 // sqlite3.c:94887:11
- _ = _70_i
- var _70_pEList *XExprList // sqlite3.c:94888:16
- _ = _70_pEList
- var _70_aListelem *TExprList_item // sqlite3.c:94889:28
- _ = _70_aListelem
- var _70_opCompare XExpr // sqlite3.c:94890:12
- _ = _70_opCompare
- var _70_pX *XExpr // sqlite3.c:94891:12
- _ = _70_pX
- var _70_pTest *XExpr // sqlite3.c:94892:12
- _ = _70_pTest
- var _70_iCacheLevel int32 // sqlite3.c:94893:21
- _ = _70_iCacheLevel
+var _sqlite3ExprCodeØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeØ00__func__Ø000[0], str(42470), 16)
+}
+
+// Generate code into the current Vdbe to evaluate the given
+// expression. Attempt to store the results in register "target".
+// Return the register where results are stored.
+//
+// With this routine, there is no guarantee that results will
+// be stored in target. The result might be stored in some other
+// register if it is convenient to do so. The calling function
+// must check the return code and move the results to the desired
+// register.
+func _sqlite3ExprCodeTarget(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) (r0 int32) {
+ var _op, _inReg, _regFree1, _regFree2, _r1, _r2, _p5, _8_iTab, _16_n, _31_addr, _35_nFarg, _35_i, _40_endCoalesce, _57_nCol, _60_n, _63_destIfFalse, _63_destIfNull, _66_p1, _69_addrINR, _70_endLabel, _70_nextCase, _70_nExpr, _70_i, _70_iCacheLevel int32
+ var _43_aff int8
+ var _35_constMask uint32
+ var _16_z, _16_zBlob, _18_z, _35_zId *int8
+ var _35_enc, _50_exprOp uint8
+ var _35_db *Xsqlite3
+ var _66_pTab *XTable
+ var _v *TVdbe
+ var _35_pDef *XFuncDef
+ var _35_pFarg, _70_pEList *XExprList
+ var _70_aListelem *TExprList_item
+ var _22_pLeft, _26_pLeft, _70_pX, _70_pTest *XExpr
+ var _tempX, _70_opCompare XExpr
+ var _35_pColl *XCollSeq
+ var _5_pAggInfo, _32_pInfo *XAggInfo
+ var _5_pCol *TAggInfo_col
+ var _43_azAff [5]*int8
_v = (*TVdbe)(_pParse.X2)
_inReg = _target
_regFree1 = i32(0)
@@ -31910,31 +29661,23 @@ func _sqlite3ExprCodeTarget(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _targe
_p5 = i32(0)
func() {
if _target <= i32(0) || _target > (_pParse.X18) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94349), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94349), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42392)))
crt.X__builtin_abort(tls)
}
}()
- if _v != nil {
- goto _3
+ if _v == nil {
+ func() {
+ if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94351), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42486)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(0)
}
-
- func() {
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94351), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43572)))
- crt.X__builtin_abort(tls)
- }
- }()
- return i32(0)
-
-_3:
- if _pExpr != nil {
- goto _6
+ if _pExpr == nil {
+ _op = i32(101)
+ goto _7
}
-
- _op = i32(101)
- goto _7
-
-_6:
_op = int32(_pExpr.X0)
_7:
switch _op {
@@ -32043,39 +29786,27 @@ _7:
_9:
_5_pAggInfo = (*XAggInfo)(_pExpr.X13)
_5_pCol = (*TAggInfo_col)(unsafe.Pointer(uintptr(_5_pAggInfo.X8) + 24*uintptr(_pExpr.X10)))
- if (_5_pAggInfo.X0) != 0 {
- goto _59
+ if (_5_pAggInfo.X0) == 0 {
+ func() {
+ if (_5_pCol.X4) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94365), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42511)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _5_pCol.X4
}
-
- func() {
- if (_5_pCol.X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94365), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43600)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _5_pCol.X4
-
-_59:
- if (_5_pAggInfo.X1) == 0 {
- goto _63
+ if (_5_pAggInfo.X1) != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _5_pAggInfo.X3, _5_pCol.X3, _target)
+ return _target
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _5_pAggInfo.X3, _5_pCol.X3, _target)
- return _target
-
-_63:
_10:
_8_iTab = _pExpr.X8
if _8_iTab >= i32(0) {
goto _64
}
-
- if (_pParse.X21) <= i32(0) {
- goto _65
+ if (_pParse.X21) > i32(0) {
+ return int32(_pExpr.X9) + (_pParse.X21)
}
- return int32(_pExpr.X9) + (_pParse.X21)
-
-_65:
_8_iTab = _pParse.X22
_64:
return _sqlite3ExprCodeGetColumn(tls, _pParse, (*XTable)(_pExpr.X14), int32(_pExpr.X9), _8_iTab, _target, _pExpr.X12)
@@ -32087,21 +29818,21 @@ _11:
_12:
func() {
if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
crt.X__builtin_abort(tls)
}
}()
- _codeReal(tls, _v, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), i32(0), _target)
+ _codeReal(tls, _v, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), i32(0), _target)
return _target
_13:
func() {
if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94402), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94402), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeLoadString(tls, _v, _target, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
+ _sqlite3VdbeLoadString(tls, _v, _target, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
return _target
_14:
@@ -32111,27 +29842,27 @@ _14:
_15:
func() {
if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94415), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94415), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(120) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(88) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94416), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43656)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(120) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(88) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94416), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42561)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43708)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) != i32(39) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42612)))
crt.X__builtin_abort(tls)
}
}()
- _16_z = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(2))))
+ _16_z = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(2))))
_16_n = _sqlite3Strlen30(tls, _16_z) - i32(1)
func() {
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_z)) + 1*uintptr(_16_n)))) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94420), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43736)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94420), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42637)))
crt.X__builtin_abort(tls)
}
}()
@@ -32142,37 +29873,34 @@ _15:
_16:
func() {
if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94427), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94427), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94428), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43748)))
+ if (*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94428), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42648)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94429), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43768)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94429), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42667)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeAddOp2(tls, _v, i32(62), int32(_pExpr.X9), _target)
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) == i32(0) {
- goto _86
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) != i32(0) {
+ _18_z = _sqlite3VListNumToName(tls, _pParse.X60, int32(_pExpr.X9))
+ func() {
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(63) && crt.Xstrcmp(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), _18_z) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94433), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42689)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse.X60)) + 4*uintptr(i32(0)))) = i32(0)
+ _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_18_z), i32(-2))
}
-
- _18_z = _sqlite3VListNumToName(tls, _pParse.X60, int32(_pExpr.X9))
- func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(63) && crt.Xstrcmp(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), _18_z) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94433), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43792)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse.X60)) + 4*uintptr(i32(0)))) = i32(0)
- _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_18_z), i32(-2))
-_86:
return _target
_17:
@@ -32180,14 +29908,11 @@ _17:
_18:
_inReg = _sqlite3ExprCodeTarget(tls, _pParse, (*XExpr)(_pExpr.X4), _target)
- if _inReg == _target {
- goto _90
+ if _inReg != _target {
+ _sqlite3VdbeAddOp2(tls, _v, i32(65), _inReg, _target)
+ _inReg = _target
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(65), _inReg, _target)
- _inReg = _target
-_90:
- _sqlite3VdbeAddOp2(tls, _v, i32(94), _target, int32(_sqlite3AffinityType(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), nil)))
+ _sqlite3VdbeAddOp2(tls, _v, i32(94), _target, int32(_sqlite3AffinityType(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), nil)))
_sqlite3ExprCacheAffinityChange(tls, _pParse, _inReg, i32(1))
return _inReg
@@ -32207,14 +29932,10 @@ _24:
_25:
_26:
_22_pLeft = (*XExpr)(_pExpr.X4)
- if _sqlite3ExprIsVector(tls, _22_pLeft) == 0 {
- goto _93
+ if _sqlite3ExprIsVector(tls, _22_pLeft) != 0 {
+ _codeVectorCompare(tls, _pParse, _pExpr, _target, uint8(_op), uint8(_p5))
+ goto _94
}
-
- _codeVectorCompare(tls, _pParse, _pExpr, _target, uint8(_op), uint8(_p5))
- goto _94
-
-_93:
_r1 = _sqlite3ExprCodeTemp(tls, _pParse, _22_pLeft, &_regFree1)
_r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X5), &_regFree2)
_codeCompare(tls, _pParse, _22_pLeft, (*XExpr)(_pExpr.X5), _op, _r1, _r2, _inReg, i32(32)|_p5)
@@ -32226,7 +29947,6 @@ _93:
i32(0)
_94:
goto _95
-
_27:
_28:
_29:
@@ -32254,45 +29974,35 @@ _38:
_r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X5), &_regFree2)
_sqlite3VdbeAddOp3(tls, _v, _op, _r2, _r1, _target)
goto _95
-
_39:
_26_pLeft = (*XExpr)(_pExpr.X4)
func() {
if _26_pLeft == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94519), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94519), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42746)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_26_pLeft.X0) != i32(134) {
- goto _98
+ if int32(_26_pLeft.X0) == i32(134) {
+ _codeInteger(tls, _pParse, _26_pLeft, i32(1), _target)
+ return _target
}
-
- _codeInteger(tls, _pParse, _26_pLeft, i32(1), _target)
- return _target
-
-_98:
- if int32(_26_pLeft.X0) != i32(132) {
- goto _100
+ if int32(_26_pLeft.X0) == i32(132) {
+ func() {
+ if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94525), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _codeReal(tls, _v, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLeft)) + uintptr(8 /* X3 */))))), i32(1), _target)
+ return _target
}
-
- func() {
- if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94525), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
- crt.X__builtin_abort(tls)
- }
- }()
- _codeReal(tls, _v, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLeft)) + uintptr(8 /* X3 */))))), i32(1), _target)
- return _target
-
-_100:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempX)) + uintptr(0 /* X0 */))) = uint8(i32(134))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempX)) + uintptr(4 /* X2 */))) = uint32(i32(17408))
- *(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempX)) + uintptr(8 /* X3 */))))) = i32(0)
+ *(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempX)) + uintptr(8 /* X3 */))))) = i32(0)
_r1 = _sqlite3ExprCodeTemp(tls, _pParse, &_tempX, &_regFree1)
_r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree2)
_sqlite3VdbeAddOp3(tls, _v, i32(89), _r2, _r1, _target)
goto _95
-
_40:
_41:
i32(0)
@@ -32300,7 +30010,6 @@ _41:
_r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
_sqlite3VdbeAddOp2(tls, _v, _op, _r1, _inReg)
goto _95
-
_42:
_43:
i32(0)
@@ -32311,54 +30020,41 @@ _43:
_sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _target)
_sqlite3VdbeJumpHere(tls, _v, _31_addr)
goto _95
-
_44:
_32_pInfo = (*XAggInfo)(_pExpr.X13)
- if _32_pInfo != nil {
- goto _104
+ if _32_pInfo == nil {
+ func() {
+ if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3ErrorMsg(tls, _pParse, str(42752), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ goto _107
}
-
- func() {
- if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ErrorMsg(tls, _pParse, str(43860), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
- goto _107
-
-_104:
return (*TAggInfo_func)(unsafe.Pointer(uintptr(_32_pInfo.X11) + 16*uintptr(_pExpr.X10))).X2
_107:
goto _95
-
_45:
_35_constMask = u32(0)
_35_db = (*Xsqlite3)(_pParse.X0)
_35_enc = _35_db.X14
_35_pColl = nil
- if (_pParse.X11) == 0 || _sqlite3ExprIsConstantNotJoin(tls, _pExpr) == 0 {
- goto _109
+ if ((_pParse.X11) != 0) && _sqlite3ExprIsConstantNotJoin(tls, _pExpr) != 0 {
+ return _sqlite3ExprCodeAtInit(tls, _pParse, _pExpr, i32(-1))
}
- return _sqlite3ExprCodeAtInit(tls, _pParse, _pExpr, i32(-1))
-
-_109:
func() {
if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94590), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43888)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94590), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42778)))
crt.X__builtin_abort(tls)
}
}()
- if ((_pExpr.X2) & uint32(i32(16384))) == uint32(i32(0)) {
- goto _112
+ if ((_pExpr.X2) & uint32(i32(16384))) != uint32(i32(0)) {
+ _35_pFarg = nil
+ goto _113
}
-
- _35_pFarg = nil
- goto _113
-
-_112:
- _35_pFarg = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _35_pFarg = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
_113:
_35_nFarg = func() int32 {
if _35_pFarg != nil {
@@ -32368,34 +30064,29 @@ _113:
}()
func() {
if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
crt.X__builtin_abort(tls)
}
}()
- _35_zId = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
+ _35_zId = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
_35_pDef = _sqlite3FindFunction(tls, _35_db, _35_zId, _35_nFarg, _35_enc, uint8(i32(0)))
- if _35_pDef != nil && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ if (_35_pDef == nil) || (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
}{(*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer)
- }{(_35_pDef.X5)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(_35_pDef.X5)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_context)
- }{nil})) {
- goto _119
+ }{nil}))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(42816), unsafe.Pointer(_35_zId))
+ goto _95
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(43928), unsafe.Pointer(_35_zId))
- goto _95
-
-_119:
if (int32(_35_pDef.X1) & i32(512)) == 0 {
goto _120
}
-
_40_endCoalesce = _sqlite3VdbeMakeLabel(tls, _v)
func() {
if _35_nFarg < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43952)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42839)))
crt.X__builtin_abort(tls)
}
}()
@@ -32405,7 +30096,6 @@ _123:
if _35_i >= _35_nFarg {
goto _126
}
-
_sqlite3VdbeAddOp2(tls, _v, i32(76), _target, _40_endCoalesce)
_sqlite3ExprCacheRemove(tls, _pParse, _target, i32(1))
_sqlite3ExprCachePush(tls, _pParse)
@@ -32413,202 +30103,149 @@ _123:
_sqlite3ExprCachePop(tls, _pParse)
_35_i += 1
goto _123
-
_126:
_sqlite3VdbeResolveLabel(tls, _v, _40_endCoalesce)
goto _95
-
_120:
- if (int32(_35_pDef.X1) & i32(1024)) == 0 {
- goto _127
- }
-
- func() {
- if _35_nFarg < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43964)))
- crt.X__builtin_abort(tls)
- }
- }()
- /* X2 */
- return _sqlite3ExprCodeTarget(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8)))))+20*uintptr(i32(0)))).X0), _target)
-
-_127:
- if (int32(_35_pDef.X1) & i32(16384)) == 0 {
- goto _130
+ if (int32(_35_pDef.X1) & i32(1024)) != 0 {
+ func() {
+ if _35_nFarg < i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42848)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ /* X2 */
+ return _sqlite3ExprCodeTarget(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8)))))+20*uintptr(i32(0)))).X0), _target)
+ }
+ if (int32(_35_pDef.X1) & i32(16384)) != 0 {
+ _43_azAff = [5]*int8{}
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(0)))) = str(42857)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(1)))) = str(42862)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(2)))) = str(42867)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(3)))) = str(42875)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(4)))) = str(42883)
+ func() {
+ if _35_nFarg != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94646), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42888)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _43_aff = _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
+ _sqlite3VdbeLoadString(tls, _v, _target, func() *int8 {
+ if _43_aff != 0 {
+ return (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(int32(_43_aff)-i32(65)))))
+ }
+ return str(42897)
+ }())
+ return _target
}
-
- _43_azAff = [5]*int8{}
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(0)))) = str(43976)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(1)))) = str(43984)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(2)))) = str(43992)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(3)))) = str(44000)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(i32(4)))) = str(44008)
- func() {
- if _35_nFarg != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94646), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44016)))
- crt.X__builtin_abort(tls)
- }
- }()
- _43_aff = _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
- _sqlite3VdbeLoadString(tls, _v, _target, func() *int8 {
- if _43_aff != 0 {
- return (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_43_azAff)) + 4*uintptr(int32(_43_aff)-i32(65)))))
- }
- return str(44028)
- }())
- return _target
-
-_130:
_35_i = i32(0)
_135:
if _35_i >= _35_nFarg {
goto _138
}
-
- if _35_i >= i32(32) || _sqlite3ExprIsConstant(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(_35_i))).X0)) == 0 {
- goto _140
- }
-
- {
- p := &_35_constMask
- *p = (*p) | (u32(1) << uint(_35_i))
- sink5 = *p
+ if (_35_i < i32(32)) && _sqlite3ExprIsConstant(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(_35_i))).X0)) != 0 {
+ {
+ p := &_35_constMask
+ *p = (*p) | (u32(1) << uint(_35_i))
+ sink5 = *p
+ }
}
-_140:
- if (int32(_35_pDef.X1)&i32(32)) == i32(0) || _35_pColl != nil {
- goto _142
+ if ((int32(_35_pDef.X1) & i32(32)) != i32(0)) && (_35_pColl == nil) {
+ _35_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(_35_i))).X0))
}
-
- _35_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(_35_i))).X0))
-_142:
_35_i += 1
goto _135
-
_138:
if _35_pFarg == nil {
goto _143
}
-
- if _35_constMask == 0 {
- goto _144
- }
-
- _r1 = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _35_nFarg
- sink1 = *p
+ if _35_constMask != 0 {
+ _r1 = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _35_nFarg
+ sink1 = *p
+ }
+ goto _145
}
- goto _145
-
-_144:
_r1 = _sqlite3GetTempRange(tls, _pParse, _35_nFarg)
_145:
if (int32(_35_pDef.X1) & i32(192)) == i32(0) {
goto _146
}
-
func() {
if _35_nFarg != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94678), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44016)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94678), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42888)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44036)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42902)))
crt.X__builtin_abort(tls)
}
}()
_50_exprOp = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0).X0
- if int32(_50_exprOp) != i32(152) && int32(_50_exprOp) != i32(154) {
- goto _152
+ if (int32(_50_exprOp) == i32(152)) || (int32(_50_exprOp) == i32(154)) {
+ i32(0)
+ i32(0)
+ *(*uint8)(unsafe.Pointer(uintptr((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) + uintptr(38 /* X12 */))) = uint8(int32(_35_pDef.X1) & i32(192))
}
-
- i32(0)
- i32(0)
- *(*uint8)(unsafe.Pointer(uintptr((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) + uintptr(38 /* X12 */))) = uint8(int32(_35_pDef.X1) & i32(192))
-_152:
_146:
_sqlite3ExprCachePush(tls, _pParse)
_sqlite3ExprCodeExprList(tls, _pParse, _35_pFarg, _r1, i32(0), uint8(i32(3)))
_sqlite3ExprCachePop(tls, _pParse)
goto _153
-
_143:
_r1 = i32(0)
_153:
- if _35_nFarg < i32(2) || ((_pExpr.X2)&uint32(i32(128))) == 0 {
- goto _155
+ if (_35_nFarg >= i32(2)) && (((_pExpr.X2) & uint32(i32(128))) != 0) {
+ _35_pDef = _sqlite3VtabOverloadFunction(tls, _35_db, _35_pDef, _35_nFarg, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(1)))).X0))
+ goto _156
}
-
- _35_pDef = _sqlite3VtabOverloadFunction(tls, _35_db, _35_pDef, _35_nFarg, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(1)))).X0))
- goto _156
-
-_155:
- if _35_nFarg <= i32(0) {
- goto _157
+ if _35_nFarg > i32(0) {
+ _35_pDef = _sqlite3VtabOverloadFunction(tls, _35_db, _35_pDef, _35_nFarg, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
}
-
- _35_pDef = _sqlite3VtabOverloadFunction(tls, _35_db, _35_pDef, _35_nFarg, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pFarg))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
-_157:
_156:
if (int32(_35_pDef.X1) & i32(32)) == 0 {
goto _158
}
-
- if _35_pColl != nil {
- goto _159
+ if _35_pColl == nil {
+ _35_pColl = (*XCollSeq)(_35_db.X2)
}
-
- _35_pColl = (*XCollSeq)(_35_db.X2)
-_159:
_sqlite3VdbeAddOp4(tls, _v, i32(68), i32(0), i32(0), i32(0), (*int8)(unsafe.Pointer(_35_pColl)), i32(-3))
_158:
_sqlite3VdbeAddOp4(tls, _v, i32(69), int32(_35_constMask), _r1, _target, (*int8)(unsafe.Pointer(_35_pDef)), i32(-4))
_sqlite3VdbeChangeP5(tls, _v, uint16(uint8(_35_nFarg)))
- if _35_nFarg == 0 || _35_constMask != uint32(i32(0)) {
- goto _161
+ if _35_nFarg != 0 && (_35_constMask == uint32(i32(0))) {
+ _sqlite3ReleaseTempRange(tls, _pParse, _r1, _35_nFarg)
}
-
- _sqlite3ReleaseTempRange(tls, _pParse, _r1, _35_nFarg)
-_161:
return _target
_46:
_47:
- if _op != i32(119) || store1(&_57_nCol, (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0).X0) == i32(1) {
- goto _163
+ if (_op == i32(119)) && (store1(&_57_nCol, (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0).X0) != i32(1)) {
+ _sqlite3SubselectError(tls, _pParse, _57_nCol, i32(1))
+ goto _164
}
-
- _sqlite3SubselectError(tls, _pParse, _57_nCol, i32(1))
- goto _164
-
-_163:
return _sqlite3CodeSubselect(tls, _pParse, _pExpr, i32(0), i32(0))
_164:
goto _95
-
_48:
- if ((*XExpr)(_pExpr.X4).X8) != i32(0) {
- goto _165
+ if ((*XExpr)(_pExpr.X4).X8) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(28 /* X8 */))) = _sqlite3CodeSubselect(tls, _pParse, (*XExpr)(_pExpr.X4), i32(0), i32(0))
}
-
- *(*int32)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(28 /* X8 */))) = _sqlite3CodeSubselect(tls, _pParse, (*XExpr)(_pExpr.X4), i32(0), i32(0))
-_165:
func() {
if (_pExpr.X8) != i32(0) && int32((*XExpr)(_pExpr.X4).X0) != i32(119) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94746), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44060)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94746), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42923)))
crt.X__builtin_abort(tls)
}
}()
- if (_pExpr.X8) == 0 || (_pExpr.X8) == store1(&_60_n, _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4))) {
- goto _170
+ if (_pExpr.X8) != 0 && ((_pExpr.X8) != store1(&_60_n, _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4)))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(42971), _pExpr.X8, _60_n)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(44108), _pExpr.X8, _60_n)
-_170:
return ((*XExpr)(_pExpr.X4).X8) + int32(_pExpr.X9)
_49:
@@ -32629,60 +30266,54 @@ _50:
_51:
_52:
_53:
- r0 = _sqlite3ExprCodeTarget(tls, _pParse, (*XExpr)(_pExpr.X4), _target)
- return
+ return _sqlite3ExprCodeTarget(tls, _pParse, (*XExpr)(_pExpr.X4), _target)
_54:
_66_pTab = (*XTable)(_pExpr.X14)
_66_p1 = (((_pExpr.X8) * (int32(_66_pTab.X11) + i32(1))) + i32(1)) + int32(_pExpr.X9)
func() {
if (_pExpr.X8) != i32(0) && (_pExpr.X8) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94819), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44140)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94819), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43001)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pExpr.X9) < i32(-1) || int32(_pExpr.X9) >= int32(_66_pTab.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44180)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43038)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_66_pTab.X10) >= i32(0) && int32(_pExpr.X9) == int32(_66_pTab.X10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94821), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44228)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94821), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43086)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _66_p1 < i32(0) || _66_p1 >= ((int32(_66_pTab.X11)*i32(2))+i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43131)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeAddOp2(tls, _v, i32(146), _66_p1, _target)
- _sqlite3VdbeComment(tls, _v, str(44308), unsafe.Pointer(func() *int8 {
+ _sqlite3VdbeComment(tls, _v, str(43160), unsafe.Pointer(func() *int8 {
if (_pExpr.X8) != 0 {
- return str(44324)
+ return str(43173)
}
- return str(44328)
+ return str(43177)
}()), unsafe.Pointer(func() *int8 {
if int32(_pExpr.X9) < i32(0) {
- return str(27392)
+ return str(27227)
}
return ((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pExpr.X14).X1) + 16*uintptr(_pExpr.X9))).X0)
}()), _target)
- if int32(_pExpr.X9) < i32(0) || int32((*XColumn)(unsafe.Pointer(uintptr(_66_pTab.X1)+16*uintptr(_pExpr.X9))).X4) != i32(69) {
- goto _188
+ if (int32(_pExpr.X9) >= i32(0)) && (int32((*XColumn)(unsafe.Pointer(uintptr(_66_pTab.X1)+16*uintptr(_pExpr.X9))).X4) == i32(69)) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(74), _target)
}
-
- _sqlite3VdbeAddOp1(tls, _v, i32(74), _target)
-_188:
goto _95
-
_55:
- _sqlite3ErrorMsg(tls, _pParse, str(44332))
+ _sqlite3ErrorMsg(tls, _pParse, str(43181))
goto _95
-
_56:
_69_addrINR = _sqlite3VdbeAddOp1(tls, _v, i32(23), _pExpr.X8)
_sqlite3ExprCachePush(tls, _pParse)
@@ -32691,65 +30322,56 @@ _56:
_sqlite3VdbeJumpHere(tls, _v, _69_addrINR)
_sqlite3VdbeChangeP3(tls, _v, uint32(_69_addrINR), _inReg)
goto _95
-
_57:
func() {
if _op != i32(136) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94883), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44352)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94883), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43199)))
crt.X__builtin_abort(tls)
}
}()
_70_pTest = nil
_70_iCacheLevel = _pParse.X23
func() {
- if ((_pExpr.X2)&uint32(i32(2048))) != uint32(i32(0)) || (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94895), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44364)))
+ if ((_pExpr.X2)&uint32(i32(2048))) != uint32(i32(0)) || (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94895), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43211)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44420)))
+ if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43267)))
crt.X__builtin_abort(tls)
}
}()
- _70_pEList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _70_pEList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
_70_aListelem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_70_pEList)) + uintptr(8 /* X2 */)))))
_70_nExpr = _70_pEList.X0
_70_endLabel = _sqlite3VdbeMakeLabel(tls, _v)
- if store34(&_70_pX, (*XExpr)(_pExpr.X4)) == nil {
- goto _196
+ if store36(&_70_pX, (*XExpr)(_pExpr.X4)) != nil {
+ _tempX = *_70_pX
+ _exprToRegister(tls, &_tempX, _exprCodeVector(tls, _pParse, &_tempX, &_regFree1))
+ crt.Xmemset(tls, (unsafe.Pointer)(&_70_opCompare), i32(0), u32(48))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_70_opCompare)) + uintptr(0 /* X0 */))) = uint8(i32(78))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_70_opCompare)) + uintptr(12 /* X4 */))))) = &_tempX
+ _70_pTest = &_70_opCompare
+ _regFree1 = i32(0)
}
-
- _tempX = *_70_pX
- _exprToRegister(tls, &_tempX, _exprCodeVector(tls, _pParse, &_tempX, &_regFree1))
- crt.Xmemset(tls, (unsafe.Pointer)(&_70_opCompare), i32(0), u32(48))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_70_opCompare)) + uintptr(0 /* X0 */))) = uint8(i32(78))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_70_opCompare)) + uintptr(12 /* X4 */))))) = &_tempX
- _70_pTest = &_70_opCompare
- _regFree1 = i32(0)
-_196:
_70_i = i32(0)
_197:
if _70_i >= (_70_nExpr - i32(1)) {
goto _200
}
-
_sqlite3ExprCachePush(tls, _pParse)
- if _70_pX == nil {
- goto _201
+ if _70_pX != nil {
+ func() {
+ if _70_pTest == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43293)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_70_opCompare)) + uintptr(16 /* X5 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_70_aListelem)) + 20*uintptr(_70_i))).X0)
+ goto _204
}
-
- func() {
- if _70_pTest == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44448)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_70_opCompare)) + uintptr(16 /* X5 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_70_aListelem)) + 20*uintptr(_70_i))).X0)
- goto _204
-
-_201:
_70_pTest = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_70_aListelem)) + 20*uintptr(_70_i))).X0)
_204:
_70_nextCase = _sqlite3VdbeMakeLabel(tls, _v)
@@ -32760,177 +30382,148 @@ _204:
_sqlite3VdbeResolveLabel(tls, _v, _70_nextCase)
_70_i = _70_i + i32(2)
goto _197
-
_200:
- if (_70_nExpr & i32(1)) == i32(0) {
- goto _205
+ if (_70_nExpr & i32(1)) != i32(0) {
+ _sqlite3ExprCachePush(tls, _pParse)
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_70_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_70_nExpr-i32(1)))).X0), _target)
+ _sqlite3ExprCachePop(tls, _pParse)
+ goto _206
}
-
- _sqlite3ExprCachePush(tls, _pParse)
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_70_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_70_nExpr-i32(1)))).X0), _target)
- _sqlite3ExprCachePop(tls, _pParse)
- goto _206
-
-_205:
_sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _target)
_206:
func() {
if ((*Xsqlite3)(_pParse.X0).X17) == 0 && (_pParse.X16) <= i32(0) && (_pParse.X23) != _70_iCacheLevel {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94940), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44460)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94940), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43302)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeResolveLabel(tls, _v, _70_endLabel)
goto _95
-
_58:
func() {
if int32(_pExpr.X1) != i32(1) && int32(_pExpr.X1) != i32(2) && int32(_pExpr.X1) != i32(3) && int32(_pExpr.X1) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94947), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(44540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94947), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43381)))
crt.X__builtin_abort(tls)
}
}()
- if (*XTable)(_pParse.X40) != nil {
- goto _216
+ if (*XTable)(_pParse.X40) == nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(43497))
+ return i32(0)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(44656))
- return i32(0)
-
-_216:
- if int32(_pExpr.X1) != i32(2) {
- goto _217
+ if int32(_pExpr.X1) == i32(2) {
+ _sqlite3MayAbort(tls, _pParse)
}
-
- _sqlite3MayAbort(tls, _pParse)
-_217:
func() {
if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(43616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeTargetØ00__func__Ø000))), unsafe.Pointer(str(42524)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pExpr.X1) != i32(4) {
- goto _220
+ if int32(_pExpr.X1) == i32(4) {
+ _sqlite3VdbeAddOp4(tls, _v, i32(55), i32(0), i32(4), i32(0), *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), i32(0))
+ goto _221
}
-
- _sqlite3VdbeAddOp4(tls, _v, i32(55), i32(0), i32(4), i32(0), *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), i32(0))
- goto _221
-
-_220:
- _sqlite3HaltConstraint(tls, _pParse, i32(1811), int32(_pExpr.X1), *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), int8(i32(0)), uint8(i32(0)))
+ _sqlite3HaltConstraint(tls, _pParse, i32(1811), int32(_pExpr.X1), *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), int8(i32(0)), uint8(i32(0)))
_221:
goto _95
-
_95:
_sqlite3ReleaseTempReg(tls, _pParse, _regFree1)
_sqlite3ReleaseTempReg(tls, _pParse, _regFree2)
return _inReg
+
+ _ = _tempX
+ _ = _43_azAff
+ _ = _70_opCompare
+ panic(0)
}
-var _sqlite3ExprCodeTargetØ00__func__Ø000 [22]int8 // -
+var _sqlite3ExprCodeTargetØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeTargetØ00__func__Ø000[0], str(44708), 22)
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeTargetØ00__func__Ø000[0], str(43547), 22)
}
-func _sqlite3ExprCodeGetColumn(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iColumn int32, _iTable int32, _iReg int32, _p5 uint8) (r0 int32) { // sqlite3.c:94181:1
- var _v *TVdbe // sqlite3.c:94189:8
- _ = _v
- var _i int32 // sqlite3.c:94190:7
- _ = _i
- var _p *TyColCache // sqlite3.c:94191:20
- _ = _p
+// Generate code that will extract the iColumn-th column from
+// table pTab and store the column value in a register.
+//
+// An effort is made to store the column value in register iReg. This
+// is not garanteeed for GetColumn() - the result can be stored in
+// any register. But the result is guaranteed to land in register iReg
+// for GetColumnToReg().
+//
+// There must be an open cursor to pTab in iTable when this routine
+// is called. If iColumn<0 then code is generated that extracts the rowid.
+func _sqlite3ExprCodeGetColumn(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iColumn int32, _iTable int32, _iReg int32, _p5 uint8) (r0 int32) {
+ var _i int32
+ var _v *TVdbe
+ var _p *TyColCache
_v = (*TVdbe)(_pParse.X2)
*func() **TyColCache { _i = i32(0); return &_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
_0:
if _i >= int32(_pParse.X13) {
goto _3
}
-
- if (_p.X0) != _iTable || int32(_p.X1) != _iColumn {
- goto _5
+ if ((_p.X0) == _iTable) && (int32(_p.X1) == _iColumn) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(68 /* X24 */))), int32(1))
+ _sqlite3ExprCachePinRegister(tls, _pParse, _p.X4)
+ return _p.X4
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(68 /* X24 */))), int32(1))
- _sqlite3ExprCachePinRegister(tls, _pParse, _p.X4)
- return _p.X4
-
-_5:
*(*uintptr)(unsafe.Pointer(func() **TyColCache { _i += 1; return &_p }())) += uintptr(20)
goto _0
-
_3:
func() {
if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeGetColumnØ00__func__Ø000))), unsafe.Pointer(str(43120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeGetColumnØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iTable, _iColumn, _iReg)
- if _p5 == 0 {
- goto _8
+ if _p5 != 0 {
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_p5))
+ goto _9
}
-
- _sqlite3VdbeChangeP5(tls, _v, uint16(_p5))
- goto _9
-
-_8:
_sqlite3ExprCacheStore(tls, _pParse, _iTable, _iColumn, _iReg)
_9:
return _iReg
}
-func _sqlite3ExprCachePinRegister(tls *crt.TLS, _pParse *XParse, _iReg int32) { // sqlite3.c:94108:1
- var _i int32 // sqlite3.c:94109:7
- _ = _i
- var _p *TyColCache // sqlite3.c:94110:20
- _ = _p
+// When a cached column is reused, make sure that its register is
+// no longer available as a temp register. ticket #3879: that same
+// register might be in the cache in multiple places, so be sure to
+// get them all.
+func _sqlite3ExprCachePinRegister(tls *crt.TLS, _pParse *XParse, _iReg int32) {
+ var _i int32
+ var _p *TyColCache
*func() **TyColCache { _i = i32(0); return &_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
_0:
if _i >= int32(_pParse.X13) {
goto _3
}
-
- if (_p.X4) != _iReg {
- goto _4
+ if (_p.X4) == _iReg {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = uint8(i32(0))
-_4:
*(*uintptr)(unsafe.Pointer(func() **TyColCache { _i += 1; return &_p }())) += uintptr(20)
goto _0
-
_3:
}
-var _sqlite3ExprCodeGetColumnØ00__func__Ø000 [25]int8 // -
+var _sqlite3ExprCodeGetColumnØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeGetColumnØ00__func__Ø000[0], str(44732), 25)
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeGetColumnØ00__func__Ø000[0], str(43569), 25)
}
-func _sqlite3ExprCodeGetColumnOfTable(tls *crt.TLS, _v *TVdbe, _pTab *XTable, _iTabCur int32, _iCol int32, _regOut int32) { // sqlite3.c:94143:1
- var _3_op int32 // sqlite3.c:94157:9
- _ = _3_op
- var _3_x int32 // sqlite3.c:94158:9
- _ = _3_x
- if _pTab != nil {
- goto _0
+// Generate code to extract the value of the iCol-th column of a table.
+func _sqlite3ExprCodeGetColumnOfTable(tls *crt.TLS, _v *TVdbe, _pTab *XTable, _iTabCur int32, _iCol int32, _regOut int32) {
+ var _3_op, _3_x int32
+ if _pTab == nil {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _iTabCur, _iCol, _regOut)
+ return
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _iTabCur, _iCol, _regOut)
- return
-
-_0:
- if _iCol >= i32(0) && _iCol != int32(_pTab.X10) {
- goto _2
+ if (_iCol < i32(0)) || (_iCol == int32(_pTab.X10)) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(125), _iTabCur, _regOut)
+ goto _3
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(125), _iTabCur, _regOut)
- goto _3
-
-_2:
_3_op = func() int32 {
if (_pTab.X16) != 0 {
return i32(159)
@@ -32938,98 +30531,115 @@ _2:
return i32(99)
}()
_3_x = _iCol
- if ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) || (_pTab.X16) != 0 {
- goto _7
+ if (((_pTab.X9) & uint32(i32(32))) != uint32(i32(0))) && ((_pTab.X16) == 0) {
+ _3_x = int32(_sqlite3ColumnOfIndex(tls, _sqlite3PrimaryKeyIndex(tls, _pTab), int16(_iCol)))
}
-
- _3_x = int32(_sqlite3ColumnOfIndex(tls, _sqlite3PrimaryKeyIndex(tls, _pTab), int16(_iCol)))
-_7:
_sqlite3VdbeAddOp3(tls, _v, _3_op, _iTabCur, _3_x, _regOut)
_3:
- if _iCol < i32(0) {
- goto _8
+ if _iCol >= i32(0) {
+ _sqlite3ColumnDefault(tls, _v, _pTab, _iCol, _regOut)
}
-
- _sqlite3ColumnDefault(tls, _v, _pTab, _iCol, _regOut)
-_8:
}
-func _sqlite3ColumnOfIndex(tls *crt.TLS, _pIdx *XIndex, _iCol int16) (r0 int16) { // sqlite3.c:100514:1
- var _i int32 // sqlite3.c:100515:7
- _ = _i
+// Return the column of index pIdx that corresponds to table
+// column iCol. Return -1 if not found.
+func _sqlite3ColumnOfIndex(tls *crt.TLS, _pIdx *XIndex, _iCol int16) (r0 int16) {
+ var _i int32
_i = i32(0)
_0:
if _i >= int32(_pIdx.X14) {
goto _3
}
-
- if int32(_iCol) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) {
- goto _4
+ if int32(_iCol) == int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) {
+ return int16(_i)
}
- return int16(_i)
-
-_4:
_i += 1
goto _0
-
_3:
return int16(i32(-1))
}
-func _sqlite3ColumnDefault(tls *crt.TLS, _v *TVdbe, _pTab *XTable, _i int32, _iReg int32) { // sqlite3.c:123807:1
- var _1_pValue *XMem // sqlite3.c:123810:19
- _ = _1_pValue
- var _1_enc uint8 // sqlite3.c:123811:8
- _ = _1_enc
- var _1_pCol *XColumn // sqlite3.c:123812:12
- _ = _1_pCol
+// The most recently coded instruction was an OP_Column to retrieve the
+// i-th column of table pTab. This routine sets the P4 parameter of the
+// OP_Column to the default value, if any.
+//
+// The default value of a column is specified by a DEFAULT clause in the
+// column definition. This was either supplied by the user when the table
+// was created, or added later to the table definition by an ALTER TABLE
+// command. If the latter, then the row-records in the table btree on disk
+// may not contain a value for the column and the default value, taken
+// from the P4 parameter of the OP_Column instruction, is returned instead.
+// If the former, then all row-records are guaranteed to include a value
+// for the column and the P4 value is not required.
+//
+// Column definitions created by an ALTER TABLE command may only have
+// literal default values specified: a number, null or a string. (If a more
+// complicated default expression value was provided, it is evaluated
+// when the ALTER TABLE is executed and one of the literal values written
+// into the sqlite_master table.)
+//
+// Therefore, the P4 parameter is only required if the default value for
+// the column is a literal number, string or null. The sqlite3ValueFromExpr()
+// function is capable of transforming these types of expressions into
+// sqlite3_value objects.
+//
+// If parameter iReg is not negative, code an OP_RealAffinity instruction
+// on register iReg. This is used when an equivalent integer value is
+// stored in place of an 8-byte floating point value in order to save
+// space.
+func _sqlite3ColumnDefault(tls *crt.TLS, _v *TVdbe, _pTab *XTable, _i int32, _iReg int32) {
+ var _1_enc uint8
+ var _1_pValue *XMem
+ var _1_pCol *XColumn
func() {
if _pTab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnDefaultØ00__func__Ø000))), unsafe.Pointer(str(44760)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnDefaultØ00__func__Ø000))), unsafe.Pointer(str(43594)))
crt.X__builtin_abort(tls)
}
}()
if (*XSelect)(_pTab.X3) != nil {
goto _2
}
-
_1_pValue = nil
_1_enc = _sqlite3VdbeDb(tls, _v).X14
_1_pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_i)))
- _sqlite3VdbeComment(tls, _v, str(6608), unsafe.Pointer(_pTab.X0), unsafe.Pointer(_1_pCol.X0))
+ _sqlite3VdbeComment(tls, _v, str(8018), unsafe.Pointer(_pTab.X0), unsafe.Pointer(_1_pCol.X0))
func() {
if _i >= int32(_pTab.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnDefaultØ00__func__Ø000))), unsafe.Pointer(str(44768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnDefaultØ00__func__Ø000))), unsafe.Pointer(str(43602)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3ValueFromExpr(tls, _sqlite3VdbeDb(tls, _v), (*XExpr)(_1_pCol.X1), _1_enc, uint8(_1_pCol.X4), &_1_pValue)
- if _1_pValue == nil {
- goto _5
+ if _1_pValue != nil {
+ _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_1_pValue), i32(-7))
}
-
- _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_1_pValue), i32(-7))
-_5:
_2:
- if int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X4) != i32(69) {
- goto _6
+ if int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X4) == i32(69) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(74), _iReg)
}
-
- _sqlite3VdbeAddOp1(tls, _v, i32(74), _iReg)
-_6:
}
-var _sqlite3ColumnDefaultØ00__func__Ø000 [21]int8 // -
+var _sqlite3ColumnDefaultØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ColumnDefaultØ00__func__Ø000[0], str(44784), 21)
+ crt.Xstrncpy(nil, &_sqlite3ColumnDefaultØ00__func__Ø000[0], str(43615), 21)
}
-func _sqlite3VdbeDb(tls *crt.TLS, _v *TVdbe) (r0 *Xsqlite3) { // sqlite3.c:75947:1
+// Return the database associated with the Vdbe.
+func _sqlite3VdbeDb(tls *crt.TLS, _v *TVdbe) (r0 *Xsqlite3) {
return (*Xsqlite3)(_v.X0)
}
-func _sqlite3ValueFromExpr(tls *crt.TLS, _db *Xsqlite3, _pExpr *XExpr, _enc uint8, _affinity uint8, _ppVal **XMem) (r0 int32) { // sqlite3.c:71094:1
+// Create a new sqlite3_value object, containing the value of pExpr.
+//
+// This only works for very simple expressions that consist of one constant
+// token (i.e. "5", "5.1", "'a string'"). If the expression can
+// be converted directly into a value, then the value is allocated and
+// a pointer written to *ppVal. The caller is responsible for deallocating
+// the value by passing it to sqlite3ValueFree() later on. If the expression
+// cannot be converted to a value, then *ppVal is set to NULL.
+func _sqlite3ValueFromExpr(tls *crt.TLS, _db *Xsqlite3, _pExpr *XExpr, _enc uint8, _affinity uint8, _ppVal **XMem) (r0 int32) {
return func() int32 {
if _pExpr != nil {
return _valueFromExpr(tls, _db, _pExpr, _enc, _affinity, _ppVal, nil)
@@ -33038,229 +30648,165 @@ func _sqlite3ValueFromExpr(tls *crt.TLS, _db *Xsqlite3, _pExpr *XExpr, _enc uint
}()
}
-func _valueFromExpr(tls *crt.TLS, _db *Xsqlite3, _pExpr *XExpr, _enc uint8, _affinity uint8, _ppVal **XMem, _pCtx *t39) (r0 int32) { // sqlite3.c:70961:1
- var _op int32 // sqlite3.c:70969:7
- _ = _op
- var _zVal *int8 // sqlite3.c:70970:8
- _ = _zVal
- var _pVal *XMem // sqlite3.c:70971:17
- _ = _pVal
- var _negInt int32 // sqlite3.c:70972:7
- _ = _negInt
- var _zNeg *int8 // sqlite3.c:70973:14
- _ = _zNeg
- var _rc int32 // sqlite3.c:70974:7
- _ = _rc
- var _1_aff uint8 // sqlite3.c:70987:8
- _ = _1_aff
- var _16_nVal int32 // sqlite3.c:71050:9
- _ = _16_nVal
+// Extract a value from the supplied expression in the manner described
+// above sqlite3ValueFromExpr(). Allocate the sqlite3_value object
+// using valueNew().
+//
+// If pCtx is NULL and an error occurs after the sqlite3_value object
+// has been allocated, it is freed before returning. Or, if pCtx is not
+// NULL, it is assumed that the caller will free any allocated object
+// in all cases.
+func _valueFromExpr(tls *crt.TLS, _db *Xsqlite3, _pExpr *XExpr, _enc uint8, _affinity uint8, _ppVal **XMem, _pCtx *t41) (r0 int32) {
+ var _op, _negInt, _rc, _16_nVal int32
+ var _zVal, _zNeg *int8
+ var _1_aff uint8
+ var _pVal *XMem
_zVal = nil
_pVal = nil
_negInt = i32(1)
- _zNeg = str(196)
+ _zNeg = str(0)
_rc = i32(0)
func() {
if _pExpr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70976), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(44808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70976), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(43636)))
crt.X__builtin_abort(tls)
}
}()
_2:
- if store1(&_op, int32(_pExpr.X0)) != i32(156) && _op != i32(162) {
- goto _3
+ if (store1(&_op, int32(_pExpr.X0)) == i32(156)) || (_op == i32(162)) {
+ _pExpr = (*XExpr)(_pExpr.X4)
+ goto _2
}
-
- _pExpr = (*XExpr)(_pExpr.X4)
- goto _2
-
-_3:
if func() int32 {
if _op == i32(157) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70978), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70978), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _7
+ }() != 0 {
+ _op = int32(_pExpr.X12)
}
-
- _op = int32(_pExpr.X12)
-_7:
func() {
if ((_pExpr.X2)&uint32(i32(16384))) != uint32(i32(0)) && _pCtx != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70984), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(44820)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70984), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(43645)))
crt.X__builtin_abort(tls)
}
}()
if _op != i32(37) {
goto _11
}
-
- _1_aff = uint8(_sqlite3AffinityType(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), nil))
+ _1_aff = uint8(_sqlite3AffinityType(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), nil))
_rc = _valueFromExpr(tls, _db, (*XExpr)(_pExpr.X4), _enc, _1_aff, _ppVal, _pCtx)
- if (*_ppVal) == nil {
- goto _12
+ if (*_ppVal) != nil {
+ _sqlite3VdbeMemCast(tls, *_ppVal, _1_aff, uint8(i32(1)))
+ _sqlite3ValueApplyAffinity(tls, *_ppVal, _affinity, uint8(i32(1)))
}
-
- _sqlite3VdbeMemCast(tls, *_ppVal, _1_aff, uint8(i32(1)))
- _sqlite3ValueApplyAffinity(tls, *_ppVal, _affinity, uint8(i32(1)))
-_12:
return _rc
_11:
- if _op != i32(155) || int32((*XExpr)(_pExpr.X4).X0) != i32(134) && int32((*XExpr)(_pExpr.X4).X0) != i32(132) {
- goto _15
+ if (_op == i32(155)) && ((int32((*XExpr)(_pExpr.X4).X0) == i32(134)) || (int32((*XExpr)(_pExpr.X4).X0) == i32(132))) {
+ _pExpr = (*XExpr)(_pExpr.X4)
+ _op = int32(_pExpr.X0)
+ _negInt = i32(-1)
+ _zNeg = str(37896)
}
-
- _pExpr = (*XExpr)(_pExpr.X4)
- _op = int32(_pExpr.X0)
- _negInt = i32(-1)
- _zNeg = str(38620)
-_15:
if _op != i32(97) && _op != i32(132) && _op != i32(134) {
goto _18
}
-
_pVal = _valueNew(tls, _db, _pCtx)
- if _pVal != nil {
- goto _19
+ if _pVal == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_19:
- if ((_pExpr.X2) & uint32(i32(1024))) == uint32(i32(0)) {
- goto _20
+ if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
+ _sqlite3VdbeMemSetInt64(tls, _pVal, int64(*(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))*int64(_negInt))
+ goto _21
}
-
- _sqlite3VdbeMemSetInt64(tls, _pVal, int64(*(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))*int64(_negInt))
- goto _21
-
-_20:
- _zVal = _sqlite3MPrintf(tls, _db, str(5320), unsafe.Pointer(_zNeg), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
- if _zVal != nil {
- goto _22
+ _zVal = _sqlite3MPrintf(tls, _db, str(6890), unsafe.Pointer(_zNeg), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ if _zVal == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_22:
_sqlite3ValueSetStr(tls, _pVal, i32(-1), (unsafe.Pointer)(_zVal), uint8(i32(1)), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{_sqlite3MallocSize})))
_21:
- if _op != i32(134) && _op != i32(132) || int32(_affinity) != i32(65) {
- goto _25
+ if ((_op == i32(134)) || (_op == i32(132))) && (int32(_affinity) == i32(65)) {
+ _sqlite3ValueApplyAffinity(tls, _pVal, uint8(i32(67)), uint8(i32(1)))
+ goto _26
}
-
- _sqlite3ValueApplyAffinity(tls, _pVal, uint8(i32(67)), uint8(i32(1)))
- goto _26
-
-_25:
_sqlite3ValueApplyAffinity(tls, _pVal, _affinity, uint8(i32(1)))
_26:
- if (int32(_pVal.X1) & i32(12)) == 0 {
- goto _27
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-3))
- sink12 = *p
+ if (int32(_pVal.X1) & i32(12)) != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-3))
+ sink14 = *p
+ }
}
-_27:
- if int32(_enc) == i32(1) {
- goto _28
+ if int32(_enc) != i32(1) {
+ _rc = _sqlite3VdbeChangeEncoding(tls, _pVal, int32(_enc))
}
-
- _rc = _sqlite3VdbeChangeEncoding(tls, _pVal, int32(_enc))
-_28:
goto _29
-
_18:
if _op != i32(155) {
goto _30
}
-
if i32(0) != _sqlite3ValueFromExpr(tls, _db, (*XExpr)(_pExpr.X4), _enc, _affinity, &_pVal) || _pVal == nil {
goto _32
}
-
_sqlite3VdbeMemNumerify(tls, _pVal)
- if (int32(_pVal.X1) & i32(8)) == 0 {
- goto _33
+ if (int32(_pVal.X1) & i32(8)) != 0 {
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))) = -(*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))))
+ goto _34
}
-
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))) = -(*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))))
- goto _34
-
-_33:
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */)))))) != i64(-9223372036854775808) {
- goto _35
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */)))))) == i64(-9223372036854775808) {
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))) = 9.223372036854776e+18
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(8 /* X1 */))) = uint16((int32(_pVal.X1) & i32(-49664)) | i32(8))
+ goto _36
}
-
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))) = 9.223372036854776e+18
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(8 /* X1 */))) = uint16((int32(_pVal.X1) & i32(-49664)) | i32(8))
- goto _36
-
-_35:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))) = -(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))) = -(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal)) + uintptr(0 /* X0 */))))))
_36:
_34:
_sqlite3ValueApplyAffinity(tls, _pVal, _affinity, _enc)
_32:
goto _37
-
_30:
if _op != i32(101) {
goto _38
}
-
_pVal = _valueNew(tls, _db, _pCtx)
- if _pVal != nil {
- goto _39
+ if _pVal == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_39:
_sqlite3VdbeMemNumerify(tls, _pVal)
goto _40
-
_38:
if _op != i32(133) {
goto _41
}
-
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(120) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(88) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71051), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(43656)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(120) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(88) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71051), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(42561)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71052), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(43708)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) != i32(39) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71052), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(42612)))
crt.X__builtin_abort(tls)
}
}()
_pVal = _valueNew(tls, _db, _pCtx)
- if _pVal != nil {
- goto _47
+ if _pVal == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_47:
- _zVal = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(2))))
+ _zVal = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(2))))
_16_nVal = _sqlite3Strlen30(tls, _zVal) - i32(1)
func() {
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zVal)) + 1*uintptr(_16_nVal)))) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71057), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(44864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71057), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(43689)))
crt.X__builtin_abort(tls)
}
}()
@@ -33279,13 +30825,13 @@ _no_mem:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zVal))
func() {
if (*_ppVal) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71075), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(44884)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71075), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(43706)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pCtx != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71079), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(44896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71079), unsafe.Pointer((*int8)(unsafe.Pointer(&_valueFromExprØ00__func__Ø000))), unsafe.Pointer(str(43716)))
crt.X__builtin_abort(tls)
}
}()
@@ -33293,27 +30839,46 @@ _no_mem:
return _sqlite3NomemError(tls, i32(71081))
}
-var _valueFromExprØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_valueFromExprØ00__func__Ø000[0], str(44904), 14)
-}
-
-func _sqlite3AffinityType(tls *crt.TLS, _zIn *int8, _pszEst *uint8) (r0 int8) { // sqlite3.c:100842:1
- var _h uint32 // sqlite3.c:100843:7
- _ = _h
- var _aff int8 // sqlite3.c:100844:8
- _ = _aff
- var _zChar *int8 // sqlite3.c:100845:14
- _ = _zChar
- var _14_v int32 // sqlite3.c:100887:17
- _ = _14_v
+var _valueFromExprØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_valueFromExprØ00__func__Ø000[0], str(43724), 14)
+}
+
+// Scan the column type name zType (length nType) and return the
+// associated affinity type.
+//
+// This routine does a case-independent search of zType for the
+// substrings in the following table. If one of the substrings is
+// found, the corresponding affinity is returned. If zType contains
+// more than one of the substrings, entries toward the top of
+// the table take priority. For example, if zType is 'BLOBINT',
+// SQLITE_AFF_INTEGER is returned.
+//
+// Substring | Affinity
+// --------------------------------
+// 'INT' | SQLITE_AFF_INTEGER
+// 'CHAR' | SQLITE_AFF_TEXT
+// 'CLOB' | SQLITE_AFF_TEXT
+// 'TEXT' | SQLITE_AFF_TEXT
+// 'BLOB' | SQLITE_AFF_BLOB
+// 'REAL' | SQLITE_AFF_REAL
+// 'FLOA' | SQLITE_AFF_REAL
+// 'DOUB' | SQLITE_AFF_REAL
+//
+// If none of the substrings in the above table are found,
+// SQLITE_AFF_NUMERIC is returned.
+func _sqlite3AffinityType(tls *crt.TLS, _zIn *int8, _pszEst *uint8) (r0 int8) {
+ var _14_v int32
+ var _aff int8
+ var _h uint32
+ var _zChar *int8
_h = u32(0)
_aff = i8(67)
_zChar = nil
func() {
if _zIn == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100847), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AffinityTypeØ00__func__Ø000))), unsafe.Pointer(str(44920)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100847), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AffinityTypeØ00__func__Ø000))), unsafe.Pointer(str(43738)))
crt.X__builtin_abort(tls)
}
}()
@@ -33321,80 +30886,46 @@ _2:
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIn)) + 1*uintptr(i32(0))))) == 0 {
goto _3
}
-
_h = (_h << uint(i32(8))) + uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(int32(*_zIn)&i32(255)))))
*(*uintptr)(unsafe.Pointer(&_zIn)) += uintptr(1)
- if _h != uint32(i32(1667785074)) {
- goto _4
+ if _h == uint32(i32(1667785074)) {
+ _aff = int8(i32(66))
+ _zChar = _zIn
+ goto _5
}
-
- _aff = int8(i32(66))
- _zChar = _zIn
- goto _5
-
-_4:
- if _h != uint32(i32(1668050786)) {
- goto _6
+ if _h == uint32(i32(1668050786)) {
+ _aff = int8(i32(66))
+ goto _7
}
-
- _aff = int8(i32(66))
- goto _7
-
-_6:
- if _h != uint32(i32(1952807028)) {
- goto _8
+ if _h == uint32(i32(1952807028)) {
+ _aff = int8(i32(66))
+ goto _9
}
-
- _aff = int8(i32(66))
- goto _9
-
-_8:
if _h != uint32(i32(1651273570)) || int32(_aff) != i32(67) && int32(_aff) != i32(69) {
goto _12
}
-
_aff = int8(i32(65))
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIn)) + 1*uintptr(i32(0))))) != i32(40) {
- goto _13
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIn)) + 1*uintptr(i32(0))))) == i32(40) {
+ _zChar = _zIn
}
-
- _zChar = _zIn
-_13:
goto _14
-
_12:
- if _h != uint32(i32(1919246700)) || int32(_aff) != i32(67) {
- goto _16
+ if (_h == uint32(i32(1919246700))) && (int32(_aff) == i32(67)) {
+ _aff = int8(i32(69))
+ goto _17
}
-
- _aff = int8(i32(69))
- goto _17
-
-_16:
- if _h != uint32(i32(1718382433)) || int32(_aff) != i32(67) {
- goto _19
+ if (_h == uint32(i32(1718382433))) && (int32(_aff) == i32(67)) {
+ _aff = int8(i32(69))
+ goto _20
}
-
- _aff = int8(i32(69))
- goto _20
-
-_19:
- if _h != uint32(i32(1685026146)) || int32(_aff) != i32(67) {
- goto _22
+ if (_h == uint32(i32(1685026146))) && (int32(_aff) == i32(67)) {
+ _aff = int8(i32(69))
+ goto _23
}
-
- _aff = int8(i32(69))
- goto _23
-
-_22:
- if (_h & uint32(i32(16777215))) != uint32(i32(6909556)) {
- goto _24
+ if (_h & uint32(i32(16777215))) == uint32(i32(6909556)) {
+ _aff = int8(i32(68))
+ goto _3
}
-
- _aff = int8(i32(68))
- goto _3
-
-_24:
_23:
_20:
_17:
@@ -33403,98 +30934,77 @@ _9:
_7:
_5:
goto _2
-
_3:
if _pszEst == nil {
goto _25
}
-
*_pszEst = uint8(i32(1))
if int32(_aff) >= i32(67) {
goto _26
}
-
if _zChar == nil {
goto _27
}
-
_28:
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zChar)) + 1*uintptr(i32(0))))) == 0 {
goto _29
}
-
if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zChar)) + 1*uintptr(i32(0))))))))) & i32(4)) == 0 {
goto _30
}
-
_14_v = i32(0)
_sqlite3GetInt32(tls, _zChar, &_14_v)
_14_v = (_14_v / i32(4)) + i32(1)
- if _14_v <= i32(255) {
- goto _31
+ if _14_v > i32(255) {
+ _14_v = i32(255)
}
-
- _14_v = i32(255)
-_31:
*_pszEst = uint8(_14_v)
goto _29
-
_30:
*(*uintptr)(unsafe.Pointer(&_zChar)) += uintptr(1)
goto _28
-
_29:
goto _32
-
_27:
*_pszEst = uint8(i32(5))
_32:
_26:
_25:
- r0 = _aff
- return
+ return _aff
}
-var _sqlite3AffinityTypeØ00__func__Ø000 [20]int8 // -
+var _sqlite3AffinityTypeØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3AffinityTypeØ00__func__Ø000[0], str(44928), 20)
+ crt.Xstrncpy(nil, &_sqlite3AffinityTypeØ00__func__Ø000[0], str(43745), 20)
}
-func _sqlite3GetInt32(tls *crt.TLS, _zNum *int8, _pValue *int32) (r0 int32) { // sqlite3.c:28343:1
- var _v int64 // sqlite3.c:28344:16
- _ = _v
- var _i int32 // sqlite3.c:28345:7
- _ = _i
- var _c int32 // sqlite3.c:28345:10
- _ = _c
- var _neg int32 // sqlite3.c:28346:7
- _ = _neg
- var _3_u uint32 // sqlite3.c:28358:9
- _ = _3_u
+// If zNum represents an integer that will fit in 32-bits, then set
+// *pValue to that integer and return true. Otherwise return false.
+//
+// This routine accepts both decimal and hexadecimal notation for integers.
+//
+// Any non-numeric characters that following zNum are ignored.
+// This is different from sqlite3Atoi64() which requires the
+// input number to be zero-terminated.
+func _sqlite3GetInt32(tls *crt.TLS, _zNum *int8, _pValue *int32) (r0 int32) {
+ var _i, _c, _neg int32
+ var _v int64
+ var _3_u uint32
_v = i64(0)
_neg = i32(0)
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) != i32(45) {
- goto _0
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) == i32(45) {
+ _neg = i32(1)
+ *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
+ goto _1
}
-
- _neg = i32(1)
- *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
- goto _1
-
-_0:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) != i32(43) {
- goto _2
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) == i32(43) {
+ *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
+ goto _3
}
-
- *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
- goto _3
-
-_2:
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) != i32(48) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(1))))) != i32(120) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(1))))) != i32(88) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(2)))))))))&i32(8)) == 0 {
goto _7
}
-
_3_u = u32(0)
{
p := &_zNum
@@ -33502,90 +31012,65 @@ _2:
sink0 = *p
}
_8:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) != i32(48) {
- goto _9
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) == i32(48) {
+ *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
+ goto _8
}
-
- *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
- goto _8
-
-_9:
_i = i32(0)
_10:
if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i))))))))&i32(8)) == 0 || _i >= i32(8) {
goto _14
}
-
_3_u = (_3_u * uint32(i32(16))) + uint32(_sqlite3HexToInt(tls, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i))))))
_i += 1
goto _10
-
_14:
- if (_3_u&u32(2147483648)) != uint32(i32(0)) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i))))))))&i32(8)) != i32(0) {
- goto _16
+ if ((_3_u & u32(2147483648)) == uint32(i32(0))) && ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i)))))))) & i32(8)) == i32(0)) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pValue), (unsafe.Pointer)(&_3_u), uint32(i32(4)))
+ return i32(1)
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pValue), (unsafe.Pointer)(&_3_u), uint32(i32(4)))
- return i32(1)
-
-_16:
return i32(0)
_7:
_3:
_1:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))))))) & i32(4)) != 0 {
- goto _18
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))))))) & i32(4)) == 0 {
+ return i32(0)
}
- return i32(0)
-
-_18:
_19:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) != i32(48) {
- goto _20
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(i32(0))))) == i32(48) {
+ *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
+ goto _19
}
-
- *(*uintptr)(unsafe.Pointer(&_zNum)) += uintptr(1)
- goto _19
-
-_20:
_i = i32(0)
_21:
if _i >= i32(11) || store1(&_c, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zNum)) + 1*uintptr(_i))))-i32(48)) < i32(0) || _c > i32(9) {
goto _26
}
-
_v = (_v * int64(i32(10))) + int64(_c)
_i += 1
goto _21
-
_26:
- if _i <= i32(10) {
- goto _27
+ if _i > i32(10) {
+ return i32(0)
}
- return i32(0)
-
-_27:
- if (_v - int64(_neg)) <= int64(i32(2147483647)) {
- goto _28
+ if (_v - int64(_neg)) > int64(i32(2147483647)) {
+ return i32(0)
}
- return i32(0)
-
-_28:
- if _neg == 0 {
- goto _29
+ if _neg != 0 {
+ _v = -_v
}
-
- _v = -_v
-_29:
*_pValue = int32(_v)
return i32(1)
}
-func _sqlite3HexToInt(tls *crt.TLS, _h int32) (r0 uint8) { // sqlite3.c:28837:1
+// Translate a single byte of Hex into an integer.
+// This routine only works if h really is a valid hexadecimal
+// character: 0..9a..fA..F
+func _sqlite3HexToInt(tls *crt.TLS, _h int32) (r0 uint8) {
func() {
if (_h < i32(48) || _h > i32(57)) && (_h < i32(97) || _h > i32(102)) && (_h < i32(65) || _h > i32(70)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28838), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HexToIntØ00__func__Ø000))), unsafe.Pointer(str(44948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28838), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HexToIntØ00__func__Ø000))), unsafe.Pointer(str(43765)))
crt.X__builtin_abort(tls)
}
}()
@@ -33597,19 +31082,21 @@ func _sqlite3HexToInt(tls *crt.TLS, _h int32) (r0 uint8) { // sqlite3.c:28837:1
return uint8(_h & i32(15))
}
-var _sqlite3HexToIntØ00__func__Ø000 [16]int8 // -
+var _sqlite3HexToIntØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3HexToIntØ00__func__Ø000[0], str(45012), 16)
+ crt.Xstrncpy(nil, &_sqlite3HexToIntØ00__func__Ø000[0], str(43828), 16)
}
-func _sqlite3VdbeMemCast(tls *crt.TLS, _pMem *XMem, _aff uint8, _encoding uint8) { // sqlite3.c:70298:1
- if (int32(_pMem.X1) & i32(1)) == 0 {
- goto _0
+// Cast the datatype of the value in pMem according to the affinity
+// "aff". Casting is different from applying affinity in that a cast
+// is forced. In other words, the value is converted into the desired
+// affinity even if that results in loss of data. This routine is
+// used (for example) to implement the SQL "cast()" operator.
+func _sqlite3VdbeMemCast(tls *crt.TLS, _pMem *XMem, _aff uint8, _encoding uint8) {
+ if (int32(_pMem.X1) & i32(1)) != 0 {
+ return
}
- return
-
-_0:
switch int32(_aff) {
case i32(65):
goto _2
@@ -33627,47 +31114,38 @@ _2:
if (int32(_pMem.X1) & i32(16)) != i32(0) {
goto _7
}
-
_sqlite3ValueApplyAffinity(tls, _pMem, uint8(i32(66)), _encoding)
func() {
if (int32(_pMem.X1)&i32(2)) == 0 && ((*Xsqlite3)(_pMem.X9).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70304), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCastØ00__func__Ø000))), unsafe.Pointer(str(45028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70304), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCastØ00__func__Ø000))), unsafe.Pointer(str(43844)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pMem.X1) & i32(2)) == 0 {
- goto _11
+ if (int32(_pMem.X1) & i32(2)) != 0 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(16))
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(16))
-_11:
goto _12
-
_7:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) & i32(-33264))
- sink12 = *p
+ sink14 = *p
}
_12:
goto _13
-
_3:
_sqlite3VdbeMemNumerify(tls, _pMem)
goto _13
-
_4:
_sqlite3VdbeMemIntegerify(tls, _pMem)
goto _13
-
_5:
_sqlite3VdbeMemRealify(tls, _pMem)
goto _13
-
_6:
func() {
if int32(_aff) != i32(66) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70324), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCastØ00__func__Ø000))), unsafe.Pointer(str(45076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70324), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCastØ00__func__Ø000))), unsafe.Pointer(str(43892)))
crt.X__builtin_abort(tls)
}
}()
@@ -33675,321 +31153,336 @@ _6:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) | ((int32(_pMem.X1) & i32(16)) >> uint(i32(3))))
- sink12 = *p
+ sink14 = *p
}
_sqlite3ValueApplyAffinity(tls, _pMem, uint8(i32(66)), _encoding)
func() {
if (int32(_pMem.X1)&i32(2)) == 0 && ((*Xsqlite3)(_pMem.X9).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCastØ00__func__Ø000))), unsafe.Pointer(str(45028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCastØ00__func__Ø000))), unsafe.Pointer(str(43844)))
crt.X__builtin_abort(tls)
}
}()
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) & i32(-16413))
- sink12 = *p
+ sink14 = *p
}
goto _13
-
_13:
}
-func _sqlite3ValueApplyAffinity(tls *crt.TLS, _pVal *XMem, _affinity uint8, _enc uint8) { // sqlite3.c:78538:1
+// Exported version of applyAffinity(). This one works on sqlite3_value*,
+// not the internal Mem* type.
+func _sqlite3ValueApplyAffinity(tls *crt.TLS, _pVal *XMem, _affinity uint8, _enc uint8) {
_applyAffinity(tls, _pVal, int8(_affinity), _enc)
}
-func _applyAffinity(tls *crt.TLS, _pRec *XMem, _affinity int8, _enc uint8) { // sqlite3.c:78488:1
+// Processing is determine by the affinity parameter:
+//
+// SQLITE_AFF_INTEGER:
+// SQLITE_AFF_REAL:
+// SQLITE_AFF_NUMERIC:
+// Try to convert pRec to an integer representation or a
+// floating-point representation if an integer representation
+// is not possible. Note that the integer representation is
+// always preferred, even if the affinity is REAL, because
+// an integer representation is more space efficient on disk.
+//
+// SQLITE_AFF_TEXT:
+// Convert pRec to a text representation.
+//
+// SQLITE_AFF_BLOB:
+// No-op. pRec is unchanged.
+func _applyAffinity(tls *crt.TLS, _pRec *XMem, _affinity int8, _enc uint8) {
if int32(_affinity) < i32(67) {
goto _0
}
-
func() {
if int32(_affinity) != i32(68) && int32(_affinity) != i32(69) && int32(_affinity) != i32(67) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78494), unsafe.Pointer((*int8)(unsafe.Pointer(&_applyAffinityØ00__func__Ø000))), unsafe.Pointer(str(45100)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78494), unsafe.Pointer((*int8)(unsafe.Pointer(&_applyAffinityØ00__func__Ø000))), unsafe.Pointer(str(43913)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_pRec.X1) & i32(4)) != i32(0) {
goto _5
}
-
if (int32(_pRec.X1) & i32(8)) != i32(0) {
goto _6
}
-
- if (int32(_pRec.X1) & i32(2)) == 0 {
- goto _7
+ if (int32(_pRec.X1) & i32(2)) != 0 {
+ _applyNumericAffinity(tls, _pRec, i32(1))
}
-
- _applyNumericAffinity(tls, _pRec, i32(1))
-_7:
goto _8
-
_6:
_sqlite3VdbeIntegerAffinity(tls, _pRec)
_8:
_5:
goto _9
-
_0:
if int32(_affinity) != i32(66) {
goto _10
}
-
if i32(0) != (int32(_pRec.X1) & i32(2)) {
goto _11
}
-
- if (int32(_pRec.X1) & i32(12)) == 0 {
- goto _12
+ if (int32(_pRec.X1) & i32(12)) != 0 {
+ _sqlite3VdbeMemStringify(tls, _pRec, _enc, uint8(i32(1)))
}
-
- _sqlite3VdbeMemStringify(tls, _pRec, _enc, uint8(i32(1)))
-_12:
_11:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) & i32(-13))
- sink12 = *p
+ sink14 = *p
}
_10:
_9:
}
-var _applyAffinityØ00__func__Ø000 [14]int8 // -
+var _applyAffinityØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_applyAffinityØ00__func__Ø000[0], str(45192), 14)
+ crt.Xstrncpy(nil, &_applyAffinityØ00__func__Ø000[0], str(44003), 14)
}
-func _applyNumericAffinity(tls *crt.TLS, _pRec *XMem, _bTryForInt int32) { // sqlite3.c:78454:1
- var _rValue float64 // sqlite3.c:78455:10
- _ = _rValue
- var _iValue int64 // sqlite3.c:78456:7
- _ = _iValue
- var _enc uint8 // sqlite3.c:78457:6
- _ = _enc
+// Try to convert a value into a numeric representation if we can
+// do so without loss of information. In other words, if the string
+// looks like a number, convert it into a number. If it does not
+// look like a number, leave it alone.
+//
+// If the bTryForInt flag is true, then extra effort is made to give
+// an integer representation. Strings that look like floating point
+// values but which have no fractional component (example: '48.00')
+// will have a MEM_Int representation when bTryForInt is true.
+//
+// If bTryForInt is false, then if the input string contains a decimal
+// point or exponential notation, the result is only MEM_Real, even
+// if there is an exact integer representation of the quantity.
+func _applyNumericAffinity(tls *crt.TLS, _pRec *XMem, _bTryForInt int32) {
+ var _iValue int64
+ var _rValue float64
+ var _enc uint8
_enc = _pRec.X2
func() {
if (int32(_pRec.X1) & i32(14)) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78458), unsafe.Pointer((*int8)(unsafe.Pointer(&_applyNumericAffinityØ00__func__Ø000))), unsafe.Pointer(str(45208)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78458), unsafe.Pointer((*int8)(unsafe.Pointer(&_applyNumericAffinityØ00__func__Ø000))), unsafe.Pointer(str(44017)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3AtoF(tls, _pRec.X5, &_rValue, _pRec.X4, _enc) != i32(0) {
- goto _2
- }
- return
-
-_2:
- if i32(0) != _sqlite3Atoi64(tls, _pRec.X5, &_iValue, _pRec.X4, _enc) {
- goto _3
+ if _sqlite3AtoF(tls, _pRec.X5, &_rValue, _pRec.X4, _enc) == i32(0) {
+ return
}
-
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(0 /* X0 */))))) = _iValue
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(4))
- sink12 = *p
+ if i32(0) == _sqlite3Atoi64(tls, _pRec.X5, &_iValue, _pRec.X4, _enc) {
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(0 /* X0 */))))) = _iValue
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(4))
+ sink14 = *p
+ }
+ goto _4
}
- goto _4
-
-_3:
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(0 /* X0 */))))) = _rValue
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(0 /* X0 */))))) = _rValue
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRec)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ sink14 = *p
}
- if _bTryForInt == 0 {
- goto _5
+ if _bTryForInt != 0 {
+ _sqlite3VdbeIntegerAffinity(tls, _pRec)
}
-
- _sqlite3VdbeIntegerAffinity(tls, _pRec)
-_5:
_4:
}
-var _applyNumericAffinityØ00__func__Ø000 [21]int8 // -
+var _applyNumericAffinityØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_applyNumericAffinityØ00__func__Ø000[0], str(45260), 21)
+ crt.Xstrncpy(nil, &_applyNumericAffinityØ00__func__Ø000[0], str(44069), 21)
}
-func _sqlite3VdbeIntegerAffinity(tls *crt.TLS, _pMem *XMem) { // sqlite3.c:70215:1
- var _ix int64 // sqlite3.c:70216:7
- _ = _ix
+// The MEM structure is already a MEM_Real. Try to also make it a
+// MEM_Int if we can.
+func _sqlite3VdbeIntegerAffinity(tls *crt.TLS, _pMem *XMem) {
+ var _ix int64
func() {
if (int32(_pMem.X1) & i32(8)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70217), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(45284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70217), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(44090)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70218), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(5148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70218), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(6728)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70219), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70219), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70220), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(4716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70220), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIntegerAffinityØ00__func__Ø000))), unsafe.Pointer(str(6321)))
crt.X__builtin_abort(tls)
}
}()
- _ix = _doubleToInt64(tls, *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
- if (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))) != float64(_ix) || _ix <= i64(-9223372036854775808) || _ix >= i64(9223372036854775807) {
- goto _11
+ _ix = _doubleToInt64(tls, *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ if (((*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))) == float64(_ix)) && (_ix > i64(-9223372036854775808))) && (_ix < i64(9223372036854775807)) {
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _ix
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(4))
}
-
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _ix
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(4))
-_11:
}
-var _sqlite3VdbeIntegerAffinityØ00__func__Ø000 [27]int8 // -
+var _sqlite3VdbeIntegerAffinityØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeIntegerAffinityØ00__func__Ø000[0], str(45308), 27)
+ crt.Xstrncpy(nil, &_sqlite3VdbeIntegerAffinityØ00__func__Ø000[0], str(44113), 27)
}
-var _sqlite3VdbeMemCastØ00__func__Ø000 [19]int8 // -
+var _sqlite3VdbeMemCastØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemCastØ00__func__Ø000[0], str(45336), 19)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemCastØ00__func__Ø000[0], str(44140), 19)
}
-func _sqlite3VdbeMemNumerify(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:70274:1
+// Convert pMem so that it has types MEM_Real or MEM_Int or both.
+// Invalidate any prior representations.
+//
+// Every effort is made to force the conversion, even if the input
+// is a string that does not look completely like a number. Convert
+// as much of the string as we can and ignore the rest.
+func _sqlite3VdbeMemNumerify(tls *crt.TLS, _pMem *XMem) (r0 int32) {
if (int32(_pMem.X1) & i32(13)) != i32(0) {
goto _0
}
-
func() {
if (int32(_pMem.X1) & i32(18)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNumerifyØ00__func__Ø000))), unsafe.Pointer(str(45356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNumerifyØ00__func__Ø000))), unsafe.Pointer(str(44159)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70277), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNumerifyØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70277), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNumerifyØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
- if i32(0) != _sqlite3Atoi64(tls, _pMem.X5, (*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */))))), _pMem.X4, _pMem.X2) {
- goto _6
+ if i32(0) == _sqlite3Atoi64(tls, _pMem.X5, (*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */))))), _pMem.X4, _pMem.X2) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(4))
+ goto _7
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(4))
- goto _7
-
-_6:
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeRealValue(tls, _pMem)
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeRealValue(tls, _pMem)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(8))
_sqlite3VdbeIntegerAffinity(tls, _pMem)
_7:
_0:
func() {
if (int32(_pMem.X1) & i32(13)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70286), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNumerifyØ00__func__Ø000))), unsafe.Pointer(str(45396)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70286), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemNumerifyØ00__func__Ø000))), unsafe.Pointer(str(44197)))
crt.X__builtin_abort(tls)
}
}()
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) & i32(-16403))
- sink12 = *p
+ sink14 = *p
}
return i32(0)
}
-var _sqlite3VdbeMemNumerifyØ00__func__Ø000 [23]int8 // -
+var _sqlite3VdbeMemNumerifyØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemNumerifyØ00__func__Ø000[0], str(45444), 23)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemNumerifyØ00__func__Ø000[0], str(44244), 23)
}
-func _sqlite3VdbeMemIntegerify(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:70243:1
+// Convert pMem to type integer. Invalidate any prior representations.
+func _sqlite3VdbeMemIntegerify(tls *crt.TLS, _pMem *XMem) (r0 int32) {
func() {
if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70244), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemIntegerifyØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70244), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemIntegerifyØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70245), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemIntegerifyØ00__func__Ø000))), unsafe.Pointer(str(5148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70245), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemIntegerifyØ00__func__Ø000))), unsafe.Pointer(str(6728)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70246), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemIntegerifyØ00__func__Ø000))), unsafe.Pointer(str(4716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70246), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemIntegerifyØ00__func__Ø000))), unsafe.Pointer(str(6321)))
crt.X__builtin_abort(tls)
}
}()
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeIntValue(tls, _pMem)
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeIntValue(tls, _pMem)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(4))
return i32(0)
}
-var _sqlite3VdbeMemIntegerifyØ00__func__Ø000 [25]int8 // -
+var _sqlite3VdbeMemIntegerifyØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemIntegerifyØ00__func__Ø000[0], str(45468), 25)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemIntegerifyØ00__func__Ø000[0], str(44267), 25)
}
-func _sqlite3VdbeMemRealify(tls *crt.TLS, _pMem *XMem) (r0 int32) { // sqlite3.c:70257:1
+// Convert pMem so that it is of type MEM_Real.
+// Invalidate any prior representations.
+func _sqlite3VdbeMemRealify(tls *crt.TLS, _pMem *XMem) (r0 int32) {
func() {
if (*Xsqlite3)(_pMem.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pMem.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemRealifyØ00__func__Ø000))), unsafe.Pointer(str(2992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemRealifyØ00__func__Ø000))), unsafe.Pointer(str(4667)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemRealifyØ00__func__Ø000))), unsafe.Pointer(str(4716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemRealifyØ00__func__Ø000))), unsafe.Pointer(str(6321)))
crt.X__builtin_abort(tls)
}
}()
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeRealValue(tls, _pMem)
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeRealValue(tls, _pMem)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16((int32(_pMem.X1) & i32(-49664)) | i32(8))
return i32(0)
}
-var _sqlite3VdbeMemRealifyØ00__func__Ø000 [22]int8 // -
+var _sqlite3VdbeMemRealifyØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemRealifyØ00__func__Ø000[0], str(45496), 22)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemRealifyØ00__func__Ø000[0], str(44292), 22)
}
-func _valueNew(tls *crt.TLS, _db *Xsqlite3, _p *t39) (r0 *XMem) { // sqlite3.c:70805:1
+// Allocate and return a pointer to a new sqlite3_value object. If
+// the second argument to this function is NULL, the object is allocated
+// by calling sqlite3ValueNew().
+//
+// Otherwise, if the second argument is non-zero, then this function is
+// being called indirectly by sqlite3Stat4ProbeSetValue(). If it has not
+// already been allocated, allocate the UnpackedRecord structure that
+// that function will return to its caller here. Then return a pointer to
+// an sqlite3_value within the UnpackedRecord.a[] array.
+func _valueNew(tls *crt.TLS, _db *Xsqlite3, _p *t41) (r0 *XMem) {
return _sqlite3ValueNew(tls, _db)
}
-func _sqlite3HexToBlob(tls *crt.TLS, _db *Xsqlite3, _z *int8, _n int32) (r0 unsafe.Pointer) { // sqlite3.c:28855:1
- var _zBlob *int8 // sqlite3.c:28856:8
- _ = _zBlob
- var _i int32 // sqlite3.c:28857:7
- _ = _i
+// Convert a BLOB literal of the form "x'hhhhhh'" into its binary
+// value. Return a pointer to its binary value. Space to hold the
+// binary value has been obtained from malloc and must be freed by
+// the calling routine.
+func _sqlite3HexToBlob(tls *crt.TLS, _db *Xsqlite3, _z *int8, _n int32) (r0 unsafe.Pointer) {
+ var _i int32
+ var _zBlob *int8
_zBlob = (*int8)(_sqlite3DbMallocRawNN(tls, _db, uint64((_n/i32(2))+i32(1))))
_n -= 1
if _zBlob == nil {
goto _0
}
-
_i = i32(0)
_1:
if _i >= _n {
goto _4
}
-
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBlob)) + 1*uintptr(_i/i32(2)))) = int8((int32(_sqlite3HexToInt(tls, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))))) << uint(i32(4))) | int32(_sqlite3HexToInt(tls, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i+i32(1))))))))
{
p := &_i
@@ -33997,64 +31490,53 @@ _1:
sink1 = *p
}
goto _1
-
_4:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBlob)) + 1*uintptr(_i/i32(2)))) = int8(i32(0))
_0:
return (unsafe.Pointer)(_zBlob)
}
-func _sqlite3VdbeAddOp1(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32) (r0 int32) { // sqlite3.c:71638:1
+func _sqlite3VdbeAddOp1(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32) (r0 int32) {
return _sqlite3VdbeAddOp3(tls, _p, _op, _p1, i32(0), i32(0))
}
-func _sqlite3ExprCacheStore(tls *crt.TLS, _pParse *XParse, _iTab int32, _iCol int32, _iReg int32) { // sqlite3.c:93998:1
- var _i int32 // sqlite3.c:93999:7
- _ = _i
- var _minLru int32 // sqlite3.c:94000:7
- _ = _minLru
- var _idxLru int32 // sqlite3.c:94001:7
- _ = _idxLru
- var _p *TyColCache // sqlite3.c:94002:20
- _ = _p
+// Record in the column cache that a particular column from a
+// particular table is stored in a particular register.
+func _sqlite3ExprCacheStore(tls *crt.TLS, _pParse *XParse, _iTab int32, _iCol int32, _iReg int32) {
+ var _i, _minLru, _idxLru int32
+ var _p *TyColCache
func() {
if _iReg <= i32(0) && (_pParse.X16) == 0 && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94005), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCacheStoreØ00__func__Ø000))), unsafe.Pointer(str(45520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94005), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCacheStoreØ00__func__Ø000))), unsafe.Pointer(str(44314)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iCol < i32(-1) || _iCol >= i32(32768) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94006), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCacheStoreØ00__func__Ø000))), unsafe.Pointer(str(45572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94006), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCacheStoreØ00__func__Ø000))), unsafe.Pointer(str(44365)))
crt.X__builtin_abort(tls)
}
}()
- if (int32((*Xsqlite3)(_pParse.X0).X13) & i32(2)) == i32(0) {
- goto _7
+ if (int32((*Xsqlite3)(_pParse.X0).X13) & i32(2)) != i32(0) {
+ return
}
- return
-
-_7:
*func() **TyColCache { _i = i32(0); return &_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
_8:
if _i >= int32(_pParse.X13) {
goto _11
}
-
func() {
if (_p.X0) == _iTab && int32(_p.X1) == _iCol {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94021), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCacheStoreØ00__func__Ø000))), unsafe.Pointer(str(45596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94021), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCacheStoreØ00__func__Ø000))), unsafe.Pointer(str(44388)))
crt.X__builtin_abort(tls)
}
}()
*(*uintptr)(unsafe.Pointer(func() **TyColCache { _i += 1; return &_p }())) += uintptr(20)
goto _8
-
_11:
if int32(_pParse.X13) < i32(10) {
goto _15
}
-
_minLru = i32(2147483647)
_idxLru = i32(-1)
*func() **TyColCache { _i = i32(0); return &_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
@@ -34062,21 +31544,15 @@ _16:
if _i >= i32(10) {
goto _19
}
-
- if (_p.X5) >= _minLru {
- goto _20
+ if (_p.X5) < _minLru {
+ _idxLru = _i
+ _minLru = _p.X5
}
-
- _idxLru = _i
- _minLru = _p.X5
-_20:
*(*uintptr)(unsafe.Pointer(func() **TyColCache { _i += 1; return &_p }())) += uintptr(20)
goto _16
-
_19:
_p = (*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_idxLru)))
goto _21
-
_15:
_p = (*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(25 /* X13 */))), uint8(1)))))
_21:
@@ -34088,49 +31564,42 @@ _21:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(68 /* X24 */))), int32(1))
}
-var _sqlite3ExprCacheStoreØ00__func__Ø000 [22]int8 // -
+var _sqlite3ExprCacheStoreØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCacheStoreØ00__func__Ø000[0], str(45632), 22)
+ crt.Xstrncpy(nil, &_sqlite3ExprCacheStoreØ00__func__Ø000[0], str(44424), 22)
}
-func _codeInteger(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _negFlag int32, _iMem int32) { // sqlite3.c:93945:1
- var _v *TVdbe // sqlite3.c:93946:8
- _ = _v
- var _1_i int32 // sqlite3.c:93948:9
- _ = _1_i
- var _2_c int32 // sqlite3.c:93953:9
- _ = _2_c
- var _2_value int64 // sqlite3.c:93954:9
- _ = _2_value
- var _2_z *int8 // sqlite3.c:93955:16
- _ = _2_z
+// Generate an instruction that will put the integer describe by
+// text z[0..n-1] into register iMem.
+//
+// Expr.u.zToken is always UTF8 and zero-terminated.
+func _codeInteger(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _negFlag int32, _iMem int32) {
+ var _1_i, _2_c int32
+ var _2_value int64
+ var _2_z *int8
+ var _v *TVdbe
_v = (*TVdbe)(_pParse.X2)
if ((_pExpr.X2) & uint32(i32(1024))) == 0 {
goto _0
}
-
- _1_i = *(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
+ _1_i = *(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
func() {
if _1_i < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93949), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeIntegerØ00__func__Ø000))), unsafe.Pointer(str(45656)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93949), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeIntegerØ00__func__Ø000))), unsafe.Pointer(str(44446)))
crt.X__builtin_abort(tls)
}
}()
- if _negFlag == 0 {
- goto _3
+ if _negFlag != 0 {
+ _1_i = -_1_i
}
-
- _1_i = -_1_i
-_3:
_sqlite3VdbeAddOp2(tls, _v, i32(56), _1_i, _iMem)
goto _4
-
_0:
- _2_z = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
+ _2_z = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
func() {
if _2_z == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93956), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeIntegerØ00__func__Ø000))), unsafe.Pointer(str(45664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93956), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeIntegerØ00__func__Ø000))), unsafe.Pointer(str(44451)))
crt.X__builtin_abort(tls)
}
}()
@@ -34138,79 +31607,70 @@ _0:
if _2_c != i32(1) && (_2_c != i32(2) || _negFlag != 0) && (_negFlag == 0 || _2_value != i64(-9223372036854775808)) {
goto _11
}
-
- if Xsqlite3_strnicmp(tls, _2_z, str(45672), i32(2)) != i32(0) {
- goto _12
+ if Xsqlite3_strnicmp(tls, _2_z, str(44456), i32(2)) == i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(44459), unsafe.Pointer(func() *int8 {
+ if _negFlag != 0 {
+ return str(37896)
+ }
+ return str(0)
+ }()), unsafe.Pointer(_2_z))
+ goto _15
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(45676), unsafe.Pointer(func() *int8 {
- if _negFlag != 0 {
- return str(38620)
- }
- return str(196)
- }()), unsafe.Pointer(_2_z))
- goto _15
-
-_12:
_codeReal(tls, _v, _2_z, _negFlag, _iMem)
_15:
goto _16
-
_11:
- if _negFlag == 0 {
- goto _17
+ if _negFlag != 0 {
+ _2_value = func() int64 {
+ if _2_c == i32(2) {
+ return i64(-9223372036854775808)
+ }
+ return (-_2_value)
+ }()
}
-
- _2_value = func() int64 {
- if _2_c == i32(2) {
- return i64(-9223372036854775808)
- }
- return (-_2_value)
- }()
-_17:
_sqlite3VdbeAddOp4Dup8(tls, _v, i32(57), i32(0), _iMem, i32(0), (*uint8)(unsafe.Pointer(&_2_value)), i32(-10))
_16:
_4:
}
-var _codeIntegerØ00__func__Ø000 [12]int8 // -
+var _codeIntegerØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_codeIntegerØ00__func__Ø000[0], str(45704), 12)
+ crt.Xstrncpy(nil, &_codeIntegerØ00__func__Ø000[0], str(44485), 12)
}
-func _sqlite3DecOrHexToI64(tls *crt.TLS, _z *int8, _pOut *int64) (r0 int32) { // sqlite3.c:28313:1
- var _1_u uint64 // sqlite3.c:28318:9
- _ = _1_u
- var _1_i int32 // sqlite3.c:28319:9
- _ = _1_i
- var _1_k int32 // sqlite3.c:28319:12
- _ = _1_k
+// Transform a UTF-8 integer literal, in either decimal or hexadecimal,
+// into a 64-bit signed integer. This routine accepts hexadecimal literals,
+// whereas sqlite3Atoi64() does not.
+//
+// Returns:
+//
+// 0 Successful transformation. Fits in a 64-bit signed integer.
+// 1 Integer too large for a 64-bit signed integer or is malformed
+// 2 Special case of 9223372036854775808
+func _sqlite3DecOrHexToI64(tls *crt.TLS, _z *int8, _pOut *int64) (r0 int32) {
+ var _1_i, _1_k int32
+ var _1_u uint64
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(48) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(120) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) != i32(88) {
goto _2
}
-
_1_u = u64(0)
_1_i = i32(2)
_3:
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_1_i)))) != i32(48) {
goto _6
}
-
_1_i += 1
goto _3
-
_6:
_1_k = _1_i
_7:
if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_1_k)))))))) & i32(8)) == 0 {
goto _10
}
-
_1_u = (_1_u * uint64(i32(16))) + uint64(_sqlite3HexToInt(tls, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_1_k))))))
_1_k += 1
goto _7
-
_10:
crt.Xmemcpy(tls, (unsafe.Pointer)(_pOut), (unsafe.Pointer)(&_1_u), uint32(i32(8)))
return func() int32 {
@@ -34224,174 +31684,145 @@ _2:
return _sqlite3Atoi64(tls, _z, _pOut, _sqlite3Strlen30(tls, _z), uint8(i32(1)))
}
-func _codeReal(tls *crt.TLS, _v *TVdbe, _z *int8, _negateFlag int32, _iMem int32) { // sqlite3.c:93927:1
- var _1_value float64 // sqlite3.c:93929:12
- _ = _1_value
+// Generate an instruction that will put the floating point
+// value described by z[0..n-1] into register iMem.
+//
+// The z[] string will probably not be zero-terminated. But the
+// z[n] character is guaranteed to be something that does not look
+// like the continuation of the number.
+func _codeReal(tls *crt.TLS, _v *TVdbe, _z *int8, _negateFlag int32, _iMem int32) {
+ var _1_value float64
if func() int32 {
if _z != nil {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93928), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRealØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93928), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRealØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _2
}
-
_sqlite3AtoF(tls, _z, &_1_value, _sqlite3Strlen30(tls, _z), uint8(i32(1)))
func() {
if _sqlite3IsNaN(tls, _1_value) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93931), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRealØ00__func__Ø000))), unsafe.Pointer(str(45716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93931), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRealØ00__func__Ø000))), unsafe.Pointer(str(44497)))
crt.X__builtin_abort(tls)
}
}()
- if _negateFlag == 0 {
- goto _5
+ if _negateFlag != 0 {
+ _1_value = -_1_value
}
-
- _1_value = -_1_value
-_5:
_sqlite3VdbeAddOp4Dup8(tls, _v, i32(132), i32(0), _iMem, i32(0), (*uint8)(unsafe.Pointer(&_1_value)), i32(-9))
_2:
}
-var _codeRealØ00__func__Ø000 [9]int8 // -
+var _codeRealØ00__func__Ø000 [9]int8
func init() {
- crt.Xstrncpy(nil, &_codeRealØ00__func__Ø000[0], str(45740), 9)
+ crt.Xstrncpy(nil, &_codeRealØ00__func__Ø000[0], str(44518), 9)
}
-func _sqlite3VdbeAddOp4Dup8(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32, _zP4 *uint8, _p4type int32) (r0 int32) { // sqlite3.c:71704:1
- var _p4copy *int8 // sqlite3.c:71713:8
- _ = _p4copy
+// Add an opcode that includes the p4 value with a P4_INT64 or
+// P4_REAL type.
+func _sqlite3VdbeAddOp4Dup8(tls *crt.TLS, _p *TVdbe, _op int32, _p1 int32, _p2 int32, _p3 int32, _zP4 *uint8, _p4type int32) (r0 int32) {
+ var _p4copy *int8
_p4copy = (*int8)(_sqlite3DbMallocRawNN(tls, _sqlite3VdbeDb(tls, _p), uint64(i32(8))))
- if _p4copy == nil {
- goto _0
+ if _p4copy != nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_p4copy), (unsafe.Pointer)(_zP4), uint32(i32(8)))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_p4copy), (unsafe.Pointer)(_zP4), uint32(i32(8)))
-_0:
return _sqlite3VdbeAddOp4(tls, _p, _op, _p1, _p2, _p3, _p4copy, _p4type)
}
-func _sqlite3ExprCacheAffinityChange(tls *crt.TLS, _pParse *XParse, _iStart int32, _iCount int32) { // sqlite3.c:94246:1
+// Record the fact that an affinity change has occurred on iCount
+// registers starting with iStart.
+func _sqlite3ExprCacheAffinityChange(tls *crt.TLS, _pParse *XParse, _iStart int32, _iCount int32) {
_sqlite3ExprCacheRemove(tls, _pParse, _iStart, _iCount)
}
-func _sqlite3ExprCacheRemove(tls *crt.TLS, _pParse *XParse, _iReg int32, _nReg int32) { // sqlite3.c:94053:1
- var _i int32 // sqlite3.c:94054:7
- _ = _i
- var _1_p *TyColCache // sqlite3.c:94056:22
- _ = _1_p
+// Indicate that registers between iReg..iReg+nReg-1 are being overwritten.
+// Purge the range of registers from the column cache.
+func _sqlite3ExprCacheRemove(tls *crt.TLS, _pParse *XParse, _iReg int32, _nReg int32) {
+ var _i int32
+ var _1_p *TyColCache
_i = i32(0)
_0:
if _i >= int32(_pParse.X13) {
goto _1
}
-
_1_p = (*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i)))
- if (_1_p.X4) < _iReg || (_1_p.X4) >= (_iReg+_nReg) {
- goto _3
+ if ((_1_p.X4) >= _iReg) && ((_1_p.X4) < (_iReg + _nReg)) {
+ _cacheEntryClear(tls, _pParse, _i)
+ goto _4
}
-
- _cacheEntryClear(tls, _pParse, _i)
- goto _4
-
-_3:
_i += 1
_4:
goto _0
-
_1:
}
-func _cacheEntryClear(tls *crt.TLS, _pParse *XParse, _i int32) { // sqlite3.c:93981:1
+// Erase column-cache entry number i
+func _cacheEntryClear(tls *crt.TLS, _pParse *XParse, _i int32) {
if ((*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X2) == 0 {
goto _0
}
-
- if int32(_pParse.X7) >= i32(8) {
- goto _1
+ if int32(_pParse.X7) < i32(8) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360 /* X49 */))))) + 4*uintptr(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19 /* X7 */))), uint8(1))))) = (*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X4
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360 /* X49 */))))) + 4*uintptr(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19 /* X7 */))), uint8(1))))) = (*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X4
-_1:
_0:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(25 /* X13 */))) -= 1
- if _i >= int32(_pParse.X13) {
- goto _2
+ if _i < int32(_pParse.X13) {
+ *(*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))) = *(*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_pParse.X13)))
}
-
- *(*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))) = *(*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_pParse.X13)))
-_2:
}
-func _sqlite3ExprIsVector(tls *crt.TLS, _pExpr *XExpr) (r0 int32) { // sqlite3.c:91231:1
+// Return true if expression pExpr is a vector, or false otherwise.
+//
+// A vector is defined as any expression that results in two or more
+// columns of result. Every TK_VECTOR node is an vector because the
+// parser will not generate a TK_VECTOR with fewer than two entries.
+// But a TK_SELECT might be either a vector or a scalar. It is only
+// considered a vector if it has two or more result columns.
+func _sqlite3ExprIsVector(tls *crt.TLS, _pExpr *XExpr) (r0 int32) {
return bool2int(_sqlite3ExprVectorSize(tls, _pExpr) > i32(1))
}
-func _sqlite3ExprVectorSize(tls *crt.TLS, _pExpr *XExpr) (r0 int32) { // sqlite3.c:91241:1
- var _op uint8 // sqlite3.c:91242:6
- _ = _op
+// If the expression passed as the only argument is of type TK_VECTOR
+// return the number of expressions in the vector. Or, if the expression
+// is a sub-select, return the number of columns in the sub-select. For
+// any other type of expression, return 1.
+func _sqlite3ExprVectorSize(tls *crt.TLS, _pExpr *XExpr) (r0 int32) {
+ var _op uint8
_op = _pExpr.X0
- if int32(_op) != i32(157) {
- goto _0
+ if int32(_op) == i32(157) {
+ _op = _pExpr.X12
}
-
- _op = _pExpr.X12
-_0:
- if int32(_op) != i32(158) {
- goto _1
+ if int32(_op) == i32(158) {
+ /* X6 */
+ return (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20)))))).X0
}
-
- /* X6 */
- return (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20)))))).X0
-
-_1:
- if int32(_op) != i32(119) {
- goto _3
+ if int32(_op) == i32(119) {
+ /* X6 */
+ return (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20)))))).X0).X0
}
-
- /* X6 */
- return (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20)))))).X0).X0
-
-_3:
return i32(1)
}
-func _codeVectorCompare(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _op uint8, _p5 uint8) { // sqlite3.c:91408:1
- var _v *TVdbe // sqlite3.c:91415:8
- _ = _v
- var _pLeft *XExpr // sqlite3.c:91416:8
- _ = _pLeft
- var _pRight *XExpr // sqlite3.c:91417:8
- _ = _pRight
- var _nLeft int32 // sqlite3.c:91418:7
- _ = _nLeft
- var _i int32 // sqlite3.c:91419:7
- _ = _i
- var _regLeft int32 // sqlite3.c:91420:7
- _ = _regLeft
- var _regRight int32 // sqlite3.c:91421:7
- _ = _regRight
- var _opx uint8 // sqlite3.c:91422:6
- _ = _opx
- var _addrDone int32 // sqlite3.c:91423:7
- _ = _addrDone
- var _2_regFree1 int32 // sqlite3.c:91447:9
- _ = _2_regFree1
- var _2_regFree2 int32 // sqlite3.c:91447:23
- _ = _2_regFree2
- var _2_pL *XExpr // sqlite3.c:91448:10
- _ = _2_pL
- var _2_pR *XExpr // sqlite3.c:91448:15
- _ = _2_pR
- var _2_r1 int32 // sqlite3.c:91449:9
- _ = _2_r1
- var _2_r2 int32 // sqlite3.c:91449:13
- _ = _2_r2
+// Expression pExpr is a comparison between two vector values. Compute
+// the result of the comparison (1, 0, or NULL) and write that
+// result into register dest.
+//
+// The caller must satisfy the following preconditions:
+//
+// if pExpr->op==TK_IS: op==TK_EQ and p5==SQLITE_NULLEQ
+// if pExpr->op==TK_ISNOT: op==TK_NE and p5==SQLITE_NULLEQ
+// otherwise: op==pExpr->op and p5==0
+func _codeVectorCompare(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _op uint8, _p5 uint8) {
+ var _nLeft, _i, _regLeft, _regRight, _addrDone, _2_regFree1, _2_regFree2, _2_r1, _2_r2 int32
+ var _opx uint8
+ var _v *TVdbe
+ var _pLeft, _pRight, _2_pL, _2_pR *XExpr
_v = (*TVdbe)(_pParse.X2)
_pLeft = (*XExpr)(_pExpr.X4)
_pRight = (*XExpr)(_pExpr.X5)
@@ -34400,35 +31831,31 @@ func _codeVectorCompare(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int3
_regRight = i32(0)
_opx = _op
_addrDone = _sqlite3VdbeMakeLabel(tls, _v)
- if _nLeft == _sqlite3ExprVectorSize(tls, _pRight) {
- goto _0
+ if _nLeft != _sqlite3ExprVectorSize(tls, _pRight) {
+ _sqlite3ErrorMsg(tls, _pParse, str(43181))
+ return
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(44332))
- return
-
-_0:
func() {
if int32(_pExpr.X0) != i32(78) && int32(_pExpr.X0) != i32(77) && int32(_pExpr.X0) != i32(72) && int32(_pExpr.X0) != i32(148) && int32(_pExpr.X0) != i32(81) && int32(_pExpr.X0) != i32(79) && int32(_pExpr.X0) != i32(80) && int32(_pExpr.X0) != i32(82) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91429), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(45752)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91429), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(44527)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pExpr.X0) != int32(_op) && (int32(_pExpr.X0) != i32(72) || int32(_op) != i32(78)) && (int32(_pExpr.X0) != i32(148) || int32(_op) != i32(77)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91434), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(45912)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91434), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(44687)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p5) != i32(0) && int32(_pExpr.X0) == int32(_op) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91436), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(46000)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91436), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(44774)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p5) != i32(128) && int32(_pExpr.X0) != int32(_op) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91437), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(46024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91437), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(44797)))
crt.X__builtin_abort(tls)
}
}()
@@ -34437,18 +31864,12 @@ _0:
*p = uint8(int32(*p) | i32(32))
sink2 = *p
}
- if int32(_opx) != i32(80) {
- goto _22
+ if int32(_opx) == i32(80) {
+ _opx = uint8(i32(81))
}
-
- _opx = uint8(i32(81))
-_22:
- if int32(_opx) != i32(82) {
- goto _23
+ if int32(_opx) == i32(82) {
+ _opx = uint8(i32(79))
}
-
- _opx = uint8(i32(79))
-_23:
_regLeft = _exprCodeSubselect(tls, _pParse, _pLeft)
_regRight = _exprCodeSubselect(tls, _pParse, _pRight)
_i = i32(0)
@@ -34457,228 +31878,163 @@ _24:
_2_regFree2 = i32(0)
func() {
if _i < i32(0) || _i >= _nLeft {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91450), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(46060)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91450), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(44832)))
crt.X__builtin_abort(tls)
}
}()
- if _i <= i32(0) {
- goto _31
+ if _i > i32(0) {
+ _sqlite3ExprCachePush(tls, _pParse)
}
-
- _sqlite3ExprCachePush(tls, _pParse)
-_31:
_2_r1 = _exprVectorRegister(tls, _pParse, _pLeft, _i, _regLeft, &_2_pL, &_2_regFree1)
_2_r2 = _exprVectorRegister(tls, _pParse, _pRight, _i, _regRight, &_2_pR, &_2_regFree2)
_codeCompare(tls, _pParse, _2_pL, _2_pR, int32(_opx), _2_r1, _2_r2, _dest, int32(_p5))
_sqlite3ReleaseTempReg(tls, _pParse, _2_regFree1)
_sqlite3ReleaseTempReg(tls, _pParse, _2_regFree2)
- if _i <= i32(0) {
- goto _32
- }
-
- _sqlite3ExprCachePop(tls, _pParse)
-_32:
- if _i != (_nLeft - i32(1)) {
- goto _33
- }
-
- goto _27
-
-_33:
- if int32(_opx) != i32(78) {
- goto _34
+ if _i > i32(0) {
+ _sqlite3ExprCachePop(tls, _pParse)
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(22), _dest, _addrDone)
- {
- p := &_p5
- *p = uint8(int32(*p) | i32(8))
- sink2 = *p
+ if _i == (_nLeft - i32(1)) {
+ goto _27
}
- goto _35
-
-_34:
- if int32(_opx) != i32(77) {
- goto _36
+ if int32(_opx) == i32(78) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(22), _dest, _addrDone)
+ {
+ p := &_p5
+ *p = uint8(int32(*p) | i32(8))
+ sink2 = *p
+ }
+ goto _35
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(21), _dest, _addrDone)
- {
- p := &_p5
- *p = uint8(int32(*p) | i32(8))
- sink2 = *p
+ if int32(_opx) == i32(77) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(21), _dest, _addrDone)
+ {
+ p := &_p5
+ *p = uint8(int32(*p) | i32(8))
+ sink2 = *p
+ }
+ goto _37
}
- goto _37
-
-_36:
func() {
if int32(_op) != i32(81) && int32(_op) != i32(79) && int32(_op) != i32(80) && int32(_op) != i32(82) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91474), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(46076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91474), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeVectorCompareØ00__func__Ø000))), unsafe.Pointer(str(44848)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeAddOp2(tls, _v, i32(83), i32(0), _addrDone)
- if _i != (_nLeft - i32(2)) {
- goto _43
+ if _i == (_nLeft - i32(2)) {
+ _opx = _op
}
-
- _opx = _op
-_43:
_37:
_35:
_i += 1
goto _24
-
_27:
_sqlite3VdbeResolveLabel(tls, _v, _addrDone)
}
-func _sqlite3VdbeMakeLabel(tls *crt.TLS, _v *TVdbe) (r0 int32) { // sqlite3.c:71781:1
- var _p *XParse // sqlite3.c:71782:9
- _ = _p
- var _i int32 // sqlite3.c:71783:7
- _ = _i
+// Create a new symbolic label for an instruction that has yet to be
+// coded. The symbolic label is really just a negative number. The
+// label can be used as the P2 value of an operation. Later, when
+// the label is resolved to a specific address, the VDBE will scan
+// through its operation list and change all values of P2 which match
+// the label into the resolved address.
+//
+// The VDBE knows that a P2 value is a label because labels are
+// always negative and P2 values are suppose to be non-negative.
+// Hence, a negative P2 value is a label that has yet to be resolved.
+//
+// Zero is returned if a malloc() fails.
+func _sqlite3VdbeMakeLabel(tls *crt.TLS, _v *TVdbe) (r0 int32) {
+ var _i int32
+ var _p *XParse
_p = (*XParse)(_v.X3)
_i = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(72 /* X25 */))), int32(1))
func() {
if (_v.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71784), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeLabelØ00__func__Ø000))), unsafe.Pointer(str(46128)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71784), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeLabelØ00__func__Ø000))), unsafe.Pointer(str(44897)))
crt.X__builtin_abort(tls)
}
}()
- if (_i & (_i - i32(1))) != i32(0) {
- goto _2
+ if (_i & (_i - i32(1))) == i32(0) {
+ *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(76 /* X26 */))) = (*int32)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_p.X26), uint64(uint32((_i*i32(2))+i32(1))*u32(4))))
}
-
- *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(76 /* X26 */))) = (*int32)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_p.X26), uint64(uint32((_i*i32(2))+i32(1))*u32(4))))
-_2:
- if (_p.X26) == nil {
- goto _3
+ if (_p.X26) != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X26)) + 4*uintptr(_i))) = i32(-1)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X26)) + 4*uintptr(_i))) = i32(-1)
-_3:
return i32(-1) - _i
}
-var _sqlite3VdbeMakeLabelØ00__func__Ø000 [21]int8 // -
+var _sqlite3VdbeMakeLabelØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMakeLabelØ00__func__Ø000[0], str(46156), 21)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMakeLabelØ00__func__Ø000[0], str(44923), 21)
}
-var _codeVectorCompareØ00__func__Ø000 [18]int8 // -
+var _codeVectorCompareØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_codeVectorCompareØ00__func__Ø000[0], str(46180), 18)
+ crt.Xstrncpy(nil, &_codeVectorCompareØ00__func__Ø000[0], str(44944), 18)
}
-func _exprCodeSubselect(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 int32) { // sqlite3.c:91347:1
- var _reg int32 // sqlite3.c:91348:7
- _ = _reg
+// If expression pExpr is of type TK_SELECT, generate code to evaluate
+// it. Return the register in which the result is stored (or, if the
+// sub-select returns more than one column, the first in an array
+// of registers in which the result is stored).
+//
+// If pExpr is not a TK_SELECT expression, return 0.
+func _exprCodeSubselect(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 int32) {
+ var _reg int32
_reg = i32(0)
- if int32(_pExpr.X0) != i32(119) {
- goto _0
+ if int32(_pExpr.X0) == i32(119) {
+ _reg = _sqlite3CodeSubselect(tls, _pParse, _pExpr, i32(0), i32(0))
}
-
- _reg = _sqlite3CodeSubselect(tls, _pParse, _pExpr, i32(0), i32(0))
-_0:
return _reg
}
-func _sqlite3CodeSubselect(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _rHasNullFlag int32, _isRowid int32) (r0 int32) { // sqlite3.c:93402:1
- var _jmpIfDynamic int32 // sqlite3.c:93408:7
- _ = _jmpIfDynamic
- var _rReg int32 // sqlite3.c:93409:7
- _ = _rReg
- var _v *TVdbe // sqlite3.c:93410:8
- _ = _v
- var _2_zMsg *int8 // sqlite3.c:93430:10
- _ = _2_zMsg
- var _4_addr int32 // sqlite3.c:93441:11
- _ = _4_addr
- var _4_pLeft *XExpr // sqlite3.c:93442:12
- _ = _4_pLeft
- var _4_pKeyInfo *XKeyInfo // sqlite3.c:93443:15
- _ = _4_pKeyInfo
- var _4_nVal int32 // sqlite3.c:93444:11
- _ = _4_nVal
- var _5_pSelect *XSelect // sqlite3.c:93473:16
- _ = _5_pSelect
- var _5_pEList *XExprList // sqlite3.c:93474:18
- _ = _5_pEList
- var _6_dest XSelectDest // sqlite3.c:93480:22
- _ = _6_dest
- var _6_i int32 // sqlite3.c:93481:15
- _ = _6_i
- var _8_p *XExpr // sqlite3.c:93498:18
- _ = _8_p
- var _9_affinity int8 // sqlite3.c:93512:14
- _ = _9_affinity
- var _9_i int32 // sqlite3.c:93513:13
- _ = _9_i
- var _9_pList *XExprList // sqlite3.c:93514:18
- _ = _9_pList
- var _9_pItem *TExprList_item // sqlite3.c:93515:30
- _ = _9_pItem
- var _9_r1 int32 // sqlite3.c:93516:13
- _ = _9_r1
- var _9_r2 int32 // sqlite3.c:93516:17
- _ = _9_r2
- var _9_r3 int32 // sqlite3.c:93516:21
- _ = _9_r3
- var _12_pE2 *XExpr // sqlite3.c:93532:16
- _ = _12_pE2
- var _12_iValToIns int32 // sqlite3.c:93533:15
- _ = _12_iValToIns
- var _19_pSel *XSelect // sqlite3.c:93587:14
- _ = _19_pSel
- var _19_dest XSelectDest // sqlite3.c:93588:18
- _ = _19_dest
- var _19_nReg int32 // sqlite3.c:93589:11
- _ = _19_nReg
+func _sqlite3CodeSubselect(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _rHasNullFlag int32, _isRowid int32) (r0 int32) {
+ var _jmpIfDynamic, _rReg, _4_addr, _4_nVal, _6_i, _9_i, _9_r1, _9_r2, _9_r3, _12_iValToIns, _19_nReg int32
+ var _9_affinity int8
+ var _2_zMsg *int8
+ var _v *TVdbe
+ var _5_pEList, _9_pList *XExprList
+ var _9_pItem *TExprList_item
+ var _5_pSelect, _19_pSel *XSelect
+ var _4_pLeft, _8_p, _12_pE2 *XExpr
+ var _4_pKeyInfo *XKeyInfo
+ var _6_dest, _19_dest XSelectDest
_jmpIfDynamic = i32(-1)
_rReg = i32(0)
_v = _sqlite3GetVdbe(tls, _pParse)
if func() int32 {
if _v == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _2
+ }() != 0 {
+ return i32(0)
}
- return i32(0)
-
-_2:
_sqlite3ExprCachePush(tls, _pParse)
- if ((_pExpr.X2) & uint32(i32(32))) != uint32(i32(0)) {
- goto _3
+ if ((_pExpr.X2) & uint32(i32(32))) == uint32(i32(0)) {
+ _jmpIfDynamic = _sqlite3VdbeAddOp0(tls, _v, i32(20))
}
-
- _jmpIfDynamic = _sqlite3VdbeAddOp0(tls, _v, i32(20))
-_3:
- if int32(_pParse.X54) != i32(2) {
- goto _4
+ if int32(_pParse.X54) == i32(2) {
+ _2_zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(44962), unsafe.Pointer(func() *int8 {
+ if _jmpIfDynamic >= i32(0) {
+ return str(0)
+ }
+ return str(44987)
+ }()), unsafe.Pointer(func() *int8 {
+ if int32(_pExpr.X0) == i32(74) {
+ return str(44999)
+ }
+ return str(45004)
+ }()), _pParse.X59)
+ _sqlite3VdbeAddOp4(tls, _v, i32(165), _pParse.X58, i32(0), i32(0), _2_zMsg, i32(-1))
}
-
- _2_zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(46200), unsafe.Pointer(func() *int8 {
- if _jmpIfDynamic >= i32(0) {
- return str(196)
- }
- return str(46228)
- }()), unsafe.Pointer(func() *int8 {
- if int32(_pExpr.X0) == i32(74) {
- return str(46240)
- }
- return str(46248)
- }()), _pParse.X59)
- _sqlite3VdbeAddOp4(tls, _v, i32(165), _pParse.X58, i32(0), i32(0), _2_zMsg, i32(-1))
-_4:
switch int32(_pExpr.X0) {
case i32(20):
goto _11
@@ -34696,7 +32052,7 @@ _10:
_4_nVal = _sqlite3ExprVectorSize(tls, _4_pLeft)
func() {
if _isRowid != 0 && _4_nVal != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46256)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45011)))
crt.X__builtin_abort(tls)
}
}()
@@ -34716,12 +32072,11 @@ _10:
if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
goto _21
}
-
- _5_pSelect = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _5_pSelect = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
_5_pEList = (*XExprList)(_5_pSelect.X0)
func() {
if _isRowid != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93476), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93476), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45031)))
crt.X__builtin_abort(tls)
}
}()
@@ -34730,48 +32085,43 @@ _10:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93479), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93479), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _26
}
-
_sqlite3SelectDestInit(tls, &_6_dest, i32(11), _pExpr.X8)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_dest)) + uintptr(4 /* X1 */))) = _exprINAffinity(tls, _pParse, _pExpr)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pSelect)) + uintptr(12 /* X4 */))) = i32(0)
- if _sqlite3Select(tls, _pParse, _5_pSelect, &_6_dest) == 0 {
- goto _27
+ if _sqlite3Select(tls, _pParse, _5_pSelect, &_6_dest) != 0 {
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_6_dest.X1))
+ _sqlite3KeyInfoUnref(tls, _4_pKeyInfo)
+ return i32(0)
}
-
- _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_6_dest.X1))
- _sqlite3KeyInfoUnref(tls, _4_pKeyInfo)
- return i32(0)
-
-_27:
_sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_6_dest.X1))
func() {
if _4_pKeyInfo == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93493), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46288)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93493), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45040)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _5_pEList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93494), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93494), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45052)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_5_pEList.X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45062)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3KeyInfoIsWriteable(tls, _4_pKeyInfo) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46328)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45078)))
crt.X__builtin_abort(tls)
}
}()
@@ -34780,90 +32130,65 @@ _36:
if _6_i >= _4_nVal {
goto _39
}
-
_8_p = _sqlite3VectorFieldSubexpr(tls, _4_pLeft, _6_i)
*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_6_i))) = _sqlite3BinaryCompareCollSeq(tls, _pParse, _8_p, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_6_i))).X0))
_6_i += 1
goto _36
-
_39:
_26:
goto _40
-
_21:
if func() int32 {
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93504), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93504), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _43
}
-
- _9_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _9_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
_9_affinity = _sqlite3ExprAffinity(tls, _4_pLeft)
- if _9_affinity != 0 {
- goto _44
+ if _9_affinity == 0 {
+ _9_affinity = int8(i32(65))
}
-
- _9_affinity = int8(i32(65))
-_44:
- if _4_pKeyInfo == nil {
- goto _45
+ if _4_pKeyInfo != nil {
+ func() {
+ if _sqlite3KeyInfoIsWriteable(tls, _4_pKeyInfo) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93523), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45078)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0)))) = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4))
}
-
- func() {
- if _sqlite3KeyInfoIsWriteable(tls, _4_pKeyInfo) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93523), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46328)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0)))) = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4))
-_45:
_9_r1 = _sqlite3GetTempReg(tls, _pParse)
_9_r2 = _sqlite3GetTempReg(tls, _pParse)
- if _isRowid == 0 {
- goto _48
+ if _isRowid != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _9_r2)
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _9_r2)
-_48:
*func() **TExprList_item { _9_i = _9_pList.X0; return &_9_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pList)) + uintptr(8 /* X2 */)))))
_49:
if _9_i <= i32(0) {
goto _52
}
-
_12_pE2 = (*XExpr)(_9_pItem.X0)
- if _jmpIfDynamic < i32(0) || _sqlite3ExprIsConstant(tls, _12_pE2) != 0 {
- goto _54
+ if (_jmpIfDynamic >= i32(0)) && (_sqlite3ExprIsConstant(tls, _12_pE2) == 0) {
+ _sqlite3VdbeChangeToNoop(tls, _v, _jmpIfDynamic)
+ _jmpIfDynamic = i32(-1)
}
-
- _sqlite3VdbeChangeToNoop(tls, _v, _jmpIfDynamic)
- _jmpIfDynamic = i32(-1)
-_54:
- if _isRowid == 0 || _sqlite3ExprIsInteger(tls, _12_pE2, &_12_iValToIns) == 0 {
- goto _56
+ if _isRowid != 0 && _sqlite3ExprIsInteger(tls, _12_pE2, &_12_iValToIns) != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(119), _pExpr.X8, _9_r2, _12_iValToIns)
+ goto _57
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(119), _pExpr.X8, _9_r2, _12_iValToIns)
- goto _57
-
-_56:
_9_r3 = _sqlite3ExprCodeTarget(tls, _pParse, _12_pE2, _9_r1)
- if _isRowid == 0 {
- goto _58
+ if _isRowid != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(17), _9_r3, _sqlite3VdbeCurrentAddr(tls, _v)+i32(2))
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), _pExpr.X8, _9_r2, _9_r3)
+ goto _59
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(17), _9_r3, _sqlite3VdbeCurrentAddr(tls, _v)+i32(2))
- _sqlite3VdbeAddOp3(tls, _v, i32(118), _pExpr.X8, _9_r2, _9_r3)
- goto _59
-
-_58:
_sqlite3VdbeAddOp4(tls, _v, i32(101), _9_r3, i32(1), _9_r2, &_9_affinity, i32(1))
_sqlite3ExprCacheAffinityChange(tls, _pParse, _9_r3, i32(1))
_sqlite3VdbeAddOp4Int(tls, _v, i32(128), _pExpr.X8, _9_r2, _9_r3, i32(1))
@@ -34871,36 +32196,31 @@ _59:
_57:
*(*uintptr)(unsafe.Pointer(func() **TExprList_item { _9_i -= 1; return &_9_pItem }())) += uintptr(20)
goto _49
-
_52:
_sqlite3ReleaseTempReg(tls, _pParse, _9_r1)
_sqlite3ReleaseTempReg(tls, _pParse, _9_r2)
_43:
_40:
- if _4_pKeyInfo == nil {
- goto _60
+ if _4_pKeyInfo != nil {
+ _sqlite3VdbeChangeP4(tls, _v, _4_addr, (*int8)((unsafe.Pointer)(_4_pKeyInfo)), i32(-5))
}
-
- _sqlite3VdbeChangeP4(tls, _v, _4_addr, (*int8)((unsafe.Pointer)(_4_pKeyInfo)), i32(-5))
-_60:
goto _61
-
_11:
_12:
_13:
func() {
if int32(_pExpr.X0) != i32(20) && int32(_pExpr.X0) != i32(119) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93593), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93593), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45114)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93594), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(46412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93594), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeSubselectØ00__func__Ø000))), unsafe.Pointer(str(45159)))
crt.X__builtin_abort(tls)
}
}()
- _19_pSel = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _19_pSel = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
_19_nReg = func() int32 {
if int32(_pExpr.X0) == i32(119) {
return ((*XExprList)(_19_pSel.X0).X0)
@@ -34913,21 +32233,17 @@ _13:
*p = (*p) + _19_nReg
sink1 = *p
}
- if int32(_pExpr.X0) != i32(119) {
- goto _69
+ if int32(_pExpr.X0) == i32(119) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_19_dest)) + uintptr(0 /* X0 */))) = uint8(i32(10))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_19_dest)) + uintptr(12 /* X3 */))) = _19_dest.X2
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_19_dest)) + uintptr(16 /* X4 */))) = _19_nReg
+ _sqlite3VdbeAddOp3(tls, _v, i32(59), i32(0), _19_dest.X2, ((_19_dest.X2)+_19_nReg)-i32(1))
+ _sqlite3VdbeComment(tls, _v, str(45196))
+ goto _70
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_19_dest)) + uintptr(0 /* X0 */))) = uint8(i32(10))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_19_dest)) + uintptr(12 /* X3 */))) = _19_dest.X2
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_19_dest)) + uintptr(16 /* X4 */))) = _19_nReg
- _sqlite3VdbeAddOp3(tls, _v, i32(59), i32(0), _19_dest.X2, ((_19_dest.X2)+_19_nReg)-i32(1))
- _sqlite3VdbeComment(tls, _v, str(46452))
- goto _70
-
-_69:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_19_dest)) + uintptr(0 /* X0 */))) = uint8(i32(3))
_sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _19_dest.X2)
- _sqlite3VdbeComment(tls, _v, str(46476))
+ _sqlite3VdbeComment(tls, _v, str(45217))
_70:
_sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)(_19_pSel.X15))
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pSel)) + uintptr(68 /* X15 */))))) = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(134), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3IntTokens))+8*uintptr(i32(1)))), i32(0))
@@ -34937,12 +32253,9 @@ _70:
*p = (*p) & uint32(i32(-1025))
sink5 = *p
}
- if _sqlite3Select(tls, _pParse, _19_pSel, &_19_dest) == 0 {
- goto _71
+ if _sqlite3Select(tls, _pParse, _19_pSel, &_19_dest) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_71:
_rReg = _19_dest.X2
{
p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
@@ -34950,41 +32263,39 @@ _71:
sink5 = *p
}
goto _61
-
_61:
- if _rHasNullFlag == 0 {
- goto _72
+ if _rHasNullFlag != 0 {
+ _sqlite3SetHasNullFlag(tls, _v, _pExpr.X8, _rHasNullFlag)
}
-
- _sqlite3SetHasNullFlag(tls, _v, _pExpr.X8, _rHasNullFlag)
-_72:
- if _jmpIfDynamic < i32(0) {
- goto _73
+ if _jmpIfDynamic >= i32(0) {
+ _sqlite3VdbeJumpHere(tls, _v, _jmpIfDynamic)
}
-
- _sqlite3VdbeJumpHere(tls, _v, _jmpIfDynamic)
-_73:
_sqlite3ExprCachePop(tls, _pParse)
return _rReg
+
+ _ = _6_dest
+ _ = _19_dest
+ panic(0)
}
-var _sqlite3CodeSubselectØ00__func__Ø000 [21]int8 // -
+var _sqlite3CodeSubselectØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3CodeSubselectØ00__func__Ø000[0], str(46496), 21)
+ crt.Xstrncpy(nil, &_sqlite3CodeSubselectØ00__func__Ø000[0], str(45236), 21)
}
-func _sqlite3ExprCachePush(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:94070:1
+// Remember the current column cache context. Any new entries added
+// added to the column cache after this call are removed when the
+// corresponding pop occurs.
+func _sqlite3ExprCachePush(tls *crt.TLS, _pParse *XParse) {
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(64 /* X23 */))) += 1
- if (((*Xsqlite3)(_pParse.X0).X6) & i32(4096)) == 0 {
- goto _0
+ if (((*Xsqlite3)(_pParse.X0).X6) & i32(4096)) != 0 {
+ crt.Xprintf(tls, str(45257), _pParse.X23)
}
-
- crt.Xprintf(tls, str(46520), _pParse.X23)
-_0:
}
-func _sqlite3SelectDestInit(tls *crt.TLS, _pDest *XSelectDest, _eDest int32, _iParm int32) { // sqlite3.c:116609:1
+// Initialize a SelectDest structure.
+func _sqlite3SelectDestInit(tls *crt.TLS, _pDest *XSelectDest, _eDest int32, _iParm int32) {
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(0 /* X0 */))) = uint8(_eDest)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(8 /* X2 */))) = _iParm
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(4 /* X1 */))) = nil
@@ -34992,32 +32303,29 @@ func _sqlite3SelectDestInit(tls *crt.TLS, _pDest *XSelectDest, _eDest int32, _iP
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(16 /* X4 */))) = i32(0)
}
-func _exprINAffinity(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 *int8) { // sqlite3.c:93312:1
- var _pLeft *XExpr // sqlite3.c:93313:8
- _ = _pLeft
- var _nVal int32 // sqlite3.c:93314:7
- _ = _nVal
- var _pSelect *XSelect // sqlite3.c:93315:10
- _ = _pSelect
- var _zRet *int8 // sqlite3.c:93316:8
- _ = _zRet
- var _1_i int32 // sqlite3.c:93321:9
- _ = _1_i
- var _2_pA *XExpr // sqlite3.c:93323:12
- _ = _2_pA
- var _2_a int8 // sqlite3.c:93324:12
- _ = _2_a
+// Argument pExpr is an (?, ?...) IN(...) expression. This
+// function allocates and returns a nul-terminated string containing
+// the affinities to be used for each column of the comparison.
+//
+// It is the responsibility of the caller to ensure that the returned
+// string is eventually freed using sqlite3DbFree().
+func _exprINAffinity(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 *int8) {
+ var _nVal, _1_i int32
+ var _2_a int8
+ var _zRet *int8
+ var _pSelect *XSelect
+ var _pLeft, _2_pA *XExpr
_pLeft = (*XExpr)(_pExpr.X4)
_nVal = _sqlite3ExprVectorSize(tls, _pLeft)
_pSelect = func() *XSelect {
if ((_pExpr.X2) & uint32(i32(2048))) != 0 {
- return (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ return (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
}
return nil
}()
func() {
if int32(_pExpr.X0) != i32(74) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93318), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprINAffinityØ00__func__Ø000))), unsafe.Pointer(str(46532)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93318), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprINAffinityØ00__func__Ø000))), unsafe.Pointer(str(45269)))
crt.X__builtin_abort(tls)
}
}()
@@ -35025,208 +32333,198 @@ func _exprINAffinity(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 *int8) {
if _zRet == nil {
goto _4
}
-
_1_i = i32(0)
_5:
if _1_i >= _nVal {
goto _8
}
-
_2_pA = _sqlite3VectorFieldSubexpr(tls, _pLeft, _1_i)
_2_a = _sqlite3ExprAffinity(tls, _2_pA)
- if _pSelect == nil {
- goto _9
+ if _pSelect != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRet)) + 1*uintptr(_1_i))) = _sqlite3CompareAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSelect.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))).X0), _2_a)
+ goto _10
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRet)) + 1*uintptr(_1_i))) = _sqlite3CompareAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSelect.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))).X0), _2_a)
- goto _10
-
-_9:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRet)) + 1*uintptr(_1_i))) = _2_a
_10:
_1_i += 1
goto _5
-
_8:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRet)) + 1*uintptr(_nVal))) = int8(i32(0))
_4:
return _zRet
}
-var _exprINAffinityØ00__func__Ø000 [15]int8 // -
+var _exprINAffinityØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_exprINAffinityØ00__func__Ø000[0], str(46552), 15)
+ crt.Xstrncpy(nil, &_exprINAffinityØ00__func__Ø000[0], str(45286), 15)
}
-func _sqlite3VectorFieldSubexpr(tls *crt.TLS, _pVector *XExpr, _i int32) (r0 *XExpr) { // sqlite3.c:91268:1
+// Return a pointer to a subexpression of pVector that is the i-th
+// column of the vector (numbered starting with 0). The caller must
+// ensure that i is within range.
+//
+// If pVector is really a scalar (and "scalar" here includes subqueries
+// that return a single column!) then return pVector unmodified.
+//
+// pVector retains ownership of the returned subexpression.
+//
+// If the vector is a (SELECT ...) then the expression returned is
+// just the expression for the i-th term of the result set, and may
+// not be ready for evaluation because the table cursor has not yet
+// been positioned.
+func _sqlite3VectorFieldSubexpr(tls *crt.TLS, _pVector *XExpr, _i int32) (r0 *XExpr) {
func() {
if _i >= _sqlite3ExprVectorSize(tls, _pVector) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91269), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VectorFieldSubexprØ00__func__Ø000))), unsafe.Pointer(str(46568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91269), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VectorFieldSubexprØ00__func__Ø000))), unsafe.Pointer(str(45301)))
crt.X__builtin_abort(tls)
}
}()
if _sqlite3ExprIsVector(tls, _pVector) == 0 {
goto _2
}
-
func() {
if int32(_pVector.X12) != i32(0) && int32(_pVector.X0) != i32(157) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91271), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VectorFieldSubexprØ00__func__Ø000))), unsafe.Pointer(str(46604)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91271), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VectorFieldSubexprØ00__func__Ø000))), unsafe.Pointer(str(45334)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pVector.X0) != i32(119) && int32(_pVector.X12) != i32(119) {
- goto _7
+ if (int32(_pVector.X0) == i32(119)) || (int32(_pVector.X12) == i32(119)) {
+ /* X6 */ /* X2 */
+ return (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20)))))).X0)+uintptr(8))))) + 20*uintptr(_i))).X0)
}
-
/* X6 */ /* X2 */
- return (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20)))))).X0)+uintptr(8))))) + 20*uintptr(_i))).X0)
-
-_7:
- /* X6 */ /* X2 */
- return (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20))))))+uintptr(8))))) + 20*uintptr(_i))).X0)
+ return (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20))))))+uintptr(8))))) + 20*uintptr(_i))).X0)
_2:
return _pVector
}
-var _sqlite3VectorFieldSubexprØ00__func__Ø000 [26]int8 // -
+var _sqlite3VectorFieldSubexprØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VectorFieldSubexprØ00__func__Ø000[0], str(46648), 26)
+ crt.Xstrncpy(nil, &_sqlite3VectorFieldSubexprØ00__func__Ø000[0], str(45378), 26)
}
-func _sqlite3ExprAffinity(tls *crt.TLS, _pExpr *XExpr) (r0 int8) { // sqlite3.c:90943:1
- var _op int32 // sqlite3.c:90944:7
- _ = _op
+// Return the 'affinity' of the expression pExpr if any.
+//
+// If pExpr is a column, a reference to a column via an 'AS' alias,
+// or a sub-select with a column as the return value, then the
+// affinity of that column is returned. Otherwise, 0x00 is returned,
+// indicating no affinity for the expression.
+//
+// i.e. the WHERE clause expressions in the following statements all
+// have an affinity:
+//
+// CREATE TABLE t1(a);
+// SELECT * FROM t1 WHERE a;
+// SELECT a AS b FROM t1 WHERE b;
+// SELECT * FROM t1 WHERE (select a from t1);
+func _sqlite3ExprAffinity(tls *crt.TLS, _pExpr *XExpr) (r0 int8) {
+ var _op int32
_pExpr = _sqlite3ExprSkipCollate(tls, _pExpr)
- if ((_pExpr.X2) & uint32(i32(512))) == 0 {
- goto _0
+ if ((_pExpr.X2) & uint32(i32(512))) != 0 {
+ return int8(i32(0))
}
- return int8(i32(0))
-
-_0:
_op = int32(_pExpr.X0)
- if _op != i32(119) {
- goto _1
+ if _op == i32(119) {
+ func() {
+ if ((_pExpr.X2) & uint32(i32(2048))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90949), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAffinityØ00__func__Ø000))), unsafe.Pointer(str(45404)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ /* X6 */ /* X2 */
+ return _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20)))))).X0)+uintptr(8)))))+20*uintptr(i32(0)))).X0))
}
-
- func() {
- if ((_pExpr.X2) & uint32(i32(2048))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90949), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAffinityØ00__func__Ø000))), unsafe.Pointer(str(46676)))
- crt.X__builtin_abort(tls)
- }
- }()
- /* X6 */ /* X2 */
- return _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20)))))).X0)+uintptr(8)))))+20*uintptr(i32(0)))).X0))
-
-_1:
- if _op != i32(157) {
- goto _4
+ if _op == i32(157) {
+ _op = int32(_pExpr.X12)
}
-
- _op = int32(_pExpr.X12)
-_4:
- if _op != i32(37) {
- goto _5
+ if _op == i32(37) {
+ func() {
+ if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90955), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAffinityØ00__func__Ø000))), unsafe.Pointer(str(42524)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ /* X3 */
+ return _sqlite3AffinityType(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8))))), nil)
}
-
- func() {
- if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90955), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAffinityØ00__func__Ø000))), unsafe.Pointer(str(43616)))
- crt.X__builtin_abort(tls)
- }
- }()
- /* X3 */
- return _sqlite3AffinityType(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8))))), nil)
-
-_5:
- if _op != i32(154) && _op != i32(152) || (*XTable)(_pExpr.X14) == nil {
- goto _10
+ if ((_op == i32(154)) || (_op == i32(152))) && ((*XTable)(_pExpr.X14) != nil) {
+ return _sqlite3TableColumnAffinity(tls, (*XTable)(_pExpr.X14), int32(_pExpr.X9))
}
- return _sqlite3TableColumnAffinity(tls, (*XTable)(_pExpr.X14), int32(_pExpr.X9))
-
-_10:
- if _op != i32(159) {
- goto _11
+ if _op == i32(159) {
+ func() {
+ if (((*XExpr)(_pExpr.X4).X2) & uint32(i32(2048))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90963), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAffinityØ00__func__Ø000))), unsafe.Pointer(str(45430)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ /* X6 */ /* X2 */
+ return _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(20)))))).X0)+uintptr(8)))))+20*uintptr(_pExpr.X9))).X0))
}
-
- func() {
- if (((*XExpr)(_pExpr.X4).X2) & uint32(i32(2048))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90963), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAffinityØ00__func__Ø000))), unsafe.Pointer(str(46704)))
- crt.X__builtin_abort(tls)
- }
- }()
- /* X6 */ /* X2 */
- return _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(20)))))).X0)+uintptr(8)))))+20*uintptr(_pExpr.X9))).X0))
-
-_11:
return _pExpr.X1
}
-func _sqlite3ExprSkipCollate(tls *crt.TLS, _pExpr *XExpr) (r0 *XExpr) { // sqlite3.c:91006:1
+// Skip over any TK_COLLATE operators and any unlikely()
+// or likelihood() function at the root of an expression.
+func _sqlite3ExprSkipCollate(tls *crt.TLS, _pExpr *XExpr) (r0 *XExpr) {
_0:
if _pExpr == nil || ((_pExpr.X2)&uint32(i32(4096))) == uint32(i32(0)) {
goto _1
}
-
- if ((_pExpr.X2) & uint32(i32(262144))) == uint32(i32(0)) {
- goto _3
+ if ((_pExpr.X2) & uint32(i32(262144))) != uint32(i32(0)) {
+ func() {
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91009), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(42778)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91010), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(45463)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pExpr.X0) != i32(151) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(45487)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
+ goto _10
}
-
- func() {
- if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91009), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(43888)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91010), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(46740)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pExpr.X0) != i32(151) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(46764)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
- goto _10
-
-_3:
func() {
if int32(_pExpr.X0) != i32(94) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91014), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(46788)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91014), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprSkipCollateØ00__func__Ø000))), unsafe.Pointer(str(45510)))
crt.X__builtin_abort(tls)
}
}()
_pExpr = (*XExpr)(_pExpr.X4)
_10:
goto _0
-
_1:
return _pExpr
}
-var _sqlite3ExprSkipCollateØ00__func__Ø000 [23]int8 // -
+var _sqlite3ExprSkipCollateØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprSkipCollateØ00__func__Ø000[0], str(46812), 23)
+ crt.Xstrncpy(nil, &_sqlite3ExprSkipCollateØ00__func__Ø000[0], str(45532), 23)
}
-var _sqlite3ExprAffinityØ00__func__Ø000 [20]int8 // -
+var _sqlite3ExprAffinityØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprAffinityØ00__func__Ø000[0], str(46836), 20)
+ crt.Xstrncpy(nil, &_sqlite3ExprAffinityØ00__func__Ø000[0], str(45555), 20)
}
-func _sqlite3TableColumnAffinity(tls *crt.TLS, _pTab *XTable, _iCol int32) (r0 int8) { // sqlite3.c:90922:1
+// Return the affinity character for a single column of a table.
+func _sqlite3TableColumnAffinity(tls *crt.TLS, _pTab *XTable, _iCol int32) (r0 int8) {
func() {
if _iCol >= int32(_pTab.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TableColumnAffinityØ00__func__Ø000))), unsafe.Pointer(str(46856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TableColumnAffinityØ00__func__Ø000))), unsafe.Pointer(str(45575)))
crt.X__builtin_abort(tls)
}
}()
@@ -35238,277 +32536,149 @@ func _sqlite3TableColumnAffinity(tls *crt.TLS, _pTab *XTable, _iCol int32) (r0 i
}())
}
-var _sqlite3TableColumnAffinityØ00__func__Ø000 [27]int8 // -
+var _sqlite3TableColumnAffinityØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3TableColumnAffinityØ00__func__Ø000[0], str(46872), 27)
+ crt.Xstrncpy(nil, &_sqlite3TableColumnAffinityØ00__func__Ø000[0], str(45591), 27)
}
-func _sqlite3CompareAffinity(tls *crt.TLS, _pExpr *XExpr, _aff2 int8) (r0 int8) { // sqlite3.c:91094:1
- var _aff1 int8 // sqlite3.c:91095:8
- _ = _aff1
+// pExpr is an operand of a comparison operator. aff2 is the
+// type affinity of the other operand. This routine returns the
+// type affinity that should be used for the comparison operator.
+func _sqlite3CompareAffinity(tls *crt.TLS, _pExpr *XExpr, _aff2 int8) (r0 int8) {
+ var _aff1 int8
_aff1 = _sqlite3ExprAffinity(tls, _pExpr)
if _aff1 == 0 || _aff2 == 0 {
goto _1
}
-
- if int32(_aff1) < i32(67) && int32(_aff2) < i32(67) {
- goto _3
+ if (int32(_aff1) >= i32(67)) || (int32(_aff2) >= i32(67)) {
+ return int8(i32(67))
}
- return int8(i32(67))
-
-_3:
return int8(i32(65))
_1:
- if _aff1 != 0 || _aff2 != 0 {
- goto _7
+ if (_aff1 == 0) && (_aff2 == 0) {
+ return int8(i32(65))
}
- return int8(i32(65))
-
-_7:
func() {
if int32(_aff1) != i32(0) && int32(_aff2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompareAffinityØ00__func__Ø000))), unsafe.Pointer(str(46900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompareAffinityØ00__func__Ø000))), unsafe.Pointer(str(45618)))
crt.X__builtin_abort(tls)
}
}()
return int8(int32(_aff1) + int32(_aff2))
}
-var _sqlite3CompareAffinityØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CompareAffinityØ00__func__Ø000[0], str(46920), 23)
-}
-
-func _sqlite3Select(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) { // sqlite3.c:121530:1
- var _i int32 // sqlite3.c:121535:7
- _ = _i
- var _j int32 // sqlite3.c:121535:10
- _ = _j
- var _pWInfo *XWhereInfo // sqlite3.c:121536:13
- _ = _pWInfo
- var _v *TVdbe // sqlite3.c:121537:8
- _ = _v
- var _isAgg int32 // sqlite3.c:121538:7
- _ = _isAgg
- var _pEList *XExprList // sqlite3.c:121539:12
- _ = _pEList
- var _pTabList *XSrcList // sqlite3.c:121540:11
- _ = _pTabList
- var _pWhere *XExpr // sqlite3.c:121541:8
- _ = _pWhere
- var _pGroupBy *XExprList // sqlite3.c:121542:12
- _ = _pGroupBy
- var _pHaving *XExpr // sqlite3.c:121543:8
- _ = _pHaving
- var _rc int32 // sqlite3.c:121544:7
- _ = _rc
- var _sDistinct XDistinctCtx // sqlite3.c:121545:15
- _ = _sDistinct
- var _sSort XSortCtx // sqlite3.c:121546:11
- _ = _sSort
- var _sAggInfo XAggInfo // sqlite3.c:121547:11
- _ = _sAggInfo
- var _iEnd int32 // sqlite3.c:121548:7
- _ = _iEnd
- var _db *Xsqlite3 // sqlite3.c:121549:11
- _ = _db
- var _iRestoreSelectId int32 // sqlite3.c:121552:7
- _ = _iRestoreSelectId
- var _6_pItem *TSrcList_item // sqlite3.c:121605:25
- _ = _6_pItem
- var _6_pSub *XSelect // sqlite3.c:121606:12
- _ = _6_pSub
- var _6_isAggSub int32 // sqlite3.c:121607:9
- _ = _6_isAggSub
- var _6_pTab *XTable // sqlite3.c:121608:11
- _ = _6_pTab
- var _12_pItem *TSrcList_item // sqlite3.c:121661:25
- _ = _12_pItem
- var _12_dest XSelectDest // sqlite3.c:121662:16
- _ = _12_dest
- var _12_pSub *XSelect // sqlite3.c:121663:12
- _ = _12_pSub
- var _18_addrTop int32 // sqlite3.c:121753:11
- _ = _18_addrTop
- var _19_topAddr int32 // sqlite3.c:121773:11
- _ = _19_topAddr
- var _19_onceAddr int32 // sqlite3.c:121774:11
- _ = _19_onceAddr
- var _19_retAddr int32 // sqlite3.c:121775:11
- _ = _19_retAddr
- var _19_pPrior *TSrcList_item // sqlite3.c:121776:27
- _ = _19_pPrior
- var _27_pKeyInfo *XKeyInfo // sqlite3.c:121868:13
- _ = _27_pKeyInfo
- var _34_wctrlFlags uint16 // sqlite3.c:121914:9
- _ = _34_wctrlFlags
- var _40_sNC XNameContext // sqlite3.c:121955:17
- _ = _40_sNC
- var _40_iAMem int32 // sqlite3.c:121956:9
- _ = _40_iAMem
- var _40_iBMem int32 // sqlite3.c:121957:9
- _ = _40_iBMem
- var _40_iUseFlag int32 // sqlite3.c:121958:9
- _ = _40_iUseFlag
- var _40_iAbortFlag int32 // sqlite3.c:121961:9
- _ = _40_iAbortFlag
- var _40_groupBySort int32 // sqlite3.c:121962:9
- _ = _40_groupBySort
- var _40_addrEnd int32 // sqlite3.c:121963:9
- _ = _40_addrEnd
- var _40_sortPTab int32 // sqlite3.c:121964:9
- _ = _40_sortPTab
- var _40_sortOut int32 // sqlite3.c:121965:9
- _ = _40_sortOut
- var _40_orderByGrp int32 // sqlite3.c:121966:9
- _ = _40_orderByGrp
- var _41_k int32 // sqlite3.c:121972:11
- _ = _41_k
- var _41_pItem *TExprList_item // sqlite3.c:121973:28
- _ = _41_pItem
- var _49_pKeyInfo *XKeyInfo // sqlite3.c:122038:15
- _ = _49_pKeyInfo
- var _49_addr1 int32 // sqlite3.c:122039:11
- _ = _49_addr1
- var _49_addrOutputRow int32 // sqlite3.c:122040:11
- _ = _49_addrOutputRow
- var _49_regOutputRow int32 // sqlite3.c:122041:11
- _ = _49_regOutputRow
- var _49_addrSetAbort int32 // sqlite3.c:122042:11
- _ = _49_addrSetAbort
- var _49_addrTopOfLoop int32 // sqlite3.c:122043:11
- _ = _49_addrTopOfLoop
- var _49_addrSortingIdx int32 // sqlite3.c:122044:11
- _ = _49_addrSortingIdx
- var _49_addrReset int32 // sqlite3.c:122045:11
- _ = _49_addrReset
- var _49_regReset int32 // sqlite3.c:122046:11
- _ = _49_regReset
- var _51_regBase int32 // sqlite3.c:122099:13
- _ = _51_regBase
- var _51_regRecord int32 // sqlite3.c:122100:13
- _ = _51_regRecord
- var _51_nCol int32 // sqlite3.c:122101:13
- _ = _51_nCol
- var _51_nGroupBy int32 // sqlite3.c:122102:13
- _ = _51_nGroupBy
- var _54_pCol *TAggInfo_col // sqlite3.c:122123:30
- _ = _54_pCol
- var _55_r1 int32 // sqlite3.c:122125:17
- _ = _55_r1
- var _63_pDel *XExprList // sqlite3.c:122262:16
- _ = _63_pDel
- var _63_pTab *XTable // sqlite3.c:122264:13
- _ = _63_pTab
- var _64_iDb int32 // sqlite3.c:122279:19
- _ = _64_iDb
- var _64_iCsr int32 // sqlite3.c:122280:19
- _ = _64_iCsr
- var _64_pIdx *XIndex // sqlite3.c:122281:15
- _ = _64_pIdx
- var _64_pKeyInfo *XKeyInfo // sqlite3.c:122282:17
- _ = _64_pKeyInfo
- var _64_pBest *XIndex // sqlite3.c:122283:15
- _ = _64_pBest
- var _64_iRoot int32 // sqlite3.c:122284:13
- _ = _64_iRoot
- var _69_pMinMax *XExprList // sqlite3.c:122349:18
- _ = _69_pMinMax
- var _69_flag uint8 // sqlite3.c:122350:12
- _ = _69_flag
+var _sqlite3CompareAffinityØ00__func__Ø000 [23]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3CompareAffinityØ00__func__Ø000[0], str(45637), 23)
+}
+
+// Generate code for the SELECT statement given in the p argument.
+//
+// The results are returned according to the SelectDest structure.
+// See comments in sqliteInt.h for further information.
+//
+// This routine returns the number of errors. If any errors are
+// encountered, then an appropriate error message is left in
+// pParse->zErrMsg.
+//
+// This routine does NOT free the Select structure passed in. The
+// calling function needs to do that.
+func _sqlite3Select(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) {
+ var _i, _j, _isAgg, _rc, _iEnd, _iRestoreSelectId, _6_isAggSub, _18_addrTop, _19_topAddr, _19_onceAddr, _19_retAddr, _40_iAMem, _40_iBMem, _40_iUseFlag, _40_iAbortFlag, _40_groupBySort, _40_addrEnd, _40_sortPTab, _40_sortOut, _40_orderByGrp, _41_k, _49_addr1, _49_addrOutputRow, _49_regOutputRow, _49_addrSetAbort, _49_addrTopOfLoop, _49_addrSortingIdx, _49_addrReset, _49_regReset, _51_regBase, _51_regRecord, _51_nCol, _51_nGroupBy, _55_r1, _64_iDb, _64_iCsr, _64_iRoot int32
+ var _34_wctrlFlags uint16
+ var _69_flag uint8
+ var _db *Xsqlite3
+ var _6_pTab, _63_pTab *XTable
+ var _v *TVdbe
+ var _pTabList *XSrcList
+ var _6_pItem, _12_pItem, _19_pPrior *TSrcList_item
+ var _pEList, _pGroupBy, _63_pDel, _69_pMinMax *XExprList
+ var _41_pItem *TExprList_item
+ var _6_pSub, _12_pSub *XSelect
+ var _pWhere, _pHaving *XExpr
+ var _64_pIdx, _64_pBest *XIndex
+ var _27_pKeyInfo, _49_pKeyInfo, _64_pKeyInfo *XKeyInfo
+ var _40_sNC XNameContext
+ var _12_dest XSelectDest
+ var _sAggInfo XAggInfo
+ var _54_pCol *TAggInfo_col
+ var _pWInfo *XWhereInfo
+ var _sSort XSortCtx
+ var _sDistinct XDistinctCtx
_pEList = nil
_rc = i32(1)
_iRestoreSelectId = _pParse.X58
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(424 /* X58 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(428 /* X59 */))), int32(1))
_db = (*Xsqlite3)(_pParse.X0)
- if _p != nil && (_db.X17) == 0 && (_pParse.X16) == 0 {
- goto _2
+ if ((_p == nil) || ((_db.X17) != 0)) || (_pParse.X16) != 0 {
+ return i32(1)
}
- return i32(1)
-
-_2:
- if _sqlite3AuthCheck(tls, _pParse, i32(21), nil, nil, nil) == 0 {
- goto _3
+ if _sqlite3AuthCheck(tls, _pParse, i32(21), nil, nil, nil) != 0 {
+ return i32(1)
}
- return i32(1)
-
-_3:
crt.Xmemset(tls, (unsafe.Pointer)(&_sAggInfo), i32(0), u32(48))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(116 /* X35 */))) += 1
- if (Xsqlite3SelectTrace & i32(1)) == 0 {
- goto _4
+ if (Xsqlite3SelectTrace & i32(1)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(45671)
+ }())
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(46956)
- }())
-_4:
- if (Xsqlite3SelectTrace & i32(256)) == 0 {
- goto _5
+ if (Xsqlite3SelectTrace & i32(256)) != 0 {
+ _sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
}
-
- _sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
-_5:
func() {
if (*XExprList)(_p.X12) != nil && int32(_pDest.X0) == i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121570), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121570), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(45690)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XExprList)(_p.X12) != nil && int32(_pDest.X0) == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(45735)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XExprList)(_p.X12) != nil && int32(_pDest.X0) == i32(8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47068)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(45776)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XExprList)(_p.X12) != nil && int32(_pDest.X0) == i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121573), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121573), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(45822)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pDest.X0) > i32(8) {
- goto _18
- }
-
- func() {
- if int32(_pDest.X0) != i32(3) && int32(_pDest.X0) != i32(1) && int32(_pDest.X0) != i32(2) && int32(_pDest.X0) != i32(4) && int32(_pDest.X0) != i32(7) && int32(_pDest.X0) != i32(6) && int32(_pDest.X0) != i32(8) && int32(_pDest.X0) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121575), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47160)))
- crt.X__builtin_abort(tls)
+ if int32(_pDest.X0) <= i32(8) {
+ func() {
+ if int32(_pDest.X0) != i32(3) && int32(_pDest.X0) != i32(1) && int32(_pDest.X0) != i32(2) && int32(_pDest.X0) != i32(4) && int32(_pDest.X0) != i32(7) && int32(_pDest.X0) != i32(6) && int32(_pDest.X0) != i32(8) && int32(_pDest.X0) != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121575), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(45864)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3ExprListDelete(tls, _db, (*XExprList)(_p.X12))
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
+ *p = (*p) & uint32(i32(-2))
+ sink5 = *p
}
- }()
- _sqlite3ExprListDelete(tls, _db, (*XExprList)(_p.X12))
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
- *p = (*p) & uint32(i32(-2))
- sink5 = *p
}
-_18:
_sqlite3SelectPrep(tls, _pParse, _p, nil)
crt.Xmemset(tls, (unsafe.Pointer)(&_sSort), i32(0), u32(32))
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(0 /* X0 */))))) = (*XExprList)(_p.X12)
_pTabList = (*XSrcList)(_p.X8)
- if (_pParse.X16) == 0 && (_db.X17) == 0 {
- goto _29
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ goto _select_end
}
-
- goto _select_end
-
-_29:
func() {
if (*XExprList)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121592), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121592), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46087)))
crt.X__builtin_abort(tls)
}
}()
@@ -35516,16 +32686,12 @@ _29:
if (Xsqlite3SelectTrace & i32(256)) == 0 {
goto _32
}
-
- if (Xsqlite3SelectTrace & i32(256)) == 0 {
- goto _33
+ if (Xsqlite3SelectTrace & i32(256)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(46100)
+ }())
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(47400)
- }())
-_33:
_sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
_32:
_i = i32(0)
@@ -35533,85 +32699,56 @@ _34:
if (*XSelect)(_p.X13) != nil || _i >= (_pTabList.X0) {
goto _38
}
-
_6_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
_6_pSub = (*XSelect)(_6_pItem.X5)
_6_pTab = (*XTable)(_6_pItem.X4)
- if _6_pSub != nil {
- goto _39
+ if _6_pSub == nil {
+ goto _35
}
-
- goto _35
-
-_39:
- if int32(_6_pTab.X11) == ((*XExprList)(_6_pSub.X0).X0) {
- goto _40
+ if int32(_6_pTab.X11) != ((*XExprList)(_6_pSub.X0).X0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(46124), int32(_6_pTab.X11), unsafe.Pointer(_6_pTab.X0), (*XExprList)(_6_pSub.X0).X0)
+ goto _select_end
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(47424), int32(_6_pTab.X11), unsafe.Pointer(_6_pTab.X0), (*XExprList)(_6_pSub.X0).X0)
- goto _select_end
-
-_40:
_6_isAggSub = bool2int(((_6_pSub.X3) & uint32(i32(8))) != uint32(i32(0)))
if _flattenSubquery(tls, _pParse, _p, _i, _isAgg, _6_isAggSub) == 0 {
goto _41
}
-
- if _6_isAggSub == 0 {
- goto _42
- }
-
- _isAgg = i32(1)
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(8))
- sink5 = *p
+ if _6_isAggSub != 0 {
+ _isAgg = i32(1)
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(8))
+ sink5 = *p
+ }
}
-_42:
_i = i32(-1)
_41:
_pTabList = (*XSrcList)(_p.X8)
- if (_db.X17) == 0 {
- goto _43
+ if (_db.X17) != 0 {
+ goto _select_end
}
-
- goto _select_end
-
-_43:
- if int32(_pDest.X0) <= i32(8) {
- goto _44
+ if int32(_pDest.X0) > i32(8) {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(0 /* X0 */))))) = (*XExprList)(_p.X12)
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(0 /* X0 */))))) = (*XExprList)(_p.X12)
-_44:
_35:
_i += 1
goto _34
-
_38:
_v = _sqlite3GetVdbe(tls, _pParse)
- if _v != nil {
- goto _45
+ if _v == nil {
+ goto _select_end
}
-
- goto _select_end
-
-_45:
if (*XSelect)(_p.X13) == nil {
goto _46
}
-
_rc = _multiSelect(tls, _pParse, _p, _pDest)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(424 /* X58 */))) = _iRestoreSelectId
- if (Xsqlite3SelectTrace & i32(1)) == 0 {
- goto _47
+ if (Xsqlite3SelectTrace & i32(1)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(46164)
+ }())
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(47464)
- }())
-_47:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(116 /* X35 */))) -= 1
return _rc
@@ -35621,134 +32758,97 @@ _48:
if _i >= (_pTabList.X0) {
goto _51
}
-
_12_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
- if (_12_pItem.X14) != uint64(i32(0)) {
- goto _52
+ if (_12_pItem.X14) == uint64(i32(0)) {
+ _sqlite3AuthCheck(tls, _pParse, i32(20), _12_pItem.X2, str(0), _12_pItem.X1)
}
-
- _sqlite3AuthCheck(tls, _pParse, i32(20), _12_pItem.X2, str(196), _12_pItem.X1)
-_52:
_12_pSub = (*XSelect)(_12_pItem.X5)
- if _12_pSub != nil {
- goto _53
+ if _12_pSub == nil {
+ goto _49
}
-
- goto _49
-
-_53:
if (_12_pItem.X6) == 0 {
goto _54
}
-
- if int32((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4)))<>uint(i32(31))) != i32(0) {
- goto _55
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4)))<>uint(i32(31))) == i32(0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(14), _12_pItem.X7, _12_pItem.X6)
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(14), _12_pItem.X7, _12_pItem.X6)
-_55:
goto _49
-
_54:
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(420 /* X57 */)))
*p = (*p) + _sqlite3SelectExprHeight(tls, _p)
sink1 = *p
}
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */))).X0)&i32(32)) != i32(0) || _pushDownWhereTerms(tls, _pParse, _12_pSub, (*XExpr)(_p.X9), _12_pItem.X11) == 0 {
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */))).X0)&i32(32)) != i32(0) || _pushDownWhereTerms(tls, _pParse, _12_pSub, (*XExpr)(_p.X9), _12_pItem.X11) == 0 {
goto _57
}
-
if (Xsqlite3SelectTrace & i32(256)) == 0 {
goto _58
}
-
- if (Xsqlite3SelectTrace & i32(256)) == 0 {
- goto _59
+ if (Xsqlite3SelectTrace & i32(256)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(46196)
+ }())
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(47496)
- }())
-_59:
_sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
_58:
_57:
- if _i != i32(0) || (_pTabList.X0) != i32(1) && (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(1))))))+uintptr(36 /* X9 */))).X0)&i32(10)) == i32(0) || ((_p.X3)&uint32(i32(2))) != uint32(i32(0)) || (int32(_db.X13)&i32(256)) != i32(0) {
- goto _64
+ if (((_i == i32(0)) && (((_pTabList.X0) == i32(1)) || ((int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(1))))))+uintptr(36 /* X9 */))).X0) & i32(10)) != i32(0)))) && (((_p.X3) & uint32(i32(2))) == uint32(i32(0)))) && ((int32(_db.X13) & i32(256)) == i32(0)) {
+ _18_addrTop = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(28 /* X7 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(15), _12_pItem.X7, i32(0), _18_addrTop)
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(24 /* X6 */))) = _18_addrTop
+ _sqlite3SelectDestInit(tls, &_12_dest, i32(13), _12_pItem.X7)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(38 /* X10 */))) = uint8(_pParse.X59)
+ _sqlite3Select(tls, _pParse, _12_pSub, &_12_dest)
+ *(*int16)(unsafe.Pointer(uintptr(_12_pItem.X4) + uintptr(44 /* X12 */))) = _12_pSub.X2
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(1)), 16, 4)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(32 /* X8 */))) = _12_dest.X3
+ _sqlite3VdbeEndCoroutine(tls, _v, _12_pItem.X7)
+ _sqlite3VdbeJumpHere(tls, _v, _18_addrTop-i32(1))
+ _sqlite3ClearTempRegCache(tls, _pParse)
+ goto _65
}
-
- _18_addrTop = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(28 /* X7 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp3(tls, _v, i32(15), _12_pItem.X7, i32(0), _18_addrTop)
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(24 /* X6 */))) = _18_addrTop
- _sqlite3SelectDestInit(tls, &_12_dest, i32(13), _12_pItem.X7)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(38 /* X10 */))) = uint8(_pParse.X59)
- _sqlite3Select(tls, _pParse, _12_pSub, &_12_dest)
- *(*int16)(unsafe.Pointer(uintptr(_12_pItem.X4) + uintptr(44 /* X12 */))) = _12_pSub.X2
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(1)), 16, 4)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(32 /* X8 */))) = _12_dest.X3
- _sqlite3VdbeEndCoroutine(tls, _v, _12_pItem.X7)
- _sqlite3VdbeJumpHere(tls, _v, _18_addrTop-i32(1))
- _sqlite3ClearTempRegCache(tls, _pParse)
- goto _65
-
-_64:
_19_onceAddr = i32(0)
func() {
if (_12_pItem.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121778), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47528)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121778), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46227)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(28 /* X7 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
_19_topAddr = _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _12_pItem.X7)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(24 /* X6 */))) = _19_topAddr + i32(1)
- if int32((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(3)))<>uint(i32(31))) != i32(0) {
- goto _68
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(3)))<>uint(i32(31))) == i32(0) {
+ _19_onceAddr = _sqlite3VdbeAddOp0(tls, _v, i32(20))
+ _sqlite3VdbeComment(tls, _v, str(46249), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
+ goto _69
}
-
- _19_onceAddr = _sqlite3VdbeAddOp0(tls, _v, i32(20))
- _sqlite3VdbeComment(tls, _v, str(47552), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
- goto _69
-
-_68:
- _sqlite3VdbeNoopComment(tls, _v, str(47552), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
+ _sqlite3VdbeNoopComment(tls, _v, str(46249), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
_69:
_19_pPrior = _isSelfJoinView(tls, _pTabList, _12_pItem)
- if _19_pPrior == nil {
- goto _70
+ if _19_pPrior != nil {
+ _sqlite3VdbeAddOp2(tls, _v, i32(108), _12_pItem.X11, _19_pPrior.X11)
+ goto _71
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(108), _12_pItem.X11, _19_pPrior.X11)
- goto _71
-
-_70:
_sqlite3SelectDestInit(tls, &_12_dest, i32(12), _12_pItem.X11)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pItem)) + uintptr(38 /* X10 */))) = uint8(_pParse.X59)
_sqlite3Select(tls, _pParse, _12_pSub, &_12_dest)
_71:
*(*int16)(unsafe.Pointer(uintptr(_12_pItem.X4) + uintptr(44 /* X12 */))) = _12_pSub.X2
- if _19_onceAddr == 0 {
- goto _72
+ if _19_onceAddr != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _19_onceAddr)
}
-
- _sqlite3VdbeJumpHere(tls, _v, _19_onceAddr)
-_72:
_19_retAddr = _sqlite3VdbeAddOp1(tls, _v, i32(52), _12_pItem.X7)
- _sqlite3VdbeComment(tls, _v, str(47572), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
+ _sqlite3VdbeComment(tls, _v, str(46266), unsafe.Pointer((*XTable)(_12_pItem.X4).X0))
_sqlite3VdbeChangeP1(tls, _v, uint32(_19_topAddr), _19_retAddr)
_sqlite3ClearTempRegCache(tls, _pParse)
_65:
- if (_db.X17) == 0 {
- goto _73
+ if (_db.X17) != 0 {
+ goto _select_end
}
-
- goto _select_end
-
-_73:
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(420 /* X57 */)))
*p = (*p) - _sqlite3SelectExprHeight(tls, _p)
@@ -35757,7 +32857,6 @@ _73:
_49:
_i += 1
goto _48
-
_51:
_pEList = (*XExprList)(_p.X0)
_pWhere = (*XExpr)(_p.X9)
@@ -35767,104 +32866,77 @@ _51:
if (Xsqlite3SelectTrace & i32(1024)) == 0 {
goto _74
}
-
- if (Xsqlite3SelectTrace & i32(1024)) == 0 {
- goto _75
+ if (Xsqlite3SelectTrace & i32(1024)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(46273)
+ }())
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(47580)
- }())
-_75:
_sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
_74:
if ((_p.X3)&uint32(i32(9))) != uint32(i32(1)) || _sqlite3ExprListCompare(tls, (*XExprList)(_sSort.X0), _pEList, i32(-1)) != i32(0) {
goto _77
}
-
{
p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
*p = (*p) & uint32(i32(-2))
sink5 = *p
}
- _pGroupBy = store40((**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(48 /* X10 */))))), _sqlite3ExprListDup(tls, _db, _pEList, i32(0)))
+ _pGroupBy = store42((**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(48 /* X10 */))))), _sqlite3ExprListDup(tls, _db, _pEList, i32(0)))
func() {
if (_sDistinct.X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121849), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121849), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46306)))
crt.X__builtin_abort(tls)
}
}()
if (Xsqlite3SelectTrace & i32(1024)) == 0 {
goto _80
}
-
- if (Xsqlite3SelectTrace & i32(1024)) == 0 {
- goto _81
+ if (Xsqlite3SelectTrace & i32(1024)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(46323)
+ }())
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(47636)
- }())
-_81:
_sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
_80:
_77:
- if (*XExprList)(_sSort.X0) == nil {
- goto _82
+ if (*XExprList)(_sSort.X0) != nil {
+ _27_pKeyInfo = _keyInfoFromExprList(tls, _pParse, (*XExprList)(_sSort.X0), i32(0), _pEList.X0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(8 /* X2 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(20 /* X5 */))) = _sqlite3VdbeAddOp4(tls, _v, i32(110), _sSort.X2, (((*XExprList)(_sSort.X0).X0)+i32(1))+(_pEList.X0), i32(0), (*int8)(unsafe.Pointer(_27_pKeyInfo)), i32(-5))
+ goto _83
}
-
- _27_pKeyInfo = _keyInfoFromExprList(tls, _pParse, (*XExprList)(_sSort.X0), i32(0), _pEList.X0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(8 /* X2 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(20 /* X5 */))) = _sqlite3VdbeAddOp4(tls, _v, i32(110), _sSort.X2, (((*XExprList)(_sSort.X0).X0)+i32(1))+(_pEList.X0), i32(0), (*int8)(unsafe.Pointer(_27_pKeyInfo)), i32(-5))
- goto _83
-
-_82:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(20 /* X5 */))) = i32(-1)
_83:
- if int32(_pDest.X0) != i32(12) {
- goto _84
+ if int32(_pDest.X0) == i32(12) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(110), _pDest.X2, _pEList.X0)
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(110), _pDest.X2, _pEList.X0)
-_84:
_iEnd = _sqlite3VdbeMakeLabel(tls, _v)
- if ((_p.X3) & uint32(i32(16384))) != uint32(i32(0)) {
- goto _85
+ if ((_p.X3) & uint32(i32(16384))) == uint32(i32(0)) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(i32(320))
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(i32(320))
-_85:
_computeLimitRegisters(tls, _pParse, _p, _iEnd)
- if (_p.X4) != i32(0) || (_sSort.X5) < i32(0) {
- goto _87
+ if ((_p.X4) == i32(0)) && ((_sSort.X5) >= i32(0)) {
+ _sqlite3VdbeChangeOpcode(tls, _v, uint32(_sSort.X5), uint8(i32(111)))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(28 /* X7 */)))
+ *p = uint8(int32(*p) | i32(1))
+ sink2 = *p
+ }
}
-
- _sqlite3VdbeChangeOpcode(tls, _v, uint32(_sSort.X5), uint8(i32(111)))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(28 /* X7 */)))
- *p = uint8(int32(*p) | i32(1))
- sink2 = *p
+ if ((_p.X3) & uint32(i32(1))) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(4 /* X2 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(8 /* X3 */))) = _sqlite3VdbeAddOp4(tls, _v, i32(110), _sDistinct.X2, i32(0), i32(0), (*int8)(unsafe.Pointer(_keyInfoFromExprList(tls, _pParse, (*XExprList)(_p.X0), i32(0), i32(0)))), i32(-5))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(1 /* X1 */))) = uint8(i32(3))
+ goto _89
}
-_87:
- if ((_p.X3) & uint32(i32(1))) == 0 {
- goto _88
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(1 /* X1 */))) = uint8(i32(0))
+_89:
+ if _isAgg != 0 || _pGroupBy != nil {
+ goto _91
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(4 /* X2 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(8 /* X3 */))) = _sqlite3VdbeAddOp4(tls, _v, i32(110), _sDistinct.X2, i32(0), i32(0), (*int8)(unsafe.Pointer(_keyInfoFromExprList(tls, _pParse, (*XExprList)(_p.X0), i32(0), i32(0)))), i32(-5))
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(1 /* X1 */))) = uint8(i32(3))
- goto _89
-
-_88:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(1 /* X1 */))) = uint8(i32(0))
-_89:
- if _isAgg != 0 || _pGroupBy != nil {
- goto _91
- }
-
_34_wctrlFlags = uint16(func() int32 {
if (_sDistinct.X0) != 0 {
return i32(256)
@@ -35875,51 +32947,33 @@ _89:
{
p := &_34_wctrlFlags
*p = uint16(uint32(*p) | ((_p.X3) & uint32(i32(16384))))
- sink12 = *p
+ sink14 = *p
}
_pWInfo = _sqlite3WhereBegin(tls, _pParse, _pTabList, _pWhere, (*XExprList)(_sSort.X0), (*XExprList)(_p.X0), _34_wctrlFlags, int32(_p.X2))
- if _pWInfo != nil {
- goto _94
+ if _pWInfo == nil {
+ goto _select_end
}
-
- goto _select_end
-
-_94:
- if int32(_sqlite3WhereOutputRowCount(tls, _pWInfo)) >= int32(_p.X2) {
- goto _95
+ if int32(_sqlite3WhereOutputRowCount(tls, _pWInfo)) < int32(_p.X2) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3WhereOutputRowCount(tls, _pWInfo)
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3WhereOutputRowCount(tls, _pWInfo)
-_95:
- if (_sDistinct.X0) == 0 || _sqlite3WhereIsDistinct(tls, _pWInfo) == 0 {
- goto _97
+ if ((_sDistinct.X0) != 0) && _sqlite3WhereIsDistinct(tls, _pWInfo) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(1 /* X1 */))) = uint8(_sqlite3WhereIsDistinct(tls, _pWInfo))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sDistinct)) + uintptr(1 /* X1 */))) = uint8(_sqlite3WhereIsDistinct(tls, _pWInfo))
-_97:
if (*XExprList)(_sSort.X0) == nil {
goto _98
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(4 /* X1 */))) = _sqlite3WhereIsOrdered(tls, _pWInfo)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(29 /* X8 */))) = uint8(_sqlite3WhereOrderedInnerLoop(tls, _pWInfo))
- if (_sSort.X1) != ((*XExprList)(_sSort.X0).X0) {
- goto _99
+ if (_sSort.X1) == ((*XExprList)(_sSort.X0).X0) {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(0 /* X0 */))))) = nil
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(0 /* X0 */))))) = nil
-_99:
_98:
- if (_sSort.X5) < i32(0) || (*XExprList)(_sSort.X0) != nil {
- goto _101
+ if ((_sSort.X5) >= i32(0)) && ((*XExprList)(_sSort.X0) == nil) {
+ _sqlite3VdbeChangeToNoop(tls, _v, _sSort.X5)
}
-
- _sqlite3VdbeChangeToNoop(tls, _v, _sSort.X5)
-_101:
_selectInnerLoop(tls, _pParse, _p, _pEList, i32(-1), &_sSort, &_sDistinct, _pDest, _sqlite3WhereContinueLabel(tls, _pWInfo), _sqlite3WhereBreakLabel(tls, _pWInfo))
_sqlite3WhereEnd(tls, _pWInfo)
goto _102
-
_91:
_40_sortPTab = i32(0)
_40_sortOut = i32(0)
@@ -35927,58 +32981,46 @@ _91:
if _pGroupBy == nil {
goto _103
}
-
*func() **TExprList_item { _41_k = (*XExprList)(_p.X0).X0; return &_41_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0) + uintptr(8 /* X2 */)))))
_104:
if _41_k <= i32(0) {
goto _107
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_41_pItem))+uintptr(16 /* X5 */))))))) + uintptr(2 /* X1 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_41_pItem))+uintptr(16 /* X5 */))))))) + uintptr(2 /* X1 */))) = uint16(i32(0))
*(*uintptr)(unsafe.Pointer(func() **TExprList_item { _41_k -= 1; return &_41_pItem }())) += uintptr(20)
goto _104
-
_107:
*func() **TExprList_item { _41_k = _pGroupBy.X0; return &_41_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroupBy)) + uintptr(8 /* X2 */)))))
_108:
if _41_k <= i32(0) {
goto _111
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_41_pItem))+uintptr(16 /* X5 */))))))) + uintptr(2 /* X1 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_41_pItem))+uintptr(16 /* X5 */))))))) + uintptr(2 /* X1 */))) = uint16(i32(0))
*(*uintptr)(unsafe.Pointer(func() **TExprList_item { _41_k -= 1; return &_41_pItem }())) += uintptr(20)
goto _108
-
_111:
func() {
if i32(66) != int32(_sqlite3LogEst(tls, uint64(i32(100)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47672)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46358)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_p.X2) <= i32(66) {
- goto _114
+ if int32(_p.X2) > i32(66) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(i32(66))
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(i32(66))
-_114:
goto _115
-
_103:
func() {
if i32(0) != int32(_sqlite3LogEst(tls, uint64(i32(1)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121984), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121984), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46381)))
crt.X__builtin_abort(tls)
}
}()
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(i32(0))
_115:
- if _sqlite3ExprListCompare(tls, _pGroupBy, (*XExprList)(_sSort.X0), i32(-1)) != i32(0) {
- goto _118
+ if _sqlite3ExprListCompare(tls, _pGroupBy, (*XExprList)(_sSort.X0), i32(-1)) == i32(0) {
+ _40_orderByGrp = i32(1)
}
-
- _40_orderByGrp = i32(1)
-_118:
_40_addrEnd = _sqlite3VdbeMakeLabel(tls, _v)
crt.Xmemset(tls, (unsafe.Pointer)(&_40_sNC), i32(0), u32(32))
*(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_40_sNC)) + uintptr(0 /* X0 */))))) = _pParse
@@ -35997,20 +33039,16 @@ _118:
if _pHaving == nil {
goto _121
}
-
- if _pGroupBy == nil {
- goto _122
+ if _pGroupBy != nil {
+ func() {
+ if _pWhere != (*XExpr)(_p.X9) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122018), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46401)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _havingToWhere(tls, _pParse, _pGroupBy, _pHaving, (**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(44 /* X9 */))))))
+ _pWhere = (*XExpr)(_p.X9)
}
-
- func() {
- if _pWhere != (*XExpr)(_p.X9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122018), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47716)))
- crt.X__builtin_abort(tls)
- }
- }()
- _havingToWhere(tls, _pParse, _pGroupBy, _pHaving, (**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(44 /* X9 */))))))
- _pWhere = (*XExpr)(_p.X9)
-_122:
_sqlite3ExprAnalyzeAggregates(tls, &_40_sNC, _pHaving)
_121:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sAggInfo)) + uintptr(36 /* X10 */))) = _sAggInfo.X9
@@ -36019,40 +33057,33 @@ _125:
if _i >= (_sAggInfo.X12) {
goto _128
}
-
func() {
if (((*XExpr)((*TAggInfo_func)(unsafe.Pointer(uintptr(_sAggInfo.X11) + 16*uintptr(_i))).X0).X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122026), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(47736)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122026), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46419)))
crt.X__builtin_abort(tls)
}
}()
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_40_sNC)) + uintptr(28 /* X7 */)))
*p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ sink14 = *p
}
- _sqlite3ExprAnalyzeAggList(tls, &_40_sNC, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((*TAggInfo_func)(unsafe.Pointer(uintptr(_sAggInfo.X11)+16*uintptr(_i))).X0) + uintptr(20 /* X6 */)))))))
+ _sqlite3ExprAnalyzeAggList(tls, &_40_sNC, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((*TAggInfo_func)(unsafe.Pointer(uintptr(_sAggInfo.X11)+16*uintptr(_i))).X0) + uintptr(20 /* X6 */)))))))
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_40_sNC)) + uintptr(28 /* X7 */)))
*p = uint16(int32(*p) & i32(-9))
- sink12 = *p
+ sink14 = *p
}
_i += 1
goto _125
-
_128:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sAggInfo)) + uintptr(20 /* X6 */))) = _pParse.X18
- if (_db.X17) == 0 {
- goto _131
+ if (_db.X17) != 0 {
+ goto _select_end
}
-
- goto _select_end
-
-_131:
if _pGroupBy == nil {
goto _132
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sAggInfo)) + uintptr(4 /* X2 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
_49_pKeyInfo = _keyInfoFromExprList(tls, _pParse, _pGroupBy, i32(0), _sAggInfo.X9)
_49_addrSortingIdx = _sqlite3VdbeAddOp4(tls, _v, i32(111), _sAggInfo.X2, _sAggInfo.X4, i32(0), (*int8)(unsafe.Pointer(_49_pKeyInfo)), i32(-5))
@@ -36075,9 +33106,9 @@ _131:
sink1 = *p
}
_sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _40_iAbortFlag)
- _sqlite3VdbeComment(tls, _v, str(47792))
+ _sqlite3VdbeComment(tls, _v, str(46475))
_sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _40_iUseFlag)
- _sqlite3VdbeComment(tls, _v, str(47812))
+ _sqlite3VdbeComment(tls, _v, str(46492))
_sqlite3VdbeAddOp3(tls, _v, i32(59), i32(0), _40_iAMem, (_40_iAMem+(_pGroupBy.X0))-i32(1))
_sqlite3VdbeAddOp2(tls, _v, i32(14), _49_regReset, _49_addrReset)
_pWInfo = _sqlite3WhereBegin(tls, _pParse, _pTabList, _pWhere, _pGroupBy, nil, uint16(i32(64)|func() int32 {
@@ -36086,26 +33117,18 @@ _131:
}
return i32(0)
}()), i32(0))
- if _pWInfo != nil {
- goto _135
+ if _pWInfo == nil {
+ goto _select_end
}
-
- goto _select_end
-
-_135:
- if _sqlite3WhereIsOrdered(tls, _pWInfo) != (_pGroupBy.X0) {
- goto _136
+ if _sqlite3WhereIsOrdered(tls, _pWInfo) == (_pGroupBy.X0) {
+ _40_groupBySort = i32(0)
+ goto _137
}
-
- _40_groupBySort = i32(0)
- goto _137
-
-_136:
_explainTempTable(tls, _pParse, func() *int8 {
if ((_sDistinct.X0) != 0) && (((_p.X3) & uint32(i32(1))) == uint32(i32(0))) {
- return str(25644)
+ return str(25716)
}
- return str(47840)
+ return str(46519)
}())
_40_groupBySort = i32(1)
_51_nGroupBy = _pGroupBy.X0
@@ -36116,17 +33139,12 @@ _141:
if _i >= (_sAggInfo.X9) {
goto _144
}
-
- if ((*TAggInfo_col)(unsafe.Pointer(uintptr(_sAggInfo.X8) + 24*uintptr(_i))).X3) < _j {
- goto _145
+ if ((*TAggInfo_col)(unsafe.Pointer(uintptr(_sAggInfo.X8) + 24*uintptr(_i))).X3) >= _j {
+ _51_nCol += 1
+ _j += 1
}
-
- _51_nCol += 1
- _j += 1
-_145:
_i += 1
goto _141
-
_144:
_51_regBase = _sqlite3GetTempRange(tls, _pParse, _51_nCol)
_sqlite3ExprCacheClear(tls, _pParse)
@@ -36137,19 +33155,14 @@ _146:
if _i >= (_sAggInfo.X9) {
goto _149
}
-
_54_pCol = (*TAggInfo_col)(unsafe.Pointer(uintptr(_sAggInfo.X8) + 24*uintptr(_i)))
- if (_54_pCol.X3) < _j {
- goto _150
+ if (_54_pCol.X3) >= _j {
+ _55_r1 = _j + _51_regBase
+ _sqlite3ExprCodeGetColumnToReg(tls, _pParse, (*XTable)(_54_pCol.X0), _54_pCol.X2, _54_pCol.X1, _55_r1)
+ _j += 1
}
-
- _55_r1 = _j + _51_regBase
- _sqlite3ExprCodeGetColumnToReg(tls, _pParse, (*XTable)(_54_pCol.X0), _54_pCol.X2, _54_pCol.X1, _55_r1)
- _j += 1
-_150:
_i += 1
goto _146
-
_149:
_51_regRecord = _sqlite3GetTempReg(tls, _pParse)
_sqlite3VdbeAddOp3(tls, _v, i32(101), _51_regBase, _51_nCol, _51_regRecord)
@@ -36161,99 +33174,81 @@ _149:
_40_sortOut = _sqlite3GetTempReg(tls, _pParse)
_sqlite3VdbeAddOp3(tls, _v, i32(113), _40_sortPTab, _40_sortOut, _51_nCol)
_sqlite3VdbeAddOp2(tls, _v, i32(35), _sAggInfo.X2, _40_addrEnd)
- _sqlite3VdbeComment(tls, _v, str(47852))
+ _sqlite3VdbeComment(tls, _v, str(46528))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sAggInfo)) + uintptr(1 /* X1 */))) = uint8(i32(1))
_sqlite3ExprCacheClear(tls, _pParse)
_137:
- if _40_orderByGrp == 0 || (int32(_db.X13)&i32(4)) != i32(0) || _40_groupBySort == 0 && _sqlite3WhereIsSorted(tls, _pWInfo) == 0 {
- goto _154
+ if (_40_orderByGrp != 0 && ((int32(_db.X13) & i32(4)) == i32(0))) && (_40_groupBySort != 0 || _sqlite3WhereIsSorted(tls, _pWInfo) != 0) {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(0 /* X0 */))))) = nil
+ _sqlite3VdbeChangeToNoop(tls, _v, _sSort.X5)
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSort)) + uintptr(0 /* X0 */))))) = nil
- _sqlite3VdbeChangeToNoop(tls, _v, _sSort.X5)
-_154:
_49_addrTopOfLoop = _sqlite3VdbeCurrentAddr(tls, _v)
_sqlite3ExprCacheClear(tls, _pParse)
- if _40_groupBySort == 0 {
- goto _155
+ if _40_groupBySort != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(123), _sAggInfo.X2, _40_sortOut, _40_sortPTab)
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(123), _sAggInfo.X2, _40_sortOut, _40_sortPTab)
-_155:
_j = i32(0)
_156:
if _j >= (_pGroupBy.X0) {
goto _159
}
-
- if _40_groupBySort == 0 {
- goto _160
+ if _40_groupBySort != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _40_sortPTab, _j, _40_iBMem+_j)
+ goto _161
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _40_sortPTab, _j, _40_iBMem+_j)
- goto _161
-
-_160:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sAggInfo)) + uintptr(0 /* X0 */))) = uint8(i32(1))
_sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroupBy))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), _40_iBMem+_j)
_161:
_j += 1
goto _156
-
_159:
_sqlite3VdbeAddOp4(tls, _v, i32(98), _40_iAMem, _40_iBMem, _pGroupBy.X0, (*int8)(unsafe.Pointer(_sqlite3KeyInfoRef(tls, _49_pKeyInfo))), i32(-5))
_49_addr1 = _sqlite3VdbeCurrentAddr(tls, _v)
_sqlite3VdbeAddOp3(tls, _v, i32(18), _49_addr1+i32(1), i32(0), _49_addr1+i32(1))
_sqlite3ExprCodeMove(tls, _pParse, _40_iBMem, _40_iAMem, _pGroupBy.X0)
_sqlite3VdbeAddOp2(tls, _v, i32(14), _49_regOutputRow, _49_addrOutputRow)
- _sqlite3VdbeComment(tls, _v, str(47868))
+ _sqlite3VdbeComment(tls, _v, str(46542))
_sqlite3VdbeAddOp2(tls, _v, i32(46), _40_iAbortFlag, _40_addrEnd)
- _sqlite3VdbeComment(tls, _v, str(47884))
+ _sqlite3VdbeComment(tls, _v, str(46557))
_sqlite3VdbeAddOp2(tls, _v, i32(14), _49_regReset, _49_addrReset)
- _sqlite3VdbeComment(tls, _v, str(47904))
+ _sqlite3VdbeComment(tls, _v, str(46574))
_sqlite3VdbeJumpHere(tls, _v, _49_addr1)
_updateAccumulator(tls, _pParse, &_sAggInfo)
_sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _40_iUseFlag)
- _sqlite3VdbeComment(tls, _v, str(47924))
- if _40_groupBySort == 0 {
- goto _162
+ _sqlite3VdbeComment(tls, _v, str(46592))
+ if _40_groupBySort != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(3), _sAggInfo.X2, _49_addrTopOfLoop)
+ goto _163
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(3), _sAggInfo.X2, _49_addrTopOfLoop)
- goto _163
-
-_162:
_sqlite3WhereEnd(tls, _pWInfo)
_sqlite3VdbeChangeToNoop(tls, _v, _49_addrSortingIdx)
_163:
_sqlite3VdbeAddOp2(tls, _v, i32(14), _49_regOutputRow, _49_addrOutputRow)
- _sqlite3VdbeComment(tls, _v, str(47956))
+ _sqlite3VdbeComment(tls, _v, str(46621))
_sqlite3VdbeGoto(tls, _v, _40_addrEnd)
_49_addrSetAbort = _sqlite3VdbeCurrentAddr(tls, _v)
_sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _40_iAbortFlag)
- _sqlite3VdbeComment(tls, _v, str(47976))
+ _sqlite3VdbeComment(tls, _v, str(46638))
_sqlite3VdbeAddOp1(tls, _v, i32(52), _49_regOutputRow)
_sqlite3VdbeResolveLabel(tls, _v, _49_addrOutputRow)
_49_addrOutputRow = _sqlite3VdbeCurrentAddr(tls, _v)
_sqlite3VdbeAddOp2(tls, _v, i32(46), _40_iUseFlag, _49_addrOutputRow+i32(2))
- _sqlite3VdbeComment(tls, _v, str(47992))
+ _sqlite3VdbeComment(tls, _v, str(46653))
_sqlite3VdbeAddOp1(tls, _v, i32(52), _49_regOutputRow)
_finalizeAggFunctions(tls, _pParse, &_sAggInfo)
_sqlite3ExprIfFalse(tls, _pParse, _pHaving, _49_addrOutputRow+i32(1), i32(16))
_selectInnerLoop(tls, _pParse, _p, (*XExprList)(_p.X0), i32(-1), &_sSort, &_sDistinct, _pDest, _49_addrOutputRow+i32(1), _49_addrSetAbort)
_sqlite3VdbeAddOp1(tls, _v, i32(52), _49_regOutputRow)
- _sqlite3VdbeComment(tls, _v, str(48032))
+ _sqlite3VdbeComment(tls, _v, str(46690))
_sqlite3VdbeResolveLabel(tls, _v, _49_addrReset)
_resetAccumulator(tls, _pParse, &_sAggInfo)
_sqlite3VdbeAddOp1(tls, _v, i32(52), _49_regReset)
goto _164
-
_132:
_63_pDel = nil
- if store42(&_63_pTab, _isSimpleCount(tls, _p, &_sAggInfo)) == nil {
+ if store44(&_63_pTab, _isSimpleCount(tls, _p, &_sAggInfo)) == nil {
goto _165
}
-
_64_iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_63_pTab.X20))
_64_iCsr = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
_64_pKeyInfo = nil
@@ -36261,128 +33256,99 @@ _132:
_64_iRoot = _63_pTab.X7
_sqlite3CodeVerifySchema(tls, _pParse, _64_iDb)
_sqlite3TableLock(tls, _pParse, _64_iDb, _63_pTab.X7, uint8(i32(0)), _63_pTab.X0)
- if ((_63_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- goto _166
+ if ((_63_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ _64_pBest = _sqlite3PrimaryKeyIndex(tls, _63_pTab)
}
-
- _64_pBest = _sqlite3PrimaryKeyIndex(tls, _63_pTab)
-_166:
_64_pIdx = (*XIndex)(_63_pTab.X2)
_167:
if _64_pIdx == nil {
goto _170
}
-
- if int32((uint32((_64_pIdx.X16)>>uint(i32(2)))<>uint(i32(31))) != i32(0) || int32(_64_pIdx.X12) >= int32(_63_pTab.X13) || (*XExpr)(_64_pIdx.X9) != nil || _64_pBest != nil && int32(_64_pIdx.X12) >= int32(_64_pBest.X12) {
- goto _175
+ if (((int32((uint32((_64_pIdx.X16)>>uint(i32(2)))<>uint(i32(31))) == i32(0)) && (int32(_64_pIdx.X12) < int32(_63_pTab.X13))) && ((*XExpr)(_64_pIdx.X9) == nil)) && ((_64_pBest == nil) || (int32(_64_pIdx.X12) < int32(_64_pBest.X12))) {
+ _64_pBest = _64_pIdx
}
-
- _64_pBest = _64_pIdx
-_175:
_64_pIdx = (*XIndex)(_64_pIdx.X5)
goto _167
-
_170:
- if _64_pBest == nil {
- goto _176
+ if _64_pBest != nil {
+ _64_iRoot = _64_pBest.X11
+ _64_pKeyInfo = _sqlite3KeyInfoOfIndex(tls, _pParse, _64_pBest)
}
-
- _64_iRoot = _64_pBest.X11
- _64_pKeyInfo = _sqlite3KeyInfoOfIndex(tls, _pParse, _64_pBest)
-_176:
_sqlite3VdbeAddOp4Int(tls, _v, i32(106), _64_iCsr, _64_iRoot, _64_iDb, i32(1))
- if _64_pKeyInfo == nil {
- goto _177
+ if _64_pKeyInfo != nil {
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_64_pKeyInfo)), i32(-5))
}
-
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_64_pKeyInfo)), i32(-5))
-_177:
_sqlite3VdbeAddOp2(tls, _v, i32(102), _64_iCsr, (*TAggInfo_func)(unsafe.Pointer(uintptr(_sAggInfo.X11)+16*uintptr(i32(0)))).X2)
_sqlite3VdbeAddOp1(tls, _v, i32(114), _64_iCsr)
_explainSimpleCount(tls, _pParse, _63_pTab, _64_pBest)
goto _178
-
_165:
_69_pMinMax = nil
_69_flag = u8(0)
func() {
if (*XExprList)(_p.X10) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122352), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(48064)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122352), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46719)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_69_flag) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122353), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(48080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122353), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46734)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExpr)(_p.X11) != nil {
- goto _183
+ if (*XExpr)(_p.X11) == nil {
+ _69_flag = _minMaxQuery(tls, &_sAggInfo, &_69_pMinMax)
}
-
- _69_flag = _minMaxQuery(tls, &_sAggInfo, &_69_pMinMax)
-_183:
func() {
if int32(_69_flag) != i32(0) && (_69_pMinMax == nil || (_69_pMinMax.X0) != i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122357), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(48088)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122357), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46742)))
crt.X__builtin_abort(tls)
}
}()
if _69_flag == 0 {
goto _188
}
-
_69_pMinMax = _sqlite3ExprListDup(tls, _db, _69_pMinMax, i32(0))
_63_pDel = _69_pMinMax
func() {
if (_db.X17) == 0 && _69_pMinMax == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(48136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46787)))
crt.X__builtin_abort(tls)
}
}()
- if (_db.X17) != 0 {
- goto _192
+ if (_db.X17) == 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_69_pMinMax))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))))) + uintptr(12 /* X3 */))) = uint8(func() int32 {
+ if int32(_69_flag) != i32(1) {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+ *(*uint8)(unsafe.Pointer(uintptr((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_69_pMinMax))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) + uintptr(0 /* X0 */))) = uint8(i32(152))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_69_pMinMax))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))))) + uintptr(12 /* X3 */))) = uint8(func() int32 {
- if int32(_69_flag) != i32(1) {
- return i32(1)
- }
- return i32(0)
- }())
- *(*uint8)(unsafe.Pointer(uintptr((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_69_pMinMax))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) + uintptr(0 /* X0 */))) = uint8(i32(152))
-_192:
_188:
_resetAccumulator(tls, _pParse, &_sAggInfo)
_pWInfo = _sqlite3WhereBegin(tls, _pParse, _pTabList, _pWhere, _69_pMinMax, nil, uint16(_69_flag), i32(0))
- if _pWInfo != nil {
- goto _195
+ if _pWInfo == nil {
+ _sqlite3ExprListDelete(tls, _db, _63_pDel)
+ goto _select_end
}
-
- _sqlite3ExprListDelete(tls, _db, _63_pDel)
- goto _select_end
-
-_195:
_updateAccumulator(tls, _pParse, &_sAggInfo)
func() {
if _69_pMinMax != nil && (_69_pMinMax.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122380), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(48168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122380), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectØ00__func__Ø000))), unsafe.Pointer(str(46818)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3WhereIsOrdered(tls, _pWInfo) <= i32(0) {
- goto _199
+ if _sqlite3WhereIsOrdered(tls, _pWInfo) > i32(0) {
+ _sqlite3VdbeGoto(tls, _v, _sqlite3WhereBreakLabel(tls, _pWInfo))
+ _sqlite3VdbeComment(tls, _v, str(46850), unsafe.Pointer(func() *int8 {
+ if int32(_69_flag) == i32(1) {
+ return str(7709)
+ }
+ return str(7713)
+ }()))
}
-
- _sqlite3VdbeGoto(tls, _v, _sqlite3WhereBreakLabel(tls, _pWInfo))
- _sqlite3VdbeComment(tls, _v, str(48200), unsafe.Pointer(func() *int8 {
- if int32(_69_flag) == i32(1) {
- return str(6248)
- }
- return str(6252)
- }()))
-_199:
_sqlite3WhereEnd(tls, _pWInfo)
_finalizeAggFunctions(tls, _pParse, &_sAggInfo)
_178:
@@ -36393,339 +33359,239 @@ _178:
_164:
_sqlite3VdbeResolveLabel(tls, _v, _40_addrEnd)
_102:
- if int32(_sDistinct.X1) != i32(3) {
- goto _202
+ if int32(_sDistinct.X1) == i32(3) {
+ _explainTempTable(tls, _pParse, str(25716))
}
-
- _explainTempTable(tls, _pParse, str(25644))
-_202:
- if (*XExprList)(_sSort.X0) == nil {
- goto _203
+ if (*XExprList)(_sSort.X0) != nil {
+ _explainTempTable(tls, _pParse, func() *int8 {
+ if (_sSort.X1) > i32(0) {
+ return str(46864)
+ }
+ return str(46887)
+ }())
+ _generateSortTail(tls, _pParse, _p, &_sSort, _pEList.X0, _pDest)
}
-
- _explainTempTable(tls, _pParse, func() *int8 {
- if (_sSort.X1) > i32(0) {
- return str(48216)
- }
- return str(48240)
- }())
- _generateSortTail(tls, _pParse, _p, &_sSort, _pEList.X0, _pDest)
-_203:
_sqlite3VdbeResolveLabel(tls, _v, _iEnd)
_rc = bool2int((_pParse.X16) > i32(0))
_select_end:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(424 /* X58 */))) = _iRestoreSelectId
- if _rc != i32(0) || int32(_pDest.X0) != i32(9) {
- goto _207
+ if (_rc == i32(0)) && (int32(_pDest.X0) == i32(9)) {
+ _generateColumnNames(tls, _pParse, _pTabList, _pEList)
}
-
- _generateColumnNames(tls, _pParse, _pTabList, _pEList)
-_207:
_sqlite3DbFree(tls, _db, _sAggInfo.X8)
_sqlite3DbFree(tls, _db, _sAggInfo.X11)
- if (Xsqlite3SelectTrace & i32(1)) == 0 {
- goto _208
+ if (Xsqlite3SelectTrace & i32(1)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(46896)
+ }())
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(48252)
- }())
-_208:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(116 /* X35 */))) -= 1
return _rc
+
+ _ = _sDistinct
+ _ = _sSort
+ _ = _sAggInfo
+ _ = _12_dest
+ _ = _40_sNC
+ panic(0)
}
-func _sqlite3AuthCheck(tls *crt.TLS, _pParse *XParse, _code int32, _zArg1 *int8, _zArg2 *int8, _zArg3 *int8) (r0 int32) { // sqlite3.c:99619:1
- var _db *Xsqlite3 // sqlite3.c:99626:11
- _ = _db
- var _rc int32 // sqlite3.c:99627:7
- _ = _rc
+// Do an authorization check using the code and arguments given. Return
+// either SQLITE_OK (zero) or SQLITE_IGNORE or SQLITE_DENY. If SQLITE_DENY
+// is returned, then the error count and error message in pParse are
+// modified appropriately.
+func _sqlite3AuthCheck(tls *crt.TLS, _pParse *XParse, _code int32, _zArg1 *int8, _zArg2 *int8, _zArg3 *int8) (r0 int32) {
+ var _rc int32
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_pParse.X0)
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == 0 && (_pParse.X55) == 0 {
- goto _1
+ if (((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0) || ((_pParse.X55) != 0) {
+ return i32(0)
}
- return i32(0)
-
-_1:
if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
- }{(_db.X59)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(_db.X59)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
}{nil})) {
- goto _2
+ return i32(0)
}
- return i32(0)
-
-_2:
_rc = (_db.X59)(tls, _db.X60, _code, _zArg1, _zArg2, _zArg3, _pParse.X65)
- if _rc != i32(1) {
- goto _3
+ if _rc == i32(1) {
+ _sqlite3ErrorMsg(tls, _pParse, str(7980))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(23)
+ goto _4
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(6568))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(23)
- goto _4
-
-_3:
- if _rc == i32(0) || _rc == i32(2) {
- goto _6
+ if (_rc != i32(0)) && (_rc != i32(2)) {
+ _rc = i32(1)
+ _sqliteAuthBadReturnCode(tls, _pParse)
}
-
- _rc = i32(1)
- _sqliteAuthBadReturnCode(tls, _pParse)
-_6:
_4:
- r0 = _rc
- return
+ return _rc
}
-func _sqliteAuthBadReturnCode(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:99510:1
- _sqlite3ErrorMsg(tls, _pParse, str(48268))
+// Write an error message into pParse->zErrMsg that explains that the
+// user-supplied authorization function returned an illegal value.
+func _sqliteAuthBadReturnCode(tls *crt.TLS, _pParse *XParse) {
+ _sqlite3ErrorMsg(tls, _pParse, str(46912))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(1)
}
-var Xsqlite3SelectTrace int32 // sqlite3.c:116542:11
+var Xsqlite3SelectTrace int32
-func _sqlite3DebugPrintf(tls *crt.TLS, _zFormat *int8, args ...interface{}) { // sqlite3.c:26148:1
- var _ap []interface{} // sqlite3.c:26149:11
- _ = _ap
- var _acc XStrAccum // sqlite3.c:26150:12
- _ = _acc
- var _zBuf [500]int8 // sqlite3.c:26151:8
- _ = _zBuf
+// A version of printf() that understands %lld. Used for debugging.
+// The printf() built into some versions of windows does not understand %lld
+// and segfaults if you give it a long long int.
+func _sqlite3DebugPrintf(tls *crt.TLS, _zFormat *int8, args ...interface{}) {
+ var _ap []interface{}
+ var _acc XStrAccum
+ var _zBuf [500]int8
_sqlite3StrAccumInit(tls, &_acc, nil, (*int8)(unsafe.Pointer(&_zBuf)), int32(u32(500)), i32(0))
_ap = args
_sqlite3VXPrintf(tls, &_acc, _zFormat, _ap)
_ap = nil
_sqlite3StrAccumFinish(tls, &_acc)
- crt.Xfprintf(tls, (*crt.XFILE)(Xstdout), str(24316), unsafe.Pointer((*int8)(unsafe.Pointer(&_zBuf))))
+ crt.Xfprintf(tls, (*crt.XFILE)(Xstdout), str(24576), unsafe.Pointer((*int8)(unsafe.Pointer(&_zBuf))))
crt.Xfflush(tls, (*crt.XFILE)(Xstdout))
+ _ = _acc
+ _ = _zBuf
}
-func _sqlite3TreeViewSelect(tls *crt.TLS, _pView *t43, _p *XSelect, _moreToFollow uint8) { // sqlite3.c:26301:1
- var _n int32 // sqlite3.c:26302:7
- _ = _n
- var _cnt int32 // sqlite3.c:26303:7
- _ = _cnt
- var _6_i int32 // sqlite3.c:26335:11
- _ = _6_i
- var _7_pItem *TSrcList_item // sqlite3.c:26339:29
- _ = _7_pItem
- var _7_x XStrAccum // sqlite3.c:26340:18
- _ = _7_x
- var _7_zLine [100]int8 // sqlite3.c:26341:14
- _ = _7_zLine
- var _21_zOp *int8 // sqlite3.c:26397:18
- _ = _21_zOp
+// Generate a human-readable description of a Select object.
+func _sqlite3TreeViewSelect(tls *crt.TLS, _pView *t45, _p *XSelect, _moreToFollow uint8) {
+ var _n, _cnt, _6_i int32
+ var _21_zOp *int8
+ var _7_zLine [100]int8
+ var _7_x XStrAccum
+ var _7_pItem *TSrcList_item
_n = i32(0)
_cnt = i32(0)
- if _p != nil {
- goto _0
+ if _p == nil {
+ _sqlite3TreeViewLine(tls, _pView, str(46935))
+ return
}
-
- _sqlite3TreeViewLine(tls, _pView, str(48292))
- return
-
-_0:
_pView = _sqlite3TreeViewPush(tls, _pView, _moreToFollow)
- if (*XWith)(_p.X17) == nil {
- goto _1
+ if (*XWith)(_p.X17) != nil {
+ _sqlite3TreeViewWith(tls, _pView, (*XWith)(_p.X17), uint8(i32(1)))
+ _cnt = i32(1)
+ _sqlite3TreeViewPush(tls, _pView, uint8(i32(1)))
}
-
- _sqlite3TreeViewWith(tls, _pView, (*XWith)(_p.X17), uint8(i32(1)))
- _cnt = i32(1)
- _sqlite3TreeViewPush(tls, _pView, uint8(i32(1)))
-_1:
_2:
- _sqlite3TreeViewLine(tls, _pView, str(48304), unsafe.Pointer(func() *int8 {
+ _sqlite3TreeViewLine(tls, _pView, str(46946), unsafe.Pointer(func() *int8 {
if ((_p.X3) & uint32(i32(1))) != 0 {
- return str(48352)
+ return str(46992)
}
- return str(196)
+ return str(0)
}()), unsafe.Pointer(func() *int8 {
if ((_p.X3) & uint32(i32(8))) != 0 {
- return str(48364)
+ return str(47002)
}
- return str(196)
+ return str(0)
}()), unsafe.Pointer(_p), _p.X3, int32(_p.X2))
- if postInc1(&_cnt, int32(1)) == 0 {
- goto _7
+ if postInc1(&_cnt, int32(1)) != 0 {
+ _sqlite3TreeViewPop(tls, _pView)
}
-
- _sqlite3TreeViewPop(tls, _pView)
-_7:
- if (*XSelect)(_p.X13) == nil {
- goto _8
+ if (*XSelect)(_p.X13) != nil {
+ _n = i32(1000)
+ goto _9
}
-
- _n = i32(1000)
- goto _9
-
-_8:
_n = i32(0)
- if (*XSrcList)(_p.X8) == nil || ((*XSrcList)(_p.X8).X0) == 0 {
- goto _11
+ if ((*XSrcList)(_p.X8) != nil) && ((*XSrcList)(_p.X8).X0) != 0 {
+ _n += 1
}
-
- _n += 1
-_11:
- if (*XExpr)(_p.X9) == nil {
- goto _12
+ if (*XExpr)(_p.X9) != nil {
+ _n += 1
}
-
- _n += 1
-_12:
- if (*XExprList)(_p.X10) == nil {
- goto _13
+ if (*XExprList)(_p.X10) != nil {
+ _n += 1
}
-
- _n += 1
-_13:
- if (*XExpr)(_p.X11) == nil {
- goto _14
+ if (*XExpr)(_p.X11) != nil {
+ _n += 1
}
-
- _n += 1
-_14:
- if (*XExprList)(_p.X12) == nil {
- goto _15
+ if (*XExprList)(_p.X12) != nil {
+ _n += 1
}
-
- _n += 1
-_15:
- if (*XExpr)(_p.X15) == nil {
- goto _16
+ if (*XExpr)(_p.X15) != nil {
+ _n += 1
}
-
- _n += 1
-_16:
- if (*XExpr)(_p.X16) == nil {
- goto _17
+ if (*XExpr)(_p.X16) != nil {
+ _n += 1
}
-
- _n += 1
-_17:
_9:
- _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(_p.X0), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))), str(48376))
+ _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(_p.X0), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))), str(47012))
if (*XSrcList)(_p.X8) == nil || ((*XSrcList)(_p.X8).X0) == 0 {
goto _19
}
-
_pView = _sqlite3TreeViewPush(tls, _pView, uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
- _sqlite3TreeViewLine(tls, _pView, str(25660))
+ _sqlite3TreeViewLine(tls, _pView, str(25729))
_6_i = i32(0)
_20:
if _6_i >= ((*XSrcList)(_p.X8).X0) {
goto _23
}
-
_7_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(_6_i)))
_sqlite3StrAccumInit(tls, &_7_x, nil, (*int8)(unsafe.Pointer(&_7_zLine)), int32(u32(100)), i32(0))
- _sqlite3XPrintf(tls, &_7_x, str(48388), _7_pItem.X11)
- if (_7_pItem.X1) == nil {
- goto _24
+ _sqlite3XPrintf(tls, &_7_x, str(47023), _7_pItem.X11)
+ if (_7_pItem.X1) != nil {
+ _sqlite3XPrintf(tls, &_7_x, str(47030), unsafe.Pointer(_7_pItem.X1), unsafe.Pointer(_7_pItem.X2))
+ goto _25
}
-
- _sqlite3XPrintf(tls, &_7_x, str(48396), unsafe.Pointer(_7_pItem.X1), unsafe.Pointer(_7_pItem.X2))
- goto _25
-
-_24:
- if (_7_pItem.X2) == nil {
- goto _26
+ if (_7_pItem.X2) != nil {
+ _sqlite3XPrintf(tls, &_7_x, str(47037), unsafe.Pointer(_7_pItem.X2))
}
-
- _sqlite3XPrintf(tls, &_7_x, str(48404), unsafe.Pointer(_7_pItem.X2))
-_26:
_25:
- if (*XTable)(_7_pItem.X4) == nil {
- goto _27
+ if (*XTable)(_7_pItem.X4) != nil {
+ _sqlite3XPrintf(tls, &_7_x, str(47041), unsafe.Pointer((*XTable)(_7_pItem.X4).X0))
}
-
- _sqlite3XPrintf(tls, &_7_x, str(48408), unsafe.Pointer((*XTable)(_7_pItem.X4).X0))
-_27:
- if (_7_pItem.X3) == nil {
- goto _28
+ if (_7_pItem.X3) != nil {
+ _sqlite3XPrintf(tls, &_7_x, str(47053), unsafe.Pointer(_7_pItem.X3))
}
-
- _sqlite3XPrintf(tls, &_7_x, str(48420), unsafe.Pointer(_7_pItem.X3))
-_28:
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pItem))+uintptr(36 /* X9 */))).X0) & i32(8)) == 0 {
- goto _29
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pItem))+uintptr(36 /* X9 */))).X0) & i32(8)) != 0 {
+ _sqlite3XPrintf(tls, &_7_x, str(47062))
}
-
- _sqlite3XPrintf(tls, &_7_x, str(48432))
-_29:
_sqlite3StrAccumFinish(tls, &_7_x)
_sqlite3TreeViewItem(tls, _pView, (*int8)(unsafe.Pointer(&_7_zLine)), uint8(bool2int(_6_i < (((*XSrcList)(_p.X8).X0)-i32(1)))))
- if (*XSelect)(_7_pItem.X5) == nil {
- goto _30
+ if (*XSelect)(_7_pItem.X5) != nil {
+ _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(_7_pItem.X5), uint8(i32(0)))
}
-
- _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(_7_pItem.X5), uint8(i32(0)))
-_30:
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _31
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pItem)) + uintptr(60 /* X15 */)))))), uint8(i32(0)), str(47073))
}
-
- _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pItem)) + uintptr(60 /* X15 */)))))), uint8(i32(0)), str(48444))
-_31:
_sqlite3TreeViewPop(tls, _pView)
_6_i += 1
goto _20
-
_23:
_sqlite3TreeViewPop(tls, _pView)
_19:
- if (*XExpr)(_p.X9) == nil {
- goto _32
+ if (*XExpr)(_p.X9) != nil {
+ _sqlite3TreeViewItem(tls, _pView, str(25770), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
+ _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X9), uint8(i32(0)))
+ _sqlite3TreeViewPop(tls, _pView)
}
-
- _sqlite3TreeViewItem(tls, _pView, str(25716), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
- _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X9), uint8(i32(0)))
- _sqlite3TreeViewPop(tls, _pView)
-_32:
- if (*XExprList)(_p.X10) == nil {
- goto _33
+ if (*XExprList)(_p.X10) != nil {
+ _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(_p.X10), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))), str(47084))
}
-
- _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(_p.X10), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))), str(48456))
-_33:
- if (*XExpr)(_p.X11) == nil {
- goto _34
+ if (*XExpr)(_p.X11) != nil {
+ _sqlite3TreeViewItem(tls, _pView, str(25757), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
+ _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X11), uint8(i32(0)))
+ _sqlite3TreeViewPop(tls, _pView)
}
-
- _sqlite3TreeViewItem(tls, _pView, str(25700), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
- _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X11), uint8(i32(0)))
- _sqlite3TreeViewPop(tls, _pView)
-_34:
- if (*XExprList)(_p.X12) == nil {
- goto _35
+ if (*XExprList)(_p.X12) != nil {
+ _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(_p.X12), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))), str(47092))
}
-
- _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(_p.X12), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))), str(48464))
-_35:
- if (*XExpr)(_p.X15) == nil {
- goto _36
+ if (*XExpr)(_p.X15) != nil {
+ _sqlite3TreeViewItem(tls, _pView, str(25764), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
+ _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X15), uint8(i32(0)))
+ _sqlite3TreeViewPop(tls, _pView)
}
-
- _sqlite3TreeViewItem(tls, _pView, str(25708), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
- _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X15), uint8(i32(0)))
- _sqlite3TreeViewPop(tls, _pView)
-_36:
- if (*XExpr)(_p.X16) == nil {
- goto _37
+ if (*XExpr)(_p.X16) != nil {
+ _sqlite3TreeViewItem(tls, _pView, str(25292), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
+ _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X16), uint8(i32(0)))
+ _sqlite3TreeViewPop(tls, _pView)
}
-
- _sqlite3TreeViewItem(tls, _pView, str(25148), uint8(bool2int(postInc1(&_n, int32(-1)) > i32(0))))
- _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_p.X16), uint8(i32(0)))
- _sqlite3TreeViewPop(tls, _pView)
-_37:
if (*XSelect)(_p.X13) == nil {
goto _38
}
-
- _21_zOp = str(25596)
+ _21_zOp = str(25675)
switch int32(_p.X1) {
case i32(116):
goto _40
@@ -36738,17 +33604,14 @@ _37:
}
_40:
- _21_zOp = str(48472)
+ _21_zOp = str(47100)
goto _43
-
_41:
- _21_zOp = str(25616)
+ _21_zOp = str(25692)
goto _43
-
_42:
- _21_zOp = str(25608)
+ _21_zOp = str(25685)
goto _43
-
_43:
_sqlite3TreeViewItem(tls, _pView, _21_zOp, uint8(i32(1)))
_38:
@@ -36756,45 +33619,43 @@ _38:
if _p != nil {
goto _2
}
-
_sqlite3TreeViewPop(tls, _pView)
+ _ = _n
+ _ = _cnt
+ _ = _7_x
+ _ = _7_zLine
}
-func _sqlite3TreeViewLine(tls *crt.TLS, _p *t43, _zFormat *int8, args ...interface{}) { // sqlite3.c:26228:1
- var _ap []interface{} // sqlite3.c:26229:11
- _ = _ap
- var _i int32 // sqlite3.c:26230:7
- _ = _i
- var _acc XStrAccum // sqlite3.c:26231:12
- _ = _acc
- var _zBuf [500]int8 // sqlite3.c:26232:8
- _ = _zBuf
+// Generate a single line of output for the tree, with a prefix that contains
+// all the appropriate tree lines
+func _sqlite3TreeViewLine(tls *crt.TLS, _p *t45, _zFormat *int8, args ...interface{}) {
+ var _i int32
+ var _ap []interface{}
+ var _acc XStrAccum
+ var _zBuf [500]int8
_sqlite3StrAccumInit(tls, &_acc, nil, (*int8)(unsafe.Pointer(&_zBuf)), int32(u32(500)), i32(0))
if _p == nil {
goto _0
}
-
_i = i32(0)
_1:
if _i >= (_p.X0) || uint32(_i) >= u32(99) {
goto _5
}
-
_sqlite3StrAccumAppend(tls, &_acc, func() *int8 {
if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(4 /* X1 */))))) + 1*uintptr(_i)))) != 0 {
- return str(48484)
+ return str(47110)
}
- return str(48492)
+ return str(47115)
}(), i32(4))
_i += 1
goto _1
-
_5:
_sqlite3StrAccumAppend(tls, &_acc, func() *int8 {
if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(4 /* X1 */))))) + 1*uintptr(_i)))) != 0 {
- return str(48500)
+ return str(47120)
}
- return str(48508)
+ return str(47125)
}(), i32(4))
_0:
_ap = args
@@ -36802,267 +33663,198 @@ _0:
_ap = nil
func() {
if (_acc.X3) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26243), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TreeViewLineØ00__func__Ø000))), unsafe.Pointer(str(48516)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26243), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TreeViewLineØ00__func__Ø000))), unsafe.Pointer(str(47130)))
crt.X__builtin_abort(tls)
}
}()
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_zBuf)) + 1*uintptr((_acc.X3)-uint32(i32(1)))))) == i32(10) {
- goto _12
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_zBuf)) + 1*uintptr((_acc.X3)-uint32(i32(1)))))) != i32(10) {
+ _sqlite3StrAccumAppend(tls, &_acc, str(37700), i32(1))
}
-
- _sqlite3StrAccumAppend(tls, &_acc, str(38408), i32(1))
-_12:
_sqlite3StrAccumFinish(tls, &_acc)
- crt.Xfprintf(tls, (*crt.XFILE)(Xstdout), str(24316), unsafe.Pointer((*int8)(unsafe.Pointer(&_zBuf))))
+ crt.Xfprintf(tls, (*crt.XFILE)(Xstdout), str(24576), unsafe.Pointer((*int8)(unsafe.Pointer(&_zBuf))))
crt.Xfflush(tls, (*crt.XFILE)(Xstdout))
+ _ = _acc
+ _ = _zBuf
}
-var _sqlite3TreeViewLineØ00__func__Ø000 [20]int8 // -
+var _sqlite3TreeViewLineØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3TreeViewLineØ00__func__Ø000[0], str(48528), 20)
+ crt.Xstrncpy(nil, &_sqlite3TreeViewLineØ00__func__Ø000[0], str(47142), 20)
}
-func _sqlite3TreeViewPush(tls *crt.TLS, _p *t43, _moreToFollow uint8) (r0 *t43) { // sqlite3.c:26202:1
+// Add a new subitem to the tree. The moreToFollow flag indicates that this
+// is not the last item in the tree.
+func _sqlite3TreeViewPush(tls *crt.TLS, _p *t45, _moreToFollow uint8) (r0 *t45) {
if _p != nil {
goto _0
}
-
- _p = (*t43)(Xsqlite3_malloc64(tls, uint64(u32(104))))
- if _p != nil {
- goto _1
+ _p = (*t45)(Xsqlite3_malloc64(tls, uint64(u32(104))))
+ if _p == nil {
+ return nil
}
- return nil
-
-_1:
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(104))
goto _2
-
_0:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) += 1
_2:
func() {
if int32(_moreToFollow) != i32(0) && int32(_moreToFollow) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26210), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TreeViewPushØ00__func__Ø000))), unsafe.Pointer(str(48548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26210), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TreeViewPushØ00__func__Ø000))), unsafe.Pointer(str(47162)))
crt.X__builtin_abort(tls)
}
}()
- if uint32(_p.X0) >= u32(100) {
- goto _6
+ if uint32(_p.X0) < u32(100) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(4 /* X1 */))))) + 1*uintptr(_p.X0))) = _moreToFollow
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[100]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(4 /* X1 */))))) + 1*uintptr(_p.X0))) = _moreToFollow
-_6:
return _p
}
-var _sqlite3TreeViewPushØ00__func__Ø000 [20]int8 // -
+var _sqlite3TreeViewPushØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3TreeViewPushØ00__func__Ø000[0], str(48584), 20)
+ crt.Xstrncpy(nil, &_sqlite3TreeViewPushØ00__func__Ø000[0], str(47197), 20)
}
-func _sqlite3TreeViewWith(tls *crt.TLS, _pView *t43, _pWith *XWith, _moreToFollow uint8) { // sqlite3.c:26261:1
- var _i int32 // sqlite3.c:26262:7
- _ = _i
- var _4_x XStrAccum // sqlite3.c:26273:16
- _ = _4_x
- var _4_zLine [1000]int8 // sqlite3.c:26274:12
- _ = _4_zLine
- var _4_pCte *TCte // sqlite3.c:26275:24
- _ = _4_pCte
- var _5_cSep int8 // sqlite3.c:26279:14
- _ = _5_cSep
- var _5_j int32 // sqlite3.c:26280:13
- _ = _5_j
- if _pWith != nil {
- goto _0
+// Generate a human-readable description of a WITH clause.
+func _sqlite3TreeViewWith(tls *crt.TLS, _pView *t45, _pWith *XWith, _moreToFollow uint8) {
+ var _i, _5_j int32
+ var _5_cSep int8
+ var _4_x XStrAccum
+ var _4_zLine [1000]int8
+ var _4_pCte *TCte
+ if _pWith == nil {
+ return
}
- return
-
-_0:
- if (_pWith.X0) != i32(0) {
- goto _1
+ if (_pWith.X0) == i32(0) {
+ return
}
- return
-
-_1:
- if (*XWith)(_pWith.X1) == nil {
- goto _2
+ if (*XWith)(_pWith.X1) != nil {
+ _sqlite3TreeViewLine(tls, _pView, str(47217), unsafe.Pointer(_pWith), unsafe.Pointer((*XWith)(_pWith.X1)))
+ goto _3
}
-
- _sqlite3TreeViewLine(tls, _pView, str(48604), unsafe.Pointer(_pWith), unsafe.Pointer((*XWith)(_pWith.X1)))
- goto _3
-
-_2:
- _sqlite3TreeViewLine(tls, _pView, str(48632), unsafe.Pointer(_pWith))
+ _sqlite3TreeViewLine(tls, _pView, str(47242), unsafe.Pointer(_pWith))
_3:
if (_pWith.X0) <= i32(0) {
goto _4
}
-
_pView = _sqlite3TreeViewPush(tls, _pView, uint8(i32(1)))
_i = i32(0)
_5:
if _i >= (_pWith.X0) {
goto _8
}
-
_4_pCte = (*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWith))+uintptr(8 /* X2 */))))) + 16*uintptr(_i)))
_sqlite3StrAccumInit(tls, &_4_x, nil, (*int8)(unsafe.Pointer(&_4_zLine)), int32(u32(1000)), i32(0))
- _sqlite3XPrintf(tls, &_4_x, str(24316), unsafe.Pointer(_4_pCte.X0))
+ _sqlite3XPrintf(tls, &_4_x, str(24576), unsafe.Pointer(_4_pCte.X0))
if (*XExprList)(_4_pCte.X1) == nil || ((*XExprList)(_4_pCte.X1).X0) <= i32(0) {
goto _10
}
-
_5_cSep = int8(i32(40))
_5_j = i32(0)
_11:
if _5_j >= ((*XExprList)(_4_pCte.X1).X0) {
goto _14
}
-
- _sqlite3XPrintf(tls, &_4_x, str(24708), int32(_5_cSep), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_4_pCte.X1)+uintptr(8 /* X2 */)))))+20*uintptr(_5_j))).X1))
+ _sqlite3XPrintf(tls, &_4_x, str(24935), int32(_5_cSep), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_4_pCte.X1)+uintptr(8 /* X2 */)))))+20*uintptr(_5_j))).X1))
_5_cSep = int8(i32(44))
_5_j += 1
goto _11
-
_14:
- _sqlite3XPrintf(tls, &_4_x, str(38624))
+ _sqlite3XPrintf(tls, &_4_x, str(37898))
_10:
- _sqlite3XPrintf(tls, &_4_x, str(48644))
+ _sqlite3XPrintf(tls, &_4_x, str(47254))
_sqlite3StrAccumFinish(tls, &_4_x)
_sqlite3TreeViewItem(tls, _pView, (*int8)(unsafe.Pointer(&_4_zLine)), uint8(bool2int(_i < ((_pWith.X0)-i32(1)))))
_sqlite3TreeViewSelect(tls, _pView, (*XSelect)(_4_pCte.X2), uint8(i32(0)))
_sqlite3TreeViewPop(tls, _pView)
_i += 1
goto _5
-
_8:
_sqlite3TreeViewPop(tls, _pView)
_4:
+ _ = _4_x
+ _ = _4_zLine
}
-func _sqlite3TreeViewItem(tls *crt.TLS, _p *t43, _zLabel *int8, _moreFollows uint8) { // sqlite3.c:26253:1
+// Shorthand for starting a new tree item that consists of a single label
+func _sqlite3TreeViewItem(tls *crt.TLS, _p *t45, _zLabel *int8, _moreFollows uint8) {
_p = _sqlite3TreeViewPush(tls, _p, _moreFollows)
- _sqlite3TreeViewLine(tls, _p, str(24316), unsafe.Pointer(_zLabel))
+ _sqlite3TreeViewLine(tls, _p, str(24576), unsafe.Pointer(_zLabel))
}
-func _sqlite3TreeViewPop(tls *crt.TLS, _p *t43) { // sqlite3.c:26218:1
- if _p != nil {
- goto _0
+// Finished with one layer of the tree
+func _sqlite3TreeViewPop(tls *crt.TLS, _p *t45) {
+ if _p == nil {
+ return
}
- return
-
-_0:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) -= 1
- if (_p.X0) >= i32(0) {
- goto _1
+ if (_p.X0) < i32(0) {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p))
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_p))
-_1:
}
-func _sqlite3TreeViewExprList(tls *crt.TLS, _pView *t43, _pList *XExprList, _moreToFollow uint8, _zLabel *int8) { // sqlite3.c:26695:1
+func _sqlite3TreeViewExprList(tls *crt.TLS, _pView *t45, _pList *XExprList, _moreToFollow uint8, _zLabel *int8) {
_pView = _sqlite3TreeViewPush(tls, _pView, _moreToFollow)
_sqlite3TreeViewBareExprList(tls, _pView, _pList, _zLabel)
_sqlite3TreeViewPop(tls, _pView)
}
-func _sqlite3TreeViewBareExprList(tls *crt.TLS, _pView *t43, _pList *XExprList, _zLabel *int8) { // sqlite3.c:26673:1
- var _2_i int32 // sqlite3.c:26682:9
- _ = _2_i
- var _3_j int32 // sqlite3.c:26685:11
- _ = _3_j
- if _zLabel != nil && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zLabel)) + 1*uintptr(i32(0))))) != i32(0) {
- goto _1
+// Generate a human-readable explanation of an expression list.
+func _sqlite3TreeViewBareExprList(tls *crt.TLS, _pView *t45, _pList *XExprList, _zLabel *int8) {
+ var _2_i, _3_j int32
+ if (_zLabel == nil) || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zLabel)) + 1*uintptr(i32(0))))) == i32(0)) {
+ _zLabel = str(44999)
}
-
- _zLabel = str(46240)
-_1:
- if _pList != nil {
- goto _2
+ if _pList == nil {
+ _sqlite3TreeViewLine(tls, _pView, str(47258), unsafe.Pointer(_zLabel))
+ goto _3
}
-
- _sqlite3TreeViewLine(tls, _pView, str(48648), unsafe.Pointer(_zLabel))
- goto _3
-
-_2:
- _sqlite3TreeViewLine(tls, _pView, str(24316), unsafe.Pointer(_zLabel))
+ _sqlite3TreeViewLine(tls, _pView, str(24576), unsafe.Pointer(_zLabel))
_2_i = i32(0)
_4:
if _2_i >= (_pList.X0) {
goto _7
}
-
- _3_j = int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_2_i))))) + uintptr(16 /* X5 */))))).X0)
- if _3_j == 0 {
- goto _8
+ _3_j = int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_2_i))))) + uintptr(16 /* X5 */))))).X0)
+ if _3_j != 0 {
+ _sqlite3TreeViewPush(tls, _pView, uint8(i32(0)))
+ _sqlite3TreeViewLine(tls, _pView, str(47269), _3_j)
}
-
- _sqlite3TreeViewPush(tls, _pView, uint8(i32(0)))
- _sqlite3TreeViewLine(tls, _pView, str(48660), _3_j)
-_8:
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_2_i))).X0), uint8(bool2int(_2_i < ((_pList.X0)-i32(1)))))
- if _3_j == 0 {
- goto _9
+ if _3_j != 0 {
+ _sqlite3TreeViewPop(tls, _pView)
}
-
- _sqlite3TreeViewPop(tls, _pView)
-_9:
_2_i += 1
goto _4
-
_7:
_3:
}
-func _sqlite3TreeViewExpr(tls *crt.TLS, _pView *t43, _pExpr *XExpr, _moreToFollow uint8) { // sqlite3.c:26413:1
- var _zBinOp *int8 // sqlite3.c:26414:14
- _ = _zBinOp
- var _zUniOp *int8 // sqlite3.c:26415:14
- _ = _zUniOp
- var _zFlgs [60]int8 // sqlite3.c:26416:8
- _ = _zFlgs
- var _24_pFarg *XExprList // sqlite3.c:26541:16
- _ = _24_pFarg
- var _35_pX *XExpr // sqlite3.c:26593:12
- _ = _35_pX
- var _35_pY *XExpr // sqlite3.c:26594:12
- _ = _35_pY
- var _35_pZ *XExpr // sqlite3.c:26595:12
- _ = _35_pZ
- var _38_zType *int8 // sqlite3.c:26622:18
- _ = _38_zType
+// Generate a human-readable explanation of an expression tree.
+func _sqlite3TreeViewExpr(tls *crt.TLS, _pView *t45, _pExpr *XExpr, _moreToFollow uint8) {
+ var _zBinOp, _zUniOp, _38_zType *int8
+ var _24_pFarg *XExprList
+ var _35_pX, _35_pY, _35_pZ *XExpr
+ var _zFlgs [60]int8
_zBinOp = nil
_zUniOp = nil
_pView = _sqlite3TreeViewPush(tls, _pView, _moreToFollow)
- if _pExpr != nil {
- goto _0
+ if _pExpr == nil {
+ _sqlite3TreeViewLine(tls, _pView, str(47284))
+ _sqlite3TreeViewPop(tls, _pView)
+ return
}
-
- _sqlite3TreeViewLine(tls, _pView, str(48676))
- _sqlite3TreeViewPop(tls, _pView)
- return
-
-_0:
if (_pExpr.X2) == 0 {
goto _1
}
-
- if ((_pExpr.X2) & uint32(i32(1))) == uint32(i32(0)) {
- goto _2
+ if ((_pExpr.X2) & uint32(i32(1))) != uint32(i32(0)) {
+ Xsqlite3_snprintf(tls, int32(u32(60)), (*int8)(unsafe.Pointer(&_zFlgs)), str(47288), _pExpr.X2, int32(_pExpr.X11))
+ goto _3
}
-
- Xsqlite3_snprintf(tls, int32(u32(60)), (*int8)(unsafe.Pointer(&_zFlgs)), str(48680), _pExpr.X2, int32(_pExpr.X11))
- goto _3
-
-_2:
- Xsqlite3_snprintf(tls, int32(u32(60)), (*int8)(unsafe.Pointer(&_zFlgs)), str(48704), _pExpr.X2)
+ Xsqlite3_snprintf(tls, int32(u32(60)), (*int8)(unsafe.Pointer(&_zFlgs)), str(47309), _pExpr.X2)
_3:
goto _4
-
_1:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_zFlgs)) + 1*uintptr(i32(0)))) = int8(i32(0))
_4:
@@ -37178,268 +33970,198 @@ _4:
}
_6:
- _sqlite3TreeViewLine(tls, _pView, str(48720), _pExpr.X8, int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
+ _sqlite3TreeViewLine(tls, _pView, str(47322), _pExpr.X8, int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
goto _60
-
_7:
- if (_pExpr.X8) >= i32(0) {
- goto _61
+ if (_pExpr.X8) < i32(0) {
+ _sqlite3TreeViewLine(tls, _pView, str(47335), int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
+ goto _62
}
-
- _sqlite3TreeViewLine(tls, _pView, str(48736), int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
- goto _62
-
-_61:
- _sqlite3TreeViewLine(tls, _pView, str(48752), _pExpr.X8, int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
+ _sqlite3TreeViewLine(tls, _pView, str(47348), _pExpr.X8, int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
_62:
goto _60
-
_8:
- if ((_pExpr.X2) & uint32(i32(1024))) == 0 {
- goto _63
+ if ((_pExpr.X2) & uint32(i32(1024))) != 0 {
+ _sqlite3TreeViewLine(tls, _pView, str(37915), *(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
+ goto _64
}
-
- _sqlite3TreeViewLine(tls, _pView, str(38644), *(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
- goto _64
-
-_63:
- _sqlite3TreeViewLine(tls, _pView, str(24316), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(24576), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
_64:
goto _60
-
_9:
- _sqlite3TreeViewLine(tls, _pView, str(24316), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(24576), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
goto _60
-
_10:
- _sqlite3TreeViewLine(tls, _pView, str(48764), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(47358), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
goto _60
-
_11:
- _sqlite3TreeViewLine(tls, _pView, str(200))
+ _sqlite3TreeViewLine(tls, _pView, str(155))
goto _60
-
_12:
- _sqlite3TreeViewLine(tls, _pView, str(24316), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(24576), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
goto _60
-
_13:
- _sqlite3TreeViewLine(tls, _pView, str(48768), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))), int32(_pExpr.X9))
+ _sqlite3TreeViewLine(tls, _pView, str(47361), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))), int32(_pExpr.X9))
goto _60
-
_14:
- _sqlite3TreeViewLine(tls, _pView, str(48784), _pExpr.X8)
+ _sqlite3TreeViewLine(tls, _pView, str(47377), _pExpr.X8)
goto _60
-
_15:
- _sqlite3TreeViewLine(tls, _pView, str(48800), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(47390), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
goto _60
-
_16:
- _sqlite3TreeViewLine(tls, _pView, str(48808), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(47398), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(0)))
goto _60
-
_17:
- _zBinOp = str(25336)
+ _zBinOp = str(25452)
goto _60
-
_18:
- _zBinOp = str(25332)
+ _zBinOp = str(25449)
goto _60
-
_19:
- _zBinOp = str(25328)
+ _zBinOp = str(25446)
goto _60
-
_20:
- _zBinOp = str(25340)
+ _zBinOp = str(25455)
goto _60
-
_21:
- _zBinOp = str(25320)
+ _zBinOp = str(25440)
goto _60
-
_22:
- _zBinOp = str(25324)
+ _zBinOp = str(25443)
goto _60
-
_23:
- _zBinOp = str(25288)
+ _zBinOp = str(25411)
goto _60
-
_24:
- _zBinOp = str(48816)
+ _zBinOp = str(47406)
goto _60
-
_25:
- _zBinOp = str(25284)
+ _zBinOp = str(25407)
goto _60
-
_26:
- _zBinOp = str(25280)
+ _zBinOp = str(25404)
goto _60
-
_27:
- _zBinOp = str(25816)
+ _zBinOp = str(25841)
goto _60
-
_28:
- _zBinOp = str(48824)
+ _zBinOp = str(47412)
goto _60
-
_29:
- _zBinOp = str(48828)
+ _zBinOp = str(47416)
goto _60
-
_30:
- _zBinOp = str(25416)
+ _zBinOp = str(25514)
goto _60
-
_31:
- _zBinOp = str(25352)
+ _zBinOp = str(25465)
goto _60
-
_32:
- _zBinOp = str(25360)
+ _zBinOp = str(25472)
goto _60
-
_33:
- _zBinOp = str(48832)
+ _zBinOp = str(47420)
goto _60
-
_34:
- _zBinOp = str(25368)
+ _zBinOp = str(25478)
goto _60
-
_35:
- _zBinOp = str(25376)
+ _zBinOp = str(25485)
goto _60
-
_36:
- _zBinOp = str(25420)
+ _zBinOp = str(25518)
goto _60
-
_37:
- _zBinOp = str(25656)
+ _zBinOp = str(25725)
goto _60
-
_38:
- _zUniOp = str(48836)
+ _zUniOp = str(47424)
goto _60
-
_39:
- _zUniOp = str(48844)
+ _zUniOp = str(47431)
goto _60
-
_40:
- _zUniOp = str(25436)
+ _zUniOp = str(25533)
goto _60
-
_41:
- _zUniOp = str(24896)
+ _zUniOp = str(25087)
goto _60
-
_42:
- _zUniOp = str(25304)
+ _zUniOp = str(25425)
goto _60
-
_43:
- _zUniOp = str(25312)
+ _zUniOp = str(25432)
goto _60
-
_44:
- _sqlite3TreeViewLine(tls, _pView, str(48852), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(47437), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(0)))
goto _60
-
_45:
- _sqlite3TreeViewLine(tls, _pView, str(48860), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(47445), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(0)))
goto _60
-
_46:
_47:
- if ((_pExpr.X2) & uint32(i32(16384))) == uint32(i32(0)) {
- goto _65
+ if ((_pExpr.X2) & uint32(i32(16384))) != uint32(i32(0)) {
+ _24_pFarg = nil
+ goto _66
}
-
- _24_pFarg = nil
- goto _66
-
-_65:
- _24_pFarg = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _24_pFarg = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
_66:
- if int32(_pExpr.X0) != i32(153) {
- goto _67
+ if int32(_pExpr.X0) == i32(153) {
+ _sqlite3TreeViewLine(tls, _pView, str(47456), int32(_pExpr.X12), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ goto _68
}
-
- _sqlite3TreeViewLine(tls, _pView, str(48872), int32(_pExpr.X12), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
- goto _68
-
-_67:
- _sqlite3TreeViewLine(tls, _pView, str(48892), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(47474), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
_68:
- if _24_pFarg == nil {
- goto _69
+ if _24_pFarg != nil {
+ _sqlite3TreeViewExprList(tls, _pView, _24_pFarg, uint8(i32(0)), nil)
}
-
- _sqlite3TreeViewExprList(tls, _pView, _24_pFarg, uint8(i32(0)), nil)
-_69:
goto _60
-
_48:
- _sqlite3TreeViewLine(tls, _pView, str(48904))
- _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
+ _sqlite3TreeViewLine(tls, _pView, str(47486))
+ _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
goto _60
-
_49:
- _sqlite3TreeViewLine(tls, _pView, str(48916))
- _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
+ _sqlite3TreeViewLine(tls, _pView, str(47498))
+ _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
goto _60
-
_50:
- _sqlite3TreeViewLine(tls, _pView, str(25300))
+ _sqlite3TreeViewLine(tls, _pView, str(25422))
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(1)))
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _70
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
+ goto _71
}
-
- _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
- goto _71
-
-_70:
- _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)), nil)
+ _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)), nil)
_71:
goto _60
-
_51:
_35_pX = (*XExpr)(_pExpr.X4)
- _35_pY = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
- _35_pZ = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
- _sqlite3TreeViewLine(tls, _pView, str(25292))
+ _35_pY = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
+ _35_pZ = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
+ _sqlite3TreeViewLine(tls, _pView, str(25414))
_sqlite3TreeViewExpr(tls, _pView, _35_pX, uint8(i32(1)))
_sqlite3TreeViewExpr(tls, _pView, _35_pY, uint8(i32(1)))
_sqlite3TreeViewExpr(tls, _pView, _35_pZ, uint8(i32(0)))
goto _60
-
_52:
- _sqlite3TreeViewLine(tls, _pView, str(38636), unsafe.Pointer(func() *int8 {
+ _sqlite3TreeViewLine(tls, _pView, str(37908), unsafe.Pointer(func() *int8 {
if (_pExpr.X8) != 0 {
- return str(48928)
+ return str(47510)
}
- return str(48932)
+ return str(47514)
}()), int32(_pExpr.X9))
goto _60
-
_53:
- _sqlite3TreeViewLine(tls, _pView, str(25768))
+ _sqlite3TreeViewLine(tls, _pView, str(25809))
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(1)))
- _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)), nil)
+ _sqlite3TreeViewExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), uint8(i32(0)), nil)
goto _60
-
_54:
- _38_zType = str(48936)
+ _38_zType = str(47518)
switch int32(_pExpr.X1) {
case i32(1):
goto _75
@@ -37454,239 +34176,216 @@ _54:
}
_75:
- _38_zType = str(48940)
+ _38_zType = str(47522)
goto _79
-
_76:
- _38_zType = str(48952)
+ _38_zType = str(47531)
goto _79
-
_77:
- _38_zType = str(48960)
+ _38_zType = str(47537)
goto _79
-
_78:
- _38_zType = str(48968)
+ _38_zType = str(47542)
goto _79
-
_79:
- _sqlite3TreeViewLine(tls, _pView, str(48976), unsafe.Pointer(_38_zType), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
+ _sqlite3TreeViewLine(tls, _pView, str(47549), unsafe.Pointer(_38_zType), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))))
goto _60
-
_55:
- _sqlite3TreeViewLine(tls, _pView, str(48992), _pExpr.X8, int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
+ _sqlite3TreeViewLine(tls, _pView, str(47562), _pExpr.X8, int32(_pExpr.X9), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X5), uint8(i32(0)))
goto _60
-
_56:
- _sqlite3TreeViewBareExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), str(49008))
+ _sqlite3TreeViewBareExprList(tls, _pView, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), str(47578))
goto _60
-
_57:
- _sqlite3TreeViewLine(tls, _pView, str(49016), int32(_pExpr.X9))
- _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
+ _sqlite3TreeViewLine(tls, _pView, str(47585), int32(_pExpr.X9))
+ _sqlite3TreeViewSelect(tls, _pView, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(20 /* X6 */)))))), uint8(i32(0)))
goto _60
-
_58:
- _sqlite3TreeViewLine(tls, _pView, str(49036), _pExpr.X8)
+ _sqlite3TreeViewLine(tls, _pView, str(47602), _pExpr.X8)
_sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(0)))
goto _60
-
_59:
- _sqlite3TreeViewLine(tls, _pView, str(49052), int32(_pExpr.X0))
+ _sqlite3TreeViewLine(tls, _pView, str(47617), int32(_pExpr.X0))
goto _60
-
_60:
- if _zBinOp == nil {
- goto _80
+ if _zBinOp != nil {
+ _sqlite3TreeViewLine(tls, _pView, str(6890), unsafe.Pointer(_zBinOp), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
+ _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(1)))
+ _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X5), uint8(i32(0)))
+ goto _81
}
-
- _sqlite3TreeViewLine(tls, _pView, str(5320), unsafe.Pointer(_zBinOp), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
- _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(1)))
- _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X5), uint8(i32(0)))
- goto _81
-
-_80:
- if _zUniOp == nil {
- goto _82
+ if _zUniOp != nil {
+ _sqlite3TreeViewLine(tls, _pView, str(6890), unsafe.Pointer(_zUniOp), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
+ _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(0)))
}
-
- _sqlite3TreeViewLine(tls, _pView, str(5320), unsafe.Pointer(_zUniOp), unsafe.Pointer((*int8)(unsafe.Pointer(&_zFlgs))))
- _sqlite3TreeViewExpr(tls, _pView, (*XExpr)(_pExpr.X4), uint8(i32(0)))
-_82:
_81:
_sqlite3TreeViewPop(tls, _pView)
+ _ = _zFlgs
}
-var _sqlite3SelectØ00__func__Ø000 [14]int8 // -
+var _sqlite3SelectØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SelectØ00__func__Ø000[0], str(49060), 14)
+ crt.Xstrncpy(nil, &_sqlite3SelectØ00__func__Ø000[0], str(47623), 14)
}
-func _sqlite3SelectPrep(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pOuterNC *XNameContext) { // sqlite3.c:121234:1
- var _db *Xsqlite3 // sqlite3.c:121239:11
- _ = _db
+// This routine sets up a SELECT statement for processing. The
+// following is accomplished:
+//
+// * VDBE Cursor numbers are assigned to all FROM-clause terms.
+// * Ephemeral Table objects are created for all FROM-clause subqueries.
+// * ON and USING clauses are shifted into WHERE statements
+// * Wildcards "*" and "TABLE.*" in result sets are expanded.
+// * Identifiers in expression are matched to tables.
+//
+// This routine acts recursively on all subqueries within the SELECT.
+func _sqlite3SelectPrep(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pOuterNC *XNameContext) {
+ var _db *Xsqlite3
if func() int32 {
if _p == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121240), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectPrepØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121240), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectPrepØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _2
+ }() != 0 {
+ return
}
- return
-
-_2:
_db = (*Xsqlite3)(_pParse.X0)
- if (_db.X17) == 0 {
- goto _3
+ if (_db.X17) != 0 {
+ return
}
- return
-
-_3:
- if ((_p.X3) & uint32(i32(128))) == 0 {
- goto _4
+ if ((_p.X3) & uint32(i32(128))) != 0 {
+ return
}
- return
-
-_4:
_sqlite3SelectExpand(tls, _pParse, _p)
- if (_pParse.X16) == 0 && (_db.X17) == 0 {
- goto _6
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ return
}
- return
-
-_6:
_sqlite3ResolveSelectNames(tls, _pParse, _p, _pOuterNC)
- if (_pParse.X16) == 0 && (_db.X17) == 0 {
- goto _8
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ return
}
- return
-
-_8:
_sqlite3SelectAddTypeInfo(tls, _pParse, _p)
}
-var _sqlite3SelectPrepØ00__func__Ø000 [18]int8 // -
+var _sqlite3SelectPrepØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SelectPrepØ00__func__Ø000[0], str(49076), 18)
+ crt.Xstrncpy(nil, &_sqlite3SelectPrepØ00__func__Ø000[0], str(47637), 18)
}
-func _sqlite3SelectExpand(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) { // sqlite3.c:121147:1
- var _w XWalker // sqlite3.c:121148:10
- _ = _w
+// This routine "expands" a SELECT statement and all of its subqueries.
+// For additional information on what it means to "expand" a SELECT
+// statement, see the comment on the selectExpand worker callback above.
+//
+// Expanding a SELECT statement is the first step in processing a
+// SELECT statement. The SELECT statement must be expanded before
+// name resolution is performed.
+//
+// If anything goes wrong, an error message is written into pParse.
+// The calling function can detect the problem by looking at pParse->nErr
+// and/or pParse->db->mallocFailed.
+func _sqlite3SelectExpand(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) {
+ var _w XWalker
crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
*(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _sqlite3ExprWalkNoop
*(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = _pParse
- if (_pParse.X10) == 0 {
- goto _0
+ if (_pParse.X10) != 0 {
+ *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _convertCompoundSelectToSubquery
+ _sqlite3WalkSelect(tls, &_w, _pSelect)
}
-
- *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _convertCompoundSelectToSubquery
- _sqlite3WalkSelect(tls, &_w, _pSelect)
-_0:
*(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _selectExpander
*(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(12 /* X3 */))))) = _selectPopWith
_sqlite3WalkSelect(tls, &_w, _pSelect)
+ _ = _w
}
-func _sqlite3ExprWalkNoop(tls *crt.TLS, _NotUsed *XWalker, _NotUsed2 *XExpr) (r0 int32) { // sqlite3.c:121129:1
+// No-op routine for the parse-tree walker.
+//
+// When this routine is the Walker.xExprCallback then expression trees
+// are walked without any actions being taken at each node. Presumably,
+// when this routine is used for Walker.xExprCallback then
+// Walker.xSelectCallback is set to do something useful for every
+// subquery in the parser tree.
+func _sqlite3ExprWalkNoop(tls *crt.TLS, _NotUsed *XWalker, _NotUsed2 *XExpr) (r0 int32) {
_ = _NotUsed2
return i32(0)
}
-func _convertCompoundSelectToSubquery(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) { // sqlite3.c:120558:1
- var _i int32 // sqlite3.c:120559:7
- _ = _i
- var _pNew *XSelect // sqlite3.c:120560:10
- _ = _pNew
- var _pX *XSelect // sqlite3.c:120561:10
- _ = _pX
- var _db *Xsqlite3 // sqlite3.c:120562:11
- _ = _db
- var _a *TExprList_item // sqlite3.c:120563:24
- _ = _a
- var _pNewSrc *XSrcList // sqlite3.c:120564:11
- _ = _pNewSrc
- var _pParse *XParse // sqlite3.c:120565:9
- _ = _pParse
- var _dummy XToken // sqlite3.c:120566:9
- _ = _dummy
- if (*XSelect)(_p.X13) != nil {
- goto _0
+// Detect compound SELECT statements that use an ORDER BY clause with
+// an alternative collating sequence.
+//
+// SELECT ... FROM t1 EXCEPT SELECT ... FROM t2 ORDER BY .. COLLATE ...
+//
+// These are rewritten as a subquery:
+//
+// SELECT * FROM (SELECT ... FROM t1 EXCEPT SELECT ... FROM t2)
+// ORDER BY ... COLLATE ...
+//
+// This transformation is necessary because the multiSelectOrderBy() routine
+// above that generates the code for a compound SELECT with an ORDER BY clause
+// uses a merge algorithm that requires the same collating sequence on the
+// result columns as on the ORDER BY clause. See ticket
+// http://www.sqlite.org/src/info/6709574d2a
+//
+// This transformation is only needed for EXCEPT, INTERSECT, and UNION.
+// The UNION ALL operator works fine with multiSelectOrderBy() even when
+// there are COLLATE terms in the ORDER BY.
+func _convertCompoundSelectToSubquery(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) {
+ var _i int32
+ var _dummy XToken
+ var _db *Xsqlite3
+ var _pNewSrc *XSrcList
+ var _a *TExprList_item
+ var _pNew, _pX *XSelect
+ var _pParse *XParse
+ if (*XSelect)(_p.X13) == nil {
+ return i32(0)
}
- return i32(0)
-
-_0:
- if (*XExprList)(_p.X12) != nil {
- goto _1
+ if (*XExprList)(_p.X12) == nil {
+ return i32(0)
}
- return i32(0)
-
-_1:
_pX = _p
_2:
if _pX == nil || int32(_pX.X1) != i32(116) && int32(_pX.X1) != i32(119) {
goto _7
}
-
_pX = (*XSelect)(_pX.X13)
goto _2
-
_7:
- if _pX != nil {
- goto _8
+ if _pX == nil {
+ return i32(0)
}
- return i32(0)
-
-_8:
_a = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X12) + uintptr(8 /* X2 */)))))
_i = ((*XExprList)(_p.X12).X0) - i32(1)
_9:
if _i < i32(0) {
goto _12
}
-
- if (((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 20*uintptr(_i))).X0).X2) & uint32(i32(256))) == 0 {
- goto _13
+ if (((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 20*uintptr(_i))).X0).X2) & uint32(i32(256))) != 0 {
+ goto _12
}
-
- goto _12
-
-_13:
_i -= 1
goto _9
-
_12:
- if _i >= i32(0) {
- goto _14
+ if _i < i32(0) {
+ return i32(0)
}
- return i32(0)
-
-_14:
_pParse = (*XParse)(_pWalker.X0)
_db = (*Xsqlite3)(_pParse.X0)
_pNew = (*XSelect)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80))))
- if _pNew != nil {
- goto _15
+ if _pNew == nil {
+ return i32(2)
}
- return i32(2)
-
-_15:
crt.Xmemset(tls, (unsafe.Pointer)(&_dummy), i32(0), u32(8))
_pNewSrc = _sqlite3SrcListAppendFromTerm(tls, _pParse, nil, nil, nil, &_dummy, _pNew, nil, nil)
- if _pNewSrc != nil {
- goto _16
+ if _pNewSrc == nil {
+ return i32(2)
}
- return i32(2)
-
-_16:
*_pNew = *_p
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))))) = _pNewSrc
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _sqlite3ExprListAppend(tls, _pParse, nil, _sqlite3Expr(tls, _db, i32(161), nil))
@@ -37705,7 +34404,7 @@ _16:
}
func() {
if ((_p.X3) & uint32(i32(65536))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120599), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertCompoundSelectToSubqueryØ00__func__Ø000))), unsafe.Pointer(str(49096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120599), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertCompoundSelectToSubqueryØ00__func__Ø000))), unsafe.Pointer(str(47655)))
crt.X__builtin_abort(tls)
}
}()
@@ -37716,7 +34415,7 @@ _16:
}
func() {
if (*XSelect)(_pNew.X13) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120601), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertCompoundSelectToSubqueryØ00__func__Ø000))), unsafe.Pointer(str(49128)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120601), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertCompoundSelectToSubqueryØ00__func__Ø000))), unsafe.Pointer(str(47687)))
crt.X__builtin_abort(tls)
}
}()
@@ -37724,57 +34423,61 @@ _16:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(68 /* X15 */))))) = nil
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(72 /* X16 */))))) = nil
return i32(0)
-}
-func _sqlite3SrcListAppendFromTerm(tls *crt.TLS, _pParse *XParse, _p *XSrcList, _pTable *XToken, _pDatabase *XToken, _pAlias *XToken, _pSubquery *XSelect, _pOn *XExpr, _pUsing *XIdList) (r0 *XSrcList) { // sqlite3.c:103531:1
- var _pItem *TSrcList_item // sqlite3.c:103541:23
- _ = _pItem
- var _db *Xsqlite3 // sqlite3.c:103542:11
- _ = _db
+ _ = _dummy
+ panic(0)
+}
+
+// This routine is called by the parser to add a new term to the
+// end of a growing FROM clause. The "p" parameter is the part of
+// the FROM clause that has already been constructed. "p" is NULL
+// if this is the first term of the FROM clause. pTable and pDatabase
+// are the name of the table and database named in the FROM clause term.
+// pDatabase is NULL if the database name qualifier is missing - the
+// usual case. If the term has an alias, then pAlias points to the
+// alias token. If the term is a subquery, then pSubquery is the
+// SELECT statement that the subquery encodes. The pTable and
+// pDatabase parameters are NULL for subqueries. The pOn and pUsing
+// parameters are the content of the ON and USING clauses.
+//
+// Return a new SrcList which encodes is the FROM with the new
+// term added.
+func _sqlite3SrcListAppendFromTerm(tls *crt.TLS, _pParse *XParse, _p *XSrcList, _pTable *XToken, _pDatabase *XToken, _pAlias *XToken, _pSubquery *XSelect, _pOn *XExpr, _pUsing *XIdList) (r0 *XSrcList) {
+ var _db *Xsqlite3
+ var _pItem *TSrcList_item
_db = (*Xsqlite3)(_pParse.X0)
- if _p != nil || _pOn == nil && _pUsing == nil {
- goto _2
+ if (_p == nil) && ((_pOn != nil) || (_pUsing != nil)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(47703), unsafe.Pointer(func() *int8 {
+ if _pOn != nil {
+ return str(25623)
+ }
+ return str(25739)
+ }()))
+ goto _append_from_error
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(49144), unsafe.Pointer(func() *int8 {
- if _pOn != nil {
- return str(25536)
- }
- return str(25676)
- }()))
- goto _append_from_error
-
-_2:
_p = _sqlite3SrcListAppend(tls, _db, _p, _pTable, _pDatabase)
- if _p != nil && func() int32 {
+ if (_p == nil) || func() int32 {
if (_p.X0) == i32(0) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103550), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendFromTermØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103550), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendFromTermØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _8
+ }() != 0 {
+ goto _append_from_error
}
-
- goto _append_from_error
-
-_8:
_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 68*uintptr((_p.X0)-i32(1))))
func() {
if _pAlias == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103554), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendFromTermØ00__func__Ø000))), unsafe.Pointer(str(49180)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103554), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendFromTermØ00__func__Ø000))), unsafe.Pointer(str(47739)))
crt.X__builtin_abort(tls)
}
}()
- if (_pAlias.X1) == 0 {
- goto _11
+ if (_pAlias.X1) != 0 {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(12 /* X3 */))) = _sqlite3NameFromToken(tls, _db, _pAlias)
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(12 /* X3 */))) = _sqlite3NameFromToken(tls, _db, _pAlias)
-_11:
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(20 /* X5 */))))) = _pSubquery
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(44 /* X12 */))))) = _pOn
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(48 /* X13 */))))) = _pUsing
@@ -37783,7 +34486,7 @@ _11:
_append_from_error:
func() {
if _p != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103564), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendFromTermØ00__func__Ø000))), unsafe.Pointer(str(49192)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103564), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendFromTermØ00__func__Ø000))), unsafe.Pointer(str(47749)))
crt.X__builtin_abort(tls)
}
}()
@@ -37793,129 +34496,150 @@ _append_from_error:
return nil
}
-func _sqlite3SrcListAppend(tls *crt.TLS, _db *Xsqlite3, _pList *XSrcList, _pTable *XToken, _pDatabase *XToken) (r0 *XSrcList) { // sqlite3.c:103439:1
- var _pItem *TSrcList_item // sqlite3.c:103445:23
- _ = _pItem
- var _5_pTemp *XToken // sqlite3.c:103467:11
- _ = _5_pTemp
+// Append a new table name to the given SrcList. Create a new SrcList if
+// need be. A new entry is created in the SrcList even if pTable is NULL.
+//
+// A SrcList is returned, or NULL if there is an OOM error. The returned
+// SrcList might be the same as the SrcList that was input or it might be
+// a new one. If an OOM error does occurs, then the prior value of pList
+// that is input to this routine is automatically freed.
+//
+// If pDatabase is not null, it means that the table has an optional
+// database name prefix. Like this: "database.table". The pDatabase
+// points to the table name and the pTable points to the database name.
+// The SrcList.a[].zName field is filled with the table name which might
+// come from pTable (if pDatabase is NULL) or from pDatabase.
+// SrcList.a[].zDatabase is filled with the database name from pTable,
+// or with NULL if no database is specified.
+//
+// In other words, if call like this:
+//
+// sqlite3SrcListAppend(D,A,B,0);
+//
+// Then B is a table name and the database name is unspecified. If called
+// like this:
+//
+// sqlite3SrcListAppend(D,A,B,C);
+//
+// Then C is the table name and B is the database name. If C is defined
+// then so is B. In other words, we never have a case where:
+//
+// sqlite3SrcListAppend(D,A,0,C);
+//
+// Both pTable and pDatabase are assumed to be quoted. They are dequoted
+// before being added to the SrcList.
+func _sqlite3SrcListAppend(tls *crt.TLS, _db *Xsqlite3, _pList *XSrcList, _pTable *XToken, _pDatabase *XToken) (r0 *XSrcList) {
+ var _5_pTemp *XToken
+ var _pItem *TSrcList_item
func() {
if _pDatabase != nil && _pTable == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendØ00__func__Ø000))), unsafe.Pointer(str(49200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendØ00__func__Ø000))), unsafe.Pointer(str(47754)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAppendØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
if _pList != nil {
goto _5
}
-
_pList = (*XSrcList)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(76))))
- if _pList != nil {
- goto _6
+ if _pList == nil {
+ return nil
}
- return nil
-
-_6:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(4 /* X1 */))) = uint32(i32(1))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(0 /* X0 */))) = i32(1)
crt.Xmemset(tls, (unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0))))), i32(0), u32(68))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(40 /* X11 */))) = i32(-1)
goto _7
-
_5:
_pList = _sqlite3SrcListEnlarge(tls, _db, _pList, i32(1), _pList.X0)
_7:
- if (_db.X17) == 0 {
- goto _8
+ if (_db.X17) != 0 {
+ _sqlite3SrcListDelete(tls, _db, _pList)
+ return nil
}
-
- _sqlite3SrcListDelete(tls, _db, _pList)
- return nil
-
-_8:
_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 68*uintptr((_pList.X0)-i32(1))))
- if _pDatabase == nil || (_pDatabase.X0) != nil {
- goto _10
+ if (_pDatabase != nil) && ((_pDatabase.X0) == nil) {
+ _pDatabase = nil
}
-
- _pDatabase = nil
-_10:
- if _pDatabase == nil {
- goto _11
+ if _pDatabase != nil {
+ _5_pTemp = _pDatabase
+ _pDatabase = _pTable
+ _pTable = _5_pTemp
}
-
- _5_pTemp = _pDatabase
- _pDatabase = _pTable
- _pTable = _5_pTemp
-_11:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(8 /* X2 */))) = _sqlite3NameFromToken(tls, _db, _pTable)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(4 /* X1 */))) = _sqlite3NameFromToken(tls, _db, _pDatabase)
return _pList
}
-var _sqlite3SrcListAppendØ00__func__Ø000 [21]int8 // -
+var _sqlite3SrcListAppendØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SrcListAppendØ00__func__Ø000[0], str(49228), 21)
+ crt.Xstrncpy(nil, &_sqlite3SrcListAppendØ00__func__Ø000[0], str(47780), 21)
}
-func _sqlite3SrcListEnlarge(tls *crt.TLS, _db *Xsqlite3, _pSrc *XSrcList, _nExtra int32, _iStart int32) (r0 *XSrcList) { // sqlite3.c:103357:1
- var _i int32 // sqlite3.c:103363:7
- _ = _i
- var _1_pNew *XSrcList // sqlite3.c:103373:13
- _ = _1_pNew
- var _1_nAlloc int32 // sqlite3.c:103374:9
- _ = _1_nAlloc
- var _1_nGot int32 // sqlite3.c:103375:9
- _ = _1_nGot
+// Expand the space allocated for the given SrcList object by
+// creating nExtra new slots beginning at iStart. iStart is zero based.
+// New slots are zeroed.
+//
+// For example, suppose a SrcList initially contains two entries: A,B.
+// To append 3 new entries onto the end, do this:
+//
+// sqlite3SrcListEnlarge(db, pSrclist, 3, 2);
+//
+// After the call above it would contain: A, B, nil, nil, nil.
+// If the iStart argument had been 1 instead of 2, then the result
+// would have been: A, nil, nil, nil, B. To prepend the new slots,
+// the iStart value would be 0. The result then would
+// be: nil, nil, nil, A, B.
+//
+// If a memory allocation fails the SrcList is unchanged. The
+// db->mallocFailed flag will be set to true.
+func _sqlite3SrcListEnlarge(tls *crt.TLS, _db *Xsqlite3, _pSrc *XSrcList, _nExtra int32, _iStart int32) (r0 *XSrcList) {
+ var _i, _1_nAlloc, _1_nGot int32
+ var _1_pNew *XSrcList
func() {
if _iStart < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103366), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(49252)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103366), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(47801)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nExtra < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103367), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(49264)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103367), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(47811)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pSrc == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103368), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(49276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103368), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(47821)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iStart > (_pSrc.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103369), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(49284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103369), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(47829)))
crt.X__builtin_abort(tls)
}
}()
if (uint32(_pSrc.X0) + uint32(_nExtra)) <= (_pSrc.X1) {
goto _8
}
-
_1_nAlloc = ((_pSrc.X0) * i32(2)) + _nExtra
_1_pNew = (*XSrcList)(_sqlite3DbRealloc(tls, _db, (unsafe.Pointer)(_pSrc), uint64(u32(76)+(uint32(_1_nAlloc-i32(1))*u32(68)))))
- if _1_pNew != nil {
- goto _9
+ if _1_pNew == nil {
+ func() {
+ if (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103379), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(47848)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _pSrc
}
-
- func() {
- if (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103379), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListEnlargeØ00__func__Ø000))), unsafe.Pointer(str(49304)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _pSrc
-
-_9:
_pSrc = _1_pNew
_1_nGot = int32(((uint32(_sqlite3DbMallocSize(tls, _db, (unsafe.Pointer)(_1_pNew))) - u32(76)) / u32(68)) + uint32(i32(1)))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc)) + uintptr(4 /* X1 */))) = uint32(_1_nGot)
@@ -37925,11 +34649,9 @@ _12:
if _i < _iStart {
goto _15
}
-
*(*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i+_nExtra))) = *(*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
_i -= 1
goto _12
-
_15:
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc)) + uintptr(0 /* X0 */)))
@@ -37942,87 +34664,83 @@ _16:
if _i >= (_iStart + _nExtra) {
goto _19
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i))))) + uintptr(40 /* X11 */))) = i32(-1)
_i += 1
goto _16
-
_19:
return _pSrc
}
-var _sqlite3SrcListEnlargeØ00__func__Ø000 [22]int8 // -
+var _sqlite3SrcListEnlargeØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SrcListEnlargeØ00__func__Ø000[0], str(49324), 22)
+ crt.Xstrncpy(nil, &_sqlite3SrcListEnlargeØ00__func__Ø000[0], str(47865), 22)
}
-func _sqlite3NameFromToken(tls *crt.TLS, _db *Xsqlite3, _pName *XToken) (r0 *int8) { // sqlite3.c:100380:1
- var _zName *int8 // sqlite3.c:100381:8
- _ = _zName
- if _pName == nil {
- goto _0
+// Given a token, return a string that consists of the text of that
+// token. Space to hold the returned string
+// is obtained from sqliteMalloc() and must be freed by the calling
+// function.
+//
+// Any quotation marks (ex: "name", 'name', [name], or `name`) that
+// surround the body of the token are removed.
+//
+// Tokens are often just pointers into the original SQL text and so
+// are not \000 terminated and are not persistent. The returned string
+// is \000 terminated and is persistent.
+func _sqlite3NameFromToken(tls *crt.TLS, _db *Xsqlite3, _pName *XToken) (r0 *int8) {
+ var _zName *int8
+ if _pName != nil {
+ _zName = _sqlite3DbStrNDup(tls, _db, _pName.X0, uint64(_pName.X1))
+ _sqlite3Dequote(tls, _zName)
+ goto _1
}
-
- _zName = _sqlite3DbStrNDup(tls, _db, _pName.X0, uint64(_pName.X1))
- _sqlite3Dequote(tls, _zName)
- goto _1
-
-_0:
_zName = nil
_1:
return _zName
}
-var _sqlite3SrcListAppendFromTermØ00__func__Ø000 [29]int8 // -
+var _sqlite3SrcListAppendFromTermØ00__func__Ø000 [29]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SrcListAppendFromTermØ00__func__Ø000[0], str(49348), 29)
+ crt.Xstrncpy(nil, &_sqlite3SrcListAppendFromTermØ00__func__Ø000[0], str(47887), 29)
}
-func _sqlite3ExprListAppend(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pExpr *XExpr) (r0 *XExprList) { // sqlite3.c:92363:1
- var _pItem *TExprList_item // sqlite3.c:92368:24
- _ = _pItem
- var _db *Xsqlite3 // sqlite3.c:92369:11
- _ = _db
- var _3_pNew *XExprList // sqlite3.c:92379:14
- _ = _3_pNew
+// Add a new element to the end of an expression list. If pList is
+// initially NULL, then create a new expression list.
+//
+// If a memory allocation error occurs, the entire list is freed and
+// NULL is returned. If non-NULL is returned, then it is guaranteed
+// that the new entry was successfully appended.
+func _sqlite3ExprListAppend(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pExpr *XExpr) (r0 *XExprList) {
+ var _db *Xsqlite3
+ var _3_pNew *XExprList
+ var _pItem *TExprList_item
_db = (*Xsqlite3)(_pParse.X0)
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92370), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListAppendØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92370), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListAppendØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
if _pList != nil {
goto _2
}
-
_pList = (*XExprList)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(28))))
- if _pList != nil {
- goto _3
+ if _pList == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_3:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(0 /* X0 */))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(4 /* X1 */))) = i32(1)
goto _4
-
_2:
if (_pList.X0) != (_pList.X1) {
goto _5
}
-
_3_pNew = (*XExprList)(_sqlite3DbRealloc(tls, _db, (unsafe.Pointer)(_pList), uint64(u32(28)+(uint32((i32(2)*(_pList.X1))-i32(1))*u32(20)))))
- if _3_pNew != nil {
- goto _6
+ if _3_pNew == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_6:
_pList = _3_pNew
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(4 /* X1 */)))
@@ -38042,15 +34760,16 @@ _no_mem:
return nil
}
-var _sqlite3ExprListAppendØ00__func__Ø000 [22]int8 // -
+var _sqlite3ExprListAppendØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprListAppendØ00__func__Ø000[0], str(49380), 22)
+ crt.Xstrncpy(nil, &_sqlite3ExprListAppendØ00__func__Ø000[0], str(47916), 22)
}
-func _sqlite3Expr(tls *crt.TLS, _db *Xsqlite3, _op int32, _zToken *int8) (r0 *XExpr) { // sqlite3.c:91669:1
- var _x XToken // sqlite3.c:91674:9
- _ = _x
+// Allocate a new expression node from a zero-terminated token that has
+// already been dequoted.
+func _sqlite3Expr(tls *crt.TLS, _db *Xsqlite3, _op int32, _zToken *int8) (r0 *XExpr) {
+ var _x XToken
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(0 /* X0 */))) = _zToken
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(4 /* X1 */))) = uint32(func() int32 {
if _zToken != nil {
@@ -38059,94 +34778,94 @@ func _sqlite3Expr(tls *crt.TLS, _db *Xsqlite3, _op int32, _zToken *int8) (r0 *XE
return i32(0)
}())
return _sqlite3ExprAlloc(tls, _db, _op, &_x, i32(0))
-}
-func _sqlite3ExprAlloc(tls *crt.TLS, _db *Xsqlite3, _op int32, _pToken *XToken, _dequote int32) (r0 *XExpr) { // sqlite3.c:91620:1
- var _pNew *XExpr // sqlite3.c:91626:8
- _ = _pNew
- var _nExtra int32 // sqlite3.c:91627:7
- _ = _nExtra
- var _iValue int32 // sqlite3.c:91628:7
- _ = _iValue
+ _ = _x
+ panic(0)
+}
+
+// This routine is the core allocator for Expr nodes.
+//
+// Construct a new expression node and return a pointer to it. Memory
+// for this node and for the pToken argument is a single allocation
+// obtained from sqlite3DbMalloc(). The calling function
+// is responsible for making sure the node eventually gets freed.
+//
+// If dequote is true, then the token (if it exists) is dequoted.
+// If dequote is false, no dequoting is performed. The deQuote
+// parameter is ignored if pToken is NULL or if the token does not
+// appear to be quoted. If the quotes were of the form "..." (double-quotes)
+// then the EP_DblQuoted flag is set on the expression node.
+//
+// Special case: If op==TK_INTEGER and pToken points to a string that
+// can be translated into a 32-bit integer, then the token is not
+// stored in u.zToken. Instead, the integer values is written
+// into u.iValue and the EP_IntValue flag is set. No extra storage
+// is allocated to hold the integer text and the dequote flag is ignored.
+func _sqlite3ExprAlloc(tls *crt.TLS, _db *Xsqlite3, _op int32, _pToken *XToken, _dequote int32) (r0 *XExpr) {
+ var _nExtra, _iValue int32
+ var _pNew *XExpr
_nExtra = i32(0)
_iValue = i32(0)
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91630), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAllocØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91630), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAllocØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
if _pToken == nil {
goto _2
}
-
- if _op == i32(134) && (_pToken.X0) != nil && _sqlite3GetInt32(tls, _pToken.X0, &_iValue) != i32(0) {
- goto _5
+ if ((_op != i32(134)) || ((_pToken.X0) == nil)) || (_sqlite3GetInt32(tls, _pToken.X0, &_iValue) == i32(0)) {
+ _nExtra = int32((_pToken.X1) + uint32(i32(1)))
+ func() {
+ if _iValue < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91635), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAllocØ00__func__Ø000))), unsafe.Pointer(str(47938)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _nExtra = int32((_pToken.X1) + uint32(i32(1)))
- func() {
- if _iValue < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91635), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAllocØ00__func__Ø000))), unsafe.Pointer(str(49404)))
- crt.X__builtin_abort(tls)
- }
- }()
-_5:
_2:
_pNew = (*XExpr)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(48)+uint32(_nExtra))))
if _pNew == nil {
goto _8
}
-
crt.Xmemset(tls, (unsafe.Pointer)(_pNew), i32(0), u32(48))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = uint8(_op)
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(34 /* X10 */))) = int16(i32(-1))
if _pToken == nil {
goto _9
}
-
- if _nExtra != i32(0) {
- goto _10
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1024))
- sink5 = *p
+ if _nExtra == i32(0) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1024))
+ sink5 = *p
+ }
+ *(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))) = _iValue
+ goto _11
}
- *(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))) = _iValue
- goto _11
-
-_10:
- *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))) = (*int8)(unsafe.Pointer((*XExpr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + 48*uintptr(i32(1))))))
+ *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))) = (*int8)(unsafe.Pointer((*XExpr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + 48*uintptr(i32(1))))))
func() {
if (_pToken.X0) == nil && (_pToken.X1) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAllocØ00__func__Ø000))), unsafe.Pointer(str(49416)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAllocØ00__func__Ø000))), unsafe.Pointer(str(47948)))
crt.X__builtin_abort(tls)
}
}()
- if (_pToken.X1) == 0 {
- goto _15
+ if (_pToken.X1) != 0 {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */)))))), (unsafe.Pointer)(_pToken.X0), _pToken.X1)
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */)))))), (unsafe.Pointer)(_pToken.X0), _pToken.X1)
-_15:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_pToken.X1))) = int8(i32(0))
- if _dequote == 0 || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0)))))))))&i32(128)) == 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_pToken.X1))) = int8(i32(0))
+ if _dequote == 0 || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0)))))))))&i32(128)) == 0 {
goto _17
}
-
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(34) {
- goto _18
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(64))
- sink5 = *p
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) == i32(34) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(64))
+ sink5 = *p
+ }
}
-_18:
- _sqlite3Dequote(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))
+ _sqlite3Dequote(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))))))
_17:
_11:
_9:
@@ -38155,166 +34874,138 @@ _8:
return _pNew
}
-var _sqlite3ExprAllocØ00__func__Ø000 [17]int8 // -
+var _sqlite3ExprAllocØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprAllocØ00__func__Ø000[0], str(49448), 17)
+ crt.Xstrncpy(nil, &_sqlite3ExprAllocØ00__func__Ø000[0], str(47977), 17)
}
-var _convertCompoundSelectToSubqueryØ00__func__Ø000 [32]int8 // -
+var _convertCompoundSelectToSubqueryØ00__func__Ø000 [32]int8
func init() {
- crt.Xstrncpy(nil, &_convertCompoundSelectToSubqueryØ00__func__Ø000[0], str(49468), 32)
+ crt.Xstrncpy(nil, &_convertCompoundSelectToSubqueryØ00__func__Ø000[0], str(47994), 32)
}
-func _sqlite3WalkSelect(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) { // sqlite3.c:89322:1
- var _rc int32 // sqlite3.c:89323:7
- _ = _rc
- if _p != nil && (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
+// Call sqlite3WalkExpr() for every expression in Select statement p.
+// Invoke sqlite3WalkSelect() for subqueries in the FROM clause and
+// on the compound select chain, p->pPrior.
+//
+// If it is not NULL, the xSelectCallback() callback is invoked before
+// the walk of the expressions and FROM clause. The xSelectCallback2()
+// method, if it is not NULL, is invoked following the walk of the
+// expressions and FROM clause.
+//
+// Return WRC_Continue under normal conditions. Return WRC_Abort if
+// there is an abort request.
+//
+// If the Walker does not have an xSelectCallback() then this routine
+// is a no-op returning WRC_Continue.
+func _sqlite3WalkSelect(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) {
+ var _rc int32
+ if (_p == nil) || ((*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XWalker, *XSelect) int32
}{(*(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32
- }{(_pWalker.X2)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(_pWalker.X2)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XWalker, *XSelect) int32
- }{nil})) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{nil}))) && (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XWalker, *XSelect)
}{(*(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer)
- }{(_pWalker.X3)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(_pWalker.X3)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XWalker, *XSelect)
- }{nil}))) {
- goto _2
+ }{nil})))) {
+ return i32(0)
}
- return i32(0)
-
-_2:
_rc = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(16 /* X4 */))) += 1
_3:
if _p == nil {
goto _4
}
-
if (*(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32
}{(_pWalker.X2)}))) == nil {
goto _5
}
-
_rc = (*(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32
}{(_pWalker.X2)})))(tls, _pWalker, _p)
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ goto _4
}
-
- goto _4
-
-_6:
_5:
- if _sqlite3WalkSelectExpr(tls, _pWalker, _p) == 0 && _sqlite3WalkSelectFrom(tls, _pWalker, _p) == 0 {
- goto _8
+ if _sqlite3WalkSelectExpr(tls, _pWalker, _p) != 0 || _sqlite3WalkSelectFrom(tls, _pWalker, _p) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(16 /* X4 */))) -= 1
+ return i32(2)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(16 /* X4 */))) -= 1
- return i32(2)
-
-_8:
if (*(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer)
- }{(_pWalker.X3)}))) == nil {
- goto _9
+ }{(_pWalker.X3)}))) != nil {
+ (*(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer)
+ }{(_pWalker.X3)})))(tls, _pWalker, _p)
}
-
- (*(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer)
- }{(_pWalker.X3)})))(tls, _pWalker, _p)
-_9:
_p = (*XSelect)(_p.X13)
goto _3
-
_4:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(16 /* X4 */))) -= 1
return _rc & i32(2)
}
-func _sqlite3WalkSelectExpr(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) { // sqlite3.c:89267:1
- if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(_p.X0)) == 0 {
- goto _0
+// Walk all expressions associated with SELECT statement p. Do
+// not invoke the SELECT callback on p, but do (of course) invoke
+// any expr callbacks and SELECT callbacks that come from subqueries.
+// Return WRC_Abort or WRC_Continue.
+func _sqlite3WalkSelectExpr(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) {
+ if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(_p.X0)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_0:
- if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X9)) == 0 {
- goto _1
+ if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X9)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_1:
- if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(_p.X10)) == 0 {
- goto _2
+ if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(_p.X10)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_2:
- if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X11)) == 0 {
- goto _3
+ if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X11)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_3:
- if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(_p.X12)) == 0 {
- goto _4
+ if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(_p.X12)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_4:
- if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X15)) == 0 {
- goto _5
+ if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X15)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_5:
- if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X16)) == 0 {
- goto _6
+ if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_p.X16)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_6:
return i32(0)
}
-func _sqlite3WalkExprList(tls *crt.TLS, _pWalker *XWalker, _p *XExprList) (r0 int32) { // sqlite3.c:89250:1
- var _i int32 // sqlite3.c:89251:7
- _ = _i
- var _pItem *TExprList_item // sqlite3.c:89252:24
- _ = _pItem
+// Call sqlite3WalkExpr() for every expression in list p or until
+// an abort request is seen.
+func _sqlite3WalkExprList(tls *crt.TLS, _pWalker *XWalker, _p *XExprList) (r0 int32) {
+ var _i int32
+ var _pItem *TExprList_item
if _p == nil {
goto _0
}
-
*func() **TExprList_item { _i = _p.X0; return &_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */)))))
_1:
if _i <= i32(0) {
goto _4
}
-
- if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_pItem.X0)) == 0 {
- goto _5
+ if _sqlite3WalkExpr(tls, _pWalker, (*XExpr)(_pItem.X0)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_5:
*(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i -= 1; return &_pItem }())) += uintptr(20)
goto _1
-
_4:
_0:
- r0 = i32(0)
- return
+ return i32(0)
}
-func _sqlite3WalkExpr(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:89242:1
+func _sqlite3WalkExpr(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
return func() int32 {
if _pExpr != nil {
return _walkExpr(tls, _pWalker, _pExpr)
@@ -38323,178 +35014,139 @@ func _sqlite3WalkExpr(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32)
}()
}
-func _walkExpr(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:89225:1
- var _rc int32 // sqlite3.c:89226:7
- _ = _rc
+// Walk an expression tree. Invoke the callback once for each node
+// of the expression, while descending. (In other words, the callback
+// is invoked before visiting children.)
+//
+// The return value from the callback should be one of the WRC_*
+// constants to specify how to proceed with the walk.
+//
+// WRC_Continue Continue descending down the tree.
+//
+// WRC_Prune Do not descend into child nodes, but allow
+// the walk to continue with sibling nodes.
+//
+// WRC_Abort Do no more callbacks. Unwind the stack and
+// return from the top-level walk call.
+//
+// The return value from this routine is WRC_Abort to abandon the tree walk
+// and WRC_Continue to continue.
+func _walkExpr(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ var _rc int32
_rc = (*(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32
}{(_pWalker.X1)})))(tls, _pWalker, _pExpr)
- if _rc == 0 && ((_pExpr.X2)&uint32(i32(8404992))) == uint32(i32(0)) {
- goto _1
+ if _rc != 0 || (((_pExpr.X2) & uint32(i32(8404992))) != uint32(i32(0))) {
+ return _rc & i32(2)
}
- return _rc & i32(2)
-
-_1:
- if (*XExpr)(_pExpr.X4) == nil || _walkExpr(tls, _pWalker, (*XExpr)(_pExpr.X4)) == 0 {
- goto _3
+ if ((*XExpr)(_pExpr.X4) != nil) && _walkExpr(tls, _pWalker, (*XExpr)(_pExpr.X4)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_3:
- if (*XExpr)(_pExpr.X5) == nil || _walkExpr(tls, _pWalker, (*XExpr)(_pExpr.X5)) == 0 {
- goto _5
+ if ((*XExpr)(_pExpr.X5) != nil) && _walkExpr(tls, _pWalker, (*XExpr)(_pExpr.X5)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_5:
if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
goto _6
}
-
- if _sqlite3WalkSelect(tls, _pWalker, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) == 0 {
- goto _7
+ if _sqlite3WalkSelect(tls, _pWalker, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_7:
goto _8
-
_6:
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) == nil {
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) == nil {
goto _9
}
-
- if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) == 0 {
- goto _10
+ if _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_10:
_9:
_8:
- r0 = i32(0)
- return
+ return i32(0)
}
-func _sqlite3WalkSelectFrom(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) { // sqlite3.c:89285:1
- var _pSrc *XSrcList // sqlite3.c:89286:11
- _ = _pSrc
- var _i int32 // sqlite3.c:89287:7
- _ = _i
- var _pItem *TSrcList_item // sqlite3.c:89288:23
- _ = _pItem
+// Walk the parse trees associated with all subqueries in the
+// FROM clause of SELECT statement p. Do not invoke the select
+// callback on p, but do invoke it on each FROM clause subquery
+// and on any subqueries further down in the tree. Return
+// WRC_Abort or WRC_Continue;
+func _sqlite3WalkSelectFrom(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) {
+ var _i int32
+ var _pSrc *XSrcList
+ var _pItem *TSrcList_item
_pSrc = (*XSrcList)(_p.X8)
if func() int32 {
if _pSrc != nil {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89291), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalkSelectFromØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89291), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalkSelectFromØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _2
}
-
*func() **TSrcList_item { _i = _pSrc.X0; return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc)) + uintptr(8 /* X2 */)))))
_3:
if _i <= i32(0) {
goto _6
}
-
- if _sqlite3WalkSelect(tls, _pWalker, (*XSelect)(_pItem.X5)) == 0 {
- goto _7
+ if _sqlite3WalkSelect(tls, _pWalker, (*XSelect)(_pItem.X5)) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_7:
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) == 0 || _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */))))))) == 0 {
- goto _9
+ if (((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0) && _sqlite3WalkExprList(tls, _pWalker, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */))))))) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_9:
*(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i -= 1; return &_pItem }())) += uintptr(68)
goto _3
-
_6:
_2:
- r0 = i32(0)
- return
-}
-
-var _sqlite3WalkSelectFromØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3WalkSelectFromØ00__func__Ø000[0], str(49500), 22)
+ return i32(0)
}
-func _selectExpander(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) { // sqlite3.c:120850:1
- var _pParse *XParse // sqlite3.c:120851:9
- _ = _pParse
- var _i int32 // sqlite3.c:120852:7
- _ = _i
- var _j int32 // sqlite3.c:120852:10
- _ = _j
- var _k int32 // sqlite3.c:120852:13
- _ = _k
- var _pTabList *XSrcList // sqlite3.c:120853:11
- _ = _pTabList
- var _pEList *XExprList // sqlite3.c:120854:12
- _ = _pEList
- var _pFrom *TSrcList_item // sqlite3.c:120855:23
- _ = _pFrom
- var _db *Xsqlite3 // sqlite3.c:120856:11
- _ = _db
- var _pE *XExpr // sqlite3.c:120857:8
- _ = _pE
- var _pRight *XExpr // sqlite3.c:120857:13
- _ = _pRight
- var _pExpr *XExpr // sqlite3.c:120857:22
- _ = _pExpr
- var _selFlags uint16 // sqlite3.c:120858:7
- _ = _selFlags
- var _4_pTab *XTable // sqlite3.c:120883:11
- _ = _4_pTab
- var _6_pSel *XSelect // sqlite3.c:120893:14
- _ = _6_pSel
- var _11_nCol int16 // sqlite3.c:120925:13
- _ = _11_nCol
- var _15_a *TExprList_item // sqlite3.c:120974:26
- _ = _15_a
- var _15_pNew *XExprList // sqlite3.c:120975:14
- _ = _15_pNew
- var _15_flags int32 // sqlite3.c:120976:9
- _ = _15_flags
- var _15_longNames int32 // sqlite3.c:120977:9
- _ = _15_longNames
- var _19_tableSeen int32 // sqlite3.c:121000:13
- _ = _19_tableSeen
- var _19_zTName *int8 // sqlite3.c:121001:14
- _ = _19_zTName
- var _21_pTab *XTable // sqlite3.c:121008:17
- _ = _21_pTab
- var _21_pSub *XSelect // sqlite3.c:121009:18
- _ = _21_pSub
- var _21_zTabName *int8 // sqlite3.c:121010:16
- _ = _21_zTabName
- var _21_zSchemaName *int8 // sqlite3.c:121011:22
- _ = _21_zSchemaName
- var _21_iDb int32 // sqlite3.c:121012:15
- _ = _21_iDb
- var _25_zName *int8 // sqlite3.c:121026:18
- _ = _25_zName
- var _25_zColname *int8 // sqlite3.c:121027:18
- _ = _25_zColname
- var _25_zToFree *int8 // sqlite3.c:121028:18
- _ = _25_zToFree
- var _25_sColname XToken // sqlite3.c:121029:19
- _ = _25_sColname
- var _31_pLeft *XExpr // sqlite3.c:121067:20
- _ = _31_pLeft
- var _35_pX *TExprList_item // sqlite3.c:121085:36
- _ = _35_pX
+var _sqlite3WalkSelectFromØ00__func__Ø000 [22]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WalkSelectFromØ00__func__Ø000[0], str(48026), 22)
+}
+
+// This routine is a Walker callback for "expanding" a SELECT statement.
+// "Expanding" means to do the following:
+//
+// (1) Make sure VDBE cursor numbers have been assigned to every
+// element of the FROM clause.
+//
+// (2) Fill in the pTabList->a[].pTab fields in the SrcList that
+// defines FROM clause. When views appear in the FROM clause,
+// fill pTabList->a[].pSelect with a copy of the SELECT statement
+// that implements the view. A copy is made of the view's SELECT
+// statement so that we can freely modify or delete that statement
+// without worrying about messing up the persistent representation
+// of the view.
+//
+// (3) Add terms to the WHERE clause to accommodate the NATURAL keyword
+// on joins and the ON and USING clause of joins.
+//
+// (4) Scan the list of columns in the result set (pEList) looking
+// for instances of the "*" operator or the TABLE.* operator.
+// If found, expand each "*" to be every column in every table
+// and TABLE.* to be every column in TABLE.
+//
+func _selectExpander(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) {
+ var _11_nCol int16
+ var _i, _j, _k, _15_flags, _15_longNames, _19_tableSeen, _21_iDb int32
+ var _19_zTName, _21_zTabName, _21_zSchemaName, _25_zName, _25_zColname, _25_zToFree *int8
+ var _selFlags uint16
+ var _25_sColname XToken
+ var _db *Xsqlite3
+ var _4_pTab, _21_pTab *XTable
+ var _pTabList *XSrcList
+ var _pFrom *TSrcList_item
+ var _pEList, _15_pNew *XExprList
+ var _15_a, _35_pX *TExprList_item
+ var _6_pSel, _21_pSub *XSelect
+ var _pE, _pRight, _pExpr, _31_pLeft *XExpr
+ var _pParse *XParse
_pParse = (*XParse)(_pWalker.X0)
_db = (*Xsqlite3)(_pParse.X0)
_selFlags = uint16(_p.X3)
@@ -38503,121 +35155,89 @@ func _selectExpander(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) {
*p = (*p) | uint32(i32(64))
sink5 = *p
}
- if (_db.X17) == 0 {
- goto _0
+ if (_db.X17) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_0:
if func() int32 {
if (*XSrcList)(_p.X8) == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120864), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120864), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 && (int32(_selFlags)&i32(64)) == i32(0) {
- goto _4
+ }() != 0 || ((int32(_selFlags) & i32(64)) != i32(0)) {
+ return i32(1)
}
- return i32(1)
-
-_4:
_pTabList = (*XSrcList)(_p.X8)
_pEList = (*XExprList)(_p.X0)
- if (*XWith)(_p.X17) == nil {
- goto _5
+ if (*XWith)(_p.X17) != nil {
+ _sqlite3WithPush(tls, _pParse, (*XWith)(_p.X17), uint8(i32(0)))
}
-
- _sqlite3WithPush(tls, _pParse, (*XWith)(_p.X17), uint8(i32(0)))
-_5:
_sqlite3SrcListAssignCursors(tls, _pParse, _pTabList)
*func() **TSrcList_item { _i = i32(0); return &_pFrom }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
_6:
if _i >= (_pTabList.X0) {
goto _9
}
-
func() {
- if int32((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(5)))<>uint(i32(31))) != i32(0) && (*XTable)(_pFrom.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120884), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49524)))
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(5)))<>uint(i32(31))) != i32(0) && (*XTable)(_pFrom.X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120884), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48048)))
crt.X__builtin_abort(tls)
}
}()
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _13
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ goto _7
}
-
- goto _7
-
-_13:
func() {
if (*XTable)(_pFrom.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120886), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120886), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48091)))
crt.X__builtin_abort(tls)
}
}()
- if _withExpand(tls, _pWalker, _pFrom) == 0 {
- goto _16
+ if _withExpand(tls, _pWalker, _pFrom) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_16:
- if (*XTable)(_pFrom.X4) == nil {
- goto _17
+ if (*XTable)(_pFrom.X4) != nil {
+ goto _18
}
-
- goto _18
-
-_17:
if (_pFrom.X2) != nil {
goto _19
}
-
_6_pSel = (*XSelect)(_pFrom.X5)
func() {
if _6_pSel == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120895), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120895), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48106)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XTable)(_pFrom.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120896), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120896), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48091)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3WalkSelect(tls, _pWalker, _6_pSel) == 0 {
- goto _24
+ if _sqlite3WalkSelect(tls, _pWalker, _6_pSel) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_24:
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = store42(&_4_pTab, (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80)))))
- if _4_pTab != nil {
- goto _25
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = store44(&_4_pTab, (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80)))))
+ if _4_pTab == nil {
+ return i32(2)
}
- return i32(2)
-
-_25:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab)) + uintptr(32 /* X8 */))) = uint32(i32(1))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab)) + uintptr(0 /* X0 */))) = _sqlite3MPrintf(tls, _db, str(49592), (unsafe.Pointer)(_4_pTab))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab)) + uintptr(0 /* X0 */))) = _sqlite3MPrintf(tls, _db, str(48114), (unsafe.Pointer)(_4_pTab))
_26:
- if (*XSelect)(_6_pSel.X13) == nil {
- goto _27
+ if (*XSelect)(_6_pSel.X13) != nil {
+ _6_pSel = (*XSelect)(_6_pSel.X13)
+ goto _26
}
-
- _6_pSel = (*XSelect)(_6_pSel.X13)
- goto _26
-
-_27:
_sqlite3ColumnsFromExprList(tls, _pParse, (*XExprList)(_6_pSel.X0), (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab))+uintptr(42 /* X11 */))), (**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab))+uintptr(4 /* X1 */))))))
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab)) + uintptr(44 /* X12 */))) = int16(i32(200))
func() {
if i32(200) != int32(_sqlite3LogEst(tls, uint64(i32(1048576)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120905), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49608)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120905), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48127)))
crt.X__builtin_abort(tls)
}
}()
@@ -38627,50 +35247,35 @@ _27:
sink5 = *p
}
goto _30
-
_19:
func() {
if (*XTable)(_pFrom.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120910), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120910), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48091)))
crt.X__builtin_abort(tls)
}
}()
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = store42(&_4_pTab, _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), _pFrom))
- if _4_pTab != nil {
- goto _33
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = store44(&_4_pTab, _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), _pFrom))
+ if _4_pTab == nil {
+ return i32(2)
}
- return i32(2)
-
-_33:
- if (_4_pTab.X8) < uint32(i32(65535)) {
- goto _34
+ if (_4_pTab.X8) >= uint32(i32(65535)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(48155), unsafe.Pointer(_4_pTab.X0))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = nil
+ return i32(2)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(49636), unsafe.Pointer(_4_pTab.X0))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = nil
- return i32(2)
-
-_34:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pTab)) + uintptr(32 /* X8 */))) += 1
- if (_4_pTab.X16) != 0 || _cannotBeFunction(tls, _pParse, _pFrom) == 0 {
- goto _36
+ if ((_4_pTab.X16) == 0) && _cannotBeFunction(tls, _pParse, _pFrom) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_36:
if (_4_pTab.X16) == 0 && (*XSelect)(_4_pTab.X3) == nil {
goto _38
}
-
- if _sqlite3ViewGetColumnNames(tls, _pParse, _4_pTab) == 0 {
- goto _39
+ if _sqlite3ViewGetColumnNames(tls, _pParse, _4_pTab) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_39:
func() {
if (*XSelect)(_pFrom.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120927), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120927), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48194)))
crt.X__builtin_abort(tls)
}
}()
@@ -38683,64 +35288,46 @@ _39:
_38:
_30:
_18:
- if _sqlite3IndexedByLookup(tls, _pParse, _pFrom) == 0 {
- goto _42
+ if _sqlite3IndexedByLookup(tls, _pParse, _pFrom) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_42:
_7:
*(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pFrom }())) += uintptr(68)
goto _6
-
_9:
- if (_db.X17) == 0 && _sqliteProcessJoin(tls, _pParse, _p) == 0 {
- goto _44
+ if ((_db.X17) != 0) || _sqliteProcessJoin(tls, _pParse, _p) != 0 {
+ return i32(2)
}
- return i32(2)
-
-_44:
_k = i32(0)
_45:
if _k >= (_pEList.X0) {
goto _48
}
-
_pE = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_k))).X0)
- if int32(_pE.X0) != i32(161) {
- goto _49
+ if int32(_pE.X0) == i32(161) {
+ goto _48
}
-
- goto _48
-
-_49:
func() {
if int32(_pE.X0) == i32(122) && (*XExpr)(_pE.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120964), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120964), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48212)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pE.X0) == i32(122) && ((*XExpr)(_pE.X4) == nil || int32((*XExpr)(_pE.X4).X0) != i32(27)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120965), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49728)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120965), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48244)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pE.X0) != i32(122) || int32((*XExpr)(_pE.X5).X0) != i32(161) {
- goto _58
+ if (int32(_pE.X0) == i32(122)) && (int32((*XExpr)(_pE.X5).X0) == i32(161)) {
+ goto _48
}
-
- goto _48
-
-_58:
_k += 1
goto _45
-
_48:
if _k >= (_pEList.X0) {
goto _59
}
-
_15_a = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList)) + uintptr(8 /* X2 */)))))
_15_pNew = nil
_15_flags = (*Xsqlite3)(_pParse.X0).X6
@@ -38750,94 +35337,72 @@ _61:
if _k >= (_pEList.X0) {
goto _64
}
-
_pE = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a)) + 20*uintptr(_k))).X0)
_pRight = (*XExpr)(_pE.X5)
func() {
if int32(_pE.X0) == i32(122) && _pRight == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120983), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49788)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120983), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48301)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pE.X0) == i32(161) || int32(_pE.X0) == i32(122) && int32(_pRight.X0) == i32(161) {
goto _70
}
-
_15_pNew = _sqlite3ExprListAppend(tls, _pParse, _15_pNew, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a))+20*uintptr(_k))).X0))
- if _15_pNew == nil {
- goto _71
+ if _15_pNew != nil {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pNew))+uintptr(8 /* X2 */)))))+20*uintptr((_15_pNew.X0)-i32(1)))))) + uintptr(4 /* X1 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a)) + 20*uintptr(_k))).X1
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pNew))+uintptr(8 /* X2 */)))))+20*uintptr((_15_pNew.X0)-i32(1)))))) + uintptr(8 /* X2 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a)) + 20*uintptr(_k))).X2
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a))+20*uintptr(_k))))) + uintptr(4 /* X1 */))) = nil
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a))+20*uintptr(_k))))) + uintptr(8 /* X2 */))) = nil
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pNew))+uintptr(8 /* X2 */)))))+20*uintptr((_15_pNew.X0)-i32(1)))))) + uintptr(4 /* X1 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a)) + 20*uintptr(_k))).X1
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pNew))+uintptr(8 /* X2 */)))))+20*uintptr((_15_pNew.X0)-i32(1)))))) + uintptr(8 /* X2 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a)) + 20*uintptr(_k))).X2
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a))+20*uintptr(_k))))) + uintptr(4 /* X1 */))) = nil
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a))+20*uintptr(_k))))) + uintptr(8 /* X2 */))) = nil
-_71:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_a))+20*uintptr(_k))))) + uintptr(0 /* X0 */))))) = nil
goto _72
-
_70:
_19_tableSeen = i32(0)
_19_zTName = nil
- if int32(_pE.X0) != i32(122) {
- goto _73
+ if int32(_pE.X0) == i32(122) {
+ func() {
+ if (*XExpr)(_pE.X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121003), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48329)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (((*XExpr)(_pE.X4).X2) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121004), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48342)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _19_zTName = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_pE.X4) + uintptr(8 /* X3 */)))))
}
-
- func() {
- if (*XExpr)(_pE.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121003), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49816)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (((*XExpr)(_pE.X4).X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121004), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49832)))
- crt.X__builtin_abort(tls)
- }
- }()
- _19_zTName = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_pE.X4) + uintptr(8 /* X3 */)))))
-_73:
*func() **TSrcList_item { _i = i32(0); return &_pFrom }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
_78:
if _i >= (_pTabList.X0) {
goto _81
}
-
_21_pTab = (*XTable)(_pFrom.X4)
_21_pSub = (*XSelect)(_pFrom.X5)
_21_zTabName = _pFrom.X3
_21_zSchemaName = nil
- if _21_zTabName != nil {
- goto _82
+ if _21_zTabName == nil {
+ _21_zTabName = _21_pTab.X0
}
-
- _21_zTabName = _21_pTab.X0
-_82:
- if (_db.X17) == 0 {
- goto _83
+ if (_db.X17) != 0 {
+ goto _81
}
-
- goto _81
-
-_83:
if _21_pSub != nil && ((_21_pSub.X3)&uint32(i32(2048))) != uint32(i32(0)) {
goto _85
}
-
_21_pSub = nil
- if _19_zTName == nil || _sqlite3StrICmp(tls, _19_zTName, _21_zTabName) == i32(0) {
- goto _87
+ if (_19_zTName != nil) && (_sqlite3StrICmp(tls, _19_zTName, _21_zTabName) != i32(0)) {
+ goto _79
}
-
- goto _79
-
-_87:
_21_iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_21_pTab.X20))
_21_zSchemaName = func() *int8 {
if _21_iDb >= i32(0) {
return ((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_21_iDb))).X0)
}
- return str(49876)
+ return str(48383)
}()
_85:
_j = i32(0)
@@ -38845,47 +35410,29 @@ _90:
if _j >= int32(_21_pTab.X11) {
goto _93
}
-
_25_zName = (*XColumn)(unsafe.Pointer(uintptr(_21_pTab.X1) + 16*uintptr(_j))).X0
func() {
if _25_zName == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121031), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(49880)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121031), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectExpanderØ00__func__Ø000))), unsafe.Pointer(str(48385)))
crt.X__builtin_abort(tls)
}
}()
- if _19_zTName == nil || _21_pSub == nil || _sqlite3MatchSpanName(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_21_pSub.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X2, nil, _19_zTName, nil) != i32(0) {
- goto _98
+ if ((_19_zTName != nil) && (_21_pSub != nil)) && (_sqlite3MatchSpanName(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_21_pSub.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X2, nil, _19_zTName, nil) == i32(0)) {
+ goto _91
}
-
- goto _91
-
-_98:
- if ((_p.X3)&uint32(i32(131072))) != uint32(i32(0)) || (int32((*XColumn)(unsafe.Pointer(uintptr(_21_pTab.X1)+16*uintptr(_j))).X6)&i32(2)) == i32(0) {
- goto _100
+ if (((_p.X3) & uint32(i32(131072))) == uint32(i32(0))) && ((int32((*XColumn)(unsafe.Pointer(uintptr(_21_pTab.X1)+16*uintptr(_j))).X6) & i32(2)) != i32(0)) {
+ goto _91
}
-
- goto _91
-
-_100:
_19_tableSeen = i32(1)
if _i <= i32(0) || _19_zTName != nil {
goto _102
}
-
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X0)&i32(4)) == i32(0) || _tableAndColumnIndex(tls, _pTabList, _i, _25_zName, nil, nil) == 0 {
- goto _104
+ if ((int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X0) & i32(4)) != i32(0)) && _tableAndColumnIndex(tls, _pTabList, _i, _25_zName, nil, nil) != 0 {
+ goto _91
}
-
- goto _91
-
-_104:
- if _sqlite3IdListIndex(tls, (*XIdList)(_pFrom.X13), _25_zName) < i32(0) {
- goto _105
+ if _sqlite3IdListIndex(tls, (*XIdList)(_pFrom.X13), _25_zName) >= i32(0) {
+ goto _91
}
-
- goto _91
-
-_105:
_102:
_pRight = _sqlite3Expr(tls, _db, i32(27), _25_zName)
_25_zColname = _25_zName
@@ -38893,25 +35440,17 @@ _102:
if _15_longNames == 0 && (_pTabList.X0) <= i32(1) {
goto _107
}
-
_31_pLeft = _sqlite3Expr(tls, _db, i32(27), _21_zTabName)
_pExpr = _sqlite3PExpr(tls, _pParse, i32(122), _31_pLeft, _pRight)
- if _21_zSchemaName == nil {
- goto _108
+ if _21_zSchemaName != nil {
+ _31_pLeft = _sqlite3Expr(tls, _db, i32(27), _21_zSchemaName)
+ _pExpr = _sqlite3PExpr(tls, _pParse, i32(122), _31_pLeft, _pExpr)
}
-
- _31_pLeft = _sqlite3Expr(tls, _db, i32(27), _21_zSchemaName)
- _pExpr = _sqlite3PExpr(tls, _pParse, i32(122), _31_pLeft, _pExpr)
-_108:
- if _15_longNames == 0 {
- goto _109
+ if _15_longNames != 0 {
+ _25_zColname = _sqlite3MPrintf(tls, _db, str(8018), unsafe.Pointer(_21_zTabName), unsafe.Pointer(_25_zName))
+ _25_zToFree = _25_zColname
}
-
- _25_zColname = _sqlite3MPrintf(tls, _db, str(6608), unsafe.Pointer(_21_zTabName), unsafe.Pointer(_25_zName))
- _25_zToFree = _25_zColname
-_109:
goto _110
-
_107:
_pExpr = _pRight
_110:
@@ -38921,17 +35460,12 @@ _110:
if _15_pNew == nil || ((_p.X3)&uint32(i32(2048))) == uint32(i32(0)) {
goto _112
}
-
_35_pX = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pNew))+uintptr(8 /* X2 */))))) + 20*uintptr((_15_pNew.X0)-i32(1))))
- if _21_pSub == nil {
- goto _113
+ if _21_pSub != nil {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pX)) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_21_pSub.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X2)
+ goto _114
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pX)) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_21_pSub.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X2)
- goto _114
-
-_113:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pX)) + uintptr(8 /* X2 */))) = _sqlite3MPrintf(tls, _db, str(49888), unsafe.Pointer(_21_zSchemaName), unsafe.Pointer(_21_zTabName), unsafe.Pointer(_25_zColname))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pX)) + uintptr(8 /* X2 */))) = _sqlite3MPrintf(tls, _db, str(48391), unsafe.Pointer(_21_zSchemaName), unsafe.Pointer(_21_zTabName), unsafe.Pointer(_25_zColname))
_114:
storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_35_pX))+uintptr(13 /* X4 */))), int8(i32(1)), 2, 1)
_112:
@@ -38939,169 +35473,149 @@ _112:
_91:
_j += 1
goto _90
-
_93:
_79:
*(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pFrom }())) += uintptr(68)
goto _78
-
_81:
if _19_tableSeen != 0 {
goto _115
}
-
- if _19_zTName == nil {
- goto _116
+ if _19_zTName != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(48400), unsafe.Pointer(_19_zTName))
+ goto _117
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(49900), unsafe.Pointer(_19_zTName))
- goto _117
-
-_116:
- _sqlite3ErrorMsg(tls, _pParse, str(49920))
+ _sqlite3ErrorMsg(tls, _pParse, str(48418))
_117:
_115:
_72:
_k += 1
goto _61
-
_64:
_sqlite3ExprListDelete(tls, _db, _pEList)
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _15_pNew
_59:
- if (*XExprList)(_p.X0) == nil || ((*XExprList)(_p.X0).X0) <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))) {
- goto _119
+ if ((*XExprList)(_p.X0) != nil) && (((*XExprList)(_p.X0).X0) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2)))))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(48438))
+ return i32(2)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(49940))
- return i32(2)
-
-_119:
return i32(0)
+
+ _ = _25_sColname
+ panic(0)
}
-var _selectExpanderØ00__func__Ø000 [15]int8 // -
+var _selectExpanderØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_selectExpanderØ00__func__Ø000[0], str(49972), 15)
+ crt.Xstrncpy(nil, &_selectExpanderØ00__func__Ø000[0], str(48469), 15)
}
-func _sqlite3WithPush(tls *crt.TLS, _pParse *XParse, _pWith *XWith, _bFree uint8) { // sqlite3.c:120663:1
+// The code generator maintains a stack of active WITH clauses
+// with the inner-most WITH clause being at the top of the stack.
+//
+// This routine pushes the WITH clause passed as the second argument
+// onto the top of the stack. If argument bFree is true, then this
+// WITH clause will never be popped from the stack. In this case it
+// should be freed along with the Parse object. In other cases, when
+// bFree==0, the With object will be freed along with the SELECT
+// statement with which it is associated.
+func _sqlite3WithPush(tls *crt.TLS, _pParse *XParse, _pWith *XWith, _bFree uint8) {
func() {
if int32(_bFree) != i32(0) && ((*XWith)(_pParse.X70) != nil || (*XWith)(_pParse.X71) != nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120664), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WithPushØ00__func__Ø000))), unsafe.Pointer(str(49988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120664), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WithPushØ00__func__Ø000))), unsafe.Pointer(str(48484)))
crt.X__builtin_abort(tls)
}
}()
if _pWith == nil {
goto _4
}
-
func() {
if (*XWith)(_pParse.X70) == _pWith {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WithPushØ00__func__Ø000))), unsafe.Pointer(str(50048)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WithPushØ00__func__Ø000))), unsafe.Pointer(str(48541)))
crt.X__builtin_abort(tls)
}
}()
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWith)) + uintptr(4 /* X1 */))))) = (*XWith)(_pParse.X70)
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(476 /* X70 */))))) = _pWith
- if _bFree == 0 {
- goto _7
+ if _bFree != 0 {
+ *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(480 /* X71 */))))) = _pWith
}
-
- *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(480 /* X71 */))))) = _pWith
-_7:
_4:
}
-var _sqlite3WithPushØ00__func__Ø000 [16]int8 // -
+var _sqlite3WithPushØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WithPushØ00__func__Ø000[0], str(50072), 16)
+ crt.Xstrncpy(nil, &_sqlite3WithPushØ00__func__Ø000[0], str(48562), 16)
}
-func _sqlite3SrcListAssignCursors(tls *crt.TLS, _pParse *XParse, _pList *XSrcList) { // sqlite3.c:103479:1
- var _i int32 // sqlite3.c:103480:7
- _ = _i
- var _pItem *TSrcList_item // sqlite3.c:103481:23
- _ = _pItem
+// Assign VdbeCursor index numbers to all tables in a SrcList
+func _sqlite3SrcListAssignCursors(tls *crt.TLS, _pParse *XParse, _pList *XSrcList) {
+ var _i int32
+ var _pItem *TSrcList_item
func() {
if _pList == nil && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103482), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAssignCursorsØ00__func__Ø000))), unsafe.Pointer(str(50088)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103482), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListAssignCursorsØ00__func__Ø000))), unsafe.Pointer(str(48578)))
crt.X__builtin_abort(tls)
}
}()
if _pList == nil {
goto _3
}
-
*func() **TSrcList_item { _i = i32(0); return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
_4:
if _i >= (_pList.X0) {
goto _7
}
-
- if (_pItem.X11) < i32(0) {
- goto _8
+ if (_pItem.X11) >= i32(0) {
+ goto _7
}
-
- goto _7
-
-_8:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(40 /* X11 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- if (*XSelect)(_pItem.X5) == nil {
- goto _9
+ if (*XSelect)(_pItem.X5) != nil {
+ _sqlite3SrcListAssignCursors(tls, _pParse, (*XSrcList)((*XSelect)(_pItem.X5).X8))
}
-
- _sqlite3SrcListAssignCursors(tls, _pParse, (*XSrcList)((*XSelect)(_pItem.X5).X8))
-_9:
*(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pItem }())) += uintptr(68)
goto _4
-
_7:
_3:
}
-var _sqlite3SrcListAssignCursorsØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3SrcListAssignCursorsØ00__func__Ø000[0], str(50124), 28)
-}
-
-func _withExpand(tls *crt.TLS, _pWalker *XWalker, _pFrom *TSrcList_item) (r0 int32) { // sqlite3.c:120688:1
- var _pParse *XParse // sqlite3.c:120692:9
- _ = _pParse
- var _db *Xsqlite3 // sqlite3.c:120693:11
- _ = _db
- var _pCte *TCte // sqlite3.c:120694:14
- _ = _pCte
- var _pWith *XWith // sqlite3.c:120695:8
- _ = _pWith
- var _1_pTab *XTable // sqlite3.c:120701:11
- _ = _1_pTab
- var _1_pEList *XExprList // sqlite3.c:120702:14
- _ = _1_pEList
- var _1_pSel *XSelect // sqlite3.c:120703:12
- _ = _1_pSel
- var _1_pLeft *XSelect // sqlite3.c:120704:12
- _ = _1_pLeft
- var _1_bMayRecursive int32 // sqlite3.c:120705:9
- _ = _1_bMayRecursive
- var _1_pSavedWith *XWith // sqlite3.c:120706:10
- _ = _1_pSavedWith
- var _3_i int32 // sqlite3.c:120734:11
- _ = _3_i
- var _3_pSrc *XSrcList // sqlite3.c:120735:15
- _ = _3_pSrc
- var _4_pItem *TSrcList_item // sqlite3.c:120737:29
- _ = _4_pItem
- var _7_pPrior *XSelect // sqlite3.c:120763:14
- _ = _7_pPrior
+var _sqlite3SrcListAssignCursorsØ00__func__Ø000 [28]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3SrcListAssignCursorsØ00__func__Ø000[0], str(48612), 28)
+}
+
+// This function checks if argument pFrom refers to a CTE declared by
+// a WITH clause on the stack currently maintained by the parser. And,
+// if currently processing a CTE expression, if it is a recursive
+// reference to the current CTE.
+//
+// If pFrom falls into either of the two categories above, pFrom->pTab
+// and other fields are populated accordingly. The caller should check
+// (pFrom->pTab!=0) to determine whether or not a successful match
+// was found.
+//
+// Whether or not a match is found, SQLITE_OK is returned if no error
+// occurs. If an error does occur, an error message is stored in the
+// parser and some error code other than SQLITE_OK returned.
+func _withExpand(tls *crt.TLS, _pWalker *XWalker, _pFrom *TSrcList_item) (r0 int32) {
+ var _1_bMayRecursive, _3_i int32
+ var _db *Xsqlite3
+ var _1_pTab *XTable
+ var _3_pSrc *XSrcList
+ var _4_pItem *TSrcList_item
+ var _pWith, _1_pSavedWith *XWith
+ var _pCte *TCte
+ var _1_pEList *XExprList
+ var _1_pSel, _1_pLeft, _7_pPrior *XSelect
+ var _pParse *XParse
_pParse = (*XParse)(_pWalker.X0)
_db = (*Xsqlite3)(_pParse.X0)
func() {
if (*XTable)(_pFrom.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120697), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(49568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120697), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(48091)))
crt.X__builtin_abort(tls)
}
}()
@@ -39109,41 +35623,30 @@ func _withExpand(tls *crt.TLS, _pWalker *XWalker, _pFrom *TSrcList_item) (r0 int
if _pCte == nil {
goto _2
}
-
- if (_pCte.X3) == nil {
- goto _3
+ if (_pCte.X3) != nil {
+ _sqlite3ErrorMsg(tls, _pParse, _pCte.X3, unsafe.Pointer(_pCte.X0))
+ return i32(1)
}
-
- _sqlite3ErrorMsg(tls, _pParse, _pCte.X3, unsafe.Pointer(_pCte.X0))
- return i32(1)
-
-_3:
- if _cannotBeFunction(tls, _pParse, _pFrom) == 0 {
- goto _4
+ if _cannotBeFunction(tls, _pParse, _pFrom) != 0 {
+ return i32(1)
}
- return i32(1)
-
-_4:
func() {
if (*XTable)(_pFrom.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120718), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(49568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120718), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(48091)))
crt.X__builtin_abort(tls)
}
}()
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = store42(&_1_pTab, (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80)))))
- if _1_pTab != nil {
- goto _7
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(16 /* X4 */))))) = store44(&_1_pTab, (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80)))))
+ if _1_pTab == nil {
+ return i32(2)
}
- return i32(2)
-
-_7:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(32 /* X8 */))) = uint32(i32(1))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(0 /* X0 */))) = _sqlite3DbStrDup(tls, _db, _pCte.X0)
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(44 /* X12 */))) = int16(i32(200))
func() {
if i32(200) != int32(_sqlite3LogEst(tls, uint64(i32(1048576)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120724), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(49608)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120724), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(48127)))
crt.X__builtin_abort(tls)
}
}()
@@ -39153,15 +35656,12 @@ _7:
sink5 = *p
}
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(20 /* X5 */))))) = _sqlite3SelectDup(tls, _db, (*XSelect)(_pCte.X2), i32(0))
- if (_db.X17) == 0 {
- goto _10
+ if (_db.X17) != 0 {
+ return _sqlite3NomemError(tls, i32(120727))
}
- return _sqlite3NomemError(tls, i32(120727))
-
-_10:
func() {
if (*XSelect)(_pFrom.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120728), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(50152)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120728), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(48640)))
crt.X__builtin_abort(tls)
}
}()
@@ -39170,67 +35670,53 @@ _10:
if _1_bMayRecursive == 0 {
goto _14
}
-
_3_pSrc = (*XSrcList)((*XSelect)(_pFrom.X5).X8)
_3_i = i32(0)
_15:
if _3_i >= (_3_pSrc.X0) {
goto _18
}
-
_4_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_3_i)))
- if (_4_pItem.X1) != nil || (_4_pItem.X2) == nil || i32(0) != _sqlite3StrICmp(tls, _4_pItem.X2, _pCte.X0) {
- goto _21
- }
-
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem)) + uintptr(16 /* X4 */))))) = _1_pTab
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(1)), 32, 5)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(32 /* X8 */))) += 1
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSel)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(8192))
- sink5 = *p
+ if (((_4_pItem.X1) == nil) && ((_4_pItem.X2) != nil)) && (i32(0) == _sqlite3StrICmp(tls, _4_pItem.X2, _pCte.X0)) {
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem)) + uintptr(16 /* X4 */))))) = _1_pTab
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(1)), 32, 5)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(32 /* X8 */))) += 1
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSel)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(8192))
+ sink5 = *p
+ }
}
-_21:
_3_i += 1
goto _15
-
_18:
_14:
- if (_1_pTab.X8) <= uint32(i32(2)) {
- goto _22
+ if (_1_pTab.X8) > uint32(i32(2)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(48655), unsafe.Pointer(_pCte.X0))
+ return i32(1)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(50168), unsafe.Pointer(_pCte.X0))
- return i32(1)
-
-_22:
func() {
if (_1_pTab.X8) != uint32(i32(1)) && (((_1_pSel.X3)&uint32(i32(8192))) == 0 || (_1_pTab.X8) != uint32(i32(2))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120757), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(50212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120757), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(48698)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCte)) + uintptr(12 /* X3 */))) = str(50288)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCte)) + uintptr(12 /* X3 */))) = str(48771)
_1_pSavedWith = (*XWith)(_pParse.X70)
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(476 /* X70 */))))) = _pWith
- if _1_bMayRecursive == 0 {
- goto _27
+ if _1_bMayRecursive != 0 {
+ _7_pPrior = (*XSelect)(_1_pSel.X13)
+ func() {
+ if (*XWith)(_7_pPrior.X17) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120764), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(48794)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pPrior)) + uintptr(76 /* X17 */))))) = (*XWith)(_1_pSel.X17)
+ _sqlite3WalkSelect(tls, _pWalker, _7_pPrior)
+ *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pPrior)) + uintptr(76 /* X17 */))))) = nil
+ goto _30
}
-
- _7_pPrior = (*XSelect)(_1_pSel.X13)
- func() {
- if (*XWith)(_7_pPrior.X17) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120764), unsafe.Pointer((*int8)(unsafe.Pointer(&_withExpandØ00__func__Ø000))), unsafe.Pointer(str(50312)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pPrior)) + uintptr(76 /* X17 */))))) = (*XWith)(_1_pSel.X17)
- _sqlite3WalkSelect(tls, _pWalker, _7_pPrior)
- *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pPrior)) + uintptr(76 /* X17 */))))) = nil
- goto _30
-
-_27:
_sqlite3WalkSelect(tls, _pWalker, _1_pSel)
_30:
*(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(476 /* X70 */))))) = _pWith
@@ -39239,41 +35725,29 @@ _31:
if (*XSelect)(_1_pLeft.X13) == nil {
goto _34
}
-
_1_pLeft = (*XSelect)(_1_pLeft.X13)
goto _31
-
_34:
_1_pEList = (*XExprList)(_1_pLeft.X0)
if (*XExprList)(_pCte.X1) == nil {
goto _35
}
-
- if _1_pEList == nil || (_1_pEList.X0) == ((*XExprList)(_pCte.X1).X0) {
- goto _37
+ if (_1_pEList != nil) && ((_1_pEList.X0) != ((*XExprList)(_pCte.X1).X0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(48811), unsafe.Pointer(_pCte.X0), _1_pEList.X0, (*XExprList)(_pCte.X1).X0)
+ *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(476 /* X70 */))))) = _1_pSavedWith
+ return i32(1)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(50332), unsafe.Pointer(_pCte.X0), _1_pEList.X0, (*XExprList)(_pCte.X1).X0)
- *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(476 /* X70 */))))) = _1_pSavedWith
- return i32(1)
-
-_37:
_1_pEList = (*XExprList)(_pCte.X1)
_35:
_sqlite3ColumnsFromExprList(tls, _pParse, _1_pEList, (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab))+uintptr(42 /* X11 */))), (**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab))+uintptr(4 /* X1 */))))))
if _1_bMayRecursive == 0 {
goto _38
}
-
- if ((_1_pSel.X3) & uint32(i32(8192))) == 0 {
- goto _39
+ if ((_1_pSel.X3) & uint32(i32(8192))) != 0 {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCte)) + uintptr(12 /* X3 */))) = str(48849)
+ goto _40
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCte)) + uintptr(12 /* X3 */))) = str(50372)
- goto _40
-
-_39:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCte)) + uintptr(12 /* X3 */))) = str(50408)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCte)) + uintptr(12 /* X3 */))) = str(48883)
_40:
_sqlite3WalkSelect(tls, _pWalker, _1_pSel)
_38:
@@ -39283,168 +35757,137 @@ _2:
return i32(0)
}
-var _withExpandØ00__func__Ø000 [11]int8 // -
+var _withExpandØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_withExpandØ00__func__Ø000[0], str(50448), 11)
+ crt.Xstrncpy(nil, &_withExpandØ00__func__Ø000[0], str(48921), 11)
}
-func _searchWith(tls *crt.TLS, _pWith *XWith, _pItem *TSrcList_item, _ppContext **XWith) (r0 *TCte) { // sqlite3.c:120632:1
- var _zName *int8 // sqlite3.c:120637:14
- _ = _zName
- var _1_p *XWith // sqlite3.c:120639:10
- _ = _1_p
- var _2_i int32 // sqlite3.c:120641:11
- _ = _2_i
+// Argument pWith (which may be NULL) points to a linked list of nested
+// WITH contexts, from inner to outermost. If the table identified by
+// FROM clause element pItem is really a common-table-expression (CTE)
+// then return a pointer to the CTE definition for that table. Otherwise
+// return NULL.
+//
+// If a non-NULL value is returned, set *ppContext to point to the With
+// object that the returned CTE belongs to.
+func _searchWith(tls *crt.TLS, _pWith *XWith, _pItem *TSrcList_item, _ppContext **XWith) (r0 *TCte) {
+ var _2_i int32
+ var _zName *int8
+ var _1_p *XWith
if (_pItem.X1) != nil || store0(&_zName, _pItem.X2) == nil {
goto _1
}
-
_1_p = _pWith
_2:
if _1_p == nil {
goto _5
}
-
_2_i = i32(0)
_6:
if _2_i >= (_1_p.X0) {
goto _9
}
-
- if _sqlite3StrICmp(tls, _zName, (*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))).X0) != i32(0) {
- goto _10
+ if _sqlite3StrICmp(tls, _zName, (*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))).X0) == i32(0) {
+ *_ppContext = _1_p
+ /* X2 */
+ return (*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(8))))) + 16*uintptr(_2_i)))
}
-
- *_ppContext = _1_p
- /* X2 */
- return (*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(8))))) + 16*uintptr(_2_i)))
-
-_10:
_2_i += 1
goto _6
-
_9:
_1_p = (*XWith)(_1_p.X1)
goto _2
-
_5:
_1:
- r0 = nil
- return
+ return nil
}
-func _cannotBeFunction(tls *crt.TLS, _pParse *XParse, _pFrom *TSrcList_item) (r0 int32) { // sqlite3.c:120613:1
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _0
+// Check to see if the FROM clause term pFrom has table-valued function
+// arguments. If it does, leave an error message in pParse and return
+// non-zero, since pFrom is not allowed to be a table-valued function.
+func _cannotBeFunction(tls *crt.TLS, _pParse *XParse, _pFrom *TSrcList_item) (r0 int32) {
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(48932), unsafe.Pointer(_pFrom.X2))
+ return i32(1)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(50460), unsafe.Pointer(_pFrom.X2))
- return i32(1)
-
-_0:
return i32(0)
}
-func _sqlite3LogEst(tls *crt.TLS, _x uint64) (r0 int16) { // sqlite3.c:29065:1
- var _y int16 // sqlite3.c:29067:10
- _ = _y
+// Convert an integer into a LogEst. In other words, compute an
+// approximation for 10*log2(x).
+func _sqlite3LogEst(tls *crt.TLS, _x uint64) (r0 int16) {
+ var _y int16
_y = i16(40)
if _x >= uint64(i32(8)) {
goto _0
}
-
- if _x >= uint64(i32(2)) {
- goto _1
+ if _x < uint64(i32(2)) {
+ return int16(i32(0))
}
- return int16(i32(0))
-
-_1:
_2:
- if _x >= uint64(i32(8)) {
- goto _3
- }
-
- {
- p := &_y
- *p = int16(int32(*p) - i32(10))
- sink16 = *p
- }
- {
- p := &_x
- *p = (*p) << uint(i32(1))
- sink15 = *p
+ if _x < uint64(i32(8)) {
+ {
+ p := &_y
+ *p = int16(int32(*p) - i32(10))
+ sink18 = *p
+ }
+ {
+ p := &_x
+ *p = (*p) << uint(i32(1))
+ sink17 = *p
+ }
+ goto _2
}
- goto _2
-
-_3:
goto _4
-
_0:
_5:
- if _x <= uint64(i32(255)) {
- goto _6
- }
-
- {
- p := &_y
- *p = int16(int32(*p) + i32(40))
- sink16 = *p
- }
- {
- p := &_x
- *p = (*p) >> uint(i32(4))
- sink15 = *p
+ if _x > uint64(i32(255)) {
+ {
+ p := &_y
+ *p = int16(int32(*p) + i32(40))
+ sink18 = *p
+ }
+ {
+ p := &_x
+ *p = (*p) >> uint(i32(4))
+ sink17 = *p
+ }
+ goto _5
}
- goto _5
-
-_6:
_7:
- if _x <= uint64(i32(15)) {
- goto _8
- }
-
- {
- p := &_y
- *p = int16(int32(*p) + i32(10))
- sink16 = *p
- }
- {
- p := &_x
- *p = (*p) >> uint(i32(1))
- sink15 = *p
+ if _x > uint64(i32(15)) {
+ {
+ p := &_y
+ *p = int16(int32(*p) + i32(10))
+ sink18 = *p
+ }
+ {
+ p := &_x
+ *p = (*p) >> uint(i32(1))
+ sink17 = *p
+ }
+ goto _7
}
- goto _7
-
-_8:
_4:
- r0 = int16((int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LogEstØ00aØ001)) + 2*uintptr(_x&uint64(i32(7)))))) + int32(_y)) - i32(10))
- return
+ return int16((int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LogEstØ00aØ001)) + 2*uintptr(_x&uint64(i32(7)))))) + int32(_y)) - i32(10))
}
-var _sqlite3LogEstØ00aØ001 [8]int16 // sqlite3.c:29066:17
+var _sqlite3LogEstØ00aØ001 [8]int16
func init() {
_sqlite3LogEstØ00aØ001 = [8]int16{i16(0), i16(2), i16(3), i16(5), i16(6), i16(7), i16(8), i16(9)}
}
-func _sqlite3SelectDup(tls *crt.TLS, _db *Xsqlite3, _pDup *XSelect, _flags int32) (r0 *XSelect) { // sqlite3.c:92311:1
- var _pRet *XSelect // sqlite3.c:92312:10
- _ = _pRet
- var _pNext *XSelect // sqlite3.c:92313:10
- _ = _pNext
- var _pp **XSelect // sqlite3.c:92314:10
- _ = _pp
- var _p *XSelect // sqlite3.c:92315:10
- _ = _p
- var _1_pNew *XSelect // sqlite3.c:92319:12
- _ = _1_pNew
+func _sqlite3SelectDup(tls *crt.TLS, _db *Xsqlite3, _pDup *XSelect, _flags int32) (r0 *XSelect) {
+ var _pRet, _pNext, _p, _1_pNew *XSelect
+ var _pp **XSelect
_pRet = nil
_pNext = nil
_pp = &_pRet
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectDupØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectDupØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
@@ -39453,15 +35896,10 @@ _2:
if _p == nil {
goto _5
}
-
_1_pNew = (*XSelect)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(80))))
- if _1_pNew != nil {
- goto _6
+ if _1_pNew == nil {
+ goto _5
}
-
- goto _5
-
-_6:
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(0 /* X0 */))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)(_p.X0), _flags)
*(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(40 /* X8 */))))) = _sqlite3SrcListDup(tls, _db, (*XSrcList)(_p.X8), _flags)
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(44 /* X9 */))))) = _sqlite3ExprDup(tls, _db, (*XExpr)(_p.X9), _flags)
@@ -39486,52 +35924,35 @@ _6:
_pNext = _1_pNew
_p = (*XSelect)(_p.X13)
goto _2
-
_5:
return _pRet
}
-var _sqlite3SelectDupØ00__func__Ø000 [17]int8 // -
+var _sqlite3SelectDupØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SelectDupØ00__func__Ø000[0], str(50484), 17)
+ crt.Xstrncpy(nil, &_sqlite3SelectDupØ00__func__Ø000[0], str(48955), 17)
}
-func _sqlite3ExprListDup(tls *crt.TLS, _db *Xsqlite3, _p *XExprList, _flags int32) (r0 *XExprList) { // sqlite3.c:92195:1
- var _pNew *XExprList // sqlite3.c:92196:12
- _ = _pNew
- var _pItem *TExprList_item // sqlite3.c:92197:24
- _ = _pItem
- var _pOldItem *TExprList_item // sqlite3.c:92197:32
- _ = _pOldItem
- var _i int32 // sqlite3.c:92198:7
- _ = _i
- var _pPriorSelectCol *XExpr // sqlite3.c:92199:8
- _ = _pPriorSelectCol
- var _1_pOldExpr *XExpr // sqlite3.c:92209:10
- _ = _1_pOldExpr
- var _1_pNewExpr *XExpr // sqlite3.c:92210:10
- _ = _1_pNewExpr
+func _sqlite3ExprListDup(tls *crt.TLS, _db *Xsqlite3, _p *XExprList, _flags int32) (r0 *XExprList) {
+ var _i int32
+ var _pNew *XExprList
+ var _pItem, _pOldItem *TExprList_item
+ var _pPriorSelectCol, _1_pOldExpr, _1_pNewExpr *XExpr
_pPriorSelectCol = nil
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil {
- goto _2
+ if _p == nil {
+ return nil
}
- return nil
-
-_2:
_pNew = (*XExprList)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(28)+(u32(20)*uint32((_p.X0)-i32(1))))))
- if _pNew != nil {
- goto _3
+ if _pNew == nil {
+ return nil
}
- return nil
-
-_3:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(0 /* X0 */))), _p.X0)
_pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X2 */)))))
_pOldItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */)))))
@@ -39540,54 +35961,48 @@ _4:
if _i >= (_p.X0) {
goto _7
}
-
_1_pOldExpr = (*XExpr)(_pOldItem.X0)
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(0 /* X0 */))))) = _sqlite3ExprDup(tls, _db, _1_pOldExpr, _flags)
- if _1_pOldExpr == nil || int32(_1_pOldExpr.X0) != i32(159) || store34(&_1_pNewExpr, (*XExpr)(_pItem.X0)) == nil {
+ if _1_pOldExpr == nil || int32(_1_pOldExpr.X0) != i32(159) || store36(&_1_pNewExpr, (*XExpr)(_pItem.X0)) == nil {
goto _10
}
-
func() {
if int32(_1_pNewExpr.X9) != i32(0) && _i <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92216), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(50504)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92216), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(48972)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_1_pNewExpr.X9) != i32(0) {
- goto _14
+ if int32(_1_pNewExpr.X9) == i32(0) {
+ func() {
+ if (*XExpr)(_1_pOldExpr.X4) != (*XExpr)(_1_pOldExpr.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92218), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(49000)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pPriorSelectCol = store36((**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewExpr))+uintptr(12 /* X4 */))))), (*XExpr)(_1_pNewExpr.X5))
+ goto _17
}
-
- func() {
- if (*XExpr)(_1_pOldExpr.X4) != (*XExpr)(_1_pOldExpr.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92218), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(50532)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pPriorSelectCol = store34((**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewExpr))+uintptr(12 /* X4 */))))), (*XExpr)(_1_pNewExpr.X5))
- goto _17
-
-_14:
func() {
if _i <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(11928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(12970)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+20*uintptr(i32(-1)))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(50568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(49034)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_1_pNewExpr.X9) != (int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+20*uintptr(i32(-1)))).X0).X9) + i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(50588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(49053)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pPriorSelectCol != (*XExpr)((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+20*uintptr(i32(-1)))).X0).X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(50636)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListDupØ00__func__Ø000))), unsafe.Pointer(str(49099)))
crt.X__builtin_abort(tls)
}
}()
@@ -39599,27 +36014,41 @@ _10:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(12 /* X3 */))) = _pOldItem.X3
storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(13 /* X4 */))), int8(i32(0)), 1, 0)
storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(13 /* X4 */))), int8((uint32((_pOldItem.X4)>>uint(i32(1)))<>uint(i32(31))), 2, 1)
- *(*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(16 /* X5 */))) = _pOldItem.X5
+ *(*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(16 /* X5 */))) = _pOldItem.X5
*(*uintptr)(unsafe.Pointer(func() **TExprList_item {
*(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
return &_pOldItem
}())) += uintptr(20)
goto _4
-
_7:
return _pNew
}
-var _sqlite3ExprListDupØ00__func__Ø000 [19]int8 // -
+var _sqlite3ExprListDupØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprListDupØ00__func__Ø000[0], str(50676), 19)
+ crt.Xstrncpy(nil, &_sqlite3ExprListDupØ00__func__Ø000[0], str(49139), 19)
}
-func _sqlite3ExprDup(tls *crt.TLS, _db *Xsqlite3, _p *XExpr, _flags int32) (r0 *XExpr) { // sqlite3.c:92191:1
+// The following group of routines make deep copies of expressions,
+// expression lists, ID lists, and select statements. The copies can
+// be deleted (by being passed to their respective ...Delete() routines)
+// without effecting the originals.
+//
+// The expression list, ID, and source lists return by sqlite3ExprListDup(),
+// sqlite3IdListDup(), and sqlite3SrcListDup() can not be further expanded
+// by subsequent calls to sqlite*ListAppend() routines.
+//
+// Any tables that the SrcList might point to are not duplicated.
+//
+// The flags parameter contains a combination of the EXPRDUP_XXX flags.
+// If the EXPRDUP_REDUCE flag is set, then the structure returned is a
+// truncated version of the usual Expr structure that will be stored as
+// part of the in-memory representation of the database schema.
+func _sqlite3ExprDup(tls *crt.TLS, _db *Xsqlite3, _p *XExpr, _flags int32) (r0 *XExpr) {
func() {
if _flags != i32(0) && _flags != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92192), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDupØ00__func__Ø000))), unsafe.Pointer(str(50696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92192), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprDupØ00__func__Ø000))), unsafe.Pointer(str(49158)))
crt.X__builtin_abort(tls)
}
}()
@@ -39631,62 +36060,53 @@ func _sqlite3ExprDup(tls *crt.TLS, _db *Xsqlite3, _p *XExpr, _flags int32) (r0 *
}()
}
-var _sqlite3ExprDupØ00__func__Ø000 [15]int8 // -
+var _sqlite3ExprDupØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprDupØ00__func__Ø000[0], str(50732), 15)
+ crt.Xstrncpy(nil, &_sqlite3ExprDupØ00__func__Ø000[0], str(49192), 15)
}
-func _exprDup(tls *crt.TLS, _db *Xsqlite3, _p *XExpr, _dupFlags int32, _pzBuffer **uint8) (r0 *XExpr) { // sqlite3.c:92054:1
- var _pNew *XExpr // sqlite3.c:92055:8
- _ = _pNew
- var _zAlloc *uint8 // sqlite3.c:92056:6
- _ = _zAlloc
- var _staticFlag uint32 // sqlite3.c:92057:7
- _ = _staticFlag
- var _3_nStructSize uint32 // sqlite3.c:92080:20
- _ = _3_nStructSize
- var _3_nNewSize int32 // sqlite3.c:92081:15
- _ = _3_nNewSize
- var _3_nToken int32 // sqlite3.c:92082:9
- _ = _3_nToken
- var _7_nSize uint32 // sqlite3.c:92092:11
- _ = _7_nSize
- var _9_zToken *int8 // sqlite3.c:92106:12
- _ = _9_zToken
+// This function is similar to sqlite3ExprDup(), except that if pzBuffer
+// is not NULL then *pzBuffer is assumed to point to a buffer large enough
+// to store the copy of expression p, the copies of p->u.zToken
+// (if applicable), and the copies of the p->pLeft and p->pRight expressions,
+// if any. Before returning, *pzBuffer is set to the first byte past the
+// portion of the buffer copied into by this function.
+func _exprDup(tls *crt.TLS, _db *Xsqlite3, _p *XExpr, _dupFlags int32, _pzBuffer **uint8) (r0 *XExpr) {
+ var _3_nNewSize, _3_nToken int32
+ var _staticFlag, _3_nStructSize, _7_nSize uint32
+ var _9_zToken *int8
+ var _zAlloc *uint8
+ var _pNew *XExpr
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92059), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92059), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92060), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(8472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92060), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(9660)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _dupFlags != i32(0) && _dupFlags != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92061), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(50748)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92061), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(49207)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pzBuffer != nil && _dupFlags != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92062), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(50788)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92062), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(49247)))
crt.X__builtin_abort(tls)
}
}()
- if _pzBuffer == nil {
- goto _10
+ if _pzBuffer != nil {
+ _zAlloc = *_pzBuffer
+ _staticFlag = uint32(i32(32768))
+ goto _11
}
-
- _zAlloc = *_pzBuffer
- _staticFlag = uint32(i32(32768))
- goto _11
-
-_10:
_zAlloc = (*uint8)(_sqlite3DbMallocRawNN(tls, _db, uint64(_dupedExprSize(tls, _p, _dupFlags))))
_staticFlag = uint32(i32(0))
_11:
@@ -39694,41 +36114,29 @@ _11:
if _pNew == nil {
goto _12
}
-
_3_nStructSize = uint32(_dupedExprStructSize(tls, _p, _dupFlags))
_3_nNewSize = int32(_3_nStructSize & uint32(i32(4095)))
- if ((_p.X2)&uint32(i32(1024))) != uint32(i32(0)) || (*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) == nil {
- goto _14
+ if (((_p.X2) & uint32(i32(1024))) == uint32(i32(0))) && ((*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) != nil) {
+ _3_nToken = _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) + i32(1)
+ goto _15
}
-
- _3_nToken = _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) + i32(1)
- goto _15
-
-_14:
_3_nToken = i32(0)
_15:
- if _dupFlags == 0 {
- goto _16
+ if _dupFlags != 0 {
+ func() {
+ if bool2int(((_p.X2)&uint32(i32(8192))) != uint32(i32(0))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92089), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(49287)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zAlloc), (unsafe.Pointer)(_p), uint32(_3_nNewSize))
+ goto _19
}
-
- func() {
- if bool2int(((_p.X2)&uint32(i32(8192))) != uint32(i32(0))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92089), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(50828)))
- crt.X__builtin_abort(tls)
- }
- }()
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zAlloc), (unsafe.Pointer)(_p), uint32(_3_nNewSize))
- goto _19
-
-_16:
_7_nSize = uint32(_exprStructSize(tls, _p))
crt.Xmemcpy(tls, (unsafe.Pointer)(_zAlloc), (unsafe.Pointer)(_p), _7_nSize)
- if _7_nSize >= u32(48) {
- goto _20
+ if _7_nSize < u32(48) {
+ crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAlloc))+1*uintptr(_7_nSize)))), i32(0), u32(48)-_7_nSize)
}
-
- crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAlloc))+1*uintptr(_7_nSize)))), i32(0), u32(48)-_7_nSize)
-_20:
_19:
{
p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X2 */)))
@@ -39745,255 +36153,245 @@ _19:
*p = (*p) | _staticFlag
sink5 = *p
}
- if _3_nToken == 0 {
- goto _21
+ if _3_nToken != 0 {
+ _9_zToken = store0((**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(8 /* X3 */))))), (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAlloc))+1*uintptr(_3_nNewSize))))))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_9_zToken), (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))), uint32(_3_nToken))
}
-
- _9_zToken = store0((**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(8 /* X3 */))))), (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAlloc))+1*uintptr(_3_nNewSize))))))
- crt.Xmemcpy(tls, (unsafe.Pointer)(_9_zToken), (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))), uint32(_3_nToken))
-_21:
if uint32(i32(0)) != (((_p.X2) | (_pNew.X2)) & uint32(i32(8404992))) {
goto _22
}
-
- if ((_p.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _23
+ if ((_p.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X6 */))))))) = _sqlite3SelectDup(tls, _db, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), _dupFlags)
+ goto _24
}
-
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X6 */))))))) = _sqlite3SelectDup(tls, _db, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), _dupFlags)
- goto _24
-
-_23:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X6 */))))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), _dupFlags)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X6 */))))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), _dupFlags)
_24:
_22:
if ((_pNew.X2) & uint32(i32(24576))) == uint32(i32(0)) {
goto _25
}
-
{
p := &_zAlloc
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_dupedExprNodeSize(tls, _p, _dupFlags))))
- sink11 = *p
+ sink13 = *p
}
- if ((_pNew.X2) & uint32(i32(8404992))) != uint32(i32(0)) {
- goto _26
+ if ((_pNew.X2) & uint32(i32(8404992))) == uint32(i32(0)) {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))))) = func() *XExpr {
+ if (*XExpr)(_p.X4) != nil {
+ return _exprDup(tls, _db, (*XExpr)(_p.X4), i32(1), &_zAlloc)
+ }
+ return nil
+ }()
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(16 /* X5 */))))) = func() *XExpr {
+ if (*XExpr)(_p.X5) != nil {
+ return _exprDup(tls, _db, (*XExpr)(_p.X5), i32(1), &_zAlloc)
+ }
+ return nil
+ }()
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))))) = func() *XExpr {
- if (*XExpr)(_p.X4) != nil {
- return _exprDup(tls, _db, (*XExpr)(_p.X4), i32(1), &_zAlloc)
- }
- return nil
- }()
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(16 /* X5 */))))) = func() *XExpr {
- if (*XExpr)(_p.X5) != nil {
- return _exprDup(tls, _db, (*XExpr)(_p.X5), i32(1), &_zAlloc)
- }
- return nil
- }()
-_26:
- if _pzBuffer == nil {
- goto _31
+ if _pzBuffer != nil {
+ *_pzBuffer = _zAlloc
}
-
- *_pzBuffer = _zAlloc
-_31:
goto _32
-
_25:
if ((_p.X2) & uint32(i32(8404992))) != uint32(i32(0)) {
goto _33
}
-
- if int32(_pNew.X0) != i32(159) {
- goto _34
+ if int32(_pNew.X0) == i32(159) {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))))) = (*XExpr)(_p.X4)
+ func() {
+ if int32(_p.X9) != i32(0) && (*XExpr)(_p.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92135), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(49321)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XExpr)(_p.X5) != nil && (*XExpr)(_p.X5) != (*XExpr)(_p.X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92136), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(49351)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _41
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))))) = (*XExpr)(_p.X4)
- func() {
- if int32(_p.X9) != i32(0) && (*XExpr)(_p.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92135), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(50864)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XExpr)(_p.X5) != nil && (*XExpr)(_p.X5) != (*XExpr)(_p.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92136), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprDupØ00__func__Ø000))), unsafe.Pointer(str(50896)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _41
-
-_34:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))))) = _sqlite3ExprDup(tls, _db, (*XExpr)(_p.X4), i32(0))
_41:
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(16 /* X5 */))))) = _sqlite3ExprDup(tls, _db, (*XExpr)(_p.X5), i32(0))
_33:
_32:
_12:
- r0 = _pNew
- return
+ return _pNew
}
-var _exprDupØ00__func__Ø000 [8]int8 // -
+var _exprDupØ00__func__Ø000 [8]int8
func init() {
- crt.Xstrncpy(nil, &_exprDupØ00__func__Ø000[0], str(50932), 8)
+ crt.Xstrncpy(nil, &_exprDupØ00__func__Ø000[0], str(49387), 8)
}
-func _dupedExprSize(tls *crt.TLS, _p *XExpr, _flags int32) (r0 int32) { // sqlite3.c:92035:1
- var _nByte int32 // sqlite3.c:92036:7
- _ = _nByte
+// Return the number of bytes required to create a duplicate of the
+// expression passed as the first argument. The second argument is a
+// mask containing EXPRDUP_XXX flags.
+//
+// The value returned includes space to create a copy of the Expr struct
+// itself and the buffer referred to by Expr.u.zToken, if any.
+//
+// If the EXPRDUP_REDUCE flag is set, then the return value includes
+// space to duplicate all Expr nodes in the tree formed by Expr.pLeft
+// and Expr.pRight variables (but not for any structures pointed to or
+// descended from the Expr.x.pList or Expr.x.pSelect variables).
+func _dupedExprSize(tls *crt.TLS, _p *XExpr, _flags int32) (r0 int32) {
+ var _nByte int32
_nByte = i32(0)
if _p == nil {
goto _0
}
-
_nByte = _dupedExprNodeSize(tls, _p, _flags)
- if (_flags & i32(1)) == 0 {
- goto _1
- }
-
- {
- p := &_nByte
- *p = (*p) + (_dupedExprSize(tls, (*XExpr)(_p.X4), _flags) + _dupedExprSize(tls, (*XExpr)(_p.X5), _flags))
- sink1 = *p
+ if (_flags & i32(1)) != 0 {
+ {
+ p := &_nByte
+ *p = (*p) + (_dupedExprSize(tls, (*XExpr)(_p.X4), _flags) + _dupedExprSize(tls, (*XExpr)(_p.X5), _flags))
+ sink1 = *p
+ }
}
-_1:
_0:
- r0 = _nByte
- return
+ return _nByte
}
-func _dupedExprNodeSize(tls *crt.TLS, _p *XExpr, _flags int32) (r0 int32) { // sqlite3.c:92014:1
- var _nByte int32 // sqlite3.c:92015:7
- _ = _nByte
+// This function returns the space in bytes required to store the copy
+// of the Expr structure and a copy of the Expr.u.zToken string (if that
+// string is defined.)
+func _dupedExprNodeSize(tls *crt.TLS, _p *XExpr, _flags int32) (r0 int32) {
+ var _nByte int32
_nByte = _dupedExprStructSize(tls, _p, _flags) & i32(4095)
- if ((_p.X2)&uint32(i32(1024))) != uint32(i32(0)) || (*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) == nil {
- goto _1
- }
-
- {
- p := &_nByte
- *p = (*p) + (_sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) + i32(1))
- sink1 = *p
+ if (((_p.X2) & uint32(i32(1024))) == uint32(i32(0))) && ((*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) != nil) {
+ {
+ p := &_nByte
+ *p = (*p) + (_sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))) + i32(1))
+ sink1 = *p
+ }
}
-_1:
return (_nByte + i32(7)) & i32(-8)
}
-func _dupedExprStructSize(tls *crt.TLS, _p *XExpr, _flags int32) (r0 int32) { // sqlite3.c:91987:1
- var _nSize int32 // sqlite3.c:91988:7
- _ = _nSize
+// The dupedExpr*Size() routines each return the number of bytes required
+// to store a copy of an expression or expression tree. They differ in
+// how much of the tree is measured.
+//
+// dupedExprStructSize() Size of only the Expr structure
+// dupedExprNodeSize() Size of Expr + space for token
+// dupedExprSize() Expr + token + subtree components
+//
+// ***************************************************************************
+//
+// The dupedExprStructSize() function returns two values OR-ed together:
+// (1) the space required for a copy of the Expr structure only and
+// (2) the EP_xxx flags that indicate what the structure size should be.
+// The return values is always one of:
+//
+// EXPR_FULLSIZE
+// EXPR_REDUCEDSIZE | EP_Reduced
+// EXPR_TOKENONLYSIZE | EP_TokenOnly
+//
+// The size of the structure can be found by masking the return value
+// of this routine with 0xfff. The flags can be found by masking the
+// return value with EP_Reduced|EP_TokenOnly.
+//
+// Note that with flags==EXPRDUP_REDUCE, this routines works on full-size
+// (unreduced) Expr objects as they or originally constructed by the parser.
+// During expression analysis, extra information is computed and moved into
+// later parts of teh Expr object and that extra information might get chopped
+// off if the expression is reduced. Note also that it does not work to
+// make an EXPRDUP_REDUCE copy of a reduced expression. It is only legal
+// to reduce a pristine expression tree from the parser. The implementation
+// of dupedExprStructSize() contain multiple assert() statements that attempt
+// to enforce this constraint.
+func _dupedExprStructSize(tls *crt.TLS, _p *XExpr, _flags int32) (r0 int32) {
+ var _nSize int32
func() {
if _flags != i32(1) && _flags != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91989), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(50940)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91989), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(49395)))
crt.X__builtin_abort(tls)
}
}()
i32(0)
i32(0)
- if i32(0) != _flags && int32(_p.X0) != i32(159) {
- goto _4
+ if (i32(0) == _flags) || (int32(_p.X0) == i32(159)) {
+ _nSize = int32(u32(48))
+ goto _5
}
-
- _nSize = int32(u32(48))
- goto _5
-
-_4:
func() {
if ((_p.X2) & uint32(i32(24576))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91995), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(50976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91995), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(49429)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X2) & uint32(i32(1))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91996), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(51024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91996), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(49474)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X2) & uint32(i32(65536))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91997), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(51060)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91997), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(49507)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X2) & uint32(i32(131072))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91998), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(51096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91998), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(49540)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExpr)(_p.X4) == nil && (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) == nil {
- goto _15
+ if ((*XExpr)(_p.X4) != nil) || ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil) {
+ _nSize = int32(u32(8220))
+ goto _16
}
-
- _nSize = int32(u32(8220))
- goto _16
-
-_15:
func() {
if (*XExpr)(_p.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92002), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(20804)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92002), unsafe.Pointer((*int8)(unsafe.Pointer(&_dupedExprStructSizeØ00__func__Ø000))), unsafe.Pointer(str(21256)))
crt.X__builtin_abort(tls)
}
}()
_nSize = int32(u32(16396))
_16:
_5:
- r0 = _nSize
- return
+ return _nSize
}
-var _dupedExprStructSizeØ00__func__Ø000 [20]int8 // -
+var _dupedExprStructSizeØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_dupedExprStructSizeØ00__func__Ø000[0], str(51132), 20)
+ crt.Xstrncpy(nil, &_dupedExprStructSizeØ00__func__Ø000[0], str(49573), 20)
}
-func _exprStructSize(tls *crt.TLS, _p *XExpr) (r0 int32) { // sqlite3.c:91947:1
- if ((_p.X2) & uint32(i32(16384))) == uint32(i32(0)) {
- goto _0
+// Return the number of bytes allocated for the expression structure
+// passed as the first argument. This is always one of EXPR_FULLSIZE,
+// EXPR_REDUCEDSIZE or EXPR_TOKENONLYSIZE.
+func _exprStructSize(tls *crt.TLS, _p *XExpr) (r0 int32) {
+ if ((_p.X2) & uint32(i32(16384))) != uint32(i32(0)) {
+ return int32(u32(12))
}
- return int32(u32(12))
-
-_0:
- if ((_p.X2) & uint32(i32(8192))) == uint32(i32(0)) {
- goto _1
+ if ((_p.X2) & uint32(i32(8192))) != uint32(i32(0)) {
+ return int32(u32(28))
}
- return int32(u32(28))
-
-_1:
return int32(u32(48))
}
-func _sqlite3SrcListDup(tls *crt.TLS, _db *Xsqlite3, _p *XSrcList, _flags int32) (r0 *XSrcList) { // sqlite3.c:92246:1
- var _pNew *XSrcList // sqlite3.c:92247:11
- _ = _pNew
- var _i int32 // sqlite3.c:92248:7
- _ = _i
- var _nByte int32 // sqlite3.c:92249:7
- _ = _nByte
- var _1_pNewItem *TSrcList_item // sqlite3.c:92257:25
- _ = _1_pNewItem
- var _1_pOldItem *TSrcList_item // sqlite3.c:92258:25
- _ = _1_pOldItem
- var _1_pTab *XTable // sqlite3.c:92259:11
- _ = _1_pTab
+func _sqlite3SrcListDup(tls *crt.TLS, _db *Xsqlite3, _p *XSrcList, _flags int32) (r0 *XSrcList) {
+ var _i, _nByte int32
+ var _1_pTab *XTable
+ var _pNew *XSrcList
+ var _1_pNewItem, _1_pOldItem *TSrcList_item
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListDupØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListDupØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil {
- goto _2
+ if _p == nil {
+ return nil
}
- return nil
-
-_2:
_nByte = int32(u32(76) + func() uint32 {
if (_p.X0) > i32(0) {
return (u32(68) * uint32((_p.X0)-i32(1)))
@@ -40001,220 +36399,165 @@ _2:
return uint32(i32(0))
}())
_pNew = (*XSrcList)(_sqlite3DbMallocRawNN(tls, _db, uint64(_nByte)))
- if _pNew != nil {
- goto _5
+ if _pNew == nil {
+ return nil
}
- return nil
-
-_5:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = int32(store5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(4 /* X1 */))), uint32(_p.X0)))
_i = i32(0)
_6:
if _i >= (_p.X0) {
goto _9
}
-
_1_pNewItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
_1_pOldItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
*(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(0 /* X0 */))))) = (*XSchema)(_1_pOldItem.X0)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(4 /* X1 */))) = _sqlite3DbStrDup(tls, _db, _1_pOldItem.X1)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, _1_pOldItem.X2)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(12 /* X3 */))) = _sqlite3DbStrDup(tls, _db, _1_pOldItem.X3)
- *(*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(36 /* X9 */))) = _1_pOldItem.X9
+ *(*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(36 /* X9 */))) = _1_pOldItem.X9
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(40 /* X11 */))) = _1_pOldItem.X11
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(24 /* X6 */))) = _1_pOldItem.X6
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(28 /* X7 */))) = _1_pOldItem.X7
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _10
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ *(**int8)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(60 /* X15 */))))) = _sqlite3DbStrDup(tls, _db, *(**int8)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOldItem)) + uintptr(60 /* X15 */))))))
}
-
- *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(60 /* X15 */))))) = _sqlite3DbStrDup(tls, _db, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOldItem)) + uintptr(60 /* X15 */))))))
-_10:
*(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(64 /* X16 */))))) = (*XIndex)(_1_pOldItem.X16)
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _11
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(60 /* X15 */))))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOldItem)) + uintptr(60 /* X15 */)))))), _flags)
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(60 /* X15 */))))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOldItem)) + uintptr(60 /* X15 */)))))), _flags)
-_11:
- _1_pTab = store42((**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem))+uintptr(16 /* X4 */))))), (*XTable)(_1_pOldItem.X4))
- if _1_pTab == nil {
- goto _12
+ _1_pTab = store44((**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem))+uintptr(16 /* X4 */))))), (*XTable)(_1_pOldItem.X4))
+ if _1_pTab != nil {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(32 /* X8 */))) += 1
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(32 /* X8 */))) += 1
-_12:
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(20 /* X5 */))))) = _sqlite3SelectDup(tls, _db, (*XSelect)(_1_pOldItem.X5), _flags)
*(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(44 /* X12 */))))) = _sqlite3ExprDup(tls, _db, (*XExpr)(_1_pOldItem.X12), _flags)
*(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(48 /* X13 */))))) = _sqlite3IdListDup(tls, _db, (*XIdList)(_1_pOldItem.X13))
*(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNewItem)) + uintptr(52 /* X14 */))) = _1_pOldItem.X14
_i += 1
goto _6
-
_9:
return _pNew
}
-var _sqlite3SrcListDupØ00__func__Ø000 [18]int8 // -
+var _sqlite3SrcListDupØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SrcListDupØ00__func__Ø000[0], str(51152), 18)
+ crt.Xstrncpy(nil, &_sqlite3SrcListDupØ00__func__Ø000[0], str(49593), 18)
}
-func _sqlite3IdListDup(tls *crt.TLS, _db *Xsqlite3, _p *XIdList) (r0 *XIdList) { // sqlite3.c:92287:1
- var _pNew *XIdList // sqlite3.c:92288:10
- _ = _pNew
- var _i int32 // sqlite3.c:92289:7
- _ = _i
- var _2_pNewItem *TIdList_item // sqlite3.c:92304:24
- _ = _2_pNewItem
- var _2_pOldItem *TIdList_item // sqlite3.c:92305:24
- _ = _2_pOldItem
+func _sqlite3IdListDup(tls *crt.TLS, _db *Xsqlite3, _p *XIdList) (r0 *XIdList) {
+ var _i int32
+ var _pNew *XIdList
+ var _2_pNewItem, _2_pOldItem *TIdList_item
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92290), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IdListDupØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92290), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IdListDupØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil {
- goto _2
+ if _p == nil {
+ return nil
}
- return nil
-
-_2:
_pNew = (*XIdList)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(8))))
- if _pNew != nil {
- goto _3
+ if _pNew == nil {
+ return nil
}
- return nil
-
-_3:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))) = _p.X1
*(**TIdList_item)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))))) = (*TIdList_item)(_sqlite3DbMallocRawNN(tls, _db, uint64(uint32(_p.X1)*u32(8))))
- if (*TIdList_item)(_pNew.X0) != nil {
- goto _4
+ if (*TIdList_item)(_pNew.X0) == nil {
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pNew))
+ return nil
}
-
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pNew))
- return nil
-
-_4:
_i = i32(0)
_5:
if _i >= (_p.X1) {
goto _8
}
-
_2_pNewItem = (*TIdList_item)(unsafe.Pointer(uintptr(_pNew.X0) + 8*uintptr(_i)))
_2_pOldItem = (*TIdList_item)(unsafe.Pointer(uintptr(_p.X0) + 8*uintptr(_i)))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pNewItem)) + uintptr(0 /* X0 */))) = _sqlite3DbStrDup(tls, _db, _2_pOldItem.X0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pNewItem)) + uintptr(4 /* X1 */))) = _2_pOldItem.X1
_i += 1
goto _5
-
_8:
return _pNew
}
-var _sqlite3IdListDupØ00__func__Ø000 [17]int8 // -
+var _sqlite3IdListDupØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3IdListDupØ00__func__Ø000[0], str(51172), 17)
+ crt.Xstrncpy(nil, &_sqlite3IdListDupØ00__func__Ø000[0], str(49611), 17)
}
-func _withDup(tls *crt.TLS, _db *Xsqlite3, _p *XWith) (r0 *XWith) { // sqlite3.c:92153:1
- var _pRet *XWith // sqlite3.c:92154:8
- _ = _pRet
- var _1_nByte int32 // sqlite3.c:92156:9
- _ = _1_nByte
- var _2_i int32 // sqlite3.c:92159:11
- _ = _2_i
+func _withDup(tls *crt.TLS, _db *Xsqlite3, _p *XWith) (r0 *XWith) {
+ var _1_nByte, _2_i int32
+ var _pRet *XWith
_pRet = nil
if _p == nil {
goto _0
}
-
_1_nByte = int32(u32(24) + (u32(16) * uint32((_p.X0)-i32(1))))
_pRet = (*XWith)(_sqlite3DbMallocZero(tls, _db, uint64(_1_nByte)))
if _pRet == nil {
goto _1
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(0 /* X0 */))) = _p.X0
_2_i = i32(0)
_2:
if _2_i >= (_p.X0) {
goto _5
}
-
*(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))))) + uintptr(8 /* X2 */))))) = _sqlite3SelectDup(tls, _db, (*XSelect)((*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))).X2), i32(0))
*(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))))) + uintptr(4 /* X1 */))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)((*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))).X1), i32(0))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))))) + uintptr(0 /* X0 */))) = _sqlite3DbStrDup(tls, _db, (*TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TCte)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+16*uintptr(_2_i))).X0)
_2_i += 1
goto _2
-
_5:
_1:
_0:
- r0 = _pRet
- return
-}
-
-func _sqlite3SelectSetName(tls *crt.TLS, _p *XSelect, _zName *int8) { // sqlite3.c:116681:1
- if _p == nil || _zName == nil {
- goto _1
- }
-
- Xsqlite3_snprintf(tls, int32(u32(12)), (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */))))), str(24316), unsafe.Pointer(_zName))
-_1:
+ return _pRet
}
-func _sqlite3ColumnsFromExprList(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _pnCol *int16, _paCol **XColumn) (r0 int32) { // sqlite3.c:118172:1
- var _db *Xsqlite3 // sqlite3.c:118178:11
- _ = _db
- var _i int32 // sqlite3.c:118179:7
- _ = _i
- var _j int32 // sqlite3.c:118179:10
- _ = _j
- var _cnt uint32 // sqlite3.c:118180:7
- _ = _cnt
- var _aCol *XColumn // sqlite3.c:118181:10
- _ = _aCol
- var _pCol *XColumn // sqlite3.c:118181:17
- _ = _pCol
- var _nCol int32 // sqlite3.c:118182:7
- _ = _nCol
- var _p *XExpr // sqlite3.c:118183:8
- _ = _p
- var _zName *int8 // sqlite3.c:118184:8
- _ = _zName
- var _nName int32 // sqlite3.c:118185:7
- _ = _nName
- var _ht XHash // sqlite3.c:118186:8
- _ = _ht
- var _5_pColExpr *XExpr // sqlite3.c:118208:12
- _ = _5_pColExpr
- var _5_pTab *XTable // sqlite3.c:118209:13
- _ = _5_pTab
- var _7_iCol int32 // sqlite3.c:118216:13
- _ = _7_iCol
+// Set the name of a Select object
+func _sqlite3SelectSetName(tls *crt.TLS, _p *XSelect, _zName *int8) {
+ if (_p != nil) && (_zName != nil) {
+ Xsqlite3_snprintf(tls, int32(u32(12)), (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */))))), str(24576), unsafe.Pointer(_zName))
+ }
+}
+
+// Given an expression list (which is really the list of expressions
+// that form the result set of a SELECT statement) compute appropriate
+// column names for a table that would hold the expression list.
+//
+// All column names will be unique.
+//
+// Only the column names are computed. Column.zType, Column.zColl,
+// and other fields of Column are zeroed.
+//
+// Return SQLITE_OK on success. If a memory allocation error occurs,
+// store NULL in *paCol and 0 in *pnCol and return SQLITE_NOMEM.
+func _sqlite3ColumnsFromExprList(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _pnCol *int16, _paCol **XColumn) (r0 int32) {
+ var _i, _j, _nCol, _nName, _7_iCol int32
+ var _cnt uint32
+ var _zName *int8
+ var _ht XHash
+ var _db *Xsqlite3
+ var _5_pTab *XTable
+ var _p, _5_pColExpr *XExpr
+ var _aCol, _pCol *XColumn
_db = (*Xsqlite3)(_pParse.X0)
_sqlite3HashInit(tls, &_ht)
- if _pEList == nil {
- goto _0
+ if _pEList != nil {
+ _nCol = _pEList.X0
+ _aCol = (*XColumn)(_sqlite3DbMallocZero(tls, _db, uint64(u32(16)*uint32(_nCol))))
+ goto _1
}
-
- _nCol = _pEList.X0
- _aCol = (*XColumn)(_sqlite3DbMallocZero(tls, _db, uint64(u32(16)*uint32(_nCol))))
- goto _1
-
-_0:
_nCol = i32(0)
_aCol = nil
_1:
func() {
if _nCol != int32(int16(_nCol)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnsFromExprListØ00__func__Ø000))), unsafe.Pointer(str(51192)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnsFromExprListØ00__func__Ø000))), unsafe.Pointer(str(49628)))
crt.X__builtin_abort(tls)
}
}()
@@ -40225,135 +36568,99 @@ _4:
if _i >= _nCol || (_db.X17) != 0 {
goto _8
}
-
_p = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if store0(&_zName, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) == nil {
- goto _9
+ if store0(&_zName, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) != nil {
+ goto _10
}
-
- goto _10
-
-_9:
_5_pColExpr = _p
_11:
- if int32(_5_pColExpr.X0) != i32(122) {
- goto _12
+ if int32(_5_pColExpr.X0) == i32(122) {
+ _5_pColExpr = (*XExpr)(_5_pColExpr.X5)
+ func() {
+ if _5_pColExpr == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118212), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnsFromExprListØ00__func__Ø000))), unsafe.Pointer(str(49644)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _11
}
-
- _5_pColExpr = (*XExpr)(_5_pColExpr.X5)
- func() {
- if _5_pColExpr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118212), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnsFromExprListØ00__func__Ø000))), unsafe.Pointer(str(51208)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _11
-
-_12:
if int32(_5_pColExpr.X0) != i32(152) || (*XTable)(_5_pColExpr.X14) == nil {
goto _16
}
-
_7_iCol = int32(_5_pColExpr.X9)
_5_pTab = (*XTable)(_5_pColExpr.X14)
- if _7_iCol >= i32(0) {
- goto _17
+ if _7_iCol < i32(0) {
+ _7_iCol = int32(_5_pTab.X10)
}
-
- _7_iCol = int32(_5_pTab.X10)
-_17:
_zName = func() *int8 {
if _7_iCol >= i32(0) {
return ((*XColumn)(unsafe.Pointer(uintptr(_5_pTab.X1) + 16*uintptr(_7_iCol))).X0)
}
- return str(27392)
+ return str(27227)
}()
goto _20
-
_16:
- if int32(_5_pColExpr.X0) != i32(27) {
- goto _21
+ if int32(_5_pColExpr.X0) == i32(27) {
+ func() {
+ if ((_5_pColExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnsFromExprListØ00__func__Ø000))), unsafe.Pointer(str(49656)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _zName = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pColExpr)) + uintptr(8 /* X3 */)))))
+ goto _24
}
-
- func() {
- if ((_5_pColExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ColumnsFromExprListØ00__func__Ø000))), unsafe.Pointer(str(51220)))
- crt.X__builtin_abort(tls)
- }
- }()
- _zName = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pColExpr)) + uintptr(8 /* X3 */)))))
- goto _24
-
-_21:
_zName = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X2
_24:
_20:
_10:
- _zName = _sqlite3MPrintf(tls, _db, str(24316), unsafe.Pointer(_zName))
+ _zName = _sqlite3MPrintf(tls, _db, str(24576), unsafe.Pointer(_zName))
_cnt = uint32(i32(0))
_25:
if _zName == nil || _sqlite3HashFind(tls, &_ht, _zName) == nil {
goto _26
}
-
_nName = _sqlite3Strlen30(tls, _zName)
if _nName <= i32(0) {
goto _28
}
-
_j = _nName - i32(1)
_29:
if _j <= i32(0) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zName)) + 1*uintptr(_j))))))))&i32(4)) == 0 {
goto _33
}
-
_j -= 1
goto _29
-
_33:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zName)) + 1*uintptr(_j)))) != i32(58) {
- goto _34
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zName)) + 1*uintptr(_j)))) == i32(58) {
+ _nName = _j
}
-
- _nName = _j
-_34:
_28:
- _zName = _sqlite3MPrintf(tls, _db, str(51260), _nName, unsafe.Pointer(_zName), preInc5(&_cnt, uint32(1)))
- if _cnt <= uint32(i32(3)) {
- goto _35
+ _zName = _sqlite3MPrintf(tls, _db, str(49696), _nName, unsafe.Pointer(_zName), preInc5(&_cnt, uint32(1)))
+ if _cnt > uint32(i32(3)) {
+ Xsqlite3_randomness(tls, int32(u32(4)), (unsafe.Pointer)(&_cnt))
}
-
- Xsqlite3_randomness(tls, int32(u32(4)), (unsafe.Pointer)(&_cnt))
-_35:
goto _25
-
_26:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(0 /* X0 */))) = _zName
- if _zName == nil || _sqlite3HashInsert(tls, &_ht, _zName, (unsafe.Pointer)(_pCol)) != (unsafe.Pointer)(_pCol) {
- goto _37
+ if (_zName != nil) && (_sqlite3HashInsert(tls, &_ht, _zName, (unsafe.Pointer)(_pCol)) == (unsafe.Pointer)(_pCol)) {
+ _sqlite3OomFault(tls, _db)
}
-
- _sqlite3OomFault(tls, _db)
-_37:
*(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
goto _4
-
_8:
_sqlite3HashClear(tls, &_ht)
if (_db.X17) == 0 {
goto _38
}
-
_j = i32(0)
_39:
if _j >= _i {
goto _42
}
-
_sqlite3DbFree(tls, _db, (unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCol))+16*uintptr(_j))).X0))
_j += 1
goto _39
-
_42:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_aCol))
*_paCol = nil
@@ -40362,327 +36669,282 @@ _42:
_38:
return i32(0)
+
+ _ = _ht
+ panic(0)
}
-var _sqlite3ColumnsFromExprListØ00__func__Ø000 [27]int8 // -
+var _sqlite3ColumnsFromExprListØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ColumnsFromExprListØ00__func__Ø000[0], str(51268), 27)
+ crt.Xstrncpy(nil, &_sqlite3ColumnsFromExprListØ00__func__Ø000[0], str(49704), 27)
}
-func _sqlite3LocateTableItem(tls *crt.TLS, _pParse *XParse, _flags uint32, _p *TSrcList_item) (r0 *XTable) { // sqlite3.c:100088:1
- var _zDb *int8 // sqlite3.c:100093:14
- _ = _zDb
- var _1_iDb int32 // sqlite3.c:100096:9
- _ = _1_iDb
+// Locate the table identified by *p.
+//
+// This is a wrapper around sqlite3LocateTable(). The difference between
+// sqlite3LocateTable() and this function is that this function restricts
+// the search to schema (p->pSchema) if it is not NULL. p->pSchema may be
+// non-NULL if it is part of a view or trigger program definition. See
+// sqlite3FixSrcList() for details.
+func _sqlite3LocateTableItem(tls *crt.TLS, _pParse *XParse, _flags uint32, _p *TSrcList_item) (r0 *XTable) {
+ var _1_iDb int32
+ var _zDb *int8
func() {
if (*XSchema)(_p.X0) != nil && (_p.X1) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100094), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LocateTableItemØ00__func__Ø000))), unsafe.Pointer(str(51296)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100094), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LocateTableItemØ00__func__Ø000))), unsafe.Pointer(str(49731)))
crt.X__builtin_abort(tls)
}
}()
- if (*XSchema)(_p.X0) == nil {
- goto _3
+ if (*XSchema)(_p.X0) != nil {
+ _1_iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_p.X0))
+ _zDb = (*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4) + 16*uintptr(_1_iDb))).X0
+ goto _4
}
-
- _1_iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_p.X0))
- _zDb = (*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4) + 16*uintptr(_1_iDb))).X0
- goto _4
-
-_3:
_zDb = _p.X1
_4:
return _sqlite3LocateTable(tls, _pParse, _flags, _p.X2, _zDb)
}
-var _sqlite3LocateTableItemØ00__func__Ø000 [23]int8 // -
+var _sqlite3LocateTableItemØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3LocateTableItemØ00__func__Ø000[0], str(51332), 23)
+ crt.Xstrncpy(nil, &_sqlite3LocateTableItemØ00__func__Ø000[0], str(49764), 23)
}
-func _sqlite3LocateTable(tls *crt.TLS, _pParse *XParse, _flags uint32, _zName *int8, _zDbase *int8) (r0 *XTable) { // sqlite3.c:100035:1
- var _p *XTable // sqlite3.c:100041:9
- _ = _p
- var _2_zMsg *int8 // sqlite3.c:100051:16
- _ = _2_zMsg
- var _3_pMod *XModule // sqlite3.c:100057:14
- _ = _3_pMod
- if i32(0) == _sqlite3ReadSchema(tls, _pParse) {
- goto _0
+// Locate the in-memory structure that describes a particular database
+// table given the name of that table and (optionally) the name of the
+// database containing the table. Return NULL if not found. Also leave an
+// error message in pParse->zErrMsg.
+//
+// The difference between this routine and sqlite3FindTable() is that this
+// routine leaves an error message in pParse->zErrMsg where
+// sqlite3FindTable() does not.
+func _sqlite3LocateTable(tls *crt.TLS, _pParse *XParse, _flags uint32, _zName *int8, _zDbase *int8) (r0 *XTable) {
+ var _2_zMsg *int8
+ var _p *XTable
+ var _3_pMod *XModule
+ if i32(0) != _sqlite3ReadSchema(tls, _pParse) {
+ return nil
}
- return nil
-
-_0:
_p = _sqlite3FindTable(tls, (*Xsqlite3)(_pParse.X0), _zName, _zDbase)
if _p != nil {
goto _1
}
-
_2_zMsg = func() *int8 {
if (_flags & uint32(i32(1))) != 0 {
- return str(51356)
+ return str(49787)
}
- return str(51372)
+ return str(49800)
}()
if _sqlite3FindDbName(tls, (*Xsqlite3)(_pParse.X0), _zDbase) >= i32(1) {
goto _4
}
-
_3_pMod = (*XModule)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(316 /* X65 */))), _zName))
- if _3_pMod != nil || Xsqlite3_strnicmp(tls, _zName, str(51388), i32(7)) != i32(0) {
- goto _6
+ if (_3_pMod == nil) && (Xsqlite3_strnicmp(tls, _zName, str(49814), i32(7)) == i32(0)) {
+ _3_pMod = _sqlite3PragmaVtabRegister(tls, (*Xsqlite3)(_pParse.X0), _zName)
}
-
- _3_pMod = _sqlite3PragmaVtabRegister(tls, (*Xsqlite3)(_pParse.X0), _zName)
-_6:
- if _3_pMod == nil || _sqlite3VtabEponymousTableInit(tls, _pParse, _3_pMod) == 0 {
- goto _8
+ if (_3_pMod != nil) && _sqlite3VtabEponymousTableInit(tls, _pParse, _3_pMod) != 0 {
+ return (*XTable)(_3_pMod.X4)
}
- return (*XTable)(_3_pMod.X4)
-
-_8:
_4:
if (_flags & uint32(i32(2))) != uint32(i32(0)) {
goto _9
}
-
- if _zDbase == nil {
- goto _10
+ if _zDbase != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(49822), unsafe.Pointer(_2_zMsg), unsafe.Pointer(_zDbase), unsafe.Pointer(_zName))
+ goto _11
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(51396), unsafe.Pointer(_2_zMsg), unsafe.Pointer(_zDbase), unsafe.Pointer(_zName))
- goto _11
-
-_10:
- _sqlite3ErrorMsg(tls, _pParse, str(51408), unsafe.Pointer(_2_zMsg), unsafe.Pointer(_zName))
+ _sqlite3ErrorMsg(tls, _pParse, str(49832), unsafe.Pointer(_2_zMsg), unsafe.Pointer(_zName))
_11:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
_9:
_1:
- r0 = _p
- return
+ return _p
}
-func _sqlite3ReadSchema(tls *crt.TLS, _pParse *XParse) (r0 int32) { // sqlite3.c:116065:1
- var _rc int32 // sqlite3.c:116066:7
- _ = _rc
- var _db *Xsqlite3 // sqlite3.c:116067:11
- _ = _db
+// This routine is a no-op if the database schema is already initialized.
+// Otherwise, the schema is loaded. An error code is returned.
+func _sqlite3ReadSchema(tls *crt.TLS, _pParse *XParse) (r0 int32) {
+ var _rc int32
+ var _db *Xsqlite3
_rc = i32(0)
_db = (*Xsqlite3)(_pParse.X0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116068), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReadSchemaØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116068), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReadSchemaØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
- goto _2
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
+ _rc = _sqlite3Init(tls, _db, (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(4 /* X1 */))))
}
-
- _rc = _sqlite3Init(tls, _db, (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(4 /* X1 */))))
-_2:
- if _rc == i32(0) {
- goto _3
+ if _rc != i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _rc
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(36 /* X16 */))) += 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _rc
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(36 /* X16 */))) += 1
-_3:
return _rc
}
-var _sqlite3ReadSchemaØ00__func__Ø000 [18]int8 // -
+var _sqlite3ReadSchemaØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ReadSchemaØ00__func__Ø000[0], str(51416), 18)
+ crt.Xstrncpy(nil, &_sqlite3ReadSchemaØ00__func__Ø000[0], str(49839), 18)
}
-func _sqlite3Init(tls *crt.TLS, _db *Xsqlite3, _pzErrMsg **int8) (r0 int32) { // sqlite3.c:116021:1
- var _i int32 // sqlite3.c:116022:7
- _ = _i
- var _rc int32 // sqlite3.c:116022:10
- _ = _rc
- var _commit_internal int32 // sqlite3.c:116023:7
- _ = _commit_internal
+// Initialize all database files - the main database file, the file
+// used to store temporary tables, and any additional database files
+// created using ATTACH statements. Return a success code. If an
+// error occurs, write an error message into *pzErrMsg.
+//
+// After a database is initialized, the DB_SchemaLoaded bit is set
+// bit is set in the flags field of the Db structure. If the database
+// file was of zero-length, then the DB_Empty flag is also set.
+func _sqlite3Init(tls *crt.TLS, _db *Xsqlite3, _pzErrMsg **int8) (r0 int32) {
+ var _i, _rc, _commit_internal int32
_commit_internal = bool2int(((_db.X6) & i32(2)) == 0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116025), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116025), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3BtreeHoldsMutex(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(0)))).X1)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116026), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(51436)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116026), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(49857)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116027), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(51476)))
+ if int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116027), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(49896)))
crt.X__builtin_abort(tls)
}
}()
_rc = i32(0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(1))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(62 /* X14 */))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(i32(0)))).X4).X8
_i = i32(0)
_6:
if _rc != i32(0) || _i >= (_db.X5) {
goto _10
}
-
- if (int32((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X4).X9)&i32(1)) != i32(1) && _i != i32(1) {
- goto _12
+ if ((int32((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X4).X9) & i32(1)) == i32(1)) || (_i == i32(1)) {
+ goto _7
}
-
- goto _7
-
-_12:
_rc = _sqlite3InitOne(tls, _db, _i, _pzErrMsg)
- if _rc == 0 {
- goto _13
+ if _rc != 0 {
+ _sqlite3ResetOneSchema(tls, _db, _i)
}
-
- _sqlite3ResetOneSchema(tls, _db, _i)
-_13:
_7:
_i += 1
goto _6
-
_10:
func() {
if (_db.X5) <= i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116044), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(51496)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116044), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitØ00__func__Ø000))), unsafe.Pointer(str(49913)))
crt.X__builtin_abort(tls)
}
}()
if _rc != i32(0) || (int32((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4).X9)&i32(1)) == i32(1) {
goto _17
}
-
_rc = _sqlite3InitOne(tls, _db, i32(1), _pzErrMsg)
- if _rc == 0 {
- goto _18
+ if _rc != 0 {
+ _sqlite3ResetOneSchema(tls, _db, i32(1))
}
-
- _sqlite3ResetOneSchema(tls, _db, i32(1))
-_18:
_17:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(0))
- if _rc != i32(0) || _commit_internal == 0 {
- goto _20
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(0))
+ if (_rc == i32(0)) && _commit_internal != 0 {
+ _sqlite3CommitInternalChanges(tls, _db)
}
-
- _sqlite3CommitInternalChanges(tls, _db)
-_20:
return _rc
}
-var _sqlite3InitØ00__func__Ø000 [12]int8 // -
+var _sqlite3InitØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3InitØ00__func__Ø000[0], str(51508), 12)
+ crt.Xstrncpy(nil, &_sqlite3InitØ00__func__Ø000[0], str(49923), 12)
}
-func _sqlite3InitOne(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _pzErrMsg **int8) (r0 int32) { // sqlite3.c:115801:1
- var _rc int32 // sqlite3.c:115802:7
- _ = _rc
- var _i int32 // sqlite3.c:115803:7
- _ = _i
- var _size int32 // sqlite3.c:115805:7
- _ = _size
- var _pDb *XDb // sqlite3.c:115807:6
- _ = _pDb
- var _azArg [4]*int8 // sqlite3.c:115808:14
- _ = _azArg
- var _meta [5]int32 // sqlite3.c:115809:7
- _ = _meta
- var _initData XInitData // sqlite3.c:115810:12
- _ = _initData
- var _zMasterName *int8 // sqlite3.c:115811:14
- _ = _zMasterName
- var _openedTransaction int32 // sqlite3.c:115812:7
- _ = _openedTransaction
- var _8_encoding uint8 // sqlite3.c:115892:10
- _ = _8_encoding
- var _17_zSql *int8 // sqlite3.c:115954:10
- _ = _17_zSql
- var _18_xAuth func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32 // sqlite3.c:115960:21
- _ = _18_xAuth
+// Attempt to read the database schema and initialize internal
+// data structures for a single database file. The index of the
+// database file is given by iDb. iDb==0 is used for the main
+// database. iDb==1 should never be used. iDb>=2 is used for
+// auxiliary databases. Return one of the SQLITE_ error codes to
+// indicate success or failure.
+func _sqlite3InitOne(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _pzErrMsg **int8) (r0 int32) {
+ var _rc, _i, _size, _openedTransaction int32
+ var _zMasterName, _17_zSql *int8
+ var _8_encoding uint8
+ var _18_xAuth func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
+ var _pDb *XDb
+ var _meta [5]int32
+ var _azArg [4]*int8
+ var _initData XInitData
_openedTransaction = i32(0)
func() {
if _iDb < i32(0) || _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(51520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(49935)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115816), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115816), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iDb != i32(1) && _sqlite3BtreeHoldsMutex(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X1)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115817), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(51544)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115817), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(49956)))
crt.X__builtin_abort(tls)
}
}()
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_azArg)) + 4*uintptr(i32(0)))) = store0(&_zMasterName, func() *int8 {
if i32(1) != 0 && (_iDb == i32(1)) {
- return str(51596)
+ return str(50007)
}
- return str(51616)
+ return str(50026)
}())
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_azArg)) + 4*uintptr(i32(1)))) = str(51632)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_azArg)) + 4*uintptr(i32(2)))) = str(51636)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_azArg)) + 4*uintptr(i32(1)))) = str(50040)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_azArg)) + 4*uintptr(i32(2)))) = str(50042)
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_azArg)) + 4*uintptr(i32(3)))) = nil
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_initData)) + uintptr(0 /* X0 */))))) = _db
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_initData)) + uintptr(8 /* X2 */))) = _iDb
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_initData)) + uintptr(12 /* X3 */))) = i32(0)
*(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_initData)) + uintptr(4 /* X1 */))) = _pzErrMsg
_sqlite3InitCallback(tls, (unsafe.Pointer)(&_initData), i32(3), (**int8)(unsafe.Pointer(&_azArg)), nil)
- if (_initData.X3) == 0 {
- goto _13
+ if (_initData.X3) != 0 {
+ _rc = _initData.X3
+ goto _error_out
}
-
- _rc = _initData.X3
- goto _error_out
-
-_13:
_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
if (*XBtree)(_pDb.X1) != nil {
goto _14
}
-
- if i32(1) == 0 || func() int32 {
+ if i32(1) != 0 && func() int32 {
if _iDb == i32(1) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115843), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115843), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _18
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4) + uintptr(78 /* X9 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
+ }() != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4) + uintptr(78 /* X9 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
+ }
}
-_18:
return i32(0)
_14:
@@ -40690,16 +36952,11 @@ _14:
if _sqlite3BtreeIsInReadTrans(tls, (*XBtree)(_pDb.X1)) != 0 {
goto _19
}
-
_rc = _sqlite3BtreeBeginTrans(tls, (*XBtree)(_pDb.X1), i32(0))
- if _rc == i32(0) {
- goto _20
+ if _rc != i32(0) {
+ _sqlite3SetString(tls, _pzErrMsg, _db, _sqlite3ErrStr(tls, _rc))
+ goto _initone_error_out
}
-
- _sqlite3SetString(tls, _pzErrMsg, _db, _sqlite3ErrStr(tls, _rc))
- goto _initone_error_out
-
-_20:
_openedTransaction = i32(1)
_19:
_i = i32(0)
@@ -40707,181 +36964,141 @@ _21:
if _i >= i32(5) {
goto _24
}
-
_sqlite3BtreeGetMeta(tls, (*XBtree)(_pDb.X1), _i+i32(1), (*uint32)(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta))+4*uintptr(_i))))))
_i += 1
goto _21
-
_24:
*(*int32)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(0 /* X0 */))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(0))))
if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(4))))) == 0 {
goto _25
}
-
if _iDb != i32(0) {
goto _26
}
-
_8_encoding = uint8(int32(uint8(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(4)))))) & i32(3))
- if int32(_8_encoding) != i32(0) {
- goto _27
+ if int32(_8_encoding) == i32(0) {
+ _8_encoding = uint8(i32(1))
}
-
- _8_encoding = uint8(i32(1))
-_27:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(62 /* X14 */))) = _8_encoding
goto _28
-
_26:
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(4))))) == int32(_db.X14) {
- goto _29
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(4))))) != int32(_db.X14) {
+ _sqlite3SetString(tls, _pzErrMsg, _db, str(50118))
+ _rc = i32(1)
+ goto _initone_error_out
}
-
- _sqlite3SetString(tls, _pzErrMsg, _db, str(51712))
- _rc = i32(1)
- goto _initone_error_out
-
-_29:
_28:
goto _30
-
_25:
{
p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(78 /* X9 */)))
*p = uint16(int32(*p) | i32(4))
- sink12 = *p
+ sink14 = *p
}
_30:
*(*uint8)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(77 /* X8 */))) = _db.X14
if ((*XSchema)(_pDb.X4).X10) != i32(0) {
goto _31
}
-
_size = _sqlite3AbsInt32(tls, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(2)))))
- if _size != i32(0) {
- goto _32
+ if _size == i32(0) {
+ _size = i32(-2000)
}
-
- _size = i32(-2000)
-_32:
*(*int32)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(80 /* X10 */))) = _size
_sqlite3BtreeSetCacheSize(tls, (*XBtree)(_pDb.X1), (*XSchema)(_pDb.X4).X10)
_31:
*(*uint8)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(76 /* X7 */))) = uint8(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(1)))))
- if int32((*XSchema)(_pDb.X4).X7) != i32(0) {
- goto _33
- }
-
- *(*uint8)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(76 /* X7 */))) = uint8(i32(1))
-_33:
- if int32((*XSchema)(_pDb.X4).X7) <= i32(4) {
- goto _34
+ if int32((*XSchema)(_pDb.X4).X7) == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(76 /* X7 */))) = uint8(i32(1))
}
-
- _sqlite3SetString(tls, _pzErrMsg, _db, str(51780))
- _rc = i32(1)
- goto _initone_error_out
-
-_34:
- if _iDb != i32(0) || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(1))))) < i32(4) {
- goto _36
+ if int32((*XSchema)(_pDb.X4).X7) > i32(4) {
+ _sqlite3SetString(tls, _pzErrMsg, _db, str(50186))
+ _rc = i32(1)
+ goto _initone_error_out
}
-
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) & i32(-32769)
- sink1 = *p
+ if (_iDb == i32(0)) && ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_meta)) + 4*uintptr(i32(1))))) >= i32(4)) {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) & i32(-32769)
+ sink1 = *p
+ }
}
-_36:
func() {
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115952), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(51804)))
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115952), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitOneØ00__func__Ø000))), unsafe.Pointer(str(50210)))
crt.X__builtin_abort(tls)
}
}()
- _17_zSql = _sqlite3MPrintf(tls, _db, str(51820), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(_zMasterName))
+ _17_zSql = _sqlite3MPrintf(tls, _db, str(50224), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(_zMasterName))
_18_xAuth = _db.X59
*(*func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(292 /* X59 */))) = nil
_rc = Xsqlite3_exec(tls, _db, _17_zSql, _sqlite3InitCallback, (unsafe.Pointer)(&_initData), nil)
*(*func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(292 /* X59 */))) = _18_xAuth
- if _rc != i32(0) {
- goto _39
+ if _rc == i32(0) {
+ _rc = _initData.X3
}
-
- _rc = _initData.X3
-_39:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_17_zSql))
- if _rc != i32(0) {
- goto _40
- }
-
- _sqlite3AnalysisLoad(tls, _db, _iDb)
-_40:
- if (_db.X17) == 0 {
- goto _41
+ if _rc == i32(0) {
+ _sqlite3AnalysisLoad(tls, _db, _iDb)
}
-
- _rc = _sqlite3NomemError(tls, i32(115978))
- _sqlite3ResetAllSchemasOfConnection(tls, _db)
-_41:
- if _rc != i32(0) && ((_db.X6)&i32(65536)) == 0 {
- goto _43
+ if (_db.X17) != 0 {
+ _rc = _sqlite3NomemError(tls, i32(115978))
+ _sqlite3ResetAllSchemasOfConnection(tls, _db)
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(78 /* X9 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
+ if (_rc == i32(0)) || ((_db.X6)&i32(65536)) != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(78 /* X9 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
+ }
+ _rc = i32(0)
}
- _rc = i32(0)
-_43:
_initone_error_out:
- if _openedTransaction == 0 {
- goto _44
+ if _openedTransaction != 0 {
+ _sqlite3BtreeCommit(tls, (*XBtree)(_pDb.X1))
}
-
- _sqlite3BtreeCommit(tls, (*XBtree)(_pDb.X1))
-_44:
_sqlite3BtreeLeave(tls, (*XBtree)(_pDb.X1))
_error_out:
- if _rc != i32(7) && _rc != i32(3082) {
- goto _46
+ if (_rc == i32(7)) || (_rc == i32(3082)) {
+ _sqlite3OomFault(tls, _db)
}
-
- _sqlite3OomFault(tls, _db)
-_46:
return _rc
+
+ _ = _azArg
+ _ = _meta
+ _ = _initData
+ panic(0)
}
-var _sqlite3InitOneØ00__func__Ø000 [15]int8 // -
+var _sqlite3InitOneØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3InitOneØ00__func__Ø000[0], str(51876), 15)
+ crt.Xstrncpy(nil, &_sqlite3InitOneØ00__func__Ø000[0], str(50279), 15)
}
-func _sqlite3InitCallback(tls *crt.TLS, _pInit unsafe.Pointer, _argc int32, _argv **int8, _NotUsed **int8) (r0 int32) { // sqlite3.c:115717:1
- var _pData *XInitData // sqlite3.c:115718:12
- _ = _pData
- var _db *Xsqlite3 // sqlite3.c:115719:11
- _ = _db
- var _iDb int32 // sqlite3.c:115720:7
- _ = _iDb
- var _3_rc int32 // sqlite3.c:115741:9
- _ = _3_rc
- var _3_saved_iDb uint8 // sqlite3.c:115742:8
- _ = _3_saved_iDb
- var _3_pStmt unsafe.Pointer // sqlite3.c:115743:18
- _ = _3_pStmt
- var _3_rcp int32 // sqlite3.c:115744:18
- _ = _3_rcp
- var _10_pIndex *XIndex // sqlite3.c:115777:11
- _ = _10_pIndex
+// This is the callback routine for the code that initializes the
+// database. See sqlite3Init() below for additional information.
+// This routine is also called from the OP_ParseSchema opcode of the VDBE.
+//
+// Each callback contains the following information:
+//
+// argv[0] = name of thing being created
+// argv[1] = root page number for table or index. 0 for trigger or view.
+// argv[2] = SQL text for the CREATE statement.
+//
+func _sqlite3InitCallback(tls *crt.TLS, _pInit unsafe.Pointer, _argc int32, _argv **int8, _NotUsed **int8) (r0 int32) {
+ var _iDb, _3_rc, _3_rcp int32
+ var _3_pStmt unsafe.Pointer
+ var _3_saved_iDb uint8
+ var _db *Xsqlite3
+ var _10_pIndex *XIndex
+ var _pData *XInitData
_pData = (*XInitData)(_pInit)
_db = (*Xsqlite3)(_pData.X0)
_iDb = _pData.X2
func() {
if _argc != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115722), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(51892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115722), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(50294)))
crt.X__builtin_abort(tls)
}
}()
@@ -40889,170 +37106,126 @@ func _sqlite3InitCallback(tls *crt.TLS, _pInit unsafe.Pointer, _argc int32, _arg
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115724), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115724), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
{
p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(78 /* X9 */)))
*p = uint16(int32(*p) & i32(-5))
- sink12 = *p
+ sink14 = *p
}
- if (_db.X17) == 0 {
- goto _4
+ if (_db.X17) != 0 {
+ _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), nil)
+ return i32(1)
}
-
- _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), nil)
- return i32(1)
-
-_4:
func() {
if _iDb < i32(0) || _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115731), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115731), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
- if _argv != nil {
- goto _8
+ if _argv == nil {
+ return i32(0)
}
- return i32(0)
-
-_8:
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1))))) != nil {
- goto _9
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1))))) == nil {
+ _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), nil)
+ goto _10
}
-
- _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), nil)
- goto _10
-
-_9:
- if Xsqlite3_strnicmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2)))), str(51900), i32(7)) != i32(0) {
+ if Xsqlite3_strnicmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2)))), str(50302), i32(7)) != i32(0) {
goto _11
}
-
- _3_saved_iDb = (*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X1
+ _3_saved_iDb = (*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X1
func() {
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115746), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(51804)))
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115746), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(50210)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(_iDb)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(0 /* X0 */))) = _sqlite3Atoi(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(6 /* X3 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(_iDb)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(0 /* X0 */))) = _sqlite3Atoi(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(6 /* X3 */))) = uint8(i32(0))
_3_rcp = Xsqlite3_prepare(tls, _db, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2)))), i32(-1), &_3_pStmt, nil)
_3_rc = _db.X10
func() {
if (_3_rc & i32(255)) != (_3_rcp & i32(255)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115752), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(51908)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115752), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(50310)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = _3_saved_iDb
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = _3_saved_iDb
func() {
if int32(_3_saved_iDb) != i32(0) && ((_db.X6)&i32(268435456)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115754), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(51932)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115754), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(50332)))
crt.X__builtin_abort(tls)
}
}()
if i32(0) == _3_rc {
goto _19
}
-
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X3) == 0 {
- goto _20
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X3) != 0 {
+ func() {
+ if _iDb != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115757), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(50379)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _23
}
-
- func() {
- if _iDb != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115757), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InitCallbackØ00__func__Ø000))), unsafe.Pointer(str(51980)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _23
-
-_20:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pData)) + uintptr(12 /* X3 */))) = _3_rc
- if _3_rc != i32(7) {
- goto _24
+ if _3_rc == i32(7) {
+ _sqlite3OomFault(tls, _db)
+ goto _25
}
-
- _sqlite3OomFault(tls, _db)
- goto _25
-
-_24:
- if _3_rc == i32(9) || (_3_rc&i32(255)) == i32(6) {
- goto _27
+ if (_3_rc != i32(9)) && ((_3_rc & i32(255)) != i32(6)) {
+ _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), Xsqlite3_errmsg(tls, _db))
}
-
- _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), Xsqlite3_errmsg(tls, _db))
-_27:
_25:
_23:
_19:
Xsqlite3_finalize(tls, _3_pStmt)
goto _28
-
_11:
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0))))) != nil && ((*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2))))) == nil || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2)))))) + 1*uintptr(i32(0))))) == i32(0)) {
- goto _31
+ if ((*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0))))) == nil) || (((*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2))))) != nil) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2)))))) + 1*uintptr(i32(0))))) != i32(0))) {
+ _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), nil)
+ goto _32
}
-
- _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), nil)
- goto _32
-
-_31:
_10_pIndex = _sqlite3FindIndex(tls, _db, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
- if _10_pIndex != nil {
- goto _33
+ if _10_pIndex == nil {
+ goto _34
}
-
- goto _34
-
-_33:
- if _sqlite3GetInt32(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pIndex))+uintptr(44 /* X11 */)))) != i32(0) {
- goto _35
+ if _sqlite3GetInt32(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pIndex))+uintptr(44 /* X11 */)))) == i32(0) {
+ _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), str(50386))
}
-
- _corruptSchema(tls, _pData, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), str(51988))
-_35:
_34:
_32:
_28:
_10:
- r0 = i32(0)
- return
+ return i32(0)
}
-var _sqlite3InitCallbackØ00__func__Ø000 [20]int8 // -
+var _sqlite3InitCallbackØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3InitCallbackØ00__func__Ø000[0], str(52008), 20)
+ crt.Xstrncpy(nil, &_sqlite3InitCallbackØ00__func__Ø000[0], str(50403), 20)
}
-func _corruptSchema(tls *crt.TLS, _pData *XInitData, _zObj *int8, _zExtra *int8) { // sqlite3.c:115688:1
- var _db *Xsqlite3 // sqlite3.c:115693:11
- _ = _db
- var _1_z *int8 // sqlite3.c:115695:10
- _ = _1_z
+// Fill the InitData structure with an error message that indicates
+// that the database is corrupt.
+func _corruptSchema(tls *crt.TLS, _pData *XInitData, _zObj *int8, _zExtra *int8) {
+ var _1_z *int8
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_pData.X0)
if (_db.X17) != 0 || ((_db.X6)&i32(65536)) != i32(0) {
goto _1
}
-
- if _zObj != nil {
- goto _2
+ if _zObj == nil {
+ _zObj = str(50423)
}
-
- _zObj = str(52028)
-_2:
- _1_z = _sqlite3MPrintf(tls, _db, str(52032), unsafe.Pointer(_zObj))
- if _zExtra == nil {
- goto _3
+ _1_z = _sqlite3MPrintf(tls, _db, str(50425), unsafe.Pointer(_zObj))
+ if _zExtra != nil {
+ _1_z = _sqlite3MPrintf(tls, _db, str(50456), unsafe.Pointer(_1_z), unsafe.Pointer(_zExtra))
}
-
- _1_z = _sqlite3MPrintf(tls, _db, str(52064), unsafe.Pointer(_1_z), unsafe.Pointer(_zExtra))
-_3:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(_pData.X1)))
*(_pData.X1) = _1_z
_1:
@@ -41064,94 +37237,70 @@ _1:
}()
}
-func _sqlite3Atoi(tls *crt.TLS, _z *int8) (r0 int32) { // sqlite3.c:28402:1
- var _x int32 // sqlite3.c:28403:7
- _ = _x
+// Return a 32-bit integer value extracted from a string. If the
+// string is not an integer, just return 0.
+func _sqlite3Atoi(tls *crt.TLS, _z *int8) (r0 int32) {
+ var _x int32
_x = i32(0)
- if _z == nil {
- goto _0
+ if _z != nil {
+ _sqlite3GetInt32(tls, _z, &_x)
}
-
- _sqlite3GetInt32(tls, _z, &_x)
-_0:
return _x
}
-func Xsqlite3_prepare(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) { // sqlite3.c:116405:12
- var _rc int32 // sqlite3.c:116412:7
- _ = _rc
+// Two versions of the official API. Legacy and new use. In the legacy
+// version, the original SQL text is not saved in the prepared statement
+// and so if a schema change occurs, SQLITE_SCHEMA is returned by
+// sqlite3_step(). In the new version, the original SQL text is retained
+// and the statement is automatically recompiled if an schema change
+// occurs.
+func Xsqlite3_prepare(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) {
+ var _rc int32
_rc = _sqlite3LockAndPrepare(tls, _db, _zSql, _nBytes, i32(0), nil, _ppStmt, _pzTail)
func() {
if _rc != i32(0) && _ppStmt != nil && *_ppStmt != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116414), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_prepareØ00__func__Ø000))), unsafe.Pointer(str(52072)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116414), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_prepareØ00__func__Ø000))), unsafe.Pointer(str(50464)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-func _sqlite3LockAndPrepare(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _saveSqlFlag int32, _pOld *TVdbe, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) { // sqlite3.c:116329:1
- var _rc int32 // sqlite3.c:116338:7
- _ = _rc
- if _ppStmt != nil {
- goto _0
+func _sqlite3LockAndPrepare(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _saveSqlFlag int32, _pOld *TVdbe, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) {
+ var _rc int32
+ if _ppStmt == nil {
+ return _sqlite3MisuseError(tls, i32(116341))
}
- return _sqlite3MisuseError(tls, i32(116341))
-
-_0:
*_ppStmt = nil
- if _sqlite3SafetyCheckOk(tls, _db) != 0 && _zSql != nil {
- goto _2
+ if (_sqlite3SafetyCheckOk(tls, _db) == 0) || (_zSql == nil) {
+ return _sqlite3MisuseError(tls, i32(116345))
}
- return _sqlite3MisuseError(tls, i32(116345))
-
-_2:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
_sqlite3BtreeEnterAll(tls, _db)
_rc = _sqlite3Prepare(tls, _db, _zSql, _nBytes, _saveSqlFlag, _pOld, _ppStmt, _pzTail)
- if _rc != i32(17) {
- goto _3
+ if _rc == i32(17) {
+ Xsqlite3_finalize(tls, *_ppStmt)
+ _rc = _sqlite3Prepare(tls, _db, _zSql, _nBytes, _saveSqlFlag, _pOld, _ppStmt, _pzTail)
}
-
- Xsqlite3_finalize(tls, *_ppStmt)
- _rc = _sqlite3Prepare(tls, _db, _zSql, _nBytes, _saveSqlFlag, _pOld, _ppStmt, _pzTail)
-_3:
_sqlite3BtreeLeaveAll(tls, _db)
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
func() {
if _rc != i32(0) && *_ppStmt != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LockAndPrepareØ00__func__Ø000))), unsafe.Pointer(str(52116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3LockAndPrepareØ00__func__Ø000))), unsafe.Pointer(str(50505)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-func _sqlite3Prepare(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _saveSqlFlag int32, _pReprepare *TVdbe, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) { // sqlite3.c:116178:1
- var _zErrMsg *int8 // sqlite3.c:116187:8
- _ = _zErrMsg
- var _rc int32 // sqlite3.c:116188:7
- _ = _rc
- var _i int32 // sqlite3.c:116189:7
- _ = _i
- var _sParse XParse // sqlite3.c:116190:9
- _ = _sParse
- var _1_pBt *XBtree // sqlite3.c:116223:11
- _ = _1_pBt
- var _3_zDb *int8 // sqlite3.c:116228:20
- _ = _3_zDb
- var _4_zSqlCopy *int8 // sqlite3.c:116240:10
- _ = _4_zSqlCopy
- var _4_mxLen int32 // sqlite3.c:116241:9
- _ = _4_mxLen
- var _12_iFirst int32 // sqlite3.c:116280:9
- _ = _12_iFirst
- var _12_mx int32 // sqlite3.c:116280:17
- _ = _12_mx
- var _16_pVdbe *TVdbe // sqlite3.c:116298:10
- _ = _16_pVdbe
- var _21_pT *XTriggerPrg // sqlite3.c:116317:16
- _ = _21_pT
+// Compile the UTF-8 encoded SQL statement zSql into a statement handle.
+func _sqlite3Prepare(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _saveSqlFlag int32, _pReprepare *TVdbe, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) {
+ var _rc, _i, _4_mxLen, _12_iFirst, _12_mx int32
+ var _zErrMsg, _3_zDb, _4_zSqlCopy *int8
+ var _1_pBt *XBtree
+ var _16_pVdbe *TVdbe
+ var _sParse XParse
+ var _21_pT *XTriggerPrg
_zErrMsg = nil
_rc = i32(0)
crt.Xmemset(tls, (unsafe.Pointer)(&_sParse), i32(0), u32(160))
@@ -41159,13 +37308,13 @@ func _sqlite3Prepare(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _s
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(436 /* X61 */))))) = _pReprepare
func() {
if _ppStmt == nil || *_ppStmt != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116195), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(52144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116195), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(50533)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -41174,112 +37323,78 @@ _5:
if _i >= (_db.X5) {
goto _8
}
-
_1_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
if _1_pBt == nil {
goto _9
}
-
func() {
if _sqlite3BtreeHoldsMutex(tls, _1_pBt) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116225), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(52168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116225), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(50554)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3BtreeSchemaLocked(tls, _1_pBt)
- if _rc == 0 {
- goto _12
+ if _rc != 0 {
+ _3_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X0
+ _sqlite3ErrorWithMsg(tls, _db, _rc, str(50582), unsafe.Pointer(_3_zDb))
+ goto _end_prepare
}
-
- _3_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X0
- _sqlite3ErrorWithMsg(tls, _db, _rc, str(52196), unsafe.Pointer(_3_zDb))
- goto _end_prepare
-
-_12:
_9:
_i += 1
goto _5
-
_8:
_sqlite3VtabUnlockList(tls, _db)
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(0 /* X0 */))))) = _db
if _nBytes < i32(0) || _nBytes != i32(0) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(_nBytes-i32(1))))) == i32(0) {
goto _15
}
-
_4_mxLen = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(1))))
- if _nBytes <= _4_mxLen {
- goto _16
+ if _nBytes > _4_mxLen {
+ _sqlite3ErrorWithMsg(tls, _db, i32(18), str(50612))
+ _rc = _sqlite3ApiExit(tls, _db, i32(18))
+ goto _end_prepare
}
-
- _sqlite3ErrorWithMsg(tls, _db, i32(18), str(52228))
- _rc = _sqlite3ApiExit(tls, _db, i32(18))
- goto _end_prepare
-
-_16:
_4_zSqlCopy = _sqlite3DbStrNDup(tls, _db, _zSql, uint64(_nBytes))
- if _4_zSqlCopy == nil {
- goto _17
+ if _4_zSqlCopy != nil {
+ _sqlite3RunParser(tls, &_sParse, _4_zSqlCopy, &_zErrMsg)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(440 /* X62 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(int32((uintptr(unsafe.Pointer(_sParse.X62))-uintptr(unsafe.Pointer(_4_zSqlCopy)))/1))))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_4_zSqlCopy))
+ goto _18
}
-
- _sqlite3RunParser(tls, &_sParse, _4_zSqlCopy, &_zErrMsg)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(440 /* X62 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(int32((uintptr(unsafe.Pointer(_sParse.X62))-uintptr(unsafe.Pointer(_4_zSqlCopy)))/1))))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_4_zSqlCopy))
- goto _18
-
-_17:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(440 /* X62 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(_nBytes)))
_18:
goto _19
-
_15:
_sqlite3RunParser(tls, &_sParse, _zSql, &_zErrMsg)
_19:
func() {
if uint32(i32(0)) != (_sParse.X42) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116260), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(52248)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116260), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(50631)))
crt.X__builtin_abort(tls)
}
}()
- if (_sParse.X3) != i32(101) {
- goto _22
+ if (_sParse.X3) == i32(101) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(12 /* X3 */))) = i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(12 /* X3 */))) = i32(0)
-_22:
- if (_sParse.X5) == 0 {
- goto _23
+ if (_sParse.X5) != 0 {
+ _schemaIsValid(tls, &_sParse)
}
-
- _schemaIsValid(tls, &_sParse)
-_23:
- if (_db.X17) == 0 {
- goto _24
+ if (_db.X17) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(12 /* X3 */))) = _sqlite3NomemError(tls, i32(116267))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(12 /* X3 */))) = _sqlite3NomemError(tls, i32(116267))
-_24:
- if _pzTail == nil {
- goto _25
+ if _pzTail != nil {
+ *_pzTail = _sParse.X62
}
-
- *_pzTail = _sParse.X62
-_25:
_rc = _sParse.X3
if _rc != i32(0) || (*TVdbe)(_sParse.X2) == nil || (_sParse.X54) == 0 {
goto _28
}
-
- if int32(_sParse.X54) != i32(2) {
- goto _29
+ if int32(_sParse.X54) == i32(2) {
+ _sqlite3VdbeSetNumCols(tls, (*TVdbe)(_sParse.X2), i32(4))
+ _12_iFirst = i32(8)
+ _12_mx = i32(12)
+ goto _30
}
-
- _sqlite3VdbeSetNumCols(tls, (*TVdbe)(_sParse.X2), i32(4))
- _12_iFirst = i32(8)
- _12_mx = i32(12)
- goto _30
-
-_29:
_sqlite3VdbeSetNumCols(tls, (*TVdbe)(_sParse.X2), i32(8))
_12_iFirst = i32(0)
_12_mx = i32(8)
@@ -41289,82 +37404,70 @@ _31:
if _i >= _12_mx {
goto _34
}
-
_sqlite3VdbeSetColName(tls, (*TVdbe)(_sParse.X2), _i-_12_iFirst, i32(0), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3PrepareØ00azColNameØ001)) + 4*uintptr(_i))), nil)
_i += 1
goto _31
-
_34:
_28:
- if int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
- goto _35
- }
-
- _16_pVdbe = (*TVdbe)(_sParse.X2)
- _sqlite3VdbeSetSql(tls, _16_pVdbe, _zSql, int32((uintptr(unsafe.Pointer(_sParse.X62))-uintptr(unsafe.Pointer(_zSql)))/1), _saveSqlFlag)
-_35:
- if (*TVdbe)(_sParse.X2) == nil || _rc == i32(0) && (_db.X17) == 0 {
- goto _38
+ if int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == i32(0) {
+ _16_pVdbe = (*TVdbe)(_sParse.X2)
+ _sqlite3VdbeSetSql(tls, _16_pVdbe, _zSql, int32((uintptr(unsafe.Pointer(_sParse.X62))-uintptr(unsafe.Pointer(_zSql)))/1), _saveSqlFlag)
+ }
+ if ((*TVdbe)(_sParse.X2) != nil) && ((_rc != i32(0)) || ((_db.X17) != 0)) {
+ _sqlite3VdbeFinalize(tls, (*TVdbe)(_sParse.X2))
+ func() {
+ if (*_ppStmt) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116303), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(50652)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _41
}
-
- _sqlite3VdbeFinalize(tls, (*TVdbe)(_sParse.X2))
- func() {
- if (*_ppStmt) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116303), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(52272)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _41
-
-_38:
*_ppStmt = _sParse.X2
_41:
- if _zErrMsg == nil {
- goto _42
+ if _zErrMsg != nil {
+ _sqlite3ErrorWithMsg(tls, _db, _rc, str(24576), unsafe.Pointer(_zErrMsg))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zErrMsg))
+ goto _43
}
-
- _sqlite3ErrorWithMsg(tls, _db, _rc, str(24316), unsafe.Pointer(_zErrMsg))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zErrMsg))
- goto _43
-
-_42:
_sqlite3Error(tls, _db, _rc)
_43:
_44:
- if (*XTriggerPrg)(_sParse.X69) == nil {
- goto _45
+ if (*XTriggerPrg)(_sParse.X69) != nil {
+ _21_pT = (*XTriggerPrg)(_sParse.X69)
+ *(**XTriggerPrg)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(472 /* X69 */))))) = (*XTriggerPrg)(_21_pT.X1)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_21_pT))
+ goto _44
}
-
- _21_pT = (*XTriggerPrg)(_sParse.X69)
- *(**XTriggerPrg)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sParse)) + uintptr(472 /* X69 */))))) = (*XTriggerPrg)(_21_pT.X1)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_21_pT))
- goto _44
-
-_45:
_end_prepare:
_sqlite3ParserReset(tls, &_sParse)
_rc = _sqlite3ApiExit(tls, _db, _rc)
func() {
if (_rc & (_db.X11)) != _rc {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116326), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(52284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116326), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PrepareØ00__func__Ø000))), unsafe.Pointer(str(134)))
crt.X__builtin_abort(tls)
}
}()
return _rc
+
+ _ = _sParse
+ panic(0)
}
-var _sqlite3PrepareØ00__func__Ø000 [15]int8 // -
+var _sqlite3PrepareØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PrepareØ00__func__Ø000[0], str(52308), 15)
+ crt.Xstrncpy(nil, &_sqlite3PrepareØ00__func__Ø000[0], str(50663), 15)
}
-func _sqlite3BtreeSchemaLocked(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:68721:1
- var _rc int32 // sqlite3.c:68722:7
- _ = _rc
+// Return SQLITE_LOCKED_SHAREDCACHE if another user of the same shared
+// btree as the argument handle holds an exclusive lock on the
+// sqlite_master table. Otherwise SQLITE_OK.
+func _sqlite3BtreeSchemaLocked(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _rc int32
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68723), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSchemaLockedØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68723), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSchemaLockedØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
@@ -41372,7 +37475,7 @@ func _sqlite3BtreeSchemaLocked(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3
_rc = _querySharedCacheTableLock(tls, _p, uint32(i32(1)), uint8(i32(1)))
func() {
if _rc != i32(0) && _rc != i32(262) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68726), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSchemaLockedØ00__func__Ø000))), unsafe.Pointer(str(52324)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68726), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSchemaLockedØ00__func__Ø000))), unsafe.Pointer(str(50678)))
crt.X__builtin_abort(tls)
}
}()
@@ -41380,143 +37483,127 @@ func _sqlite3BtreeSchemaLocked(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3
return _rc
}
-var _sqlite3BtreeSchemaLockedØ00__func__Ø000 [25]int8 // -
+var _sqlite3BtreeSchemaLockedØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeSchemaLockedØ00__func__Ø000[0], str(52372), 25)
+ crt.Xstrncpy(nil, &_sqlite3BtreeSchemaLockedØ00__func__Ø000[0], str(50725), 25)
}
-func _querySharedCacheTableLock(tls *crt.TLS, _p *XBtree, _iTab uint32, _eLock uint8) (r0 int32) { // sqlite3.c:59281:1
- var _pBt *XBtShared // sqlite3.c:59282:12
- _ = _pBt
- var _pIter *XBtLock // sqlite3.c:59283:10
- _ = _pIter
+// Query to see if Btree handle p may obtain a lock of type eLock
+// (READ_LOCK or WRITE_LOCK) on the table with root-page iTab. Return
+// SQLITE_OK if the lock may be obtained (by calling
+// setSharedCacheTableLock()), or SQLITE_LOCKED if not.
+func _querySharedCacheTableLock(tls *crt.TLS, _p *XBtree, _iTab uint32, _eLock uint8) (r0 int32) {
+ var _pBt *XBtShared
+ var _pIter *XBtLock
_pBt = (*XBtShared)(_p.X1)
func() {
if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59285), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59285), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_eLock) != i32(1) && int32(_eLock) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59286), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52400)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59286), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(50750)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59287), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(23376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59287), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(23676)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (((*Xsqlite3)(_p.X0).X6)&i32(16384)) != 0 && int32(_eLock) != i32(2) && _iTab != uint32(i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59288), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59288), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(50788)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_eLock) != i32(1) && (_p != (*XBtree)(_pBt.X26) || int32(_p.X2) != i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59294), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52508)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59294), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(50855)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_eLock) != i32(1) && int32(_pBt.X8) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59295), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52576)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59295), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(50920)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X3) != 0 {
- goto _18
+ if (_p.X3) == 0 {
+ return i32(0)
}
- return i32(0)
-
-_18:
- if (*XBtree)(_pBt.X26) == _p || (int32(_pBt.X10)&i32(32)) == i32(0) {
- goto _20
+ if ((*XBtree)(_pBt.X26) != _p) && ((int32(_pBt.X10) & i32(32)) != i32(0)) {
+ return i32(262)
}
- return i32(262)
-
-_20:
_pIter = (*XBtLock)(_pBt.X25)
_21:
if _pIter == nil {
goto _24
}
-
func() {
if int32(_pIter.X2) != i32(1) && int32(_pIter.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59320), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59320), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(50972)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_eLock) != i32(1) && (*XBtree)(_pIter.X0) != _p && int32(_pIter.X2) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59321), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52680)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59321), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(51024)))
crt.X__builtin_abort(tls)
}
}()
if (*XBtree)(_pIter.X0) == _p || (_pIter.X1) != _iTab || int32(_pIter.X2) == int32(_eLock) {
goto _34
}
-
- if int32(_eLock) != i32(2) {
- goto _35
- }
-
- func() {
- if _p != (*XBtree)(_pBt.X26) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59325), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52744)))
- crt.X__builtin_abort(tls)
+ if int32(_eLock) == i32(2) {
+ func() {
+ if _p != (*XBtree)(_pBt.X26) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59325), unsafe.Pointer((*int8)(unsafe.Pointer(&_querySharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(51088)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) | i32(64))
+ sink14 = *p
}
- }()
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) | i32(64))
- sink12 = *p
}
-_35:
return i32(262)
_34:
_pIter = (*XBtLock)(_pIter.X3)
goto _21
-
_24:
return i32(0)
}
-var _querySharedCacheTableLockØ00__func__Ø000 [26]int8 // -
+var _querySharedCacheTableLockØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_querySharedCacheTableLockØ00__func__Ø000[0], str(52760), 26)
+ crt.Xstrncpy(nil, &_querySharedCacheTableLockØ00__func__Ø000[0], str(51104), 26)
}
-func _schemaIsValid(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:116085:1
- var _db *Xsqlite3 // sqlite3.c:116086:11
- _ = _db
- var _iDb int32 // sqlite3.c:116087:7
- _ = _iDb
- var _rc int32 // sqlite3.c:116088:7
- _ = _rc
- var _cookie int32 // sqlite3.c:116089:7
- _ = _cookie
- var _1_openedTransaction int32 // sqlite3.c:116094:9
- _ = _1_openedTransaction
- var _1_pBt *XBtree // sqlite3.c:116095:11
- _ = _1_pBt
+// Check schema cookies in all databases. If any cookie is out
+// of date set pParse->rc to SQLITE_SCHEMA. If all schema cookies
+// make no changes to pParse->rc.
+func _schemaIsValid(tls *crt.TLS, _pParse *XParse) {
+ var _iDb, _rc, _cookie, _1_openedTransaction int32
+ var _db *Xsqlite3
+ var _1_pBt *XBtree
_db = (*Xsqlite3)(_pParse.X0)
func() {
if (_pParse.X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116091), unsafe.Pointer((*int8)(unsafe.Pointer(&_schemaIsValidØ00__func__Ø000))), unsafe.Pointer(str(52788)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116091), unsafe.Pointer((*int8)(unsafe.Pointer(&_schemaIsValidØ00__func__Ø000))), unsafe.Pointer(str(51130)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116092), unsafe.Pointer((*int8)(unsafe.Pointer(&_schemaIsValidØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116092), unsafe.Pointer((*int8)(unsafe.Pointer(&_schemaIsValidØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -41525,264 +37612,223 @@ _4:
if _iDb >= (_db.X5) {
goto _7
}
-
_1_openedTransaction = i32(0)
_1_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X1)
- if _1_pBt != nil {
- goto _8
+ if _1_pBt == nil {
+ goto _5
}
-
- goto _5
-
-_8:
if _sqlite3BtreeIsInReadTrans(tls, _1_pBt) != 0 {
goto _9
}
-
_rc = _sqlite3BtreeBeginTrans(tls, _1_pBt, i32(0))
- if _rc != i32(7) && _rc != i32(3082) {
- goto _11
+ if (_rc == i32(7)) || (_rc == i32(3082)) {
+ _sqlite3OomFault(tls, _db)
}
-
- _sqlite3OomFault(tls, _db)
-_11:
- if _rc == i32(0) {
- goto _12
+ if _rc != i32(0) {
+ return
}
- return
-
-_12:
_1_openedTransaction = i32(1)
_9:
_sqlite3BtreeGetMeta(tls, _1_pBt, i32(1), (*uint32)(unsafe.Pointer(&_cookie)))
func() {
if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116114), unsafe.Pointer((*int8)(unsafe.Pointer(&_schemaIsValidØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116114), unsafe.Pointer((*int8)(unsafe.Pointer(&_schemaIsValidØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
- if _cookie == ((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4).X0) {
- goto _15
+ if _cookie != ((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4).X0) {
+ _sqlite3ResetOneSchema(tls, _db, _iDb)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(17)
}
-
- _sqlite3ResetOneSchema(tls, _db, _iDb)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(17)
-_15:
- if _1_openedTransaction == 0 {
- goto _16
+ if _1_openedTransaction != 0 {
+ _sqlite3BtreeCommit(tls, _1_pBt)
}
-
- _sqlite3BtreeCommit(tls, _1_pBt)
-_16:
_5:
_iDb += 1
goto _4
-
_7:
}
-var _schemaIsValidØ00__func__Ø000 [14]int8 // -
+var _schemaIsValidØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_schemaIsValidØ00__func__Ø000[0], str(52844), 14)
+ crt.Xstrncpy(nil, &_schemaIsValidØ00__func__Ø000[0], str(51185), 14)
}
-func _sqlite3BtreeIsInReadTrans(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:68673:1
+// Return non-zero if a read (or write) transaction is active.
+func _sqlite3BtreeIsInReadTrans(tls *crt.TLS, _p *XBtree) (r0 int32) {
func() {
if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInReadTransØ00__func__Ø000))), unsafe.Pointer(str(8472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInReadTransØ00__func__Ø000))), unsafe.Pointer(str(9660)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68675), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInReadTransØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68675), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIsInReadTransØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
return bool2int(int32(_p.X2) != i32(0))
}
-var _sqlite3BtreeIsInReadTransØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeIsInReadTransØ00__func__Ø000[0], str(52860), 26)
-}
-
-func _sqlite3BtreeBeginTrans(tls *crt.TLS, _p *XBtree, _wrflag int32) (r0 int32) { // sqlite3.c:62242:1
- var _pBt *XBtShared // sqlite3.c:62243:12
- _ = _pBt
- var _rc int32 // sqlite3.c:62244:7
- _ = _rc
- var _3_pBlock *Xsqlite3 // sqlite3.c:62266:13
- _ = _3_pBlock
- var _5_pIter *XBtLock // sqlite3.c:62276:14
- _ = _5_pIter
- var _19_pPage1 *XMemPage // sqlite3.c:62344:15
- _ = _19_pPage1
+var _sqlite3BtreeIsInReadTransØ00__func__Ø000 [26]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeIsInReadTransØ00__func__Ø000[0], str(51199), 26)
+}
+
+// Attempt to start a new transaction. A write-transaction
+// is started if the second argument is nonzero, otherwise a read-
+// transaction. If the second argument is 2 or more and exclusive
+// transaction is started, meaning that no other process is allowed
+// to access the database. A preexisting transaction may not be
+// upgraded to exclusive by calling this routine a second time - the
+// exclusivity flag only works for a new transaction.
+//
+// A write-transaction must be started before attempting any
+// changes to the database. None of the following routines
+// will work unless a transaction is started first:
+//
+// sqlite3BtreeCreateTable()
+// sqlite3BtreeCreateIndex()
+// sqlite3BtreeClearTable()
+// sqlite3BtreeDropTable()
+// sqlite3BtreeInsert()
+// sqlite3BtreeDelete()
+// sqlite3BtreeUpdateMeta()
+//
+// If an initial attempt to acquire the lock fails because of lock contention
+// and the database was previously unlocked, then invoke the busy handler
+// if there is one. But if there was previously a read-lock, do not
+// invoke the busy handler - just return SQLITE_BUSY. SQLITE_BUSY is
+// returned when there is already a read-lock in order to avoid a deadlock.
+//
+// Suppose there are two processes A and B. A has a read lock and B has
+// a reserved lock. B tries to promote to exclusive but is blocked because
+// of A's read lock. A tries to promote to reserved but is blocked by B.
+// One or the other of the two processes must give way or there can be
+// no progress. By returning SQLITE_BUSY and not invoking the busy callback
+// when A already has a read lock, we encourage A to give up and let B
+// proceed.
+func _sqlite3BtreeBeginTrans(tls *crt.TLS, _p *XBtree, _wrflag int32) (r0 int32) {
+ var _rc int32
+ var _3_pBlock *Xsqlite3
+ var _pBt *XBtShared
+ var _5_pIter *XBtLock
+ var _19_pPage1 *XMemPage
_pBt = (*XBtShared)(_p.X1)
_rc = i32(0)
_sqlite3BtreeEnter(tls, _p)
func() {
if int32((*XBtShared)(_p.X1).X8) == i32(0) && ((*XBtShared)(_p.X1).X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(8808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(9977)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XBtShared)(_p.X1).X8) < int32(_p.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(8872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(10038)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_p.X2) != i32(2) && (int32(_p.X2) != i32(1) || _wrflag != 0) {
- goto _7
+ if (int32(_p.X2) == i32(2)) || ((int32(_p.X2) == i32(1)) && (_wrflag == 0)) {
+ goto _trans_begun
}
-
- goto _trans_begun
-
-_7:
func() {
if int32(_pBt.X8) != i32(2) && int32(_pBt.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(52888)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(51225)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pBt.X10)&i32(1)) == i32(0) || _wrflag == 0 {
- goto _12
+ if ((int32(_pBt.X10) & i32(1)) != i32(0)) && _wrflag != 0 {
+ _rc = i32(8)
+ goto _trans_begun
}
-
- _rc = i32(8)
- goto _trans_begun
-
-_12:
_3_pBlock = nil
- if (_wrflag == 0 || int32(_pBt.X8) != i32(2)) && (int32(_pBt.X10)&i32(64)) == i32(0) {
- goto _15
+ if (_wrflag != 0 && (int32(_pBt.X8) == i32(2))) || ((int32(_pBt.X10) & i32(64)) != i32(0)) {
+ _3_pBlock = (*Xsqlite3)((*XBtree)(_pBt.X26).X0)
+ goto _16
}
-
- _3_pBlock = (*Xsqlite3)((*XBtree)(_pBt.X26).X0)
- goto _16
-
-_15:
if _wrflag <= i32(1) {
goto _17
}
-
_5_pIter = (*XBtLock)(_pBt.X25)
_18:
if _5_pIter == nil {
goto _21
}
-
- if (*XBtree)(_5_pIter.X0) == _p {
- goto _22
+ if (*XBtree)(_5_pIter.X0) != _p {
+ _3_pBlock = (*Xsqlite3)((*XBtree)(_5_pIter.X0).X0)
+ goto _21
}
-
- _3_pBlock = (*Xsqlite3)((*XBtree)(_5_pIter.X0).X0)
- goto _21
-
-_22:
_5_pIter = (*XBtLock)(_5_pIter.X3)
goto _18
-
_21:
_17:
_16:
- if _3_pBlock == nil {
- goto _23
+ if _3_pBlock != nil {
+ _rc = i32(262)
+ goto _trans_begun
}
-
- _rc = i32(262)
- goto _trans_begun
-
-_23:
_rc = _querySharedCacheTableLock(tls, _p, uint32(i32(1)), uint8(i32(1)))
- if i32(0) == _rc {
- goto _24
+ if i32(0) != _rc {
+ goto _trans_begun
}
-
- goto _trans_begun
-
-_24:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
*p = uint16(int32(*p) & i32(-9))
- sink12 = *p
- }
- if (_pBt.X18) != uint32(i32(0)) {
- goto _25
+ sink14 = *p
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ if (_pBt.X18) == uint32(i32(0)) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) | i32(8))
+ sink14 = *p
+ }
}
-_25:
_26:
_27:
- if (*XMemPage)(_pBt.X3) != nil || i32(0) != store1(&_rc, _lockBtree(tls, _pBt)) {
- goto _28
+ if ((*XMemPage)(_pBt.X3) == nil) && (i32(0) == store1(&_rc, _lockBtree(tls, _pBt))) {
+ goto _27
}
-
- goto _27
-
-_28:
if _rc != i32(0) || _wrflag == 0 {
goto _31
}
-
- if (int32(_pBt.X10) & i32(1)) == i32(0) {
- goto _32
+ if (int32(_pBt.X10) & i32(1)) != i32(0) {
+ _rc = i32(8)
+ goto _33
}
-
- _rc = i32(8)
- goto _33
-
-_32:
_rc = _sqlite3PagerBegin(tls, (*XPager)(_pBt.X0), bool2int(_wrflag > i32(1)), _sqlite3TempInMemory(tls, (*Xsqlite3)(_p.X0)))
- if _rc != i32(0) {
- goto _34
+ if _rc == i32(0) {
+ _rc = _newDatabase(tls, _pBt)
}
-
- _rc = _newDatabase(tls, _pBt)
-_34:
_33:
_31:
- if _rc == i32(0) {
- goto _35
+ if _rc != i32(0) {
+ _unlockBtreeIfUnused(tls, _pBt)
}
-
- _unlockBtreeIfUnused(tls, _pBt)
-_35:
if (((_rc & i32(255)) == i32(5)) && (int32(_pBt.X8) == i32(0))) && _btreeInvokeBusyHandler(tls, (unsafe.Pointer)(_pBt)) != 0 {
goto _26
}
-
if _rc != i32(0) {
goto _38
}
-
if int32(_p.X2) != i32(0) {
goto _39
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(40 /* X17 */))) += 1
- if (_p.X3) == 0 {
- goto _40
+ if (_p.X3) != 0 {
+ func() {
+ if (*XBtree)((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))).X0) != _p || ((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))).X1) != uint32(i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62332), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(51293)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))))) + uintptr(8 /* X2 */))) = uint8(i32(1))
+ *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))))) + uintptr(12 /* X3 */))))) = (*XBtLock)(_pBt.X25)
+ *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(72 /* X25 */))))) = (*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X11 */)))
}
-
- func() {
- if (*XBtree)((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))).X0) != _p || ((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))).X1) != uint32(i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62332), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(52956)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))))) + uintptr(8 /* X2 */))) = uint8(i32(1))
- *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))))) + uintptr(12 /* X3 */))))) = (*XBtLock)(_pBt.X25)
- *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(72 /* X25 */))))) = (*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X11 */)))
-_40:
_39:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = uint8(func() int32 {
if _wrflag != 0 {
@@ -41790,20 +37836,16 @@ _39:
}
return i32(1)
}())
- if int32(_p.X2) <= int32(_pBt.X8) {
- goto _46
+ if int32(_p.X2) > int32(_pBt.X8) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(20 /* X8 */))) = _p.X2
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(20 /* X8 */))) = _p.X2
-_46:
if _wrflag == 0 {
goto _47
}
-
_19_pPage1 = (*XMemPage)(_pBt.X3)
func() {
if (*XBtree)(_pBt.X26) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62346), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(52996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62346), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(51332)))
crt.X__builtin_abort(tls)
}
}()
@@ -41811,48 +37853,38 @@ _46:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
*p = uint16(int32(*p) & i32(-33))
- sink12 = *p
- }
- if _wrflag <= i32(1) {
- goto _50
+ sink14 = *p
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) | i32(32))
- sink12 = *p
+ if _wrflag > i32(1) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) | i32(32))
+ sink14 = *p
+ }
}
-_50:
if (_pBt.X18) == _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pPage1.X19))+1*uintptr(i32(28))))) {
goto _51
}
-
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_19_pPage1.X23))
- if _rc != i32(0) {
- goto _52
+ if _rc == i32(0) {
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pPage1.X19))+1*uintptr(i32(28)))), _pBt.X18)
}
-
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pPage1.X19))+1*uintptr(i32(28)))), _pBt.X18)
-_52:
_51:
_47:
_38:
_trans_begun:
- if _rc != i32(0) || _wrflag == 0 {
- goto _54
+ if (_rc == i32(0)) && _wrflag != 0 {
+ _rc = _sqlite3PagerOpenSavepoint(tls, (*XPager)(_pBt.X0), (*Xsqlite3)(_p.X0).X75)
}
-
- _rc = _sqlite3PagerOpenSavepoint(tls, (*XPager)(_pBt.X0), (*Xsqlite3)(_p.X0).X75)
-_54:
func() {
if int32((*XBtShared)(_p.X1).X8) == i32(0) && ((*XBtShared)(_p.X1).X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(8808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(9977)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XBtShared)(_p.X1).X8) < int32(_p.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(8872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeBeginTransØ00__func__Ø000))), unsafe.Pointer(str(10038)))
crt.X__builtin_abort(tls)
}
}()
@@ -41860,171 +37892,113 @@ _54:
return _rc
}
-var _sqlite3BtreeBeginTransØ00__func__Ø000 [23]int8 // -
+var _sqlite3BtreeBeginTransØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeBeginTransØ00__func__Ø000[0], str(53012), 23)
+ crt.Xstrncpy(nil, &_sqlite3BtreeBeginTransØ00__func__Ø000[0], str(51346), 23)
}
-func _lockBtree(tls *crt.TLS, _pBt *XBtShared) (r0 int32) { // sqlite3.c:61934:1
- var _rc int32 // sqlite3.c:61935:7
- _ = _rc
- var _pPage1 *XMemPage // sqlite3.c:61936:11
- _ = _pPage1
- var _nPage int32 // sqlite3.c:61937:7
- _ = _nPage
- var _nPageFile int32 // sqlite3.c:61938:7
- _ = _nPageFile
- var _nPageHeader int32 // sqlite3.c:61939:7
- _ = _nPageHeader
- var _2_pageSize uint32 // sqlite3.c:61957:9
- _ = _2_pageSize
- var _2_usableSize uint32 // sqlite3.c:61958:9
- _ = _2_usableSize
- var _2_page1 *uint8 // sqlite3.c:61959:8
- _ = _2_page1
- var _6_isOpen int32 // sqlite3.c:61992:11
- _ = _6_isOpen
+// Get a reference to pPage1 of the database file. This will
+// also acquire a readlock on that file.
+//
+// SQLITE_OK is returned on success. If the file is not a
+// well-formed database file, then SQLITE_CORRUPT is returned.
+// SQLITE_BUSY is returned if the database is locked. SQLITE_NOMEM
+// is returned if we run out of memory.
+func _lockBtree(tls *crt.TLS, _pBt *XBtShared) (r0 int32) {
+ var _rc, _nPage, _nPageFile, _nPageHeader, _6_isOpen int32
+ var _2_pageSize, _2_usableSize uint32
+ var _2_page1 *uint8
+ var _pPage1 *XMemPage
_nPageFile = i32(0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61941), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61941), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XMemPage)(_pBt.X3) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61942), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(53036)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61942), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(51369)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerSharedLock(tls, (*XPager)(_pBt.X0))
- if _rc == i32(0) {
- goto _4
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_4:
_rc = _btreeGetPage(tls, _pBt, uint32(i32(1)), &_pPage1, i32(0))
- if _rc == i32(0) {
- goto _5
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_5:
_nPage = store1(&_nPageHeader, int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(28))))))+uintptr(unsafe.Pointer(_pPage1.X19)))))))
_sqlite3PagerPagecount(tls, (*XPager)(_pBt.X0), &_nPageFile)
- if _nPage != i32(0) && crt.Xmemcmp(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(24))))))+uintptr(unsafe.Pointer(_pPage1.X19))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(92))))))+uintptr(unsafe.Pointer(_pPage1.X19))))), uint32(i32(4))) == i32(0) {
- goto _7
+ if (_nPage == i32(0)) || (crt.Xmemcmp(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(24))))))+uintptr(unsafe.Pointer(_pPage1.X19))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(92))))))+uintptr(unsafe.Pointer(_pPage1.X19))))), uint32(i32(4))) != i32(0)) {
+ _nPage = _nPageFile
}
-
- _nPage = _nPageFile
-_7:
if _nPage <= i32(0) {
goto _8
}
-
_2_page1 = _pPage1.X19
_rc = i32(26)
- if crt.Xmemcmp(tls, (unsafe.Pointer)(_2_page1), (unsafe.Pointer)(&_zMagicHeader), uint32(i32(16))) == i32(0) {
- goto _9
+ if crt.Xmemcmp(tls, (unsafe.Pointer)(_2_page1), (unsafe.Pointer)(&_zMagicHeader), uint32(i32(16))) != i32(0) {
+ goto _page1_init_failed
}
-
- goto _page1_init_failed
-
-_9:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(18))))) <= i32(2) {
- goto _10
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(18))))) > i32(2) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
+ }
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
- }
-_10:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(19))))) <= i32(2) {
- goto _11
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(19))))) > i32(2) {
+ goto _page1_init_failed
}
-
- goto _page1_init_failed
-
-_11:
if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(19))))) != i32(2) || (int32(_pBt.X10)&i32(16)) != i32(0) {
goto _13
}
-
_6_isOpen = i32(0)
_rc = _sqlite3PagerOpenWal(tls, (*XPager)(_pBt.X0), &_6_isOpen)
- if _rc == i32(0) {
- goto _14
+ if _rc != i32(0) {
+ goto _page1_init_failed
}
-
- goto _page1_init_failed
-
-_14:
- if _6_isOpen != i32(0) {
- goto _16
+ if _6_isOpen == i32(0) {
+ _releasePage(tls, _pPage1)
+ return i32(0)
}
-
- _releasePage(tls, _pPage1)
- return i32(0)
-
-_16:
_rc = i32(26)
goto _17
-
_13:
_17:
- if crt.Xmemcmp(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1))+1*uintptr(i32(21))))), (unsafe.Pointer)(str(53052)), uint32(i32(3))) == i32(0) {
- goto _18
+ if crt.Xmemcmp(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1))+1*uintptr(i32(21))))), (unsafe.Pointer)(str(51384)), uint32(i32(3))) != i32(0) {
+ goto _page1_init_failed
}
-
- goto _page1_init_failed
-
-_18:
_2_pageSize = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(16))))) << uint(i32(8))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(17))))) << uint(i32(16))))
- if ((_2_pageSize-uint32(i32(1)))&_2_pageSize) == uint32(i32(0)) && _2_pageSize <= uint32(i32(65536)) && _2_pageSize > uint32(i32(256)) {
- goto _21
+ if ((((_2_pageSize - uint32(i32(1))) & _2_pageSize) != uint32(i32(0))) || (_2_pageSize > uint32(i32(65536)))) || (_2_pageSize <= uint32(i32(256))) {
+ goto _page1_init_failed
}
-
- goto _page1_init_failed
-
-_21:
func() {
if (_2_pageSize & uint32(i32(7))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62030), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(53056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62030), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(51388)))
crt.X__builtin_abort(tls)
}
}()
_2_usableSize = _2_pageSize - uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_page1)) + 1*uintptr(i32(20)))))
- if _2_pageSize == (_pBt.X15) {
- goto _24
+ if _2_pageSize != (_pBt.X15) {
+ _releasePage(tls, _pPage1)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(36 /* X16 */))) = _2_usableSize
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(32 /* X15 */))) = _2_pageSize
+ _freeTempSpace(tls, _pBt)
+ _rc = _sqlite3PagerSetPagesize(tls, (*XPager)(_pBt.X0), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(32 /* X15 */))), int32(_2_pageSize-_2_usableSize))
+ return _rc
}
-
- _releasePage(tls, _pPage1)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(36 /* X16 */))) = _2_usableSize
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(32 /* X15 */))) = _2_pageSize
- _freeTempSpace(tls, _pBt)
- _rc = _sqlite3PagerSetPagesize(tls, (*XPager)(_pBt.X0), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(32 /* X15 */))), int32(_2_pageSize-_2_usableSize))
- return _rc
-
-_24:
- if (((*Xsqlite3)(_pBt.X1).X6)&i32(65536)) != i32(0) || _nPage <= _nPageFile {
- goto _26
+ if ((((*Xsqlite3)(_pBt.X1).X6) & i32(65536)) == i32(0)) && (_nPage > _nPageFile) {
+ _rc = _sqlite3CorruptError(tls, i32(62055))
+ goto _page1_init_failed
}
-
- _rc = _sqlite3CorruptError(tls, i32(62055))
- goto _page1_init_failed
-
-_26:
- if _2_usableSize >= uint32(i32(480)) {
- goto _27
+ if _2_usableSize < uint32(i32(480)) {
+ goto _page1_init_failed
}
-
- goto _page1_init_failed
-
-_27:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(32 /* X15 */))) = _2_pageSize
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(36 /* X16 */))) = _2_usableSize
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(17 /* X5 */))) = uint8(func() int32 {
@@ -42044,19 +38018,15 @@ _8:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(26 /* X12 */))) = uint16(((((_pBt.X16) - uint32(i32(12))) * uint32(i32(32))) / uint32(i32(255))) - uint32(i32(23)))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(28 /* X13 */))) = uint16((_pBt.X16) - uint32(i32(35)))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(30 /* X14 */))) = uint16(((((_pBt.X16) - uint32(i32(12))) * uint32(i32(32))) / uint32(i32(255))) - uint32(i32(23)))
- if int32(_pBt.X11) <= i32(127) {
- goto _32
+ if int32(_pBt.X11) > i32(127) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(21 /* X9 */))) = uint8(i32(127))
+ goto _33
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(21 /* X9 */))) = uint8(i32(127))
- goto _33
-
-_32:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(21 /* X9 */))) = uint8(_pBt.X11)
_33:
func() {
if (int32(_pBt.X13) + i32(23)) > int32((_pBt.X15)-uint32(i32(8))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62094), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(53076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62094), unsafe.Pointer((*int8)(unsafe.Pointer(&_lockBtreeØ00__func__Ø000))), unsafe.Pointer(str(51406)))
crt.X__builtin_abort(tls)
}
}()
@@ -42068,199 +38038,177 @@ _page1_init_failed:
_releasePage(tls, _pPage1)
*(**XMemPage)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(12 /* X3 */))))) = nil
return _rc
-}
-
-var _lockBtreeØ00__func__Ø000 [10]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_lockBtreeØ00__func__Ø000[0], str(53116), 10)
-}
-func _sqlite3PagerSharedLock(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:52030:1
- var _rc int32 // sqlite3.c:52031:7
- _ = _rc
- var _1_bHotJournal int32 // sqlite3.c:52043:9
- _ = _1_bHotJournal
- var _8_pVfs *Xsqlite3_vfs // sqlite3.c:52103:21
- _ = _8_pVfs
- var _8_bExists int32 // sqlite3.c:52104:13
- _ = _8_bExists
- var _9_fout int32 // sqlite3.c:52108:15
- _ = _9_fout
- var _9_f int32 // sqlite3.c:52109:15
- _ = _9_f
- var _15_nPage uint32 // sqlite3.c:52183:12
- _ = _15_nPage
- var _15_dbFileVers [16]int8 // sqlite3.c:52184:12
- _ = _15_dbFileVers
+ _ = _nPageHeader
+ panic(0)
+}
+
+var _lockBtreeØ00__func__Ø000 [10]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_lockBtreeØ00__func__Ø000[0], str(51445), 10)
+}
+
+// This function is called to obtain a shared lock on the database file.
+// It is illegal to call sqlite3PagerGet() until after this function
+// has been successfully called. If a shared-lock is already held when
+// this function is called, it is a no-op.
+//
+// The following operations are also performed by this function.
+//
+// 1) If the pager is currently in PAGER_OPEN state (no lock held
+// on the database file), then an attempt is made to obtain a
+// SHARED lock on the database file. Immediately after obtaining
+// the SHARED lock, the file-system is checked for a hot-journal,
+// which is played back if present. Following any hot-journal
+// rollback, the contents of the cache are validated by checking
+// the 'change-counter' field of the database file header and
+// discarded if they are found to be invalid.
+//
+// 2) If the pager is running in exclusive-mode, and there are currently
+// no outstanding references to any pages, and is in the error state,
+// then an attempt is made to clear the error state by discarding
+// the contents of the page cache and rolling back any open journal
+// file.
+//
+// If everything is successful, SQLITE_OK is returned. If an IO error
+// occurs while locking the database, checking for a hot-journal file or
+// rolling back a journal file, the IO error code is returned.
+func _sqlite3PagerSharedLock(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc, _1_bHotJournal, _8_bExists, _9_fout, _9_f int32
+ var _15_nPage uint32
+ var _15_dbFileVers [16]int8
+ var _8_pVfs *Xsqlite3_vfs
_rc = i32(0)
func() {
if _sqlite3PcacheRefCount(tls, (*XPCache)(_pPager.X59)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53128)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51455)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52038), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52038), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) != i32(0) && int32(_pPager.X14) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52039), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52039), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51497)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X26) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52040), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(10652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52040), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(11754)))
crt.X__builtin_abort(tls)
}
}()
if (*XWal)(_pPager.X60) != nil || int32(_pPager.X14) != i32(0) {
goto _10
}
-
_1_bHotJournal = i32(1)
func() {
if (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52045), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(10644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52045), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(11747)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X10) != i32(0) && int32(_pPager.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53232)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51556)))
crt.X__builtin_abort(tls)
}
}()
_rc = _pager_wait_on_lock(tls, _pPager, i32(1))
- if _rc == i32(0) {
- goto _16
+ if _rc != i32(0) {
+ func() {
+ if int32(_pPager.X15) != i32(0) && int32(_pPager.X15) != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52050), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51609)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _failed
}
-
- func() {
- if int32(_pPager.X15) != i32(0) && int32(_pPager.X15) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52050), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53288)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _failed
-
-_16:
- if int32(_pPager.X15) > i32(1) {
- goto _20
+ if int32(_pPager.X15) <= i32(1) {
+ _rc = _hasHotJournal(tls, _pPager, &_1_bHotJournal)
}
-
- _rc = _hasHotJournal(tls, _pPager, &_1_bHotJournal)
-_20:
- if _rc == i32(0) {
- goto _21
+ if _rc != i32(0) {
+ goto _failed
}
-
- goto _failed
-
-_21:
if _1_bHotJournal == 0 {
goto _22
}
-
- if (_pPager.X12) == 0 {
- goto _23
+ if (_pPager.X12) != 0 {
+ _rc = i32(776)
+ goto _failed
}
-
- _rc = i32(776)
- goto _failed
-
-_23:
_rc = _pagerLockDb(tls, _pPager, i32(4))
- if _rc == i32(0) {
- goto _24
+ if _rc != i32(0) {
+ goto _failed
}
-
- goto _failed
-
-_24:
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil {
goto _25
}
-
_8_pVfs = (*Xsqlite3_vfs)(_pPager.X0)
_rc = _sqlite3OsAccess(tls, _8_pVfs, _pPager.X52, i32(0), &_8_bExists)
if _rc != i32(0) || _8_bExists == 0 {
goto _27
}
-
_9_fout = i32(0)
_9_f = i32(2050)
func() {
if (_pPager.X10) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52110), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52110), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51663)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3OsOpen(tls, _8_pVfs, _pPager.X52, (*Xsqlite3_file)(_pPager.X32), _9_f, &_9_fout)
func() {
if _rc == i32(0) && (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(12488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(13510)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(0) || (_9_fout&i32(1)) == 0 {
- goto _34
+ if (_rc == i32(0)) && (_9_fout&i32(1)) != 0 {
+ _rc = _sqlite3CantopenError(tls, i32(52114))
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
}
-
- _rc = _sqlite3CantopenError(tls, i32(52114))
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
-_34:
_27:
_25:
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
goto _35
}
-
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52129), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52129), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
_rc = _pagerSyncHotJournal(tls, _pPager)
- if _rc != i32(0) {
- goto _38
+ if _rc == i32(0) {
+ _rc = _pager_playback(tls, _pPager, bool2int((_pPager.X10) == 0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
}
-
- _rc = _pager_playback(tls, _pPager, bool2int((_pPager.X10) == 0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
-_38:
goto _39
-
_35:
- if (_pPager.X1) != 0 {
- goto _40
+ if (_pPager.X1) == 0 {
+ _pagerUnlockDb(tls, _pPager, i32(1))
}
-
- _pagerUnlockDb(tls, _pPager, i32(1))
-_40:
_39:
- if _rc == i32(0) {
- goto _41
+ if _rc != i32(0) {
+ _pager_error(tls, _pPager, _rc)
+ goto _failed
}
-
- _pager_error(tls, _pPager, _rc)
- goto _failed
-
-_41:
func() {
if int32(_pPager.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51681)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X15) != i32(1) && ((_pPager.X1) == 0 || int32(_pPager.X15) <= i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52161), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53392)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52161), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51708)))
crt.X__builtin_abort(tls)
}
}()
@@ -42268,111 +38216,100 @@ _22:
if (_pPager.X10) != 0 || (_pPager.X21) == 0 {
goto _49
}
-
_15_nPage = u32(0)
_rc = _pagerPagecount(tls, _pPager, &_15_nPage)
- if _rc == 0 {
- goto _50
+ if _rc != 0 {
+ goto _failed
}
-
- goto _failed
-
-_50:
if _15_nPage <= uint32(i32(0)) {
goto _51
}
-
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pPager.X31), (unsafe.Pointer)(&_15_dbFileVers), int32(u32(16)), int64(i32(24)))
- if _rc == i32(0) || _rc == i32(522) {
- goto _53
+ if (_rc != i32(0)) && (_rc != i32(522)) {
+ goto _failed
}
-
- goto _failed
-
-_53:
goto _54
-
_51:
crt.Xmemset(tls, (unsafe.Pointer)(&_15_dbFileVers), i32(0), u32(16))
_54:
if crt.Xmemcmp(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), (unsafe.Pointer)(&_15_dbFileVers), u32(16)) == i32(0) {
goto _55
}
-
_pager_reset(tls, _pPager)
- if (_pPager.X20) == 0 {
- goto _56
+ if (_pPager.X20) != 0 {
+ _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(i32(0)), nil)
}
-
- _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(i32(0)), nil)
-_56:
_55:
_49:
_rc = _pagerOpenWalIfPresent(tls, _pPager)
func() {
if (*XWal)(_pPager.X60) != nil && _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52219), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53480)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52219), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51793)))
crt.X__builtin_abort(tls)
}
}()
_10:
- if (*XWal)(_pPager.X60) == nil {
- goto _60
+ if (*XWal)(_pPager.X60) != nil {
+ func() {
+ if _rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(15012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _pagerBeginReadTransaction(tls, _pPager)
}
-
- func() {
- if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(14080)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _pagerBeginReadTransaction(tls, _pPager)
-_60:
- if int32(_pPager.X10) != i32(0) || int32(_pPager.X14) != i32(0) || _rc != i32(0) {
- goto _65
+ if ((int32(_pPager.X10) == i32(0)) && (int32(_pPager.X14) == i32(0))) && (_rc == i32(0)) {
+ _rc = _pagerPagecount(tls, _pPager, (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(28 /* X22 */))))
}
-
- _rc = _pagerPagecount(tls, _pPager, (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(28 /* X22 */))))
-_65:
_failed:
- if _rc == i32(0) {
- goto _66
+ if _rc != i32(0) {
+ func() {
+ if (_pPager.X13) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52234), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(11747)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pager_unlock(tls, _pPager)
+ func() {
+ if int32(_pPager.X14) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(51681)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _71
}
-
- func() {
- if (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52234), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(10644)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pager_unlock(tls, _pPager)
- func() {
- if int32(_pPager.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSharedLockØ00__func__Ø000))), unsafe.Pointer(str(53364)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _71
-
-_66:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(1))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(24 /* X21 */))) = uint8(i32(1))
_71:
return _rc
+
+ _ = _15_dbFileVers
+ panic(0)
}
-var _sqlite3PagerSharedLockØ00__func__Ø000 [23]int8 // -
+var _sqlite3PagerSharedLockØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerSharedLockØ00__func__Ø000[0], str(53516), 23)
+ crt.Xstrncpy(nil, &_sqlite3PagerSharedLockØ00__func__Ø000[0], str(51826), 23)
}
-func _pager_wait_on_lock(tls *crt.TLS, _pPager *XPager, _locktype int32) (r0 int32) { // sqlite3.c:50811:1
- var _rc int32 // sqlite3.c:50812:7
- _ = _rc
+// Try to obtain a lock of type locktype on the database file. If
+// a similar or greater lock is already held, this function is a no-op
+// (returning SQLITE_OK immediately).
+//
+// Otherwise, attempt to obtain the lock using sqlite3OsLock(). Invoke
+// the busy callback if the lock is currently not available. Repeat
+// until the busy callback returns false or until the attempt to
+// obtain the lock succeeds.
+//
+// Return SQLITE_OK on success and an error code if we cannot obtain
+// the lock. If the lock is obtained successfully, set the Pager.state
+// variable to locktype before returning.
+func _pager_wait_on_lock(tls *crt.TLS, _pPager *XPager, _locktype int32) (r0 int32) {
+ var _rc int32
func() {
if int32(_pPager.X15) < _locktype && (int32(_pPager.X15) != i32(0) || _locktype != i32(1)) && (int32(_pPager.X15) != i32(2) || _locktype != i32(4)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50819), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_wait_on_lockØ00__func__Ø000))), unsafe.Pointer(str(53540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50819), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_wait_on_lockØ00__func__Ø000))), unsafe.Pointer(str(51849)))
crt.X__builtin_abort(tls)
}
}()
@@ -42384,114 +38321,128 @@ _6:
return _rc
}
-var _pager_wait_on_lockØ00__func__Ø000 [19]int8 // -
+var _pager_wait_on_lockØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_pager_wait_on_lockØ00__func__Ø000[0], str(53684), 19)
+ crt.Xstrncpy(nil, &_pager_wait_on_lockØ00__func__Ø000[0], str(51990), 19)
}
-func _pagerLockDb(tls *crt.TLS, _pPager *XPager, _eLock int32) (r0 int32) { // sqlite3.c:48073:1
- var _rc int32 // sqlite3.c:48074:7
- _ = _rc
+// Lock the database file to level eLock, which must be either SHARED_LOCK,
+// RESERVED_LOCK or EXCLUSIVE_LOCK. If the caller is successful, set the
+// Pager.eLock variable to the new locking state.
+//
+// Except, if Pager.eLock is set to UNKNOWN_LOCK when this function is
+// called, do not modify it unless the new locking state is EXCLUSIVE_LOCK.
+// See the comment above the #define of UNKNOWN_LOCK for an explanation
+// of this.
+func _pagerLockDb(tls *crt.TLS, _pPager *XPager, _eLock int32) (r0 int32) {
+ var _rc int32
_rc = i32(0)
func() {
if _eLock != i32(1) && _eLock != i32(2) && _eLock != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48076), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerLockDbØ00__func__Ø000))), unsafe.Pointer(str(53704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48076), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerLockDbØ00__func__Ø000))), unsafe.Pointer(str(52009)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pPager.X15) >= _eLock && int32(_pPager.X15) != i32(5) {
goto _5
}
-
_rc = func() int32 {
if (_pPager.X11) != 0 {
return i32(0)
}
return _sqlite3OsLock(tls, (*Xsqlite3_file)(_pPager.X31), _eLock)
}()
- if _rc != i32(0) || int32(_pPager.X15) == i32(5) && _eLock != i32(4) {
- goto _10
+ if (_rc == i32(0)) && ((int32(_pPager.X15) != i32(5)) || (_eLock == i32(4))) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(18 /* X15 */))) = uint8(_eLock)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(18 /* X15 */))) = uint8(_eLock)
-_10:
_5:
- r0 = _rc
- return
-}
-
-var _pagerLockDbØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pagerLockDbØ00__func__Ø000[0], str(53772), 12)
+ return _rc
}
-func _hasHotJournal(tls *crt.TLS, _pPager *XPager, _pExists *int32) (r0 int32) { // sqlite3.c:51910:1
- var _pVfs *Xsqlite3_vfs // sqlite3.c:51911:15
- _ = _pVfs
- var _rc int32 // sqlite3.c:51912:7
- _ = _rc
- var _exists int32 // sqlite3.c:51913:7
- _ = _exists
- var _jrnlOpen int32 // sqlite3.c:51914:7
- _ = _jrnlOpen
- var _2_locked int32 // sqlite3.c:51929:9
- _ = _2_locked
- var _3_nPage uint32 // sqlite3.c:51941:12
- _ = _3_nPage
- var _8_f int32 // sqlite3.c:51969:17
- _ = _8_f
- var _9_first uint8 // sqlite3.c:51973:16
- _ = _9_first
+var _pagerLockDbØ00__func__Ø000 [12]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pagerLockDbØ00__func__Ø000[0], str(52077), 12)
+}
+
+// This function is called after transitioning from PAGER_UNLOCK to
+// PAGER_SHARED state. It tests if there is a hot journal present in
+// the file-system for the given pager. A hot journal is one that
+// needs to be played back. According to this function, a hot-journal
+// file exists if the following criteria are met:
+//
+// * The journal file exists in the file system, and
+// * No process holds a RESERVED or greater lock on the database file, and
+// * The database file itself is greater than 0 bytes in size, and
+// * The first byte of the journal file exists and is not 0x00.
+//
+// If the current size of the database file is 0 but a journal file
+// exists, that is probably an old journal left over from a prior
+// database with the same name. In this case the journal file is
+// just deleted using OsDelete, *pExists is set to 0 and SQLITE_OK
+// is returned.
+//
+// This routine does not check if there is a master journal filename
+// at the end of the file. If there is, and that master journal file
+// does not exist, then the journal file is not really hot. In this
+// case this routine will return a false-positive. The pager_playback()
+// routine will discover that the journal file is not really hot and
+// will not roll it back.
+//
+// If a hot-journal file is found to exist, *pExists is set to 1 and
+// SQLITE_OK returned. If no hot-journal file is present, *pExists is
+// set to 0 and SQLITE_OK returned. If an IO error occurs while trying
+// to determine whether or not a hot-journal file exists, the IO error
+// code is returned and the value of *pExists is undefined.
+func _hasHotJournal(tls *crt.TLS, _pPager *XPager, _pExists *int32) (r0 int32) {
+ var _rc, _exists, _jrnlOpen, _2_locked, _8_f int32
+ var _3_nPage uint32
+ var _9_first uint8
+ var _pVfs *Xsqlite3_vfs
_pVfs = (*Xsqlite3_vfs)(_pPager.X0)
_rc = i32(0)
_exists = i32(1)
_jrnlOpen = bool2int((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil)
func() {
if (_pPager.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51916), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(11316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51916), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(12385)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51917), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(15664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51917), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(16508)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51918), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(53364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51918), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(51681)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _jrnlOpen != i32(0) && (_sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X32))&i32(2048)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51920), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(53784)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51920), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(52089)))
crt.X__builtin_abort(tls)
}
}()
*_pExists = i32(0)
- if _jrnlOpen != 0 {
- goto _9
+ if _jrnlOpen == 0 {
+ _rc = _sqlite3OsAccess(tls, _pVfs, _pPager.X52, i32(0), &_exists)
}
-
- _rc = _sqlite3OsAccess(tls, _pVfs, _pPager.X52, i32(0), &_exists)
-_9:
if _rc != i32(0) || _exists == 0 {
goto _11
}
-
_2_locked = i32(0)
_rc = _sqlite3OsCheckReservedLock(tls, (*Xsqlite3_file)(_pPager.X31), &_2_locked)
if _rc != i32(0) || _2_locked != 0 {
goto _13
}
-
func() {
if int32(_pPager.X10) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51943), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(9920)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51943), unsafe.Pointer((*int8)(unsafe.Pointer(&_hasHotJournalØ00__func__Ø000))), unsafe.Pointer(str(11043)))
crt.X__builtin_abort(tls)
}
}()
@@ -42499,113 +38450,95 @@ _9:
if _rc != i32(0) {
goto _16
}
-
if _3_nPage != uint32(i32(0)) || _jrnlOpen != 0 {
goto _18
}
-
_sqlite3BeginBenignMalloc(tls)
if _pagerLockDb(tls, _pPager, i32(2)) != i32(0) {
goto _19
}
-
_sqlite3OsDelete(tls, _pVfs, _pPager.X52, i32(0))
- if (_pPager.X1) != 0 {
- goto _20
+ if (_pPager.X1) == 0 {
+ _pagerUnlockDb(tls, _pPager, i32(1))
}
-
- _pagerUnlockDb(tls, _pPager, i32(1))
-_20:
_19:
_sqlite3EndBenignMalloc(tls)
goto _21
-
_18:
- if _jrnlOpen != 0 {
- goto _22
+ if _jrnlOpen == 0 {
+ _8_f = i32(2049)
+ _rc = _sqlite3OsOpen(tls, _pVfs, _pPager.X52, (*Xsqlite3_file)(_pPager.X32), _8_f, &_8_f)
}
-
- _8_f = i32(2049)
- _rc = _sqlite3OsOpen(tls, _pVfs, _pPager.X52, (*Xsqlite3_file)(_pPager.X32), _8_f, &_8_f)
-_22:
if _rc != i32(0) {
goto _23
}
-
_9_first = u8(0)
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_9_first), i32(1), int64(i32(0)))
- if _rc != i32(522) {
- goto _24
+ if _rc == i32(522) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_24:
- if _jrnlOpen != 0 {
- goto _25
+ if _jrnlOpen == 0 {
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
}
-
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
-_25:
*_pExists = bool2int(int32(_9_first) != i32(0))
goto _26
-
_23:
- if _rc != i32(14) {
- goto _27
+ if _rc == i32(14) {
+ *_pExists = i32(1)
+ _rc = i32(0)
}
-
- *_pExists = i32(1)
- _rc = i32(0)
-_27:
_26:
_21:
_16:
_13:
_11:
- r0 = _rc
- return
+ return _rc
}
-var _hasHotJournalØ00__func__Ø000 [14]int8 // -
+var _hasHotJournalØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_hasHotJournalØ00__func__Ø000[0], str(53884), 14)
+ crt.Xstrncpy(nil, &_hasHotJournalØ00__func__Ø000[0], str(52189), 14)
}
-func _sqlite3OsCheckReservedLock(tls *crt.TLS, _id *Xsqlite3_file, _pResOut *int32) (r0 int32) { // sqlite3.c:20192:1
+func _sqlite3OsCheckReservedLock(tls *crt.TLS, _id *Xsqlite3_file, _pResOut *int32) (r0 int32) {
return (*(*func(*crt.TLS, *Xsqlite3_file, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32) int32
}{((*Xsqlite3_io_methods)(_id.X0).X9)})))(tls, _id, _pResOut)
}
-func _pagerPagecount(tls *crt.TLS, _pPager *XPager, _pnPage *uint32) (r0 int32) { // sqlite3.c:50157:1
- var _nPage uint32 // sqlite3.c:50158:8
- _ = _nPage
- var _1_n int64 // sqlite3.c:50178:9
- _ = _1_n
- var _1_rc int32 // sqlite3.c:50179:9
- _ = _1_rc
+// This function is called as part of the transition from PAGER_OPEN
+// to PAGER_READER state to determine the size of the database file
+// in pages (assuming the page size currently stored in Pager.pageSize).
+//
+// If no error occurs, SQLITE_OK is returned and the size of the database
+// in pages is stored in *pnPage. Otherwise, an error code (perhaps
+// SQLITE_IOERR_FSTAT) is returned and *pnPage is left unmodified.
+func _pagerPagecount(tls *crt.TLS, _pPager *XPager, _pnPage *uint32) (r0 int32) {
+ var _1_rc int32
+ var _1_n int64
+ var _nPage uint32
func() {
if int32(_pPager.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50166), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(53364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50166), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(51681)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X15) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50167), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(53900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50167), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(52203)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50168), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(15664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50168), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(16508)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X10) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50169), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(9920)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50169), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(11043)))
crt.X__builtin_abort(tls)
}
}()
@@ -42615,309 +38548,297 @@ func _pagerPagecount(tls *crt.TLS, _pPager *XPager, _pnPage *uint32) (r0 int32)
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50177), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50177), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerPagecountØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _11
}
-
_1_n = i64(0)
_1_rc = _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X31), &_1_n)
- if _1_rc == i32(0) {
- goto _12
+ if _1_rc != i32(0) {
+ return _1_rc
}
- return _1_rc
-
-_12:
_nPage = uint32(((_1_n + int64(_pPager.X48)) - int64(i32(1))) / int64(_pPager.X48))
_11:
- if _nPage <= (_pPager.X49) {
- goto _13
+ if _nPage > (_pPager.X49) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(156 /* X49 */))) = _nPage
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(156 /* X49 */))) = _nPage
-_13:
*_pnPage = _nPage
return i32(0)
}
-var _pagerPagecountØ00__func__Ø000 [15]int8 // -
+var _pagerPagecountØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_pagerPagecountØ00__func__Ø000[0], str(53928), 15)
+ crt.Xstrncpy(nil, &_pagerPagecountØ00__func__Ø000[0], str(52230), 15)
}
-func _sqlite3WalDbsize(tls *crt.TLS, _pWal *XWal) (r0 uint32) { // sqlite3.c:57178:1
- if _pWal == nil || func() int32 {
+// Return the size of the database in pages (or zero, if unknown).
+func _sqlite3WalDbsize(tls *crt.TLS, _pWal *XWal) (r0 uint32) {
+ if (_pWal != nil) && func() int32 {
if int32(_pWal.X9) >= i32(0) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57179), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalDbsizeØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57179), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalDbsizeØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _3
+ }() != 0 {
+ /* X18 */
+ return (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52))).X7
}
-
- /* X18 */
- return (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52))).X7
-
-_3:
return uint32(i32(0))
}
-var _sqlite3WalDbsizeØ00__func__Ø000 [17]int8 // -
+var _sqlite3WalDbsizeØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalDbsizeØ00__func__Ø000[0], str(53944), 17)
+ crt.Xstrncpy(nil, &_sqlite3WalDbsizeØ00__func__Ø000[0], str(52245), 17)
}
-func _pagerOpenWalIfPresent(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:50217:1
- var _rc int32 // sqlite3.c:50218:7
- _ = _rc
- var _1_isWal int32 // sqlite3.c:50223:9
- _ = _1_isWal
- var _1_nPage uint32 // sqlite3.c:50224:10
- _ = _1_nPage
+// Check if the *-wal file that corresponds to the database opened by pPager
+// exists if the database is not empy, or verify that the *-wal file does
+// not exist (by deleting it) if the database file is empty.
+//
+// If the database is not empty and the *-wal file exists, open the pager
+// in WAL mode. If the database is empty or if no *-wal file exists and
+// if no error occurs, make sure Pager.journalMode is not set to
+// PAGER_JOURNALMODE_WAL.
+//
+// Return SQLITE_OK or an error code.
+//
+// The caller must hold a SHARED lock on the database file to call this
+// function. Because an EXCLUSIVE lock on the db file is required to delete
+// a WAL on a none-empty database, this ensures there is no race condition
+// between the xAccess() below and an xDelete() being executed by some
+// other connection.
+func _pagerOpenWalIfPresent(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc, _1_isWal int32
+ var _1_nPage uint32
_rc = i32(0)
func() {
if int32(_pPager.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50219), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalIfPresentØ00__func__Ø000))), unsafe.Pointer(str(53364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50219), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalIfPresentØ00__func__Ø000))), unsafe.Pointer(str(51681)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X15) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50220), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalIfPresentØ00__func__Ø000))), unsafe.Pointer(str(53900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50220), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalIfPresentØ00__func__Ø000))), unsafe.Pointer(str(52203)))
crt.X__builtin_abort(tls)
}
}()
if (_pPager.X10) != 0 {
goto _4
}
-
_rc = _pagerPagecount(tls, _pPager, &_1_nPage)
- if _rc == 0 {
- goto _5
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_5:
if _1_nPage != uint32(i32(0)) {
goto _6
}
-
_rc = _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X61, i32(0))
- if _rc != i32(5898) {
- goto _7
+ if _rc == i32(5898) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_7:
_1_isWal = i32(0)
goto _8
-
_6:
_rc = _sqlite3OsAccess(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X61, i32(0), &_1_isWal)
_8:
if _rc != i32(0) {
goto _9
}
-
- if _1_isWal == 0 {
- goto _10
+ if _1_isWal != 0 {
+ _rc = _sqlite3PagerOpenWal(tls, _pPager, nil)
+ goto _11
}
-
- _rc = _sqlite3PagerOpenWal(tls, _pPager, nil)
- goto _11
-
-_10:
- if int32(_pPager.X2) != i32(5) {
- goto _12
+ if int32(_pPager.X2) == i32(5) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(0))
-_12:
_11:
_9:
_4:
- r0 = _rc
- return
+ return _rc
}
-var _pagerOpenWalIfPresentØ00__func__Ø000 [22]int8 // -
+var _pagerOpenWalIfPresentØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_pagerOpenWalIfPresentØ00__func__Ø000[0], str(53964), 22)
+ crt.Xstrncpy(nil, &_pagerOpenWalIfPresentØ00__func__Ø000[0], str(52262), 22)
}
-func _sqlite3PagerOpenWal(tls *crt.TLS, _pPager *XPager, _pbOpen *int32) (r0 int32) { // sqlite3.c:54338:1
- var _rc int32 // sqlite3.c:54342:7
- _ = _rc
+// The caller must be holding a SHARED lock on the database file to call
+// this function.
+//
+// If the pager passed as the first argument is open on a real database
+// file (not a temp file or an in-memory database), and the WAL file
+// is not already open, make an attempt to open it now. If successful,
+// return SQLITE_OK. If an error occurs or the VFS used by the pager does
+// not support the xShmXXX() methods, return an error code. *pbOpen is
+// not modified in either case.
+//
+// If the pager is open on a temp-file (or in-memory database), or if
+// the WAL file is already open, set *pbOpen to 1 and return SQLITE_OK
+// without doing anything.
+func _sqlite3PagerOpenWal(tls *crt.TLS, _pPager *XPager, _pbOpen *int32) (r0 int32) {
+ var _rc int32
_rc = i32(0)
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54344), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54344), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) != i32(0) && _pbOpen == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54345), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(53988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54345), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(52284)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) != i32(1) && _pbOpen != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54346), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(54028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54346), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(52321)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pbOpen != nil && (*_pbOpen) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54347), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(54068)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54347), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(52361)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pbOpen == nil && ((_pPager.X10) != 0 || (*XWal)(_pPager.X60) != nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54348), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(54092)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54348), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(52385)))
crt.X__builtin_abort(tls)
}
}()
if (_pPager.X10) != 0 || (*XWal)(_pPager.X60) != nil {
goto _16
}
-
- if _sqlite3PagerWalSupported(tls, _pPager) != 0 {
- goto _17
+ if _sqlite3PagerWalSupported(tls, _pPager) == 0 {
+ return i32(14)
}
- return i32(14)
-
-_17:
_sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
_rc = _pagerOpenWal(tls, _pPager)
- if _rc != i32(0) {
- goto _18
+ if _rc == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(5))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(5))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(0))
-_18:
goto _19
-
_16:
*_pbOpen = i32(1)
_19:
return _rc
}
-var _sqlite3PagerOpenWalØ00__func__Ø000 [20]int8 // -
+var _sqlite3PagerOpenWalØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerOpenWalØ00__func__Ø000[0], str(54144), 20)
+ crt.Xstrncpy(nil, &_sqlite3PagerOpenWalØ00__func__Ø000[0], str(52435), 20)
}
-func _sqlite3PagerWalSupported(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:54263:1
- var _pMethods *Xsqlite3_io_methods // sqlite3.c:54264:28
- _ = _pMethods
+// Return true if the underlying VFS for the given pager supports the
+// primitives necessary for write-ahead logging.
+func _sqlite3PagerWalSupported(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _pMethods *Xsqlite3_io_methods
_pMethods = (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0)
- if (_pPager.X11) == 0 {
- goto _0
+ if (_pPager.X11) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_0:
return bool2int(((_pPager.X1) != 0) || (((_pMethods.X0) >= i32(2)) && ((*(*func(*crt.TLS, *Xsqlite3_file, int32, int32, int32, *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, int32, int32, *unsafe.Pointer) int32
}{(_pMethods.X13)}))) != nil)))
}
-func _pagerOpenWal(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:54293:1
- var _rc int32 // sqlite3.c:54294:7
- _ = _rc
+// Call sqlite3WalOpen() to open the WAL handle. If the pager is in
+// exclusive-locking mode when this function is called, take an EXCLUSIVE
+// lock on the database file and use heap-memory to store the wal-index
+// in. Otherwise, use the normal shared-memory.
+func _pagerOpenWal(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc int32
_rc = i32(0)
func() {
if (*XWal)(_pPager.X60) != nil || int32(_pPager.X10) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54296), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(54164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54296), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(52455)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X15) != i32(1) && int32(_pPager.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54297), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(54204)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54297), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenWalØ00__func__Ø000))), unsafe.Pointer(str(52494)))
crt.X__builtin_abort(tls)
}
}()
- if (_pPager.X1) == 0 {
- goto _6
+ if (_pPager.X1) != 0 {
+ _rc = _pagerExclusiveLock(tls, _pPager)
}
-
- _rc = _pagerExclusiveLock(tls, _pPager)
-_6:
- if _rc != i32(0) {
- goto _7
+ if _rc == i32(0) {
+ _rc = _sqlite3WalOpen(tls, (*Xsqlite3_vfs)(_pPager.X0), (*Xsqlite3_file)(_pPager.X31), _pPager.X61, int32(_pPager.X1), _pPager.X50, (**XWal)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(212 /* X60 */))))))
}
-
- _rc = _sqlite3WalOpen(tls, (*Xsqlite3_vfs)(_pPager.X0), (*Xsqlite3_file)(_pPager.X31), _pPager.X61, int32(_pPager.X1), _pPager.X50, (**XWal)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(212 /* X60 */))))))
-_7:
_pagerFixMaplimit(tls, _pPager)
return _rc
}
-var _pagerOpenWalØ00__func__Ø000 [13]int8 // -
+var _pagerOpenWalØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_pagerOpenWalØ00__func__Ø000[0], str(54264), 13)
+ crt.Xstrncpy(nil, &_pagerOpenWalØ00__func__Ø000[0], str(52554), 13)
}
-func _pagerExclusiveLock(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:54273:1
- var _rc int32 // sqlite3.c:54274:7
- _ = _rc
+// Attempt to take an exclusive lock on the database file. If a PENDING lock
+// is obtained instead, immediately release it.
+func _pagerExclusiveLock(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc int32
func() {
if int32(_pPager.X15) != i32(1) && int32(_pPager.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54276), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(54204)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54276), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(52494)))
crt.X__builtin_abort(tls)
}
}()
_rc = _pagerLockDb(tls, _pPager, i32(4))
- if _rc == i32(0) {
- goto _3
+ if _rc != i32(0) {
+ _pagerUnlockDb(tls, _pPager, i32(1))
}
-
- _pagerUnlockDb(tls, _pPager, i32(1))
-_3:
return _rc
}
-var _pagerExclusiveLockØ00__func__Ø000 [19]int8 // -
+var _pagerExclusiveLockØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_pagerExclusiveLockØ00__func__Ø000[0], str(54280), 19)
+ crt.Xstrncpy(nil, &_pagerExclusiveLockØ00__func__Ø000[0], str(52567), 19)
}
-func _sqlite3WalOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pDbFd *Xsqlite3_file, _zWalName *int8, _bNoShm int32, _mxWalSize int64, _ppWal **XWal) (r0 int32) { // sqlite3.c:55755:1
- var _rc int32 // sqlite3.c:55763:7
- _ = _rc
- var _pRet *XWal // sqlite3.c:55764:7
- _ = _pRet
- var _flags int32 // sqlite3.c:55765:7
- _ = _flags
- var _4_iDC int32 // sqlite3.c:55815:9
- _ = _4_iDC
+// Open a connection to the WAL file zWalName. The database file must
+// already be opened on connection pDbFd. The buffer that zWalName points
+// to must remain valid for the lifetime of the returned Wal* handle.
+//
+// A SHARED lock should be held on the database file when this function
+// is called. The purpose of this SHARED lock is to prevent any other
+// client from unlinking the WAL or wal-index file. If another process
+// were to do this just after this client opened one of these files, the
+// system would be badly broken.
+//
+// If the log file is successfully opened, SQLITE_OK is returned and
+// *ppWal is set to point to a new WAL handle. If an error occurs,
+// an SQLite error code is returned and *ppWal is left unmodified.
+func _sqlite3WalOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pDbFd *Xsqlite3_file, _zWalName *int8, _bNoShm int32, _mxWalSize int64, _ppWal **XWal) (r0 int32) {
+ var _rc, _flags, _4_iDC int32
+ var _pRet *XWal
func() {
if _zWalName == nil || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zWalName)) + 1*uintptr(i32(0))))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55767), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalOpenØ00__func__Ø000))), unsafe.Pointer(str(54300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55767), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalOpenØ00__func__Ø000))), unsafe.Pointer(str(52586)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pDbFd == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(55768), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalOpenØ00__func__Ø000))), unsafe.Pointer(str(54324)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(55768), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalOpenØ00__func__Ø000))), unsafe.Pointer(str(52610)))
crt.X__builtin_abort(tls)
}
}()
@@ -42926,12 +38847,9 @@ func _sqlite3WalOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _pDbFd *Xsqlite3_file, _
i32(0)
*_ppWal = nil
_pRet = (*XWal)(_sqlite3MallocZero(tls, uint64(u32(120)+uint32(_pVfs.X1))))
- if _pRet != nil {
- goto _5
+ if _pRet == nil {
+ return _sqlite3NomemError(tls, i32(55790))
}
- return _sqlite3NomemError(tls, i32(55790))
-
-_5:
*(**Xsqlite3_vfs)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(0 /* X0 */))))) = _pVfs
*(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(8 /* X2 */))))) = (*Xsqlite3_file)(unsafe.Pointer((*XWal)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + 120*uintptr(i32(1))))))
*(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(4 /* X1 */))))) = _pDbFd
@@ -42948,61 +38866,51 @@ _5:
}())
_flags = i32(524294)
_rc = _sqlite3OsOpen(tls, _pVfs, _zWalName, (*Xsqlite3_file)(_pRet.X2), _flags, &_flags)
- if _rc != i32(0) || (_flags&i32(1)) == 0 {
- goto _9
+ if (_rc == i32(0)) && (_flags&i32(1)) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(46 /* X14 */))) = uint8(i32(1))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(46 /* X14 */))) = uint8(i32(1))
-_9:
- if _rc == i32(0) {
- goto _10
+ if _rc != i32(0) {
+ _walIndexClose(tls, _pRet, i32(0))
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pRet.X2))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pRet))
+ goto _11
}
-
- _walIndexClose(tls, _pRet, i32(0))
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pRet.X2))
- Xsqlite3_free(tls, (unsafe.Pointer)(_pRet))
- goto _11
-
-_10:
_4_iDC = _sqlite3OsDeviceCharacteristics(tls, _pDbFd)
- if (_4_iDC & i32(1024)) == 0 {
- goto _12
+ if (_4_iDC & i32(1024)) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(48 /* X16 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(48 /* X16 */))) = uint8(i32(0))
-_12:
- if (_4_iDC & i32(4096)) == 0 {
- goto _13
+ if (_4_iDC & i32(4096)) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(49 /* X17 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(49 /* X17 */))) = uint8(i32(0))
-_13:
*_ppWal = _pRet
_11:
return _rc
}
-var _sqlite3WalOpenØ00__func__Ø000 [15]int8 // -
+var _sqlite3WalOpenØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalOpenØ00__func__Ø000[0], str(54332), 15)
+ crt.Xstrncpy(nil, &_sqlite3WalOpenØ00__func__Ø000[0], str(52616), 15)
}
-func _pagerBeginReadTransaction(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:50124:1
- var _rc int32 // sqlite3.c:50125:7
- _ = _rc
- var _changed int32 // sqlite3.c:50126:7
- _ = _changed
+// Begin a read transaction on the WAL.
+//
+// This routine used to be called "pagerOpenSnapshot()" because it essentially
+// makes a snapshot of the database at the current point in time and preserves
+// that snapshot for use by the reader in spite of concurrently changes by
+// other writers or checkpointers.
+func _pagerBeginReadTransaction(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc, _changed int32
_changed = i32(0)
func() {
if (*XWal)(_pPager.X60) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50128), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerBeginReadTransactionØ00__func__Ø000))), unsafe.Pointer(str(14936)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50128), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerBeginReadTransactionØ00__func__Ø000))), unsafe.Pointer(str(15826)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) != i32(0) && int32(_pPager.X14) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50129), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerBeginReadTransactionØ00__func__Ø000))), unsafe.Pointer(str(53172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50129), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerBeginReadTransactionØ00__func__Ø000))), unsafe.Pointer(str(51497)))
crt.X__builtin_abort(tls)
}
}()
@@ -43011,30 +38919,34 @@ func _pagerBeginReadTransaction(tls *crt.TLS, _pPager *XPager) (r0 int32) { // s
if _rc == i32(0) && _changed == 0 {
goto _6
}
-
_pager_reset(tls, _pPager)
- if (_pPager.X20) == 0 {
- goto _7
+ if (_pPager.X20) != 0 {
+ _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(i32(0)), nil)
}
-
- _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pPager.X31), int64(i32(0)), nil)
-_7:
_6:
- r0 = _rc
- return
+ return _rc
}
-var _pagerBeginReadTransactionØ00__func__Ø000 [26]int8 // -
+var _pagerBeginReadTransactionØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_pagerBeginReadTransactionØ00__func__Ø000[0], str(54348), 26)
+ crt.Xstrncpy(nil, &_pagerBeginReadTransactionØ00__func__Ø000[0], str(52631), 26)
}
-func _sqlite3WalBeginReadTransaction(tls *crt.TLS, _pWal *XWal, _pChanged *int32) (r0 int32) { // sqlite3.c:56950:1
- var _rc int32 // sqlite3.c:56951:7
- _ = _rc
- var _cnt int32 // sqlite3.c:56952:7
- _ = _cnt
+// Begin a read transaction on the database.
+//
+// This routine used to be called sqlite3OpenSnapshot() and with good reason:
+// it takes a snapshot of the state of the WAL and wal-index for the current
+// instant in time. The current thread will continue to use this snapshot.
+// Other threads might append new content to the WAL and wal-index but
+// that extra content is ignored by the current thread.
+//
+// If the database contents have changes since the previous read
+// transaction, then *pChanged is set to 1 before returning. The
+// Pager layer will use this to know that is cache is stale and
+// needs to be flushed.
+func _sqlite3WalBeginReadTransaction(tls *crt.TLS, _pWal *XWal, _pChanged *int32) (r0 int32) {
+ var _rc, _cnt int32
_cnt = i32(0)
_0:
_rc = _walTryBeginRead(tls, _pWal, _pChanged, i32(0), preInc1(&_cnt, 1))
@@ -43042,124 +38954,129 @@ _0:
goto _0
}
return _rc
-}
-func _walTryBeginRead(tls *crt.TLS, _pWal *XWal, _pChanged *int32, _useWal int32, _cnt int32) (r0 int32) { // sqlite3.c:56659:1
- var _pInfo *XWalCkptInfo // sqlite3.c:56660:24
- _ = _pInfo
- var _mxReadMark uint32 // sqlite3.c:56661:7
- _ = _mxReadMark
- var _mxI int32 // sqlite3.c:56662:7
- _ = _mxI
- var _i int32 // sqlite3.c:56663:7
- _ = _i
- var _rc int32 // sqlite3.c:56664:7
- _ = _rc
- var _mxFrame uint32 // sqlite3.c:56665:7
- _ = _mxFrame
- var _1_nDelay int32 // sqlite3.c:56687:9
- _ = _1_nDelay
- var _13_thisMark uint32 // sqlite3.c:56779:9
- _ = _13_thisMark
+ _ = _cnt
+ panic(0)
+}
+
+// Attempt to start a read transaction. This might fail due to a race or
+// other transient condition. When that happens, it returns WAL_RETRY to
+// indicate to the caller that it is safe to retry immediately.
+//
+// On success return SQLITE_OK. On a permanent failure (such an
+// I/O error or an SQLITE_BUSY because another process is running
+// recovery) return a positive error code.
+//
+// The useWal parameter is true to force the use of the WAL and disable
+// the case where the WAL is bypassed because it has been completely
+// checkpointed. If useWal==0 then this routine calls walIndexReadHdr()
+// to make a copy of the wal-index header into pWal->hdr. If the
+// wal-index header has changed, *pChanged is set to 1 (as an indication
+// to the caller that the local paget cache is obsolete and needs to be
+// flushed.) When useWal==1, the wal-index header is assumed to already
+// be loaded and the pChanged parameter is unused.
+//
+// The caller must set the cnt parameter to the number of prior calls to
+// this routine during the current read attempt that returned WAL_RETRY.
+// This routine will start taking more aggressive measures to clear the
+// race conditions after multiple WAL_RETRY returns, and after an excessive
+// number of errors will ultimately return SQLITE_PROTOCOL. The
+// SQLITE_PROTOCOL return indicates that some other process has gone rogue
+// and is not honoring the locking protocol. There is a vanishingly small
+// chance that SQLITE_PROTOCOL could be returned because of a run of really
+// bad luck when there is lots of contention for the wal-index, but that
+// possibility is so small that it can be safely neglected, we believe.
+//
+// On success, this routine obtains a read lock on
+// WAL_READ_LOCK(pWal->readLock). The pWal->readLock integer is
+// in the range 0 <= pWal->readLock < WAL_NREADER. If pWal->readLock==(-1)
+// that means the Wal does not hold any read lock. The reader must not
+// access any database page that is modified by a WAL frame up to and
+// including frame number aReadMark[pWal->readLock]. The reader will
+// use WAL frames up to and including pWal->hdr.mxFrame if pWal->readLock>0
+// Or if pWal->readLock==0, then the reader will ignore the WAL
+// completely and get all content directly from the database file.
+// If the useWal parameter is 1 then the WAL will never be ignored and
+// this routine will always set pWal->readLock>0 on success.
+// When the read transaction is completed, the caller must release the
+// lock on WAL_READ_LOCK(pWal->readLock) and set pWal->readLock to -1.
+//
+// This routine uses the nBackfill and aReadMark[] fields of the header
+// to select a particular WAL_READ_LOCK() that strives to let the
+// checkpoint process do as much work as possible. This routine might
+// update values of the aReadMark[] array in the header, but if it does
+// so it takes care to hold an exclusive lock on the corresponding
+// WAL_READ_LOCK() while changing values.
+func _walTryBeginRead(tls *crt.TLS, _pWal *XWal, _pChanged *int32, _useWal int32, _cnt int32) (r0 int32) {
+ var _mxI, _i, _rc, _1_nDelay int32
+ var _mxReadMark, _mxFrame, _13_thisMark uint32
+ var _pInfo *XWalCkptInfo
_rc = i32(0)
func() {
if int32(_pWal.X9) >= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56667), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(54376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56667), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(52657)))
crt.X__builtin_abort(tls)
}
}()
if _cnt <= i32(5) {
goto _2
}
-
_1_nDelay = i32(1)
- if _cnt <= i32(100) {
- goto _3
+ if _cnt > i32(100) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(116 /* X23 */))) = uint8(i32(1))
+ return i32(15)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(116 /* X23 */))) = uint8(i32(1))
- return i32(15)
-
-_3:
- if _cnt < i32(10) {
- goto _4
+ if _cnt >= i32(10) {
+ _1_nDelay = ((_cnt - i32(9)) * (_cnt - i32(9))) * i32(39)
}
-
- _1_nDelay = ((_cnt - i32(9)) * (_cnt - i32(9))) * i32(39)
-_4:
_sqlite3OsSleep(tls, (*Xsqlite3_vfs)(_pWal.X0), _1_nDelay)
_2:
if _useWal != 0 {
goto _5
}
-
_rc = _walIndexReadHdr(tls, _pWal, _pChanged)
if _rc != i32(5) {
goto _6
}
-
- if (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0))))) != nil {
- goto _7
+ if (*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal.X7)) + 4*uintptr(i32(0))))) == nil {
+ _rc = i32(-1)
+ goto _8
}
-
- _rc = i32(-1)
- goto _8
-
-_7:
- if i32(0) != store1(&_rc, _walLockShared(tls, _pWal, i32(2))) {
- goto _9
+ if i32(0) == store1(&_rc, _walLockShared(tls, _pWal, i32(2))) {
+ _walUnlockShared(tls, _pWal, i32(2))
+ _rc = i32(-1)
+ goto _10
}
-
- _walUnlockShared(tls, _pWal, i32(2))
- _rc = i32(-1)
- goto _10
-
-_9:
- if _rc != i32(5) {
- goto _11
+ if _rc == i32(5) {
+ _rc = i32(261)
}
-
- _rc = i32(261)
-_11:
_10:
_8:
_6:
- if _rc == i32(0) {
- goto _12
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_12:
_5:
_pInfo = _walCkptInfo(tls, _pWal)
if _useWal != 0 || (_pInfo.X0) != ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X6) {
goto _14
}
-
_rc = _walLockShared(tls, _pWal, i32(3))
_walShmBarrier(tls, _pWal)
if _rc != i32(0) {
goto _15
}
-
- if crt.Xmemcmp(tls, (unsafe.Pointer)(_walIndexHdr(tls, _pWal)), (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), u32(48)) == 0 {
- goto _16
+ if crt.Xmemcmp(tls, (unsafe.Pointer)(_walIndexHdr(tls, _pWal)), (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), u32(48)) != 0 {
+ _walUnlockShared(tls, _pWal, i32(3))
+ return i32(-1)
}
-
- _walUnlockShared(tls, _pWal, i32(3))
- return i32(-1)
-
-_16:
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(40 /* X9 */))) = int16(i32(0))
return i32(0)
_15:
- if _rc == i32(5) {
- goto _18
+ if _rc != i32(5) {
+ return _rc
}
- return _rc
-
-_18:
_14:
_mxReadMark = uint32(i32(0))
_mxI = i32(0)
@@ -43169,100 +39086,74 @@ _19:
if _i >= i32(5) {
goto _22
}
-
_13_thisMark = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_i)))
- if _mxReadMark > _13_thisMark || _13_thisMark > _mxFrame {
- goto _24
+ if (_mxReadMark <= _13_thisMark) && (_13_thisMark <= _mxFrame) {
+ func() {
+ if _13_thisMark == u32(4294967295) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56781), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(52674)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _mxReadMark = _13_thisMark
+ _mxI = _i
}
-
- func() {
- if _13_thisMark == u32(4294967295) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56781), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(54396)))
- crt.X__builtin_abort(tls)
- }
- }()
- _mxReadMark = _13_thisMark
- _mxI = _i
-_24:
_i += 1
goto _19
-
_22:
if (int32(_pWal.X14)&i32(2)) != i32(0) || _mxReadMark >= _mxFrame && _mxI != i32(0) {
goto _29
}
-
_i = i32(1)
_30:
if _i >= i32(5) {
goto _33
}
-
_rc = _walLockExclusive(tls, _pWal, i32(3)+_i, i32(1))
- if _rc != i32(0) {
- goto _34
+ if _rc == i32(0) {
+ _mxReadMark = store5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */)))))+4*uintptr(_i))), _mxFrame)
+ _mxI = _i
+ _walUnlockExclusive(tls, _pWal, i32(3)+_i, i32(1))
+ goto _33
}
-
- _mxReadMark = store5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */)))))+4*uintptr(_i))), _mxFrame)
- _mxI = _i
- _walUnlockExclusive(tls, _pWal, i32(3)+_i, i32(1))
- goto _33
-
-_34:
- if _rc == i32(5) {
- goto _36
+ if _rc != i32(5) {
+ return _rc
}
- return _rc
-
-_36:
_i += 1
goto _30
-
_33:
_29:
- if _mxI != i32(0) {
- goto _37
+ if _mxI == i32(0) {
+ func() {
+ if _rc != i32(5) && (int32(_pWal.X14)&i32(2)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56802), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(52702)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return func() int32 {
+ if _rc == i32(5) {
+ return i32(-1)
+ }
+ return i32(520)
+ }()
}
-
- func() {
- if _rc != i32(5) && (int32(_pWal.X14)&i32(2)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56802), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(54424)))
- crt.X__builtin_abort(tls)
- }
- }()
- return func() int32 {
- if _rc == i32(5) {
- return i32(-1)
- }
- return i32(520)
- }()
-
-_37:
_rc = _walLockShared(tls, _pWal, i32(3)+_mxI)
- if _rc == 0 {
- goto _43
+ if _rc != 0 {
+ return func() int32 {
+ if _rc == i32(5) {
+ return i32(-1)
+ }
+ return _rc
+ }()
}
- return func() int32 {
- if _rc == i32(5) {
- return i32(-1)
- }
- return _rc
- }()
-
-_43:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(100 /* X19 */))) = (_pInfo.X0) + uint32(i32(1))
_walShmBarrier(tls, _pWal)
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_mxI)))) == _mxReadMark && crt.Xmemcmp(tls, (unsafe.Pointer)(_walIndexHdr(tls, _pWal)), (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), u32(48)) == 0 {
- goto _47
+ if ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(4 /* X1 */))))) + 4*uintptr(_mxI)))) != _mxReadMark) || crt.Xmemcmp(tls, (unsafe.Pointer)(_walIndexHdr(tls, _pWal)), (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), u32(48)) != 0 {
+ _walUnlockShared(tls, _pWal, i32(3)+_mxI)
+ return i32(-1)
}
-
- _walUnlockShared(tls, _pWal, i32(3)+_mxI)
- return i32(-1)
-
-_47:
func() {
if _mxReadMark > ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(56852), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(54480)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(56852), unsafe.Pointer((*int8)(unsafe.Pointer(&_walTryBeginReadØ00__func__Ø000))), unsafe.Pointer(str(52758)))
crt.X__builtin_abort(tls)
}
}()
@@ -43270,31 +39161,42 @@ _47:
return _rc
}
-var _walTryBeginReadØ00__func__Ø000 [16]int8 // -
+var _walTryBeginReadØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_walTryBeginReadØ00__func__Ø000[0], str(54512), 16)
+ crt.Xstrncpy(nil, &_walTryBeginReadØ00__func__Ø000[0], str(52788), 16)
}
-var _zMagicHeader [16]int8 // sqlite3.c:59056:19
+var _zMagicHeader [16]int8
func init() {
- crt.Xstrncpy(nil, &_zMagicHeader[0], str(54528), 16)
+ crt.Xstrncpy(nil, &_zMagicHeader[0], str(52804), 16)
}
-func _sqlite3PagerBegin(tls *crt.TLS, _pPager *XPager, _exFlag int32, _subjInMemory int32) (r0 int32) { // sqlite3.c:52675:1
- var _rc int32 // sqlite3.c:52676:7
- _ = _rc
+// Begin a write-transaction on the specified pager object. If a
+// write-transaction has already been opened, this function is a no-op.
+//
+// If the exFlag argument is false, then acquire at least a RESERVED
+// lock on the database file. If exFlag is true, then acquire at least
+// an EXCLUSIVE lock. If such a lock is already held, no locking
+// functions need be called.
+//
+// If the subjInMemory argument is non-zero, then any sub-journal opened
+// within this transaction will be opened as an in-memory file. This
+// has no effect if the sub-journal is already opened (as it may be when
+// running in exclusive mode) or if the transaction does not require a
+// sub-journal. If the subjInMemory argument is zero, then any required
+// sub-journal is implemented in-memory if pPager is an in-memory database,
+// or using a temporary file otherwise.
+func _sqlite3PagerBegin(tls *crt.TLS, _pPager *XPager, _exFlag int32, _subjInMemory int32) (r0 int32) {
+ var _rc int32
_rc = i32(0)
- if (_pPager.X26) == 0 {
- goto _0
+ if (_pPager.X26) != 0 {
+ return _pPager.X26
}
- return _pPager.X26
-
-_0:
func() {
if int32(_pPager.X14) < i32(1) || int32(_pPager.X14) >= i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(54544)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(52820)))
crt.X__builtin_abort(tls)
}
}()
@@ -43304,74 +39206,61 @@ _0:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _6
}
-
func() {
if (*XBitvec)(_pPager.X30) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(12464)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(13488)))
crt.X__builtin_abort(tls)
}
}()
if (*XWal)(_pPager.X60) == nil {
goto _9
}
-
if (_pPager.X1) == 0 || _sqlite3WalExclusiveMode(tls, (*XWal)(_pPager.X60), i32(-1)) == 0 {
goto _11
}
-
_rc = _pagerLockDb(tls, _pPager, i32(4))
- if _rc == i32(0) {
- goto _12
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_12:
_sqlite3WalExclusiveMode(tls, (*XWal)(_pPager.X60), i32(1))
_11:
_rc = _sqlite3WalBeginWriteTransaction(tls, (*XWal)(_pPager.X60))
goto _13
-
_9:
_rc = _pagerLockDb(tls, _pPager, i32(2))
- if _rc != i32(0) || _exFlag == 0 {
- goto _15
+ if (_rc == i32(0)) && _exFlag != 0 {
+ _rc = _pager_wait_on_lock(tls, _pPager, i32(4))
}
-
- _rc = _pager_wait_on_lock(tls, _pPager, i32(4))
-_15:
_13:
- if _rc != i32(0) {
- goto _16
+ if _rc == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(2))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(40 /* X25 */))) = _pPager.X22
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _pPager.X22
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(32 /* X23 */))) = _pPager.X22
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(2))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(40 /* X25 */))) = _pPager.X22
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _pPager.X22
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(32 /* X23 */))) = _pPager.X22
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = int64(i32(0))
-_16:
func() {
if _rc != i32(0) && int32(_pPager.X14) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52732), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(54604)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52732), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(52879)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _rc == i32(0) && int32(_pPager.X14) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52733), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(54652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52733), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(52925)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(52734), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(52734), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerBeginØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
@@ -43379,96 +39268,108 @@ _6:
return _rc
}
-var _sqlite3PagerBeginØ00__func__Ø000 [18]int8 // -
+var _sqlite3PagerBeginØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerBeginØ00__func__Ø000[0], str(54708), 18)
+ crt.Xstrncpy(nil, &_sqlite3PagerBeginØ00__func__Ø000[0], str(52978), 18)
}
-func _sqlite3WalBeginWriteTransaction(tls *crt.TLS, _pWal *XWal) (r0 int32) { // sqlite3.c:57199:1
- var _rc int32 // sqlite3.c:57200:7
- _ = _rc
+// This function starts a write transaction on the WAL.
+//
+// A read transaction must have already been started by a prior call
+// to sqlite3WalBeginReadTransaction().
+//
+// If another thread or process has written into the database since
+// the read transaction was started, then it is not possible for this
+// thread to write as doing so would cause a fork. So this routine
+// returns SQLITE_BUSY in that case and no write transaction is started.
+//
+// There can only be a single writer active at a time.
+func _sqlite3WalBeginWriteTransaction(tls *crt.TLS, _pWal *XWal) (r0 int32) {
+ var _rc int32
func() {
if int32(_pWal.X9) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57204), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalBeginWriteTransactionØ00__func__Ø000))), unsafe.Pointer(str(18664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57204), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalBeginWriteTransactionØ00__func__Ø000))), unsafe.Pointer(str(19227)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pWal.X12) != i32(0) || (_pWal.X20) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57205), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalBeginWriteTransactionØ00__func__Ø000))), unsafe.Pointer(str(54728)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57205), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalBeginWriteTransactionØ00__func__Ø000))), unsafe.Pointer(str(52996)))
crt.X__builtin_abort(tls)
}
}()
- if (_pWal.X14) == 0 {
- goto _5
+ if (_pWal.X14) != 0 {
+ return i32(8)
}
- return i32(8)
-
-_5:
_rc = _walLockExclusive(tls, _pWal, i32(0), i32(1))
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_6:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(1))
- if crt.Xmemcmp(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(_walIndexHdr(tls, _pWal)), u32(48)) == i32(0) {
- goto _7
+ if crt.Xmemcmp(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(_walIndexHdr(tls, _pWal)), u32(48)) != i32(0) {
+ _walUnlockExclusive(tls, _pWal, i32(0), i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(0))
+ _rc = i32(517)
}
-
- _walUnlockExclusive(tls, _pWal, i32(0), i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(44 /* X12 */))) = uint8(i32(0))
- _rc = i32(517)
-_7:
return _rc
}
-var _sqlite3WalBeginWriteTransactionØ00__func__Ø000 [32]int8 // -
+var _sqlite3WalBeginWriteTransactionØ00__func__Ø000 [32]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalBeginWriteTransactionØ00__func__Ø000[0], str(54768), 32)
+ crt.Xstrncpy(nil, &_sqlite3WalBeginWriteTransactionØ00__func__Ø000[0], str(53036), 32)
}
-func _sqlite3TempInMemory(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:142681:1
+// This function returns true if main-memory should be used instead of
+// a temporary file for transient pager files and statement journals.
+// The value returned depends on the value of db->temp_store (runtime
+// parameter) and the compile time value of SQLITE_TEMP_STORE. The
+// following table describes the relationship between these two values
+// and this functions return value.
+//
+// SQLITE_TEMP_STORE db->temp_store Location of temporary database
+// ----------------- -------------- ------------------------------
+// 0 any file (return 0)
+// 1 1 file (return 0)
+// 1 2 memory (return 1)
+// 1 0 file (return 0)
+// 2 1 file (return 0)
+// 2 2 memory (return 1)
+// 2 0 memory (return 1)
+// 3 any memory (return 1)
+func _sqlite3TempInMemory(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
return bool2int(int32(_db.X16) == i32(2))
}
-func _newDatabase(tls *crt.TLS, _pBt *XBtShared) (r0 int32) { // sqlite3.c:62154:1
- var _pP1 *XMemPage // sqlite3.c:62155:11
- _ = _pP1
- var _data *uint8 // sqlite3.c:62156:17
- _ = _data
- var _rc int32 // sqlite3.c:62157:7
- _ = _rc
+// If pBt points to an empty file then convert that empty file
+// into a new empty database by initializing the first page of
+// the database.
+func _newDatabase(tls *crt.TLS, _pBt *XBtShared) (r0 int32) {
+ var _rc int32
+ var _data *uint8
+ var _pP1 *XMemPage
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62159), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62159), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
- if (_pBt.X18) <= uint32(i32(0)) {
- goto _2
+ if (_pBt.X18) > uint32(i32(0)) {
+ return i32(0)
}
- return i32(0)
-
-_2:
_pP1 = (*XMemPage)(_pBt.X3)
func() {
if _pP1 == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62164), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(54800)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62164), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(53068)))
crt.X__builtin_abort(tls)
}
}()
_data = _pP1.X19
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pP1.X23))
- if _rc == 0 {
- goto _5
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_5:
crt.Xmemcpy(tls, (unsafe.Pointer)(_data), (unsafe.Pointer)(&_zMagicHeader), u32(16))
i32(0)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(i32(16)))) = uint8(((_pBt.X15) >> uint(i32(8))) & uint32(i32(255)))
@@ -43477,7 +39378,7 @@ _5:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(i32(19)))) = uint8(i32(1))
func() {
if (_pBt.X16) > (_pBt.X15) || ((_pBt.X16)+uint32(i32(255))) < (_pBt.X15) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62174), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(54808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62174), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(53075)))
crt.X__builtin_abort(tls)
}
}()
@@ -43490,17 +39391,17 @@ _5:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
*p = uint16(int32(*p) | i32(2))
- sink12 = *p
+ sink14 = *p
}
func() {
if int32(_pBt.X5) != i32(1) && int32(_pBt.X5) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62183), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(54880)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62183), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(53144)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pBt.X6) != i32(1) && int32(_pBt.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62184), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(54924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62184), unsafe.Pointer((*int8)(unsafe.Pointer(&_newDatabaseØ00__func__Ø000))), unsafe.Pointer(str(53185)))
crt.X__builtin_abort(tls)
}
}()
@@ -43511,60 +39412,55 @@ _5:
return i32(0)
}
-var _newDatabaseØ00__func__Ø000 [12]int8 // -
+var _newDatabaseØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_newDatabaseØ00__func__Ø000[0], str(54968), 12)
+ crt.Xstrncpy(nil, &_newDatabaseØ00__func__Ø000[0], str(53226), 12)
}
-func _zeroPage(tls *crt.TLS, _pPage *XMemPage, _flags int32) { // sqlite3.c:60953:1
- var _data *uint8 // sqlite3.c:60954:17
- _ = _data
- var _pBt *XBtShared // sqlite3.c:60955:12
- _ = _pBt
- var _hdr uint8 // sqlite3.c:60956:6
- _ = _hdr
- var _first uint16 // sqlite3.c:60957:7
- _ = _first
+// Set up a raw page so that it looks like a database page holding
+// no entries.
+func _zeroPage(tls *crt.TLS, _pPage *XMemPage, _flags int32) {
+ var _first uint16
+ var _hdr uint8
+ var _data *uint8
+ var _pBt *XBtShared
_data = _pPage.X19
_pBt = (*XBtShared)(_pPage.X18)
_hdr = _pPage.X6
func() {
if _sqlite3PagerPagenumber(tls, (*XPgHdr)(_pPage.X23)) != (_pPage.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60959), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(54980)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60959), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(53238)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerGetExtra(tls, (*XPgHdr)(_pPage.X23)) != (unsafe.Pointer)(_pPage) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60960), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(19840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60960), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(20336)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerGetData(tls, (*XPgHdr)(_pPage.X23)) != (unsafe.Pointer)(_data) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60961), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(55032)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60961), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(53290)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60962), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60962), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60963), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60963), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pBt.X10) & i32(4)) == 0 {
- goto _10
+ if (int32(_pBt.X10) & i32(4)) != 0 {
+ crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr)))), i32(0), (_pBt.X16)-uint32(_hdr))
}
-
- crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr)))), i32(0), (_pBt.X16)-uint32(_hdr))
-_10:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr))) = uint8(int8(_flags))
_first = uint16(int32(_hdr) + func() int32 {
if (_flags & i32(8)) == i32(0) {
@@ -43587,7 +39483,7 @@ _10:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(12 /* X9 */))) = uint8(i32(0))
func() {
if (_pBt.X15) < uint32(i32(512)) || (_pBt.X15) > uint32(i32(65536)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60979), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(55116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60979), unsafe.Pointer((*int8)(unsafe.Pointer(&_zeroPageØ00__func__Ø000))), unsafe.Pointer(str(53374)))
crt.X__builtin_abort(tls)
}
}()
@@ -43596,23 +39492,33 @@ _10:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = uint8(i32(1))
}
-func _sqlite3PagerPagenumber(tls *crt.TLS, _pPg *XPgHdr) (r0 uint32) { // sqlite3.c:51070:1
+// Return the page number for page pPg.
+func _sqlite3PagerPagenumber(tls *crt.TLS, _pPg *XPgHdr) (r0 uint32) {
return _pPg.X5
}
-var _zeroPageØ00__func__Ø000 [9]int8 // -
+var _zeroPageØ00__func__Ø000 [9]int8
func init() {
- crt.Xstrncpy(nil, &_zeroPageØ00__func__Ø000[0], str(55160), 9)
+ crt.Xstrncpy(nil, &_zeroPageØ00__func__Ø000[0], str(53417), 9)
}
-func _sqlite3PagerIswriteable(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:53011:1
+func _sqlite3PagerIswriteable(tls *crt.TLS, _pPg *XPgHdr) (r0 int32) {
return int32(_pPg.X6) & i32(4)
}
-func _decodeFlags(tls *crt.TLS, _pPage *XMemPage, _flagByte int32) (r0 int32) { // sqlite3.c:60759:1
- var _pBt *XBtShared // sqlite3.c:60760:12
- _ = _pBt
+// Decode the flags byte (the first byte of the header) for a page
+// and initialize fields of the MemPage structure accordingly.
+//
+// Only the following combinations are supported. Anything different
+// indicates a corrupt database files:
+//
+// PTF_ZERODATA
+// PTF_ZERODATA | PTF_LEAF
+// PTF_LEAFDATA | PTF_INTKEY
+// PTF_LEAFDATA | PTF_INTKEY | PTF_LEAF
+func _decodeFlags(tls *crt.TLS, _pPage *XMemPage, _flagByte int32) (r0 int32) {
+ var _pBt *XBtShared
func() {
if int32(_pPage.X6) != func() int32 {
if (_pPage.X4) == uint32(i32(1)) {
@@ -43620,13 +39526,13 @@ func _decodeFlags(tls *crt.TLS, _pPage *XMemPage, _flagByte int32) (r0 int32) {
}
return i32(0)
}() {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60762), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeFlagsØ00__func__Ø000))), unsafe.Pointer(str(55172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60762), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeFlagsØ00__func__Ø000))), unsafe.Pointer(str(53426)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60763), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeFlagsØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60763), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeFlagsØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
@@ -43643,19 +39549,14 @@ func _decodeFlags(tls *crt.TLS, _pPage *XMemPage, _flagByte int32) (r0 int32) {
if _flagByte != i32(5) {
goto _6
}
-
i32(0)
i32(0)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(2 /* X2 */))) = uint8(i32(1))
- if (_pPage.X5) == 0 {
- goto _7
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(3 /* X3 */))) = uint8(i32(1))
- *(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(80 /* X25 */))))) = _btreeParseCellPtr
- goto _8
-
-_7:
+ if (_pPage.X5) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(3 /* X3 */))) = uint8(i32(1))
+ *(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(80 /* X25 */))))) = _btreeParseCellPtr
+ goto _8
+ }
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(3 /* X3 */))) = uint8(i32(0))
*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *uint8) uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(76 /* X24 */))))) = _cellSizePtrNoPayload
*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(80 /* X25 */))))) = _btreeParseCellPtrNoPayload
@@ -43663,22 +39564,17 @@ _8:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(14 /* X10 */))) = _pBt.X13
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(16 /* X11 */))) = _pBt.X14
goto _9
-
_6:
- if _flagByte != i32(2) {
- goto _10
+ if _flagByte == i32(2) {
+ i32(0)
+ i32(0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(2 /* X2 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(3 /* X3 */))) = uint8(i32(0))
+ *(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(80 /* X25 */))))) = _btreeParseCellPtrIndex
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(14 /* X10 */))) = _pBt.X11
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(16 /* X11 */))) = _pBt.X12
+ goto _11
}
-
- i32(0)
- i32(0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(2 /* X2 */))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(3 /* X3 */))) = uint8(i32(0))
- *(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(80 /* X25 */))))) = _btreeParseCellPtrIndex
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(14 /* X10 */))) = _pBt.X11
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(16 /* X11 */))) = _pBt.X12
- goto _11
-
-_10:
return _sqlite3CorruptError(tls, i32(60802))
_11:
@@ -43687,23 +39583,27 @@ _9:
return i32(0)
}
-var _decodeFlagsØ00__func__Ø000 [12]int8 // -
+var _decodeFlagsØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_decodeFlagsØ00__func__Ø000[0], str(55220), 12)
+ crt.Xstrncpy(nil, &_decodeFlagsØ00__func__Ø000[0], str(53471), 12)
}
-func _cellSizePtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8) (r0 uint16) { // sqlite3.c:60256:1
- var _pIter *uint8 // sqlite3.c:60257:6
- _ = _pIter
- var _pEnd *uint8 // sqlite3.c:60258:6
- _ = _pEnd
- var _nSize uint32 // sqlite3.c:60259:7
- _ = _nSize
- var _debuginfo XCellInfo // sqlite3.c:60266:12
- _ = _debuginfo
- var _5_minLocal int32 // sqlite3.c:60292:9
- _ = _5_minLocal
+// The following routines are implementations of the MemPage.xCellSize
+// method.
+//
+// Compute the total number of bytes that a Cell needs in the cell
+// data area of the btree-page. The return number includes the cell
+// data header and the local payload, but not any overflow page or
+// the space used by the cell pointer.
+//
+// cellSizePtrNoPayload() => table internal nodes
+// cellSizePtr() => all index nodes & table leaf nodes
+func _cellSizePtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8) (r0 uint16) {
+ var _5_minLocal int32
+ var _nSize uint32
+ var _pIter, _pEnd *uint8
+ var _debuginfo XCellInfo
_pIter = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCell)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pPage.X7)))))))
(*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
@@ -43712,7 +39612,6 @@ func _cellSizePtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8) (r0 uint16) { /
if _nSize < uint32(i32(128)) {
goto _0
}
-
_pEnd = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIter)) + 1*uintptr(i32(8))))
{
p := &_nSize
@@ -43720,53 +39619,39 @@ func _cellSizePtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8) (r0 uint16) { /
sink5 = *p
}
_1:
- _nSize = (_nSize << uint(i32(7))) | uint32(int32(*preInc11(&_pIter, 1))&i32(127))
+ _nSize = (_nSize << uint(i32(7))) | uint32(int32(*preInc13(&_pIter, 1))&i32(127))
if (int32(*_pIter) >= i32(128)) && (uintptr(unsafe.Pointer(_pIter)) < uintptr(unsafe.Pointer(_pEnd))) {
goto _1
}
-
_0:
*(*uintptr)(unsafe.Pointer(&_pIter)) += uintptr(1)
if (_pPage.X2) == 0 {
goto _3
}
-
_pEnd = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIter)) + 1*uintptr(i32(9))))
_4:
- if (int32(*postInc11(&_pIter, 1))&i32(128)) == 0 || uintptr(unsafe.Pointer(_pIter)) >= uintptr(unsafe.Pointer(_pEnd)) {
- goto _5
+ if (int32(*postInc13(&_pIter, 1))&i32(128)) != 0 && (uintptr(unsafe.Pointer(_pIter)) < uintptr(unsafe.Pointer(_pEnd))) {
+ goto _4
}
-
- goto _4
-
-_5:
_3:
if _nSize > uint32(_pPage.X10) {
goto _7
}
-
{
p := &_nSize
*p = (*p) + uint32(int32((uintptr(unsafe.Pointer(_pIter))-uintptr(unsafe.Pointer(_pCell)))/1))
sink5 = *p
}
- if _nSize >= uint32(i32(4)) {
- goto _8
+ if _nSize < uint32(i32(4)) {
+ _nSize = uint32(i32(4))
}
-
- _nSize = uint32(i32(4))
-_8:
goto _9
-
_7:
_5_minLocal = int32(_pPage.X11)
_nSize = uint32(_5_minLocal) + ((_nSize - uint32(_5_minLocal)) % (((*XBtShared)(_pPage.X18).X16) - uint32(i32(4))))
- if _nSize <= uint32(_pPage.X10) {
- goto _10
+ if _nSize > uint32(_pPage.X10) {
+ _nSize = uint32(_5_minLocal)
}
-
- _nSize = uint32(_5_minLocal)
-_10:
{
p := &_nSize
*p = (*p) + uint32(i32(4)+int32(uint16(int32((uintptr(unsafe.Pointer(_pIter))-uintptr(unsafe.Pointer(_pCell)))/1))))
@@ -43775,51 +39660,47 @@ _10:
_9:
func() {
if _nSize != uint32(_debuginfo.X4) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60301), unsafe.Pointer((*int8)(unsafe.Pointer(&_cellSizePtrØ00__func__Ø000))), unsafe.Pointer(str(55232)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60301), unsafe.Pointer((*int8)(unsafe.Pointer(&_cellSizePtrØ00__func__Ø000))), unsafe.Pointer(str(53483)))
crt.X__builtin_abort(tls)
}
}()
return uint16(_nSize)
+
+ _ = _debuginfo
+ panic(0)
}
-var _cellSizePtrØ00__func__Ø000 [12]int8 // -
+var _cellSizePtrØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_cellSizePtrØ00__func__Ø000[0], str(55272), 12)
+ crt.Xstrncpy(nil, &_cellSizePtrØ00__func__Ø000[0], str(53520), 12)
}
-func _btreeParseCellPtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) { // sqlite3.c:60131:1
- var _pIter *uint8 // sqlite3.c:60136:6
- _ = _pIter
- var _nPayload uint32 // sqlite3.c:60137:7
- _ = _nPayload
- var _iKey uint64 // sqlite3.c:60138:7
- _ = _iKey
- var _1_pEnd *uint8 // sqlite3.c:60154:8
- _ = _1_pEnd
- var _3_pEnd *uint8 // sqlite3.c:60170:8
- _ = _3_pEnd
+func _btreeParseCellPtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) {
+ var _nPayload uint32
+ var _iKey uint64
+ var _pIter, _1_pEnd, _3_pEnd *uint8
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60140), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60140), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X5) != i32(0) && int32(_pPage.X5) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60141), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(55284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60141), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(53532)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPage.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60142), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(55320)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60142), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(53565)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60143), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(55340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60143), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrØ00__func__Ø000))), unsafe.Pointer(str(53583)))
crt.X__builtin_abort(tls)
}
}()
@@ -43828,7 +39709,6 @@ func _btreeParseCellPtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *X
if _nPayload < uint32(i32(128)) {
goto _9
}
-
_1_pEnd = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIter)) + 1*uintptr(i32(8))))
{
p := &_nPayload
@@ -43836,43 +39716,32 @@ func _btreeParseCellPtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *X
sink5 = *p
}
_10:
- _nPayload = (_nPayload << uint(i32(7))) | uint32(int32(*preInc11(&_pIter, 1))&i32(127))
+ _nPayload = (_nPayload << uint(i32(7))) | uint32(int32(*preInc13(&_pIter, 1))&i32(127))
if (int32(*_pIter) >= i32(128)) && (uintptr(unsafe.Pointer(_pIter)) < uintptr(unsafe.Pointer(_1_pEnd))) {
goto _10
}
-
_9:
*(*uintptr)(unsafe.Pointer(&_pIter)) += uintptr(1)
_iKey = uint64(*_pIter)
if _iKey < uint64(i32(128)) {
goto _12
}
-
_3_pEnd = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIter)) + 1*uintptr(i32(7))))
{
p := &_iKey
*p = (*p) & uint64(i32(127))
- sink15 = *p
+ sink17 = *p
}
_13:
- _iKey = (_iKey << uint(i32(7))) | uint64(int32(*preInc11(&_pIter, 1))&i32(127))
- if int32(*_pIter) >= i32(128) {
- goto _15
+ _iKey = (_iKey << uint(i32(7))) | uint64(int32(*preInc13(&_pIter, 1))&i32(127))
+ if int32(*_pIter) < i32(128) {
+ goto _14
}
-
- goto _14
-
-_15:
- if uintptr(unsafe.Pointer(_pIter)) < uintptr(unsafe.Pointer(_3_pEnd)) {
- goto _16
+ if uintptr(unsafe.Pointer(_pIter)) >= uintptr(unsafe.Pointer(_3_pEnd)) {
+ _iKey = (_iKey << uint(i32(8))) | uint64(*preInc13(&_pIter, 1))
+ goto _14
}
-
- _iKey = (_iKey << uint(i32(8))) | uint64(*preInc11(&_pIter, 1))
- goto _14
-
-_16:
goto _13
-
_14:
_12:
*(*uintptr)(unsafe.Pointer(&_pIter)) += uintptr(1)
@@ -43882,108 +39751,105 @@ _12:
if _nPayload > uint32(_pPage.X10) {
goto _17
}
-
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(18 /* X4 */))) = uint16(_nPayload + uint32(uint16(int32((uintptr(unsafe.Pointer(_pIter))-uintptr(unsafe.Pointer(_pCell)))/1))))
- if int32(_pInfo.X4) >= i32(4) {
- goto _18
+ if int32(_pInfo.X4) < i32(4) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(18 /* X4 */))) = uint16(i32(4))
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(18 /* X4 */))) = uint16(i32(4))
-_18:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(16 /* X3 */))) = uint16(_nPayload)
goto _19
-
_17:
_btreeParseCellAdjustSizeForOverflow(tls, _pPage, _pCell, _pInfo)
_19:
}
-var _btreeParseCellPtrØ00__func__Ø000 [18]int8 // -
+var _btreeParseCellPtrØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_btreeParseCellPtrØ00__func__Ø000[0], str(55364), 18)
+ crt.Xstrncpy(nil, &_btreeParseCellPtrØ00__func__Ø000[0], str(53606), 18)
}
-func _btreeParseCellAdjustSizeForOverflow(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) { // sqlite3.c:60069:1
- var _minLocal int32 // sqlite3.c:60083:7
- _ = _minLocal
- var _maxLocal int32 // sqlite3.c:60084:7
- _ = _maxLocal
- var _surplus int32 // sqlite3.c:60085:7
- _ = _surplus
+// This is common tail processing for btreeParseCellPtr() and
+// btreeParseCellPtrIndex() for the case when the cell does not fit entirely
+// on a single B-tree page. Make necessary adjustments to the CellInfo
+// structure.
+func _btreeParseCellAdjustSizeForOverflow(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) {
+ var _minLocal, _maxLocal, _surplus int32
_minLocal = int32(_pPage.X11)
_maxLocal = int32(_pPage.X10)
_surplus = int32(uint32(_minLocal) + (((_pInfo.X2) - uint32(_minLocal)) % (((*XBtShared)(_pPage.X18).X16) - uint32(i32(4)))))
- if _surplus > _maxLocal {
- goto _0
+ if _surplus <= _maxLocal {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(16 /* X3 */))) = uint16(_surplus)
+ goto _1
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(16 /* X3 */))) = uint16(_surplus)
- goto _1
-
-_0:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(16 /* X3 */))) = uint16(_minLocal)
_1:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(18 /* X4 */))) = uint16(int32(uint16(int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo.X1))+1*uintptr(_pInfo.X3)))))-uintptr(unsafe.Pointer(_pCell)))/1))) + i32(4))
}
-func _cellSizePtrNoPayload(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8) (r0 uint16) { // sqlite3.c:60304:1
- var _pIter *uint8 // sqlite3.c:60305:6
- _ = _pIter
- var _pEnd *uint8 // sqlite3.c:60306:6
- _ = _pEnd
- var _debuginfo XCellInfo // sqlite3.c:60313:12
- _ = _debuginfo
+func _cellSizePtrNoPayload(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8) (r0 uint16) {
+ var _pIter, _pEnd *uint8
+ var _debuginfo XCellInfo
_pIter = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCell)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4))))))))
(*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
}{(_pPage.X25)})))(tls, _pPage, _pCell, &_debuginfo)
func() {
if int32(_pPage.X7) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60319), unsafe.Pointer((*int8)(unsafe.Pointer(&_cellSizePtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(55384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60319), unsafe.Pointer((*int8)(unsafe.Pointer(&_cellSizePtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(53624)))
crt.X__builtin_abort(tls)
}
}()
_pEnd = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pIter)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(9))))))))
_2:
- if (int32(*postInc11(&_pIter, 1))&i32(128)) == 0 || uintptr(unsafe.Pointer(_pIter)) >= uintptr(unsafe.Pointer(_pEnd)) {
- goto _3
+ if (int32(*postInc13(&_pIter, 1))&i32(128)) != 0 && (uintptr(unsafe.Pointer(_pIter)) < uintptr(unsafe.Pointer(_pEnd))) {
+ goto _2
}
-
- goto _2
-
-_3:
func() {
if int32(_debuginfo.X4) != int32(uint16(int32((uintptr(unsafe.Pointer(_pIter))-uintptr(unsafe.Pointer(_pCell)))/1))) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60322), unsafe.Pointer((*int8)(unsafe.Pointer(&_cellSizePtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(55408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60322), unsafe.Pointer((*int8)(unsafe.Pointer(&_cellSizePtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(53647)))
crt.X__builtin_abort(tls)
}
}()
return uint16(int32((uintptr(unsafe.Pointer(_pIter)) - uintptr(unsafe.Pointer(_pCell))) / 1))
+
+ _ = _debuginfo
+ panic(0)
}
-var _cellSizePtrNoPayloadØ00__func__Ø000 [21]int8 // -
+var _cellSizePtrNoPayloadØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_cellSizePtrNoPayloadØ00__func__Ø000[0], str(55460), 21)
+ crt.Xstrncpy(nil, &_cellSizePtrNoPayloadØ00__func__Ø000[0], str(53699), 21)
}
-func _btreeParseCellPtrNoPayload(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) { // sqlite3.c:60114:1
+// The following routines are implementations of the MemPage.xParseCell()
+// method.
+//
+// Parse a cell content block and fill in the CellInfo structure.
+//
+// btreeParseCellPtr() => table btree leaf nodes
+// btreeParseCellNoPayload() => table btree internal nodes
+// btreeParseCellPtrIndex() => index btree nodes
+//
+// There is also a wrapper function btreeParseCell() that works for
+// all MemPage types and that references the cell by index rather than
+// by pointer.
+func _btreeParseCellPtrNoPayload(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) {
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60119), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60119), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X5) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60120), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(55484)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60120), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(53720)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X7) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60121), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(55384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60121), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrNoPayloadØ00__func__Ø000))), unsafe.Pointer(str(53624)))
crt.X__builtin_abort(tls)
}
}()
@@ -43993,49 +39859,38 @@ func _btreeParseCellPtrNoPayload(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8,
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(8 /* X1 */))) = nil
}
-var _btreeParseCellPtrNoPayloadØ00__func__Ø000 [27]int8 // -
+var _btreeParseCellPtrNoPayloadØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_btreeParseCellPtrNoPayloadØ00__func__Ø000[0], str(55500), 27)
+ crt.Xstrncpy(nil, &_btreeParseCellPtrNoPayloadØ00__func__Ø000[0], str(53735), 27)
}
-func _sqlite3GetVarint(tls *crt.TLS, _p *uint8, _v *uint64) (r0 uint8) { // sqlite3.c:28491:1
- var _a uint32 // sqlite3.c:28492:7
- _ = _a
- var _b uint32 // sqlite3.c:28492:9
- _ = _b
- var _s uint32 // sqlite3.c:28492:11
- _ = _s
+// Read a 64-bit variable-length integer from memory starting at p[0].
+// Return the number of bytes read. The value is stored in *v.
+func _sqlite3GetVarint(tls *crt.TLS, _p *uint8, _v *uint64) (r0 uint8) {
+ var _a, _b, _s uint32
_a = uint32(*_p)
- if (_a & uint32(i32(128))) != 0 {
- goto _0
+ if (_a & uint32(i32(128))) == 0 {
+ *_v = uint64(_a)
+ return uint8(i32(1))
}
-
- *_v = uint64(_a)
- return uint8(i32(1))
-
-_0:
*(*uintptr)(unsafe.Pointer(&_p)) += uintptr(1)
_b = uint32(*_p)
- if (_b & uint32(i32(128))) != 0 {
- goto _1
- }
-
- {
- p := &_a
- *p = (*p) & uint32(i32(127))
- sink5 = *p
- }
- _a = _a << uint(i32(7))
- {
- p := &_a
- *p = (*p) | _b
- sink5 = *p
+ if (_b & uint32(i32(128))) == 0 {
+ {
+ p := &_a
+ *p = (*p) & uint32(i32(127))
+ sink5 = *p
+ }
+ _a = _a << uint(i32(7))
+ {
+ p := &_a
+ *p = (*p) | _b
+ sink5 = *p
+ }
+ *_v = uint64(_a)
+ return uint8(i32(2))
}
- *_v = uint64(_a)
- return uint8(i32(2))
-
-_1:
i32(0)
i32(0)
*(*uintptr)(unsafe.Pointer(&_p)) += uintptr(1)
@@ -44045,30 +39900,26 @@ _1:
*p = (*p) | uint32(*_p)
sink5 = *p
}
- if (_a & uint32(i32(128))) != 0 {
- goto _2
- }
-
- {
- p := &_a
- *p = (*p) & uint32(i32(2080895))
- sink5 = *p
- }
- {
- p := &_b
- *p = (*p) & uint32(i32(127))
- sink5 = *p
- }
- _b = _b << uint(i32(7))
- {
- p := &_a
- *p = (*p) | _b
- sink5 = *p
+ if (_a & uint32(i32(128))) == 0 {
+ {
+ p := &_a
+ *p = (*p) & uint32(i32(2080895))
+ sink5 = *p
+ }
+ {
+ p := &_b
+ *p = (*p) & uint32(i32(127))
+ sink5 = *p
+ }
+ _b = _b << uint(i32(7))
+ {
+ p := &_a
+ *p = (*p) | _b
+ sink5 = *p
+ }
+ *_v = uint64(_a)
+ return uint8(i32(3))
}
- *_v = uint64(_a)
- return uint8(i32(3))
-
-_2:
{
p := &_a
*p = (*p) & uint32(i32(2080895))
@@ -44081,25 +39932,21 @@ _2:
*p = (*p) | uint32(*_p)
sink5 = *p
}
- if (_b & uint32(i32(128))) != 0 {
- goto _3
- }
-
- {
- p := &_b
- *p = (*p) & uint32(i32(2080895))
- sink5 = *p
- }
- _a = _a << uint(i32(7))
- {
- p := &_a
- *p = (*p) | _b
- sink5 = *p
+ if (_b & uint32(i32(128))) == 0 {
+ {
+ p := &_b
+ *p = (*p) & uint32(i32(2080895))
+ sink5 = *p
+ }
+ _a = _a << uint(i32(7))
+ {
+ p := &_a
+ *p = (*p) | _b
+ sink5 = *p
+ }
+ *_v = uint64(_a)
+ return uint8(i32(4))
}
- *_v = uint64(_a)
- return uint8(i32(4))
-
-_3:
{
p := &_b
*p = (*p) & uint32(i32(2080895))
@@ -44113,21 +39960,17 @@ _3:
*p = (*p) | uint32(*_p)
sink5 = *p
}
- if (_a & uint32(i32(128))) != 0 {
- goto _4
- }
-
- _b = _b << uint(i32(7))
- {
- p := &_a
- *p = (*p) | _b
- sink5 = *p
+ if (_a & uint32(i32(128))) == 0 {
+ _b = _b << uint(i32(7))
+ {
+ p := &_a
+ *p = (*p) | _b
+ sink5 = *p
+ }
+ _s = _s >> uint(i32(18))
+ *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
+ return uint8(i32(5))
}
- _s = _s >> uint(i32(18))
- *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
- return uint8(i32(5))
-
-_4:
_s = _s << uint(i32(7))
{
p := &_s
@@ -44141,26 +39984,22 @@ _4:
*p = (*p) | uint32(*_p)
sink5 = *p
}
- if (_b & uint32(i32(128))) != 0 {
- goto _5
- }
-
- {
- p := &_a
- *p = (*p) & uint32(i32(2080895))
- sink5 = *p
- }
- _a = _a << uint(i32(7))
- {
- p := &_a
- *p = (*p) | _b
- sink5 = *p
+ if (_b & uint32(i32(128))) == 0 {
+ {
+ p := &_a
+ *p = (*p) & uint32(i32(2080895))
+ sink5 = *p
+ }
+ _a = _a << uint(i32(7))
+ {
+ p := &_a
+ *p = (*p) | _b
+ sink5 = *p
+ }
+ _s = _s >> uint(i32(18))
+ *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
+ return uint8(i32(6))
}
- _s = _s >> uint(i32(18))
- *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
- return uint8(i32(6))
-
-_5:
*(*uintptr)(unsafe.Pointer(&_p)) += uintptr(1)
_a = _a << uint(i32(14))
{
@@ -44168,31 +40007,27 @@ _5:
*p = (*p) | uint32(*_p)
sink5 = *p
}
- if (_a & uint32(i32(128))) != 0 {
- goto _6
+ if (_a & uint32(i32(128))) == 0 {
+ {
+ p := &_a
+ *p = (*p) & u32(4028612735)
+ sink5 = *p
+ }
+ {
+ p := &_b
+ *p = (*p) & uint32(i32(2080895))
+ sink5 = *p
+ }
+ _b = _b << uint(i32(7))
+ {
+ p := &_a
+ *p = (*p) | _b
+ sink5 = *p
+ }
+ _s = _s >> uint(i32(11))
+ *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
+ return uint8(i32(7))
}
-
- {
- p := &_a
- *p = (*p) & u32(4028612735)
- sink5 = *p
- }
- {
- p := &_b
- *p = (*p) & uint32(i32(2080895))
- sink5 = *p
- }
- _b = _b << uint(i32(7))
- {
- p := &_a
- *p = (*p) | _b
- sink5 = *p
- }
- _s = _s >> uint(i32(11))
- *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
- return uint8(i32(7))
-
-_6:
{
p := &_a
*p = (*p) & uint32(i32(2080895))
@@ -44205,26 +40040,22 @@ _6:
*p = (*p) | uint32(*_p)
sink5 = *p
}
- if (_b & uint32(i32(128))) != 0 {
- goto _7
- }
-
- {
- p := &_b
- *p = (*p) & u32(4028612735)
- sink5 = *p
- }
- _a = _a << uint(i32(7))
- {
- p := &_a
- *p = (*p) | _b
- sink5 = *p
+ if (_b & uint32(i32(128))) == 0 {
+ {
+ p := &_b
+ *p = (*p) & u32(4028612735)
+ sink5 = *p
+ }
+ _a = _a << uint(i32(7))
+ {
+ p := &_a
+ *p = (*p) | _b
+ sink5 = *p
+ }
+ _s = _s >> uint(i32(4))
+ *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
+ return uint8(i32(8))
}
- _s = _s >> uint(i32(4))
- *_v = (uint64(_s) << uint(i32(32))) | uint64(_a)
- return uint8(i32(8))
-
-_7:
*(*uintptr)(unsafe.Pointer(&_p)) += uintptr(1)
_a = _a << uint(i32(15))
{
@@ -44260,28 +40091,24 @@ _7:
return uint8(i32(9))
}
-func _btreeParseCellPtrIndex(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) { // sqlite3.c:60199:1
- var _pIter *uint8 // sqlite3.c:60204:6
- _ = _pIter
- var _nPayload uint32 // sqlite3.c:60205:7
- _ = _nPayload
- var _1_pEnd *uint8 // sqlite3.c:60213:8
- _ = _1_pEnd
+func _btreeParseCellPtrIndex(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) {
+ var _nPayload uint32
+ var _pIter, _1_pEnd *uint8
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60207), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrIndexØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60207), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrIndexØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X5) != i32(0) && int32(_pPage.X5) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60208), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrIndexØ00__func__Ø000))), unsafe.Pointer(str(55284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60208), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrIndexØ00__func__Ø000))), unsafe.Pointer(str(53532)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60209), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrIndexØ00__func__Ø000))), unsafe.Pointer(str(55528)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60209), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeParseCellPtrIndexØ00__func__Ø000))), unsafe.Pointer(str(53762)))
crt.X__builtin_abort(tls)
}
}()
@@ -44290,7 +40117,6 @@ func _btreeParseCellPtrIndex(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pIn
if _nPayload < uint32(i32(128)) {
goto _7
}
-
_1_pEnd = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIter)) + 1*uintptr(i32(8))))
{
p := &_nPayload
@@ -44298,11 +40124,10 @@ func _btreeParseCellPtrIndex(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pIn
sink5 = *p
}
_8:
- _nPayload = (_nPayload << uint(i32(7))) | uint32(int32(*preInc11(&_pIter, 1))&i32(127))
+ _nPayload = (_nPayload << uint(i32(7))) | uint32(int32(*preInc13(&_pIter, 1))&i32(127))
if (int32(*_pIter) >= i32(128)) && (uintptr(unsafe.Pointer(_pIter)) < uintptr(unsafe.Pointer(_1_pEnd))) {
goto _8
}
-
_7:
*(*uintptr)(unsafe.Pointer(&_pIter)) += uintptr(1)
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(0 /* X0 */))) = int64(_nPayload)
@@ -44311,160 +40136,148 @@ _7:
if _nPayload > uint32(_pPage.X10) {
goto _10
}
-
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(18 /* X4 */))) = uint16(_nPayload + uint32(uint16(int32((uintptr(unsafe.Pointer(_pIter))-uintptr(unsafe.Pointer(_pCell)))/1))))
- if int32(_pInfo.X4) >= i32(4) {
- goto _11
+ if int32(_pInfo.X4) < i32(4) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(18 /* X4 */))) = uint16(i32(4))
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(18 /* X4 */))) = uint16(i32(4))
-_11:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(16 /* X3 */))) = uint16(_nPayload)
goto _12
-
_10:
_btreeParseCellAdjustSizeForOverflow(tls, _pPage, _pCell, _pInfo)
_12:
}
-var _btreeParseCellPtrIndexØ00__func__Ø000 [23]int8 // -
+var _btreeParseCellPtrIndexØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_btreeParseCellPtrIndexØ00__func__Ø000[0], str(55552), 23)
+ crt.Xstrncpy(nil, &_btreeParseCellPtrIndexØ00__func__Ø000[0], str(53783), 23)
}
-func _btreeInvokeBusyHandler(tls *crt.TLS, _pArg unsafe.Pointer) (r0 int32) { // sqlite3.c:61199:1
- var _pBt *XBtShared // sqlite3.c:61200:12
- _ = _pBt
+// Invoke the busy handler for a btree.
+func _btreeInvokeBusyHandler(tls *crt.TLS, _pArg unsafe.Pointer) (r0 int32) {
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_pArg)
func() {
if (*Xsqlite3)(_pBt.X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61201), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInvokeBusyHandlerØ00__func__Ø000))), unsafe.Pointer(str(55576)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61201), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInvokeBusyHandlerØ00__func__Ø000))), unsafe.Pointer(str(53806)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pBt.X1).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61202), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInvokeBusyHandlerØ00__func__Ø000))), unsafe.Pointer(str(55584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61202), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInvokeBusyHandlerØ00__func__Ø000))), unsafe.Pointer(str(53814)))
crt.X__builtin_abort(tls)
}
}()
/* X71 */
- return _sqlite3InvokeBusyHandler(tls, (*t17)(unsafe.Pointer(uintptr(_pBt.X1)+uintptr(376))))
+ return _sqlite3InvokeBusyHandler(tls, (*t19)(unsafe.Pointer(uintptr(_pBt.X1)+uintptr(376))))
}
-var _btreeInvokeBusyHandlerØ00__func__Ø000 [23]int8 // -
+var _btreeInvokeBusyHandlerØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_btreeInvokeBusyHandlerØ00__func__Ø000[0], str(55620), 23)
+ crt.Xstrncpy(nil, &_btreeInvokeBusyHandlerØ00__func__Ø000[0], str(53849), 23)
}
-func _sqlite3InvokeBusyHandler(tls *crt.TLS, _p *t17) (r0 int32) { // sqlite3.c:141966:1
- var _rc int32 // sqlite3.c:141967:7
- _ = _rc
- if func() int32 {
+// Invoke the given busy handler.
+//
+// This routine is called when an operation failed with a lock.
+// If this routine returns non-zero, the lock is retried. If it
+// returns 0, the operation aborts with an SQLITE_BUSY error.
+func _sqlite3InvokeBusyHandler(tls *crt.TLS, _p *t19) (r0 int32) {
+ var _rc int32
+ if (func() int32 {
if _p == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InvokeBusyHandlerØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InvokeBusyHandlerØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }() != 0 || (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
- }{(_p.X0)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(_p.X0)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
- }{nil})) && (_p.X2) >= i32(0) {
- goto _4
+ }{nil})))) || ((_p.X2) < i32(0)) {
+ return i32(0)
}
- return i32(0)
-
-_4:
_rc = (_p.X0)(tls, _p.X1, _p.X2)
- if _rc != i32(0) {
- goto _5
+ if _rc == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = i32(-1)
+ goto _6
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = i32(-1)
- goto _6
-
-_5:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) += 1
_6:
return _rc
}
-var _sqlite3InvokeBusyHandlerØ00__func__Ø000 [25]int8 // -
+var _sqlite3InvokeBusyHandlerØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3InvokeBusyHandlerØ00__func__Ø000[0], str(55644), 25)
+ crt.Xstrncpy(nil, &_sqlite3InvokeBusyHandlerØ00__func__Ø000[0], str(53872), 25)
}
-func _sqlite3PagerOpenSavepoint(tls *crt.TLS, _pPager *XPager, _nSavepoint int32) (r0 int32) { // sqlite3.c:53653:1
+func _sqlite3PagerOpenSavepoint(tls *crt.TLS, _pPager *XPager, _nSavepoint int32) (r0 int32) {
func() {
if int32(_pPager.X14) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53654), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(9856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53654), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(10980)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53655), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53655), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
- if _nSavepoint <= (_pPager.X38) || (_pPager.X3) == 0 {
- goto _5
+ if (_nSavepoint > (_pPager.X38)) && ((_pPager.X3) != 0) {
+ return _pagerOpenSavepoint(tls, _pPager, _nSavepoint)
}
- return _pagerOpenSavepoint(tls, _pPager, _nSavepoint)
-
-_5:
return i32(0)
}
-var _sqlite3PagerOpenSavepointØ00__func__Ø000 [26]int8 // -
+var _sqlite3PagerOpenSavepointØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerOpenSavepointØ00__func__Ø000[0], str(55672), 26)
+ crt.Xstrncpy(nil, &_sqlite3PagerOpenSavepointØ00__func__Ø000[0], str(53897), 26)
}
-func _pagerOpenSavepoint(tls *crt.TLS, _pPager *XPager, _nSavepoint int32) (r0 int32) { // sqlite3.c:53608:1
- var _rc int32 // sqlite3.c:53609:7
- _ = _rc
- var _nCurrent int32 // sqlite3.c:53610:7
- _ = _nCurrent
- var _ii int32 // sqlite3.c:53611:7
- _ = _ii
- var _aNew *XPagerSavepoint // sqlite3.c:53612:18
- _ = _aNew
+// Check that there are at least nSavepoint savepoints open. If there are
+// currently less than nSavepoints open, then open one or more savepoints
+// to make up the difference. If the number of savepoints is already
+// equal to nSavepoint, then this function is a no-op.
+//
+// If a memory allocation fails, SQLITE_NOMEM is returned. If an error
+// occurs while opening the sub-journal file, then an IO error code is
+// returned. Otherwise, SQLITE_OK.
+func _pagerOpenSavepoint(tls *crt.TLS, _pPager *XPager, _nSavepoint int32) (r0 int32) {
+ var _rc, _nCurrent, _ii int32
+ var _aNew *XPagerSavepoint
_rc = i32(0)
_nCurrent = _pPager.X38
func() {
if int32(_pPager.X14) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53614), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(9856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53614), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(10980)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53615), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53615), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nSavepoint <= _nCurrent || (_pPager.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53616), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(55700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53616), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(53923)))
crt.X__builtin_abort(tls)
}
}()
_aNew = (*XPagerSavepoint)(_sqlite3Realloc(tls, _pPager.X37, uint64(u32(44)*uint32(_nSavepoint))))
- if _aNew != nil {
- goto _7
+ if _aNew == nil {
+ return _sqlite3NomemError(tls, i32(53626))
}
- return _sqlite3NomemError(tls, i32(53626))
-
-_7:
crt.Xmemset(tls, (unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_nCurrent)))), i32(0), uint32(_nSavepoint-_nCurrent)*u32(44))
*(**XPagerSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(96 /* X37 */))))) = _aNew
_ii = _nCurrent
@@ -44472,40 +40285,28 @@ _8:
if _ii >= _nSavepoint {
goto _11
}
-
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))))) + uintptr(20 /* X3 */))) = _pPager.X22
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil || (_pPager.X34) <= int64(i32(0)) {
- goto _13
+ if ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil) && ((_pPager.X34) > int64(i32(0))) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))))) + uintptr(0 /* X0 */))) = _pPager.X34
+ goto _14
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))))) + uintptr(0 /* X0 */))) = _pPager.X34
- goto _14
-
-_13:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))))) + uintptr(0 /* X0 */))) = int64(_pPager.X47)
_14:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))))) + uintptr(24 /* X4 */))) = _pPager.X29
*(**XBitvec)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))))) + uintptr(16 /* X2 */))))) = _sqlite3BitvecCreate(tls, _pPager.X22)
- if (*XBitvec)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))).X2) != nil {
- goto _15
+ if (*XBitvec)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii))).X2) == nil {
+ return _sqlite3NomemError(tls, i32(53642))
}
- return _sqlite3NomemError(tls, i32(53642))
-
-_15:
- if (*XWal)(_pPager.X60) == nil {
- goto _16
+ if (*XWal)(_pPager.X60) != nil {
+ _sqlite3WalSavepoint(tls, (*XWal)(_pPager.X60), (*uint32)(unsafe.Pointer((*[4]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii)))))+uintptr(28 /* X5 */))))))
}
-
- _sqlite3WalSavepoint(tls, (*XWal)(_pPager.X60), (*uint32)(unsafe.Pointer((*[4]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPagerSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aNew))+44*uintptr(_ii)))))+uintptr(28 /* X5 */))))))
-_16:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(100 /* X38 */))) = _ii + i32(1)
_ii += 1
goto _8
-
_11:
func() {
if (_pPager.X38) != _nSavepoint {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53649), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(55744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53649), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpenSavepointØ00__func__Ø000))), unsafe.Pointer(str(53965)))
crt.X__builtin_abort(tls)
}
}()
@@ -44513,16 +40314,20 @@ _11:
return _rc
}
-var _pagerOpenSavepointØ00__func__Ø000 [19]int8 // -
+var _pagerOpenSavepointØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_pagerOpenSavepointØ00__func__Ø000[0], str(55776), 19)
+ crt.Xstrncpy(nil, &_pagerOpenSavepointØ00__func__Ø000[0], str(53996), 19)
}
-func _sqlite3WalSavepoint(tls *crt.TLS, _pWal *XWal, _aWalData *uint32) { // sqlite3.c:57299:1
+// Argument aWalData must point to an array of WAL_SAVEPOINT_NDATA u32
+// values. This function populates the array with values required to
+// "rollback" the write position of the WAL handle back to the current
+// point in the event of a savepoint rollback (via WalSavepointUndo()).
+func _sqlite3WalSavepoint(tls *crt.TLS, _pWal *XWal, _aWalData *uint32) {
func() {
if (_pWal.X12) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57300), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalSavepointØ00__func__Ø000))), unsafe.Pointer(str(14700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57300), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalSavepointØ00__func__Ø000))), unsafe.Pointer(str(15606)))
crt.X__builtin_abort(tls)
}
}()
@@ -44532,320 +40337,321 @@ func _sqlite3WalSavepoint(tls *crt.TLS, _pWal *XWal, _aWalData *uint32) { // sql
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aWalData)) + 4*uintptr(i32(3)))) = _pWal.X22
}
-var _sqlite3WalSavepointØ00__func__Ø000 [20]int8 // -
+var _sqlite3WalSavepointØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalSavepointØ00__func__Ø000[0], str(55796), 20)
+ crt.Xstrncpy(nil, &_sqlite3WalSavepointØ00__func__Ø000[0], str(54015), 20)
}
-func _assertTruncateConstraint(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:50857:1
+func _assertTruncateConstraint(tls *crt.TLS, _pPager *XPager) {
_sqlite3PcacheIterateDirty(tls, (*XPCache)(_pPager.X59), _assertTruncateConstraintCb)
}
-func _sqlite3PcacheIterateDirty(tls *crt.TLS, _pCache *XPCache, _xIter func(*crt.TLS, *XPgHdr)) { // sqlite3.c:44996:1
- var _pDirty *XPgHdr // sqlite3.c:44997:9
- _ = _pDirty
+// For all dirty pages currently in the cache, invoke the specified
+// callback. This is only used if the SQLITE_CHECK_PAGES macro is
+// defined.
+func _sqlite3PcacheIterateDirty(tls *crt.TLS, _pCache *XPCache, _xIter func(*crt.TLS, *XPgHdr)) {
+ var _pDirty *XPgHdr
_pDirty = (*XPgHdr)(_pCache.X0)
_0:
if _pDirty == nil {
goto _3
}
-
_xIter(tls, _pDirty)
_pDirty = (*XPgHdr)(_pDirty.X9)
goto _0
-
_3:
}
-func _assertTruncateConstraintCb(tls *crt.TLS, _pPg *XPgHdr) { // sqlite3.c:50853:1
+func _assertTruncateConstraintCb(tls *crt.TLS, _pPg *XPgHdr) {
func() {
if (int32(_pPg.X6) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50854), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertTruncateConstraintCbØ00__func__Ø000))), unsafe.Pointer(str(55816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50854), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertTruncateConstraintCbØ00__func__Ø000))), unsafe.Pointer(str(54035)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _subjRequiresPage(tls, _pPg) != 0 && (_pPg.X5) > ((*XPager)(_pPg.X4).X22) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50855), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertTruncateConstraintCbØ00__func__Ø000))), unsafe.Pointer(str(55840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50855), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertTruncateConstraintCbØ00__func__Ø000))), unsafe.Pointer(str(54058)))
crt.X__builtin_abort(tls)
}
}()
}
-var _assertTruncateConstraintCbØ00__func__Ø000 [27]int8 // -
+var _assertTruncateConstraintCbØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_assertTruncateConstraintCbØ00__func__Ø000[0], str(55900), 27)
+ crt.Xstrncpy(nil, &_assertTruncateConstraintCbØ00__func__Ø000[0], str(54115), 27)
}
-func _sqlite3BtreeGetMeta(tls *crt.TLS, _p *XBtree, _idx int32, _pMeta *uint32) { // sqlite3.c:67857:1
- var _pBt *XBtShared // sqlite3.c:67858:12
- _ = _pBt
+// This function may only be called if the b-tree connection already
+// has a read or write transaction open on the database.
+//
+// Read the meta-information out of a database file. Meta[0]
+// is the number of free pages currently in the database. Meta[1]
+// through meta[15] are available for use by higher layers. Meta[0]
+// is read-only, the others are read/write.
+//
+// The schema layer numbers meta values differently. At the schema
+// layer (and the SetCookie and ReadCookie opcodes) the number of
+// free pages is not visible. So Cookie[0] is the same as Meta[1].
+//
+// This routine treats Meta[BTREE_DATA_VERSION] as a special case. Instead
+// of reading the value out of the header, it instead loads the "DataVersion"
+// from the pager. The BTREE_DATA_VERSION value is not actually stored in the
+// database file. It is a number computed by the pager. But its access
+// pattern is the same as header meta values, and so it is convenient to
+// read it from this routine.
+func _sqlite3BtreeGetMeta(tls *crt.TLS, _p *XBtree, _idx int32, _pMeta *uint32) {
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_p.X1)
_sqlite3BtreeEnter(tls, _p)
func() {
if int32(_p.X2) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67861), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(55928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67861), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(54142)))
crt.X__builtin_abort(tls)
}
}()
func() {
if i32(0) != _querySharedCacheTableLock(tls, _p, uint32(i32(1)), uint8(i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67862), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(55952)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67862), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(54164)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XMemPage)(_pBt.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67863), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(56016)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67863), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(54228)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _idx < i32(0) || _idx > i32(15) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(56028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetMetaØ00__func__Ø000))), unsafe.Pointer(str(54240)))
crt.X__builtin_abort(tls)
}
}()
- if _idx != i32(15) {
- goto _9
+ if _idx == i32(15) {
+ *_pMeta = _sqlite3PagerDataVersion(tls, (*XPager)(_pBt.X0)) + (_p.X8)
+ goto _10
}
-
- *_pMeta = _sqlite3PagerDataVersion(tls, (*XPager)(_pBt.X0)) + (_p.X8)
- goto _10
-
-_9:
*_pMeta = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)+(_idx*i32(4))))))
_10:
_sqlite3BtreeLeave(tls, _p)
}
-var _sqlite3BtreeGetMetaØ00__func__Ø000 [20]int8 // -
+var _sqlite3BtreeGetMetaØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeGetMetaØ00__func__Ø000[0], str(56048), 20)
+ crt.Xstrncpy(nil, &_sqlite3BtreeGetMetaØ00__func__Ø000[0], str(54258), 20)
}
-func _sqlite3PagerDataVersion(tls *crt.TLS, _pPager *XPager) (r0 uint32) { // sqlite3.c:48655:1
+// Return the pPager->iDataVersion value
+func _sqlite3PagerDataVersion(tls *crt.TLS, _pPager *XPager) (r0 uint32) {
func() {
if int32(_pPager.X14) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48656), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerDataVersionØ00__func__Ø000))), unsafe.Pointer(str(56068)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48656), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerDataVersionØ00__func__Ø000))), unsafe.Pointer(str(54278)))
crt.X__builtin_abort(tls)
}
}()
return _pPager.X39
}
-var _sqlite3PagerDataVersionØ00__func__Ø000 [24]int8 // -
+var _sqlite3PagerDataVersionØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerDataVersionØ00__func__Ø000[0], str(56096), 24)
+ crt.Xstrncpy(nil, &_sqlite3PagerDataVersionØ00__func__Ø000[0], str(54304), 24)
}
-func _sqlite3ResetOneSchema(tls *crt.TLS, _db *Xsqlite3, _iDb int32) { // sqlite3.c:100215:1
- var _pDb *XDb // sqlite3.c:100216:6
- _ = _pDb
+// Reset the schema for the database at index iDb. Also reset the
+// TEMP schema.
+func _sqlite3ResetOneSchema(tls *crt.TLS, _db *Xsqlite3, _iDb int32) {
+ var _pDb *XDb
func() {
if _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100217), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(56120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100217), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(54328)))
crt.X__builtin_abort(tls)
}
}()
_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
func() {
if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XSchema)(_pDb.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(56132)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(54340)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3SchemaClear(tls, _pDb.X4)
- if _iDb == i32(1) {
- goto _6
+ if _iDb != i32(1) {
+ _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(i32(1))))
+ func() {
+ if (*XSchema)(_pDb.X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(54340)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3SchemaClear(tls, _pDb.X4)
}
-
- _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(i32(1))))
- func() {
- if (*XSchema)(_pDb.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResetOneSchemaØ00__func__Ø000))), unsafe.Pointer(str(56132)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3SchemaClear(tls, _pDb.X4)
-_6:
}
-var _sqlite3ResetOneSchemaØ00__func__Ø000 [22]int8 // -
+var _sqlite3ResetOneSchemaØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ResetOneSchemaØ00__func__Ø000[0], str(56148), 22)
+ crt.Xstrncpy(nil, &_sqlite3ResetOneSchemaØ00__func__Ø000[0], str(54356), 22)
}
-func _sqlite3BtreeCommit(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:62952:1
- var _rc int32 // sqlite3.c:62953:7
- _ = _rc
+// Do both phases of a commit.
+func _sqlite3BtreeCommit(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _rc int32
_sqlite3BtreeEnter(tls, _p)
_rc = _sqlite3BtreeCommitPhaseOne(tls, _p, nil)
- if _rc != i32(0) {
- goto _0
+ if _rc == i32(0) {
+ _rc = _sqlite3BtreeCommitPhaseTwo(tls, _p, i32(0))
}
-
- _rc = _sqlite3BtreeCommitPhaseTwo(tls, _p, i32(0))
-_0:
_sqlite3BtreeLeave(tls, _p)
return _rc
}
-func _sqlite3BtreeCommitPhaseOne(tls *crt.TLS, _p *XBtree, _zMaster *int8) (r0 int32) { // sqlite3.c:62831:1
- var _rc int32 // sqlite3.c:62832:7
- _ = _rc
- var _1_pBt *XBtShared // sqlite3.c:62834:14
- _ = _1_pBt
+// This routine does the first phase of a two-phase commit. This routine
+// causes a rollback journal to be created (if it does not already exist)
+// and populated with enough information so that if a power loss occurs
+// the database can be restored to its original state by playing back
+// the journal. Then the contents of the journal are flushed out to
+// the disk. After the journal is safely on oxide, the changes to the
+// database are written into the database file and flushed to oxide.
+// At the end of this call, the rollback journal still exists on the
+// disk and we are still holding all locks, so the transaction has not
+// committed. See sqlite3BtreeCommitPhaseTwo() for the second phase of the
+// commit process.
+//
+// This call is a no-op if no write-transaction is currently active on pBt.
+//
+// Otherwise, sync the database file for the btree pBt. zMaster points to
+// the name of a master journal file that should be written into the
+// individual journal file, or is NULL, indicating no master journal file
+// (single database transaction).
+//
+// When this is called, the master journal should already have been
+// created, populated with this journal pointer and synced to disk.
+//
+// Once this is routine has returned, the only thing required to commit
+// the write-transaction for this database file is to delete the journal.
+func _sqlite3BtreeCommitPhaseOne(tls *crt.TLS, _p *XBtree, _zMaster *int8) (r0 int32) {
+ var _rc int32
+ var _1_pBt *XBtShared
_rc = i32(0)
if int32(_p.X2) != i32(2) {
goto _0
}
-
_1_pBt = (*XBtShared)(_p.X1)
_sqlite3BtreeEnter(tls, _p)
if (_1_pBt.X5) == 0 {
goto _1
}
-
_rc = _autoVacuumCommit(tls, _1_pBt)
- if _rc == i32(0) {
- goto _2
+ if _rc != i32(0) {
+ _sqlite3BtreeLeave(tls, _p)
+ return _rc
}
-
- _sqlite3BtreeLeave(tls, _p)
- return _rc
-
-_2:
_1:
- if (_1_pBt.X7) == 0 {
- goto _3
+ if (_1_pBt.X7) != 0 {
+ _sqlite3PagerTruncateImage(tls, (*XPager)(_1_pBt.X0), _1_pBt.X18)
}
-
- _sqlite3PagerTruncateImage(tls, (*XPager)(_1_pBt.X0), _1_pBt.X18)
-_3:
_rc = _sqlite3PagerCommitPhaseOne(tls, (*XPager)(_1_pBt.X0), _zMaster, i32(0))
_sqlite3BtreeLeave(tls, _p)
_0:
return _rc
}
-func _autoVacuumCommit(tls *crt.TLS, _pBt *XBtShared) (r0 int32) { // sqlite3.c:62752:1
- var _rc int32 // sqlite3.c:62753:7
- _ = _rc
- var _pPager *XPager // sqlite3.c:62754:9
- _ = _pPager
- var _nRef int32 // sqlite3.c:62755:17
- _ = _nRef
- var _1_nFin uint32 // sqlite3.c:62761:10
- _ = _1_nFin
- var _1_nFree uint32 // sqlite3.c:62762:10
- _ = _1_nFree
- var _1_iFree uint32 // sqlite3.c:62763:10
- _ = _1_iFree
- var _1_nOrig uint32 // sqlite3.c:62764:10
- _ = _1_nOrig
+// This routine is called prior to sqlite3PagerCommit when a transaction
+// is committed for an auto-vacuum database.
+//
+// If SQLITE_OK is returned, then *pnTrunc is set to the number of pages
+// the database file should be truncated to during the commit process.
+// i.e. the database has been reorganized so that only the first *pnTrunc
+// pages are in use.
+func _autoVacuumCommit(tls *crt.TLS, _pBt *XBtShared) (r0 int32) {
+ var _rc, _nRef int32
+ var _1_nFin, _1_nFree, _1_iFree, _1_nOrig uint32
+ var _pPager *XPager
_rc = i32(0)
_pPager = (*XPager)(_pBt.X0)
_nRef = _sqlite3PagerRefcount(tls, _pPager)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62757), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoVacuumCommitØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62757), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoVacuumCommitØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
_invalidateAllOverflowCache(tls, _pBt)
func() {
if (_pBt.X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62759), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoVacuumCommitØ00__func__Ø000))), unsafe.Pointer(str(56172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62759), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoVacuumCommitØ00__func__Ø000))), unsafe.Pointer(str(54378)))
crt.X__builtin_abort(tls)
}
}()
if (_pBt.X6) != 0 {
goto _4
}
-
_1_nOrig = _btreePagecount(tls, _pBt)
- if _ptrmapPageno(tls, _pBt, _1_nOrig) != _1_nOrig && _1_nOrig != ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) {
- goto _6
+ if (_ptrmapPageno(tls, _pBt, _1_nOrig) == _1_nOrig) || (_1_nOrig == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) {
+ return _sqlite3CorruptError(tls, i32(62772))
}
- return _sqlite3CorruptError(tls, i32(62772))
-
-_6:
_1_nFree = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))))
_1_nFin = _finalDbSize(tls, _pBt, _1_nOrig, _1_nFree)
- if _1_nFin <= _1_nOrig {
- goto _7
+ if _1_nFin > _1_nOrig {
+ return _sqlite3CorruptError(tls, i32(62777))
}
- return _sqlite3CorruptError(tls, i32(62777))
-
-_7:
- if _1_nFin >= _1_nOrig {
- goto _8
+ if _1_nFin < _1_nOrig {
+ _rc = _saveAllCursors(tls, _pBt, uint32(i32(0)), nil)
}
-
- _rc = _saveAllCursors(tls, _pBt, uint32(i32(0)), nil)
-_8:
_1_iFree = _1_nOrig
_9:
if _1_iFree <= _1_nFin || _rc != i32(0) {
goto _13
}
-
_rc = _incrVacuumStep(tls, _pBt, _1_nFin, _1_iFree, i32(1))
_1_iFree -= 1
goto _9
-
_13:
- if _rc != i32(101) && _rc != i32(0) || _1_nFree <= uint32(i32(0)) {
- goto _16
+ if ((_rc == i32(101)) || (_rc == i32(0))) && (_1_nFree > uint32(i32(0))) {
+ _rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23))
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(32)))), uint32(i32(0)))
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))), uint32(i32(0)))
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(28)))), _1_nFin)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(19 /* X7 */))) = uint8(i32(1))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) = _1_nFin
}
-
- _rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23))
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(32)))), uint32(i32(0)))
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))), uint32(i32(0)))
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(28)))), _1_nFin)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(19 /* X7 */))) = uint8(i32(1))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) = _1_nFin
-_16:
- if _rc == i32(0) {
- goto _17
+ if _rc != i32(0) {
+ _sqlite3PagerRollback(tls, _pPager)
}
-
- _sqlite3PagerRollback(tls, _pPager)
-_17:
_4:
func() {
if _nRef < _sqlite3PagerRefcount(tls, _pPager) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62797), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoVacuumCommitØ00__func__Ø000))), unsafe.Pointer(str(56188)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62797), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoVacuumCommitØ00__func__Ø000))), unsafe.Pointer(str(54394)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-var _autoVacuumCommitØ00__func__Ø000 [17]int8 // -
+var _autoVacuumCommitØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_autoVacuumCommitØ00__func__Ø000[0], str(56224), 17)
+ crt.Xstrncpy(nil, &_autoVacuumCommitØ00__func__Ø000[0], str(54429), 17)
}
-func _invalidateAllOverflowCache(tls *crt.TLS, _pBt *XBtShared) { // sqlite3.c:59512:1
- var _p *XBtCursor // sqlite3.c:59513:12
- _ = _p
+// Invalidate the overflow page-list cache for all cursors opened
+// on the shared btree structure pBt.
+func _invalidateAllOverflowCache(tls *crt.TLS, _pBt *XBtShared) {
+ var _p *XBtCursor
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59514), unsafe.Pointer((*int8)(unsafe.Pointer(&_invalidateAllOverflowCacheØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59514), unsafe.Pointer((*int8)(unsafe.Pointer(&_invalidateAllOverflowCacheØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
@@ -44854,7 +40660,6 @@ _2:
if _p == nil {
goto _5
}
-
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X10 */)))
*p = uint8(int32(*p) & i32(-5))
@@ -44862,363 +40667,269 @@ _2:
}
_p = (*XBtCursor)(_p.X2)
goto _2
-
_5:
}
-var _invalidateAllOverflowCacheØ00__func__Ø000 [27]int8 // -
+var _invalidateAllOverflowCacheØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_invalidateAllOverflowCacheØ00__func__Ø000[0], str(56244), 27)
+ crt.Xstrncpy(nil, &_invalidateAllOverflowCacheØ00__func__Ø000[0], str(54446), 27)
}
-func _finalDbSize(tls *crt.TLS, _pBt *XBtShared, _nOrig uint32, _nFree uint32) (r0 uint32) { // sqlite3.c:62684:1
- var _nEntry int32 // sqlite3.c:62685:7
- _ = _nEntry
- var _nPtrmap uint32 // sqlite3.c:62686:8
- _ = _nPtrmap
- var _nFin uint32 // sqlite3.c:62687:8
- _ = _nFin
+// The database opened by the first argument is an auto-vacuum database
+// nOrig pages in size containing nFree free pages. Return the expected
+// size of the database in pages following an auto-vacuum operation.
+func _finalDbSize(tls *crt.TLS, _pBt *XBtShared, _nOrig uint32, _nFree uint32) (r0 uint32) {
+ var _nEntry int32
+ var _nPtrmap, _nFin uint32
_nEntry = int32((_pBt.X16) / uint32(i32(5)))
_nPtrmap = (((_nFree - _nOrig) + _ptrmapPageno(tls, _pBt, _nOrig)) + uint32(_nEntry)) / uint32(_nEntry)
_nFin = (_nOrig - _nFree) - _nPtrmap
- if _nOrig <= ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) || _nFin >= ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) {
- goto _1
+ if (_nOrig > ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) && (_nFin < ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) {
+ _nFin -= 1
}
-
- _nFin -= 1
-_1:
_2:
- if _ptrmapPageno(tls, _pBt, _nFin) != _nFin && _nFin != ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) {
- goto _3
+ if (_ptrmapPageno(tls, _pBt, _nFin) == _nFin) || (_nFin == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) {
+ _nFin -= 1
+ goto _2
}
-
- _nFin -= 1
- goto _2
-
-_3:
return _nFin
}
-func _incrVacuumStep(tls *crt.TLS, _pBt *XBtShared, _nFin uint32, _iLastPg uint32, _bCommit int32) (r0 int32) { // sqlite3.c:62588:1
- var _nFreeList uint32 // sqlite3.c:62589:8
- _ = _nFreeList
- var _rc int32 // sqlite3.c:62590:7
- _ = _rc
- var _1_eType uint8 // sqlite3.c:62596:8
- _ = _1_eType
- var _1_iPtrPage uint32 // sqlite3.c:62597:10
- _ = _1_iPtrPage
- var _6_iFreePg uint32 // sqlite3.c:62619:14
- _ = _6_iFreePg
- var _6_pFreePg *XMemPage // sqlite3.c:62620:17
- _ = _6_pFreePg
- var _8_iFreePg uint32 // sqlite3.c:62629:12
- _ = _8_iFreePg
- var _8_pLastPg *XMemPage // sqlite3.c:62630:15
- _ = _8_pLastPg
- var _8_eMode uint8 // sqlite3.c:62631:10
- _ = _8_eMode
- var _8_iNear uint32 // sqlite3.c:62632:12
- _ = _8_iNear
- var _11_pFreePg *XMemPage // sqlite3.c:62651:17
- _ = _11_pFreePg
+// Perform a single step of an incremental-vacuum. If successful, return
+// SQLITE_OK. If there is no work to do (and therefore no point in
+// calling this function again), return SQLITE_DONE. Or, if an error
+// occurs, return some other error code.
+//
+// More specifically, this function attempts to re-organize the database so
+// that the last page of the file currently in use is no longer in use.
+//
+// Parameter nFin is the number of pages that this database would contain
+// were this function called until it returns SQLITE_DONE.
+//
+// If the bCommit parameter is non-zero, this function assumes that the
+// caller will keep calling incrVacuumStep() until it returns SQLITE_DONE
+// or an error. bCommit is passed true for an auto-vacuum-on-commit
+// operation, or false for an incremental vacuum.
+func _incrVacuumStep(tls *crt.TLS, _pBt *XBtShared, _nFin uint32, _iLastPg uint32, _bCommit int32) (r0 int32) {
+ var _rc int32
+ var _nFreeList, _1_iPtrPage, _6_iFreePg, _8_iFreePg, _8_iNear uint32
+ var _1_eType, _8_eMode uint8
+ var _6_pFreePg, _8_pLastPg, _11_pFreePg *XMemPage
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62592), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62592), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iLastPg <= _nFin {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62593), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(56272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62593), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(54473)))
crt.X__builtin_abort(tls)
}
}()
if _ptrmapPageno(tls, _pBt, _iLastPg) == _iLastPg || _iLastPg == ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) {
goto _5
}
-
_nFreeList = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))))
- if _nFreeList != uint32(i32(0)) {
- goto _6
+ if _nFreeList == uint32(i32(0)) {
+ return i32(101)
}
- return i32(101)
-
-_6:
_rc = _ptrmapGet(tls, _pBt, _iLastPg, &_1_eType, &_1_iPtrPage)
- if _rc == i32(0) {
- goto _7
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_7:
- if int32(_1_eType) != i32(1) {
- goto _8
+ if int32(_1_eType) == i32(1) {
+ return _sqlite3CorruptError(tls, i32(62609))
}
- return _sqlite3CorruptError(tls, i32(62609))
-
-_8:
if int32(_1_eType) != i32(2) {
goto _9
}
-
if _bCommit != i32(0) {
goto _10
}
-
_rc = _allocateBtreePage(tls, _pBt, &_6_pFreePg, &_6_iFreePg, _iLastPg, uint8(i32(1)))
- if _rc == i32(0) {
- goto _11
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_11:
func() {
if _6_iFreePg != _iLastPg {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62625), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(56288)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62625), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(54486)))
crt.X__builtin_abort(tls)
}
}()
_releasePage(tls, _6_pFreePg)
_10:
goto _14
-
_9:
_8_eMode = u8(0)
_8_iNear = u32(0)
_rc = _btreeGetPage(tls, _pBt, _iLastPg, &_8_pLastPg, i32(0))
- if _rc == i32(0) {
- goto _15
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_15:
- if _bCommit != i32(0) {
- goto _16
+ if _bCommit == i32(0) {
+ _8_eMode = uint8(i32(2))
+ _8_iNear = _nFin
}
-
- _8_eMode = uint8(i32(2))
- _8_iNear = _nFin
-_16:
_17:
_rc = _allocateBtreePage(tls, _pBt, &_11_pFreePg, &_8_iFreePg, _8_iNear, _8_eMode)
- if _rc == i32(0) {
- goto _18
+ if _rc != i32(0) {
+ _releasePage(tls, _8_pLastPg)
+ return _rc
}
-
- _releasePage(tls, _8_pLastPg)
- return _rc
-
-_18:
_releasePage(tls, _11_pFreePg)
if _bCommit != 0 && (_8_iFreePg > _nFin) {
goto _17
}
-
func() {
if _8_iFreePg >= _iLastPg {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62659), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(56308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62659), unsafe.Pointer((*int8)(unsafe.Pointer(&_incrVacuumStepØ00__func__Ø000))), unsafe.Pointer(str(54503)))
crt.X__builtin_abort(tls)
}
}()
_rc = _relocatePage(tls, _pBt, _8_pLastPg, _1_eType, _1_iPtrPage, _8_iFreePg, _bCommit)
_releasePage(tls, _8_pLastPg)
- if _rc == i32(0) {
- goto _22
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_22:
_14:
_5:
if _bCommit != i32(0) {
goto _23
}
-
_24:
_iLastPg -= 1
if (_iLastPg == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) || (_ptrmapPageno(tls, _pBt, _iLastPg) == _iLastPg) {
goto _24
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(19 /* X7 */))) = uint8(i32(1))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) = _iLastPg
_23:
return i32(0)
}
-var _incrVacuumStepØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_incrVacuumStepØ00__func__Ø000[0], str(56324), 15)
-}
-
-func _allocateBtreePage(tls *crt.TLS, _pBt *XBtShared, _ppPage **XMemPage, _pPgno *uint32, _nearby uint32, _eMode uint8) (r0 int32) { // sqlite3.c:64675:1
- var _pPage1 *XMemPage // sqlite3.c:64682:11
- _ = _pPage1
- var _rc int32 // sqlite3.c:64683:7
- _ = _rc
- var _n uint32 // sqlite3.c:64684:7
- _ = _n
- var _k uint32 // sqlite3.c:64685:7
- _ = _k
- var _pTrunk *XMemPage // sqlite3.c:64686:11
- _ = _pTrunk
- var _pPrevTrunk *XMemPage // sqlite3.c:64687:11
- _ = _pPrevTrunk
- var _mxPage uint32 // sqlite3.c:64688:8
- _ = _mxPage
- var _2_iTrunk uint32 // sqlite3.c:64703:10
- _ = _2_iTrunk
- var _2_searchList uint8 // sqlite3.c:64704:8
- _ = _2_searchList
- var _2_nSearch uint32 // sqlite3.c:64705:9
- _ = _2_nSearch
- var _4_eType uint8 // sqlite3.c:64714:12
- _ = _4_eType
- var _22_pNewTrunk *XMemPage // sqlite3.c:64815:19
- _ = _22_pNewTrunk
- var _22_iNewTrunk uint32 // sqlite3.c:64816:16
- _ = _22_iNewTrunk
- var _29_closest uint32 // sqlite3.c:64851:13
- _ = _29_closest
- var _29_iPage uint32 // sqlite3.c:64852:14
- _ = _29_iPage
- var _29_aData *uint8 // sqlite3.c:64853:23
- _ = _29_aData
- var _30_i uint32 // sqlite3.c:64855:15
- _ = _30_i
- var _34_dist int32 // sqlite3.c:64866:17
- _ = _34_dist
- var _35_d2 int32 // sqlite3.c:64869:19
- _ = _35_d2
- var _39_noContent int32 // sqlite3.c:64890:15
- _ = _39_noContent
- var _43_bNoContent int32 // sqlite3.c:64935:9
- _ = _43_bNoContent
- var _44_pPg *XMemPage // sqlite3.c:64948:15
- _ = _44_pPg
+var _incrVacuumStepØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_incrVacuumStepØ00__func__Ø000[0], str(54519), 15)
+}
+
+// Allocate a new page from the database file.
+//
+// The new page is marked as dirty. (In other words, sqlite3PagerWrite()
+// has already been called on the new page.) The new page has also
+// been referenced and the calling routine is responsible for calling
+// sqlite3PagerUnref() on the new page when it is done.
+//
+// SQLITE_OK is returned on success. Any other return value indicates
+// an error. *ppPage is set to NULL in the event of an error.
+//
+// If the "nearby" parameter is not 0, then an effort is made to
+// locate a page close to the page number "nearby". This can be used in an
+// attempt to keep related pages close to each other in the database file,
+// which in turn can make database access faster.
+//
+// If the eMode parameter is BTALLOC_EXACT and the nearby page exists
+// anywhere on the free-list, then it is guaranteed to be returned. If
+// eMode is BTALLOC_LT then the page returned will be less than or equal
+// to nearby if any such page exists. If eMode is BTALLOC_ANY then there
+// are no restrictions on which page is returned.
+func _allocateBtreePage(tls *crt.TLS, _pBt *XBtShared, _ppPage **XMemPage, _pPgno *uint32, _nearby uint32, _eMode uint8) (r0 int32) {
+ var _rc, _34_dist, _35_d2, _39_noContent, _43_bNoContent int32
+ var _n, _k, _mxPage, _2_iTrunk, _2_nSearch, _22_iNewTrunk, _29_closest, _29_iPage, _30_i uint32
+ var _2_searchList, _4_eType uint8
+ var _29_aData *uint8
+ var _pPage1, _pTrunk, _pPrevTrunk, _22_pNewTrunk, _44_pPg *XMemPage
_pTrunk = nil
_pPrevTrunk = nil
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64690), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64690), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_eMode) != i32(0) && (_nearby <= uint32(i32(0)) || (_pBt.X5) == 0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64691), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64691), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54534)))
crt.X__builtin_abort(tls)
}
}()
_pPage1 = (*XMemPage)(_pBt.X3)
_mxPage = _btreePagecount(tls, _pBt)
_n = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(36)))))
- if _n < _mxPage {
- goto _6
+ if _n >= _mxPage {
+ return _sqlite3CorruptError(tls, i32(64699))
}
- return _sqlite3CorruptError(tls, i32(64699))
-
-_6:
if _n <= uint32(i32(0)) {
goto _7
}
-
_2_searchList = u8(0)
_2_nSearch = u32(0)
if int32(_eMode) != i32(1) {
goto _8
}
-
if _nearby > _mxPage {
goto _9
}
-
func() {
if _nearby <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64715), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64715), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54599)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pBt.X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64716), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64716), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54378)))
crt.X__builtin_abort(tls)
}
}()
_rc = _ptrmapGet(tls, _pBt, _nearby, &_4_eType, nil)
- if _rc == 0 {
- goto _14
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_14:
- if int32(_4_eType) != i32(2) {
- goto _15
+ if int32(_4_eType) == i32(2) {
+ _2_searchList = uint8(i32(1))
}
-
- _2_searchList = uint8(i32(1))
-_15:
_9:
goto _16
-
_8:
- if int32(_eMode) != i32(2) {
- goto _17
+ if int32(_eMode) == i32(2) {
+ _2_searchList = uint8(i32(1))
}
-
- _2_searchList = uint8(i32(1))
-_17:
_16:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage1.X23))
- if _rc == 0 {
- goto _18
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_18:
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(36)))), _n-uint32(i32(1)))
_19:
_pPrevTrunk = _pTrunk
- if _pPrevTrunk == nil {
- goto _20
+ if _pPrevTrunk != nil {
+ _2_iTrunk = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrevTrunk.X19))+1*uintptr(i32(0)))))
+ goto _21
}
-
- _2_iTrunk = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrevTrunk.X19))+1*uintptr(i32(0)))))
- goto _21
-
-_20:
_2_iTrunk = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32)))))
_21:
- if _2_iTrunk <= _mxPage && postInc5(&_2_nSearch, uint32(1)) <= _n {
- goto _23
+ if (_2_iTrunk > _mxPage) || (postInc5(&_2_nSearch, uint32(1)) > _n) {
+ _rc = _sqlite3CorruptError(tls, i32(64755))
+ goto _24
}
-
- _rc = _sqlite3CorruptError(tls, i32(64755))
- goto _24
-
-_23:
_rc = _btreeGetUnusedPage(tls, _pBt, _2_iTrunk, &_pTrunk, i32(0))
_24:
- if _rc == 0 {
- goto _25
+ if _rc != 0 {
+ _pTrunk = nil
+ goto _end_allocate_page
}
-
- _pTrunk = nil
- goto _end_allocate_page
-
-_25:
func() {
if _pTrunk == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64763), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64763), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54608)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pTrunk.X19) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64764), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56432)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64764), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54618)))
crt.X__builtin_abort(tls)
}
}()
@@ -45226,170 +40937,114 @@ _25:
if _k != uint32(i32(0)) || _2_searchList != 0 {
goto _31
}
-
func() {
if _pPrevTrunk != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64772), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64772), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54635)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pTrunk.X23))
- if _rc == 0 {
- goto _34
+ if _rc != 0 {
+ goto _end_allocate_page
}
-
- goto _end_allocate_page
-
-_34:
*_pPgno = _2_iTrunk
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(0))))), uint32(i32(4)))
*_ppPage = _pTrunk
_pTrunk = nil
goto _35
-
_31:
- if _k <= (((_pBt.X16) / uint32(i32(4))) - uint32(i32(2))) {
- goto _36
+ if _k > (((_pBt.X16) / uint32(i32(4))) - uint32(i32(2))) {
+ _rc = _sqlite3CorruptError(tls, i32(64784))
+ goto _end_allocate_page
}
-
- _rc = _sqlite3CorruptError(tls, i32(64784))
- goto _end_allocate_page
-
-_36:
if _2_searchList == 0 || _nearby != _2_iTrunk && (_2_iTrunk >= _nearby || int32(_eMode) != i32(2)) {
goto _41
}
-
*_pPgno = _2_iTrunk
*_ppPage = _pTrunk
_2_searchList = uint8(i32(0))
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pTrunk.X23))
- if _rc == 0 {
- goto _42
+ if _rc != 0 {
+ goto _end_allocate_page
}
-
- goto _end_allocate_page
-
-_42:
if _k != uint32(i32(0)) {
goto _43
}
-
- if _pPrevTrunk != nil {
- goto _44
+ if _pPrevTrunk == nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(0))))), uint32(i32(4)))
+ goto _45
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(0))))), uint32(i32(4)))
- goto _45
-
-_44:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPrevTrunk.X23))
- if _rc == i32(0) {
- goto _46
+ if _rc != i32(0) {
+ goto _end_allocate_page
}
-
- goto _end_allocate_page
-
-_46:
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrevTrunk.X19))+1*uintptr(i32(0))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(0))))), uint32(i32(4)))
_45:
goto _47
-
_43:
_22_iNewTrunk = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(8)))))
- if _22_iNewTrunk <= _mxPage {
- goto _48
+ if _22_iNewTrunk > _mxPage {
+ _rc = _sqlite3CorruptError(tls, i32(64818))
+ goto _end_allocate_page
}
-
- _rc = _sqlite3CorruptError(tls, i32(64818))
- goto _end_allocate_page
-
-_48:
_rc = _btreeGetUnusedPage(tls, _pBt, _22_iNewTrunk, &_22_pNewTrunk, i32(0))
- if _rc == i32(0) {
- goto _49
+ if _rc != i32(0) {
+ goto _end_allocate_page
}
-
- goto _end_allocate_page
-
-_49:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_22_pNewTrunk.X23))
- if _rc == i32(0) {
- goto _50
+ if _rc != i32(0) {
+ _releasePage(tls, _22_pNewTrunk)
+ goto _end_allocate_page
}
-
- _releasePage(tls, _22_pNewTrunk)
- goto _end_allocate_page
-
-_50:
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_22_pNewTrunk.X19))+1*uintptr(i32(0))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(0))))), uint32(i32(4)))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_22_pNewTrunk.X19))+1*uintptr(i32(4)))), _k-uint32(i32(1)))
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_22_pNewTrunk.X19))+1*uintptr(i32(8))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(12))))), (_k-uint32(i32(1)))*uint32(i32(4)))
_releasePage(tls, _22_pNewTrunk)
- if _pPrevTrunk != nil {
- goto _51
+ if _pPrevTrunk == nil {
+ func() {
+ if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage1.X23)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64836), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54649)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32)))), _22_iNewTrunk)
+ goto _54
}
-
- func() {
- if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage1.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64836), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56468)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32)))), _22_iNewTrunk)
- goto _54
-
-_51:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPrevTrunk.X23))
- if _rc == 0 {
- goto _55
+ if _rc != 0 {
+ goto _end_allocate_page
}
-
- goto _end_allocate_page
-
-_55:
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrevTrunk.X19))+1*uintptr(i32(0)))), _22_iNewTrunk)
_54:
_47:
_pTrunk = nil
goto _56
-
_41:
if _k <= uint32(i32(0)) {
goto _57
}
-
_29_aData = _pTrunk.X19
if _nearby <= uint32(i32(0)) {
goto _58
}
-
_29_closest = uint32(i32(0))
if int32(_eMode) != i32(2) {
goto _59
}
-
_30_i = uint32(i32(0))
_60:
if _30_i >= _k {
goto _63
}
-
_29_iPage = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(uint32(i32(8))+(_30_i*uint32(i32(4)))))))
- if _29_iPage > _nearby {
- goto _64
+ if _29_iPage <= _nearby {
+ _29_closest = _30_i
+ goto _63
}
-
- _29_closest = _30_i
- goto _63
-
-_64:
_30_i += 1
goto _60
-
_63:
goto _65
-
_59:
_34_dist = _sqlite3AbsInt32(tls, int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(i32(8)))))-_nearby))
_30_i = uint32(i32(1))
@@ -45397,53 +41052,35 @@ _66:
if _30_i >= _k {
goto _69
}
-
_35_d2 = _sqlite3AbsInt32(tls, int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(uint32(i32(8))+(_30_i*uint32(i32(4)))))))-_nearby))
- if _35_d2 >= _34_dist {
- goto _70
+ if _35_d2 < _34_dist {
+ _29_closest = _30_i
+ _34_dist = _35_d2
}
-
- _29_closest = _30_i
- _34_dist = _35_d2
-_70:
_30_i += 1
goto _66
-
_69:
_65:
goto _71
-
_58:
_29_closest = uint32(i32(0))
_71:
_29_iPage = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(uint32(i32(8))+(_29_closest*uint32(i32(4)))))))
- if _29_iPage <= _mxPage {
- goto _72
+ if _29_iPage > _mxPage {
+ _rc = _sqlite3CorruptError(tls, i32(64883))
+ goto _end_allocate_page
}
-
- _rc = _sqlite3CorruptError(tls, i32(64883))
- goto _end_allocate_page
-
-_72:
if _2_searchList != 0 && (_29_iPage != _nearby && (_29_iPage >= _nearby || int32(_eMode) != i32(2))) {
goto _76
}
-
*_pPgno = _29_iPage
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pTrunk.X23))
- if _rc == 0 {
- goto _77
+ if _rc != 0 {
+ goto _end_allocate_page
}
-
- goto _end_allocate_page
-
-_77:
- if _29_closest >= (_k - uint32(i32(1))) {
- goto _78
+ if _29_closest < (_k - uint32(i32(1))) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(uint32(i32(8))+(_29_closest*uint32(i32(4))))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(uint32(i32(4))+(_k*uint32(i32(4))))))), uint32(i32(4)))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(uint32(i32(8))+(_29_closest*uint32(i32(4))))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(uint32(i32(4))+(_k*uint32(i32(4))))))), uint32(i32(4)))
-_78:
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_29_aData))+1*uintptr(i32(4)))), _k-uint32(i32(1)))
_39_noContent = func() int32 {
if _btreeGetHasContent(tls, _pBt, *_pPgno) == 0 {
@@ -45455,15 +41092,11 @@ _78:
if _rc != i32(0) {
goto _81
}
-
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*_ppPage).X23))
- if _rc == i32(0) {
- goto _82
+ if _rc != i32(0) {
+ _releasePage(tls, *_ppPage)
+ *_ppPage = nil
}
-
- _releasePage(tls, *_ppPage)
- *_ppPage = nil
-_82:
_81:
_2_searchList = uint8(i32(0))
_76:
@@ -45475,9 +41108,7 @@ _35:
if _2_searchList != 0 {
goto _19
}
-
goto _83
-
_7:
_43_bNoContent = func() int32 {
if i32(0) == int32(_pBt.X7) {
@@ -45486,79 +41117,57 @@ _7:
return i32(0)
}()
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23))
- if _rc == 0 {
- goto _86
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_86:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) += 1
- if (_pBt.X18) != ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
- goto _87
+ if (_pBt.X18) == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) += 1
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) += 1
-_87:
if (_pBt.X5) == 0 || _ptrmapPageno(tls, _pBt, _pBt.X18) != (_pBt.X18) {
goto _89
}
-
_44_pPg = nil
func() {
if (_pBt.X18) == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64950), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56512)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64950), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54690)))
crt.X__builtin_abort(tls)
}
}()
_rc = _btreeGetUnusedPage(tls, _pBt, _pBt.X18, &_44_pPg, _43_bNoContent)
- if _rc != i32(0) {
- goto _92
+ if _rc == i32(0) {
+ _rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_44_pPg.X23))
+ _releasePage(tls, _44_pPg)
}
-
- _rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_44_pPg.X23))
- _releasePage(tls, _44_pPg)
-_92:
- if _rc == 0 {
- goto _93
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_93:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) += 1
- if (_pBt.X18) != ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
- goto _94
+ if (_pBt.X18) == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) += 1
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(44 /* X18 */))) += 1
-_94:
_89:
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(28))))))+uintptr(unsafe.Pointer((*XMemPage)(_pBt.X3).X19)))), _pBt.X18)
*_pPgno = _pBt.X18
func() {
if (*_pPgno) == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64964), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64964), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54725)))
crt.X__builtin_abort(tls)
}
}()
_rc = _btreeGetUnusedPage(tls, _pBt, *_pPgno, _ppPage, _43_bNoContent)
- if _rc == 0 {
- goto _97
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_97:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*_ppPage).X23))
- if _rc == i32(0) {
- goto _98
+ if _rc != i32(0) {
+ _releasePage(tls, *_ppPage)
+ *_ppPage = nil
}
-
- _releasePage(tls, *_ppPage)
- *_ppPage = nil
-_98:
_83:
func() {
if (*_pPgno) == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64975), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64975), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54725)))
crt.X__builtin_abort(tls)
}
}()
@@ -45567,330 +41176,306 @@ _end_allocate_page:
_releasePage(tls, _pPrevTrunk)
func() {
if _rc == i32(0) && _sqlite3PagerPageRefcount(tls, (*XPgHdr)((*_ppPage).X23)) > i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64980), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56580)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64980), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54756)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _rc == i32(0) && int32((*_ppPage).X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64981), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(56648)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64981), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateBtreePageØ00__func__Ø000))), unsafe.Pointer(str(54821)))
crt.X__builtin_abort(tls)
}
}()
return _rc
+
+ _ = _2_nSearch
+ panic(0)
}
-var _allocateBtreePageØ00__func__Ø000 [18]int8 // -
+var _allocateBtreePageØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_allocateBtreePageØ00__func__Ø000[0], str(56688), 18)
+ crt.Xstrncpy(nil, &_allocateBtreePageØ00__func__Ø000[0], str(54859), 18)
}
-func _btreeGetUnusedPage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _ppPage **XMemPage, _flags int32) (r0 int32) { // sqlite3.c:61148:1
- var _rc int32 // sqlite3.c:61154:7
- _ = _rc
+// Get an unused page.
+//
+// This works just like btreeGetPage() with the addition:
+//
+// * If the page is already in use for some other purpose, immediately
+// release it and return an SQLITE_CURRUPT error.
+// * Make sure the isInit flag is clear
+func _btreeGetUnusedPage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _ppPage **XMemPage, _flags int32) (r0 int32) {
+ var _rc int32
_rc = _btreeGetPage(tls, _pBt, _pgno, _ppPage, _flags)
if _rc != i32(0) {
goto _0
}
-
- if _sqlite3PagerPageRefcount(tls, (*XPgHdr)((*_ppPage).X23)) <= i32(1) {
- goto _1
+ if _sqlite3PagerPageRefcount(tls, (*XPgHdr)((*_ppPage).X23)) > i32(1) {
+ _releasePage(tls, *_ppPage)
+ *_ppPage = nil
+ return _sqlite3CorruptError(tls, i32(61159))
}
-
- _releasePage(tls, *_ppPage)
- *_ppPage = nil
- return _sqlite3CorruptError(tls, i32(61159))
-
-_1:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_ppPage)) + uintptr(0 /* X0 */))) = uint8(i32(0))
goto _2
-
_0:
*_ppPage = nil
_2:
return _rc
}
-func _sqlite3PagerPageRefcount(tls *crt.TLS, _pPage *XPgHdr) (r0 int32) { // sqlite3.c:53542:1
+// Return the number of references to the specified page.
+func _sqlite3PagerPageRefcount(tls *crt.TLS, _pPage *XPgHdr) (r0 int32) {
return _sqlite3PcachePageRefcount(tls, _pPage)
}
-func _sqlite3AbsInt32(tls *crt.TLS, _x int32) (r0 int32) { // sqlite3.c:28995:1
- if _x < i32(0) {
- goto _0
+// Compute the absolute value of a 32-bit signed integer, of possible. Or
+// if the integer has a value of -2147483648, return +2147483647
+func _sqlite3AbsInt32(tls *crt.TLS, _x int32) (r0 int32) {
+ if _x >= i32(0) {
+ return _x
}
- return _x
-
-_0:
- if _x != i32(-2147483648) {
- goto _1
+ if _x == i32(-2147483648) {
+ return i32(2147483647)
}
- return i32(2147483647)
-
-_1:
return -_x
}
-func _btreeGetHasContent(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 int32) { // sqlite3.c:59616:1
- var _p *XBitvec // sqlite3.c:59617:10
- _ = _p
+// Query the BtShared.pHasContent vector.
+//
+// This function is called when a free-list leaf page is removed from the
+// free-list for reuse. It returns false if it is safe to retrieve the
+// page from the pager layer with the 'no-content' flag set. True otherwise.
+func _btreeGetHasContent(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 int32) {
+ var _p *XBitvec
_p = (*XBitvec)(_pBt.X22)
return bool2int((_p != nil) && ((_pgno > _sqlite3BitvecSize(tls, _p)) || _sqlite3BitvecTest(tls, _p, _pgno) != 0))
}
-func _sqlite3BitvecSize(tls *crt.TLS, _p *XBitvec) (r0 uint32) { // sqlite3.c:44001:1
+// Return the value of the iSize parameter specified when Bitvec *p
+// was created.
+func _sqlite3BitvecSize(tls *crt.TLS, _p *XBitvec) (r0 uint32) {
return _p.X0
}
-func _relocatePage(tls *crt.TLS, _pBt *XBtShared, _pDbPage *XMemPage, _eType uint8, _iPtrPage uint32, _iFreePage uint32, _isCommit int32) (r0 int32) { // sqlite3.c:62495:1
- var _pPtrPage *XMemPage // sqlite3.c:62503:11
- _ = _pPtrPage
- var _iDbPage uint32 // sqlite3.c:62504:8
- _ = _iDbPage
- var _pPager *XPager // sqlite3.c:62505:9
- _ = _pPager
- var _rc int32 // sqlite3.c:62506:7
- _ = _rc
- var _4_nextOvfl uint32 // sqlite3.c:62536:10
- _ = _4_nextOvfl
+// Move the open database page pDbPage to location iFreePage in the
+// database. The pDbPage reference remains valid.
+//
+// The isCommit flag indicates that there is no need to remember that
+// the journal needs to be sync()ed before database page pDbPage->pgno
+// can be written to. The caller has already promised not to write to that
+// page.
+func _relocatePage(tls *crt.TLS, _pBt *XBtShared, _pDbPage *XMemPage, _eType uint8, _iPtrPage uint32, _iFreePage uint32, _isCommit int32) (r0 int32) {
+ var _rc int32
+ var _iDbPage, _4_nextOvfl uint32
+ var _pPager *XPager
+ var _pPtrPage *XMemPage
_iDbPage = _pDbPage.X4
_pPager = (*XPager)(_pBt.X0)
func() {
if int32(_eType) != i32(4) && int32(_eType) != i32(3) && int32(_eType) != i32(5) && int32(_eType) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62508), unsafe.Pointer((*int8)(unsafe.Pointer(&_relocatePageØ00__func__Ø000))), unsafe.Pointer(str(56708)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62508), unsafe.Pointer((*int8)(unsafe.Pointer(&_relocatePageØ00__func__Ø000))), unsafe.Pointer(str(54877)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62510), unsafe.Pointer((*int8)(unsafe.Pointer(&_relocatePageØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62510), unsafe.Pointer((*int8)(unsafe.Pointer(&_relocatePageØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtShared)(_pDbPage.X18) != _pBt {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62511), unsafe.Pointer((*int8)(unsafe.Pointer(&_relocatePageØ00__func__Ø000))), unsafe.Pointer(str(56808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62511), unsafe.Pointer((*int8)(unsafe.Pointer(&_relocatePageØ00__func__Ø000))), unsafe.Pointer(str(54977)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerMovepage(tls, _pPager, (*XPgHdr)(_pDbPage.X23), _iFreePage, _isCommit)
- if _rc == i32(0) {
- goto _9
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_9:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDbPage)) + uintptr(4 /* X4 */))) = _iFreePage
if int32(_eType) != i32(5) && int32(_eType) != i32(1) {
goto _11
}
-
_rc = _setChildPtrmaps(tls, _pDbPage)
- if _rc == i32(0) {
- goto _12
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_12:
goto _13
-
_11:
_4_nextOvfl = _sqlite3Get4byte(tls, _pDbPage.X19)
if _4_nextOvfl == uint32(i32(0)) {
goto _14
}
-
_ptrmapPut(tls, _pBt, _4_nextOvfl, uint8(i32(4)), _iFreePage, &_rc)
- if _rc == i32(0) {
- goto _15
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_15:
_14:
_13:
if int32(_eType) == i32(1) {
goto _16
}
-
_rc = _btreeGetPage(tls, _pBt, _iPtrPage, &_pPtrPage, i32(0))
- if _rc == i32(0) {
- goto _17
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_17:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPtrPage.X23))
- if _rc == i32(0) {
- goto _18
+ if _rc != i32(0) {
+ _releasePage(tls, _pPtrPage)
+ return _rc
}
-
- _releasePage(tls, _pPtrPage)
- return _rc
-
-_18:
_rc = _modifyPagePointer(tls, _pPtrPage, _iDbPage, _iFreePage, _eType)
_releasePage(tls, _pPtrPage)
- if _rc != i32(0) {
- goto _19
+ if _rc == i32(0) {
+ _ptrmapPut(tls, _pBt, _iFreePage, _eType, _iPtrPage, &_rc)
}
-
- _ptrmapPut(tls, _pBt, _iFreePage, _eType, _iPtrPage, &_rc)
-_19:
_16:
- r0 = _rc
- return
-}
-
-var _relocatePageØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_relocatePageØ00__func__Ø000[0], str(56828), 13)
+ return _rc
}
-func _sqlite3PagerMovepage(tls *crt.TLS, _pPager *XPager, _pPg *XPgHdr, _pgno uint32, _isCommit int32) (r0 int32) { // sqlite3.c:53880:1
- var _pPgOld *XPgHdr // sqlite3.c:53881:9
- _ = _pPgOld
- var _needSyncPgno uint32 // sqlite3.c:53882:8
- _ = _needSyncPgno
- var _rc int32 // sqlite3.c:53883:7
- _ = _rc
- var _origPgno uint32 // sqlite3.c:53884:8
- _ = _origPgno
- var _8_pPgHdr *XPgHdr // sqlite3.c:53990:11
- _ = _8_pPgHdr
+var _relocatePageØ00__func__Ø000 [13]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_relocatePageØ00__func__Ø000[0], str(54995), 13)
+}
+
+// Move the page pPg to location pgno in the file.
+//
+// There must be no references to the page previously located at
+// pgno (which we call pPgOld) though that page is allowed to be
+// in cache. If the page previously located at pgno is not already
+// in the rollback journal, it is not put there by by this routine.
+//
+// References to the page pPg remain valid. Updating any
+// meta-data associated with pPg (i.e. data stored in the nExtra bytes
+// allocated along with the page) is the responsibility of the caller.
+//
+// A transaction must be active when this routine is called. It used to be
+// required that a statement transaction was not active, but this restriction
+// has been removed (CREATE INDEX needs to move a page when a statement
+// transaction is active).
+//
+// If the fourth argument, isCommit, is non-zero, then this page is being
+// moved as part of a database reorganization just before the transaction
+// is being committed. In this case, it is guaranteed that the database page
+// pPg refers to will not be written to again within this transaction.
+//
+// This function may return SQLITE_NOMEM or an IO error code if an error
+// occurs. Otherwise, it returns SQLITE_OK.
+func _sqlite3PagerMovepage(tls *crt.TLS, _pPager *XPager, _pPg *XPgHdr, _pgno uint32, _isCommit int32) (r0 int32) {
+ var _rc int32
+ var _needSyncPgno, _origPgno uint32
+ var _pPgOld, _8_pPgHdr *XPgHdr
_needSyncPgno = u32(0)
func() {
if int32(_pPg.X7) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(56844)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(55008)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) != i32(3) && int32(_pPager.X14) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(56856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(55020)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53890), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53890), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X10) == 0 && (_pPager.X13) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53895), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(56932)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53895), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(55096)))
crt.X__builtin_abort(tls)
}
}()
if (_pPager.X10) == 0 {
goto _10
}
-
_rc = _sqlite3PagerWrite(tls, _pPg)
- if _rc == 0 {
- goto _11
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_11:
_10:
- if (int32(_pPg.X6)&i32(2)) == i32(0) || i32(0) == store1(&_rc, _subjournalPageIfRequired(tls, _pPg)) {
- goto _13
+ if ((int32(_pPg.X6) & i32(2)) != i32(0)) && (i32(0) != store1(&_rc, _subjournalPageIfRequired(tls, _pPg))) {
+ return _rc
}
- return _rc
-
-_13:
- if (int32(_pPg.X6)&i32(8)) == 0 || _isCommit != 0 {
- goto _15
+ if (int32(_pPg.X6)&i32(8)) != 0 && (_isCommit == 0) {
+ _needSyncPgno = _pPg.X5
+ func() {
+ if int32(_pPager.X2) != i32(2) && _pageInJournal(tls, _pPager, _pPg) == 0 && (_pPg.X5) <= (_pPager.X23) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(55123)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pPg.X6) & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53940), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(54035)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _needSyncPgno = _pPg.X5
- func() {
- if int32(_pPager.X2) != i32(2) && _pageInJournal(tls, _pPager, _pPg) == 0 && (_pPg.X5) <= (_pPager.X23) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(56960)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32(_pPg.X6) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53940), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(55816)))
- crt.X__builtin_abort(tls)
- }
- }()
-_15:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) & i32(-9))
- sink12 = *p
+ sink14 = *p
}
_pPgOld = _sqlite3PagerLookup(tls, _pPager, _pgno)
func() {
if _pPgOld != nil && int32(_pPgOld.X7) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53950), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(57068)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53950), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(55228)))
crt.X__builtin_abort(tls)
}
}()
if _pPgOld == nil {
goto _25
}
-
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) | (int32(_pPgOld.X6) & i32(8)))
- sink12 = *p
+ sink14 = *p
}
- if (_pPager.X10) == 0 {
- goto _26
+ if (_pPager.X10) != 0 {
+ _sqlite3PcacheMove(tls, _pPgOld, (_pPager.X22)+uint32(i32(1)))
+ goto _27
}
-
- _sqlite3PcacheMove(tls, _pPgOld, (_pPager.X22)+uint32(i32(1)))
- goto _27
-
-_26:
_sqlite3PcacheDrop(tls, _pPgOld)
_27:
_25:
_origPgno = _pPg.X5
_sqlite3PcacheMove(tls, _pPg, _pgno)
_sqlite3PcacheMakeDirty(tls, _pPg)
- if (_pPager.X10) == 0 || _pPgOld == nil {
- goto _29
+ if ((_pPager.X10) != 0) && (_pPgOld != nil) {
+ _sqlite3PcacheMove(tls, _pPgOld, _origPgno)
+ _sqlite3PagerUnrefNotNull(tls, _pPgOld)
}
-
- _sqlite3PcacheMove(tls, _pPgOld, _origPgno)
- _sqlite3PagerUnrefNotNull(tls, _pPgOld)
-_29:
if _needSyncPgno == 0 {
goto _30
}
-
_rc = _sqlite3PagerGet(tls, _pPager, _needSyncPgno, &_8_pPgHdr, i32(0))
if _rc == i32(0) {
goto _31
}
-
- if _needSyncPgno > (_pPager.X23) {
- goto _32
+ if _needSyncPgno <= (_pPager.X23) {
+ func() {
+ if (_pPager.X58) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(55255)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3BitvecClear(tls, (*XBitvec)(_pPager.X30), _needSyncPgno, (unsafe.Pointer)(_pPager.X58))
}
-
- func() {
- if (_pPager.X58) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMovepageØ00__func__Ø000))), unsafe.Pointer(str(57096)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3BitvecClear(tls, (*XBitvec)(_pPager.X30), _needSyncPgno, (unsafe.Pointer)(_pPager.X58))
-_32:
return _rc
_31:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pPgHdr)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ sink14 = *p
}
_sqlite3PcacheMakeDirty(tls, _8_pPgHdr)
_sqlite3PagerUnrefNotNull(tls, _8_pPgHdr)
@@ -45898,31 +41483,31 @@ _30:
return i32(0)
}
-var _sqlite3PagerMovepageØ00__func__Ø000 [21]int8 // -
+var _sqlite3PagerMovepageØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerMovepageØ00__func__Ø000[0], str(57120), 21)
+ crt.Xstrncpy(nil, &_sqlite3PagerMovepageØ00__func__Ø000[0], str(55276), 21)
}
-func _sqlite3PcacheMove(tls *crt.TLS, _p *XPgHdr, _newPgno uint32) { // sqlite3.c:44749:1
- var _pCache *XPCache // sqlite3.c:44750:10
- _ = _pCache
+// Change the page number of page p to newPgno.
+func _sqlite3PcacheMove(tls *crt.TLS, _p *XPgHdr, _newPgno uint32) {
+ var _pCache *XPCache
_pCache = (*XPCache)(_p.X8)
func() {
if int32(_p.X7) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44751), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMoveØ00__func__Ø000))), unsafe.Pointer(str(12860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44751), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMoveØ00__func__Ø000))), unsafe.Pointer(str(13857)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _newPgno <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44752), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMoveØ00__func__Ø000))), unsafe.Pointer(str(57144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44752), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMoveØ00__func__Ø000))), unsafe.Pointer(str(55297)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PcachePageSanity(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44753), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMoveØ00__func__Ø000))), unsafe.Pointer(str(12872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44753), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheMoveØ00__func__Ø000))), unsafe.Pointer(str(13867)))
crt.X__builtin_abort(tls)
}
}()
@@ -45930,38 +41515,30 @@ func _sqlite3PcacheMove(tls *crt.TLS, _p *XPgHdr, _newPgno uint32) { // sqlite3.
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, uint32, uint32)
}{((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X9)})))(tls, _pCache.X12, (*Xsqlite3_pcache_page)(_p.X0), _p.X5, _newPgno)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = _newPgno
- if (int32(_p.X6)&i32(2)) == 0 || (int32(_p.X6)&i32(8)) == 0 {
- goto _7
+ if (int32(_p.X6)&i32(2)) != 0 && (int32(_p.X6)&i32(8)) != 0 {
+ _pcacheManageDirtyList(tls, _p, uint8(i32(3)))
}
-
- _pcacheManageDirtyList(tls, _p, uint8(i32(3)))
-_7:
}
-var _sqlite3PcacheMoveØ00__func__Ø000 [18]int8 // -
+var _sqlite3PcacheMoveØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheMoveØ00__func__Ø000[0], str(57156), 18)
+ crt.Xstrncpy(nil, &_sqlite3PcacheMoveØ00__func__Ø000[0], str(55307), 18)
}
-func _sqlite3BitvecClear(tls *crt.TLS, _p *XBitvec, _i uint32, _pBuf unsafe.Pointer) { // sqlite3.c:43949:1
- var _1_bin uint32 // sqlite3.c:43954:9
- _ = _1_bin
- var _4_j uint32 // sqlite3.c:43964:18
- _ = _4_j
- var _4_aiValues *uint32 // sqlite3.c:43965:9
- _ = _4_aiValues
- var _6_h uint32 // sqlite3.c:43971:13
- _ = _6_h
- if _p != nil {
- goto _0
+// Clear the i-th bit.
+//
+// pBuf must be a pointer to at least BITVEC_SZ bytes of temporary storage
+// that BitvecClear can use to rebuilt its hash table.
+func _sqlite3BitvecClear(tls *crt.TLS, _p *XBitvec, _i uint32, _pBuf unsafe.Pointer) {
+ var _1_bin, _4_j, _6_h uint32
+ var _4_aiValues *uint32
+ if _p == nil {
+ return
}
- return
-
-_0:
func() {
if _i <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(43951), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecClearØ00__func__Ø000))), unsafe.Pointer(str(11928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(43951), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BitvecClearØ00__func__Ø000))), unsafe.Pointer(str(12970)))
crt.X__builtin_abort(tls)
}
}()
@@ -45970,247 +41547,188 @@ _3:
if (_p.X2) == 0 {
goto _4
}
-
_1_bin = _i / (_p.X2)
_i = _i % (_p.X2)
- _p = *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))
- if _p != nil {
- goto _5
+ _p = *(**XBitvec)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]unsafe.Pointer)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_1_bin)))
+ if _p == nil {
+ return
}
- return
-
-_5:
goto _3
-
_4:
- if (_p.X0) > u32(4000) {
- goto _6
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[500]uint8)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 1*uintptr(_i/uint32(i32(8)))))
- *p = uint8(int32(*p) & (^(i32(1) << uint(int32(_i&uint32(i32(7)))))))
- sink2 = *p
+ if (_p.X0) <= u32(4000) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[500]uint8)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 1*uintptr(_i/uint32(i32(8)))))
+ *p = uint8(int32(*p) & (^(i32(1) << uint(int32(_i&uint32(i32(7)))))))
+ sink2 = *p
+ }
+ goto _7
}
- goto _7
-
-_6:
_4_aiValues = (*uint32)(_pBuf)
- crt.Xmemcpy(tls, (unsafe.Pointer)(_4_aiValues), (unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), u32(500))
- crt.Xmemset(tls, (unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), i32(0), u32(500))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_4_aiValues), (unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), u32(500))
+ crt.Xmemset(tls, (unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */)))))), i32(0), u32(500))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = uint32(i32(0))
_4_j = uint32(i32(0))
_8:
if _4_j >= u32(125) {
goto _11
}
-
if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_aiValues)) + 4*uintptr(_4_j)))) == 0 || (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_aiValues)) + 4*uintptr(_4_j)))) == (_i+uint32(i32(1))) {
goto _13
}
-
_6_h = (((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_aiValues)) + 4*uintptr(_4_j)))) - uint32(i32(1))) * uint32(i32(1))) % u32(125)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) += 1
_14:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_6_h)))) == 0 {
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_6_h)))) == 0 {
goto _15
}
-
_6_h += 1
- if _6_h < u32(125) {
- goto _16
+ if _6_h >= u32(125) {
+ _6_h = uint32(i32(0))
}
-
- _6_h = uint32(i32(0))
-_16:
goto _14
-
_15:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t20)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_6_h))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_aiValues)) + 4*uintptr(_4_j)))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[125]uint32)(unsafe.Pointer((*t22)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))))))) + 4*uintptr(_6_h))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_aiValues)) + 4*uintptr(_4_j)))
_13:
_4_j += 1
goto _8
-
_11:
_7:
}
-var _sqlite3BitvecClearØ00__func__Ø000 [19]int8 // -
+var _sqlite3BitvecClearØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BitvecClearØ00__func__Ø000[0], str(57176), 19)
+ crt.Xstrncpy(nil, &_sqlite3BitvecClearØ00__func__Ø000[0], str(55325), 19)
}
-func _setChildPtrmaps(tls *crt.TLS, _pPage *XMemPage) (r0 int32) { // sqlite3.c:62389:1
- var _i int32 // sqlite3.c:62390:7
- _ = _i
- var _nCell int32 // sqlite3.c:62391:7
- _ = _nCell
- var _rc int32 // sqlite3.c:62392:7
- _ = _rc
- var _pBt *XBtShared // sqlite3.c:62393:12
- _ = _pBt
- var _pgno uint32 // sqlite3.c:62394:8
- _ = _pgno
- var _1_pCell *uint8 // sqlite3.c:62402:8
- _ = _1_pCell
- var _2_childPgno uint32 // sqlite3.c:62407:12
- _ = _2_childPgno
- var _3_childPgno uint32 // sqlite3.c:62413:10
- _ = _3_childPgno
+// Set the pointer-map entries for all children of page pPage. Also, if
+// pPage contains cells that point to overflow pages, set the pointer
+// map entries for the overflow pages as well.
+func _setChildPtrmaps(tls *crt.TLS, _pPage *XMemPage) (r0 int32) {
+ var _i, _nCell, _rc int32
+ var _pgno, _2_childPgno, _3_childPgno uint32
+ var _1_pCell *uint8
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_pPage.X18)
_pgno = _pPage.X4
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62396), unsafe.Pointer((*int8)(unsafe.Pointer(&_setChildPtrmapsØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62396), unsafe.Pointer((*int8)(unsafe.Pointer(&_setChildPtrmapsØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
_rc = _btreeInitPage(tls, _pPage)
- if _rc == i32(0) {
- goto _2
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_2:
_nCell = int32(_pPage.X14)
_i = i32(0)
_3:
if _i >= _nCell {
goto _6
}
-
_1_pCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*_i))))) + 1*uintptr(i32(0)))))< uint32(i32(65536)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60845), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInitPageØ00__func__Ø000))), unsafe.Pointer(str(55116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60845), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInitPageØ00__func__Ø000))), unsafe.Pointer(str(53374)))
crt.X__builtin_abort(tls)
}
}()
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(24 /* X15 */))) = uint16((_1_pBt.X15) - uint32(i32(1)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(12 /* X9 */))) = uint8(i32(0))
_1_usableSize = int32(_1_pBt.X16)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(18 /* X12 */))) = store12(&_1_cellOffset, uint16((int32(_1_hdr)+i32(8))+int32(_pPage.X7)))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(18 /* X12 */))) = store14(&_1_cellOffset, uint16((int32(_1_hdr)+i32(8))+int32(_pPage.X7)))
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(60 /* X20 */))) = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data)) + 1*uintptr(_1_usableSize)))
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(64 /* X21 */))) = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data)) + 1*uintptr(_1_cellOffset)))
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(68 /* X22 */))) = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data)) + 1*uintptr(_pPage.X7)))
_1_top = ((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_hdr)+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_hdr)+i32(5)))))) + 1*uintptr(i32(1)))))) - i32(1)) & i32(65535)) + i32(1)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(22 /* X14 */))) = uint16((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_hdr)+i32(3)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_hdr)+i32(3)))))) + 1*uintptr(i32(1))))))
- if uint32(_pPage.X14) <= (((_1_pBt.X15) - uint32(i32(8))) / uint32(i32(6))) {
- goto _17
+ if uint32(_pPage.X14) > (((_1_pBt.X15) - uint32(i32(8))) / uint32(i32(6))) {
+ return _sqlite3CorruptError(tls, i32(60862))
}
- return _sqlite3CorruptError(tls, i32(60862))
-
-_17:
func() {
if int32(_pPage.X14) <= i32(0) && _1_top != _1_usableSize && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60869), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInitPageØ00__func__Ø000))), unsafe.Pointer(str(57400)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60869), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeInitPageØ00__func__Ø000))), unsafe.Pointer(str(55542)))
crt.X__builtin_abort(tls)
}
}()
@@ -46219,210 +41737,157 @@ _17:
if (((*Xsqlite3)(_1_pBt.X1).X6) & i32(536870912)) == 0 {
goto _22
}
-
- if (_pPage.X5) != 0 {
- goto _23
+ if (_pPage.X5) == 0 {
+ _1_iCellLast -= 1
}
-
- _1_iCellLast -= 1
-_23:
_3_i = i32(0)
_24:
if _3_i >= int32(_pPage.X14) {
goto _27
}
-
_1_pc = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_cellOffset)+(_3_i*i32(2))))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_cellOffset)+(_3_i*i32(2))))))) + 1*uintptr(i32(1)))))
- if _1_pc >= _1_iCellFirst && _1_pc <= _1_iCellLast {
- goto _29
+ if (_1_pc < _1_iCellFirst) || (_1_pc > _1_iCellLast) {
+ return _sqlite3CorruptError(tls, i32(60890))
}
- return _sqlite3CorruptError(tls, i32(60890))
-
-_29:
_3_sz = int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{(_pPage.X24)})))(tls, _pPage, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(_1_pc)))))
- if (_1_pc + _3_sz) <= _1_usableSize {
- goto _30
+ if (_1_pc + _3_sz) > _1_usableSize {
+ return _sqlite3CorruptError(tls, i32(60895))
}
- return _sqlite3CorruptError(tls, i32(60895))
-
-_30:
_3_i += 1
goto _24
-
_27:
- if (_pPage.X5) != 0 {
- goto _31
+ if (_pPage.X5) == 0 {
+ _1_iCellLast += 1
}
-
- _1_iCellLast += 1
-_31:
_22:
_1_pc = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_hdr)+i32(1)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(int32(_1_hdr)+i32(1)))))) + 1*uintptr(i32(1)))))
_1_nFree = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data)) + 1*uintptr(int32(_1_hdr)+i32(7))))) + _1_top
if _1_pc <= i32(0) {
goto _32
}
-
- if _1_pc >= _1_iCellFirst {
- goto _33
+ if _1_pc < _1_iCellFirst {
+ return _sqlite3CorruptError(tls, i32(60913))
}
- return _sqlite3CorruptError(tls, i32(60913))
-
-_33:
_34:
- if _1_pc <= _1_iCellLast {
- goto _36
+ if _1_pc > _1_iCellLast {
+ return _sqlite3CorruptError(tls, i32(60917))
}
- return _sqlite3CorruptError(tls, i32(60917))
-
-_36:
_7_next = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(_1_pc))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(_1_pc))))) + 1*uintptr(i32(1))))))
_7_size = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(_1_pc+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_data))+1*uintptr(_1_pc+i32(2)))))) + 1*uintptr(i32(1))))))
_1_nFree = int32(uint32(_1_nFree) + _7_size)
- if _7_next > ((uint32(_1_pc) + _7_size) + uint32(i32(3))) {
- goto _37
+ if _7_next <= ((uint32(_1_pc) + _7_size) + uint32(i32(3))) {
+ goto _35
}
-
- goto _35
-
-_37:
_1_pc = int32(_7_next)
goto _34
-
_35:
- if _7_next <= uint32(i32(0)) {
- goto _38
+ if _7_next > uint32(i32(0)) {
+ return _sqlite3CorruptError(tls, i32(60926))
}
- return _sqlite3CorruptError(tls, i32(60926))
-
-_38:
- if (uint32(_1_pc) + _7_size) <= uint32(_1_usableSize) {
- goto _39
+ if (uint32(_1_pc) + _7_size) > uint32(_1_usableSize) {
+ return _sqlite3CorruptError(tls, i32(60929))
}
- return _sqlite3CorruptError(tls, i32(60929))
-
-_39:
_32:
- if _1_nFree <= _1_usableSize {
- goto _40
+ if _1_nFree > _1_usableSize {
+ return _sqlite3CorruptError(tls, i32(60941))
}
- return _sqlite3CorruptError(tls, i32(60941))
-
-_40:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(20 /* X13 */))) = uint16(_1_nFree - _1_iCellFirst)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = uint8(i32(1))
_12:
return i32(0)
}
-var _btreeInitPageØ00__func__Ø000 [14]int8 // -
+var _btreeInitPageØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_btreeInitPageØ00__func__Ø000[0], str(57448), 14)
+ crt.Xstrncpy(nil, &_btreeInitPageØ00__func__Ø000[0], str(55590), 14)
}
-func _ptrmapPutOvflPtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pRC *int32) { // sqlite3.c:60341:1
- var _info XCellInfo // sqlite3.c:60342:12
- _ = _info
- var _1_ovfl uint32 // sqlite3.c:60347:10
- _ = _1_ovfl
- if (*_pRC) == 0 {
- goto _0
+// If the cell pCell, part of page pPage contains a pointer
+// to an overflow page, insert an entry into the pointer-map
+// for the overflow page.
+func _ptrmapPutOvflPtr(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pRC *int32) {
+ var _1_ovfl uint32
+ var _info XCellInfo
+ if (*_pRC) != 0 {
+ return
}
- return
-
-_0:
func() {
if _pCell == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60344), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutOvflPtrØ00__func__Ø000))), unsafe.Pointer(str(57464)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60344), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutOvflPtrØ00__func__Ø000))), unsafe.Pointer(str(55604)))
crt.X__builtin_abort(tls)
}
}()
(*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
}{(_pPage.X25)})))(tls, _pPage, _pCell, &_info)
- if uint32(_info.X3) >= (_info.X2) {
- goto _3
+ if uint32(_info.X3) < (_info.X2) {
+ _1_ovfl = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(int32(_info.X4)-i32(4)))))
+ _ptrmapPut(tls, (*XBtShared)(_pPage.X18), _1_ovfl, uint8(i32(3)), _pPage.X4, _pRC)
}
-
- _1_ovfl = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(int32(_info.X4)-i32(4)))))
- _ptrmapPut(tls, (*XBtShared)(_pPage.X18), _1_ovfl, uint8(i32(3)), _pPage.X4, _pRC)
-_3:
+ _ = _info
}
-var _ptrmapPutOvflPtrØ00__func__Ø000 [17]int8 // -
+var _ptrmapPutOvflPtrØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_ptrmapPutOvflPtrØ00__func__Ø000[0], str(57476), 17)
+ crt.Xstrncpy(nil, &_ptrmapPutOvflPtrØ00__func__Ø000[0], str(55613), 17)
}
-func _ptrmapPut(tls *crt.TLS, _pBt *XBtShared, _key uint32, _eType uint8, _parent uint32, _pRC *int32) { // sqlite3.c:59958:1
- var _pDbPage *XPgHdr // sqlite3.c:59959:10
- _ = _pDbPage
- var _pPtrmap *uint8 // sqlite3.c:59960:6
- _ = _pPtrmap
- var _iPtrmap uint32 // sqlite3.c:59961:8
- _ = _iPtrmap
- var _offset int32 // sqlite3.c:59962:7
- _ = _offset
- var _rc int32 // sqlite3.c:59963:7
- _ = _rc
- if (*_pRC) == 0 {
- goto _0
+// Write an entry into the pointer map.
+//
+// This routine updates the pointer map entry for page number 'key'
+// so that it maps to type 'eType' and parent page number 'pgno'.
+//
+// If *pRC is initially non-zero (non-SQLITE_OK) then this routine is
+// a no-op. If an error occurs, the appropriate error code is written
+// into *pRC.
+func _ptrmapPut(tls *crt.TLS, _pBt *XBtShared, _key uint32, _eType uint8, _parent uint32, _pRC *int32) {
+ var _offset, _rc int32
+ var _iPtrmap uint32
+ var _pPtrmap *uint8
+ var _pDbPage *XPgHdr
+ if (*_pRC) != 0 {
+ return
}
- return
-
-_0:
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59967), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59967), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if i32(0) != bool2int(_ptrmapPageno(tls, _pBt, (uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) == ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59969), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(57496)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59969), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(55630)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pBt.X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59971), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(56172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59971), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(54378)))
crt.X__builtin_abort(tls)
}
}()
- if _key != uint32(i32(0)) {
- goto _7
+ if _key == uint32(i32(0)) {
+ *_pRC = _sqlite3CorruptError(tls, i32(59973))
+ return
}
-
- *_pRC = _sqlite3CorruptError(tls, i32(59973))
- return
-
-_7:
_iPtrmap = _ptrmapPageno(tls, _pBt, _key)
_rc = _sqlite3PagerGet(tls, (*XPager)(_pBt.X0), _iPtrmap, &_pDbPage, i32(0))
- if _rc == i32(0) {
- goto _8
+ if _rc != i32(0) {
+ *_pRC = _rc
+ return
}
-
- *_pRC = _rc
- return
-
-_8:
_offset = int32(uint32(i32(5)) * ((_key - _iPtrmap) - uint32(i32(1))))
- if _offset >= i32(0) {
- goto _9
+ if _offset < i32(0) {
+ *_pRC = _sqlite3CorruptError(tls, i32(59984))
+ goto _ptrmap_exit
}
-
- *_pRC = _sqlite3CorruptError(tls, i32(59984))
- goto _ptrmap_exit
-
-_9:
func() {
if _offset > (int32(_pBt.X16) - i32(5)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59987), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(19584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59987), unsafe.Pointer((*int8)(unsafe.Pointer(&_ptrmapPutØ00__func__Ø000))), unsafe.Pointer(str(20097)))
crt.X__builtin_abort(tls)
}
}()
@@ -46430,251 +41895,237 @@ _9:
if int32(_eType) == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap)) + 1*uintptr(_offset)))) && _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap))+1*uintptr(_offset+i32(1))))) == _parent {
goto _13
}
-
*_pRC = store1(&_rc, _sqlite3PagerWrite(tls, _pDbPage))
- if _rc != i32(0) {
- goto _14
+ if _rc == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap)) + 1*uintptr(_offset))) = _eType
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap))+1*uintptr(_offset+i32(1)))), _parent)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap)) + 1*uintptr(_offset))) = _eType
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPtrmap))+1*uintptr(_offset+i32(1)))), _parent)
-_14:
_13:
_ptrmap_exit:
_sqlite3PagerUnref(tls, _pDbPage)
}
-var _ptrmapPutØ00__func__Ø000 [10]int8 // -
+var _ptrmapPutØ00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_ptrmapPutØ00__func__Ø000[0], str(57544), 10)
+ crt.Xstrncpy(nil, &_ptrmapPutØ00__func__Ø000[0], str(55676), 10)
}
-func _modifyPagePointer(tls *crt.TLS, _pPage *XMemPage, _iFrom uint32, _iTo uint32, _eType uint8) (r0 int32) { // sqlite3.c:62434:1
- var _3_i int32 // sqlite3.c:62444:9
- _ = _3_i
- var _3_nCell int32 // sqlite3.c:62445:9
- _ = _3_nCell
- var _3_rc int32 // sqlite3.c:62446:9
- _ = _3_rc
- var _4_pCell *uint8 // sqlite3.c:62453:10
- _ = _4_pCell
- var _5_info XCellInfo // sqlite3.c:62455:18
- _ = _5_info
+// Somewhere on pPage is a pointer to page iFrom. Modify this pointer so
+// that it points to iTo. Parameter eType describes the type of pointer to
+// be modified, as follows:
+//
+// PTRMAP_BTREE: pPage is a btree-page. The pointer points at a child
+// page of pPage.
+//
+// PTRMAP_OVERFLOW1: pPage is a btree-page. The pointer points at an overflow
+// page pointed to by one of the cells on pPage.
+//
+// PTRMAP_OVERFLOW2: pPage is an overflow-page. The pointer points at the next
+// overflow page in the list.
+func _modifyPagePointer(tls *crt.TLS, _pPage *XMemPage, _iFrom uint32, _iTo uint32, _eType uint8) (r0 int32) {
+ var _3_i, _3_nCell, _3_rc int32
+ var _4_pCell *uint8
+ var _5_info XCellInfo
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62435), unsafe.Pointer((*int8)(unsafe.Pointer(&_modifyPagePointerØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62435), unsafe.Pointer((*int8)(unsafe.Pointer(&_modifyPagePointerØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62436), unsafe.Pointer((*int8)(unsafe.Pointer(&_modifyPagePointerØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62436), unsafe.Pointer((*int8)(unsafe.Pointer(&_modifyPagePointerØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
if int32(_eType) != i32(4) {
goto _4
}
-
- if _sqlite3Get4byte(tls, _pPage.X19) == _iFrom {
- goto _5
+ if _sqlite3Get4byte(tls, _pPage.X19) != _iFrom {
+ return _sqlite3CorruptError(tls, i32(62440))
}
- return _sqlite3CorruptError(tls, i32(62440))
-
-_5:
_sqlite3Put4byte(tls, _pPage.X19, _iTo)
goto _6
-
_4:
_3_rc = _btreeInitPage(tls, _pPage)
- if _3_rc == 0 {
- goto _7
+ if _3_rc != 0 {
+ return _3_rc
}
- return _3_rc
-
-_7:
_3_nCell = int32(_pPage.X14)
_3_i = i32(0)
_8:
if _3_i >= _3_nCell {
goto _11
}
-
_4_pCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*_3_i))))) + 1*uintptr(i32(0)))))<= (_5_info.X2) {
goto _13
}
-
- if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_4_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_info.X4))))))))) <= uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((*XBtShared)(_pPage.X18).X16))))))))) {
- goto _14
+ if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_4_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_info.X4))))))))) > uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((*XBtShared)(_pPage.X18).X16))))))))) {
+ return _sqlite3CorruptError(tls, i32(62459))
}
- return _sqlite3CorruptError(tls, i32(62459))
-
-_14:
- if _iFrom != _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_4_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_info.X4)))))))))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4))))))))) {
- goto _15
+ if _iFrom == _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_4_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_info.X4)))))))))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4))))))))) {
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_4_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_info.X4)))))))))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4)))))))), _iTo)
+ goto _11
}
-
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_4_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_5_info.X4)))))))))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4)))))))), _iTo)
- goto _11
-
-_15:
_13:
goto _16
-
_12:
- if _sqlite3Get4byte(tls, _4_pCell) != _iFrom {
- goto _17
+ if _sqlite3Get4byte(tls, _4_pCell) == _iFrom {
+ _sqlite3Put4byte(tls, _4_pCell, _iTo)
+ goto _11
}
-
- _sqlite3Put4byte(tls, _4_pCell, _iTo)
- goto _11
-
-_17:
_16:
_3_i += 1
goto _8
-
_11:
if _3_i != _3_nCell {
goto _18
}
-
- if int32(_eType) == i32(5) && _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(int32(_pPage.X6)+i32(8))))) == _iFrom {
- goto _20
+ if (int32(_eType) != i32(5)) || (_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(int32(_pPage.X6)+i32(8))))) != _iFrom) {
+ return _sqlite3CorruptError(tls, i32(62477))
}
- return _sqlite3CorruptError(tls, i32(62477))
-
-_20:
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(int32(_pPage.X6)+i32(8)))), _iTo)
_18:
_6:
- r0 = i32(0)
- return
+ return i32(0)
+
+ _ = _5_info
+ panic(0)
}
-var _modifyPagePointerØ00__func__Ø000 [18]int8 // -
+var _modifyPagePointerØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_modifyPagePointerØ00__func__Ø000[0], str(57556), 18)
+ crt.Xstrncpy(nil, &_modifyPagePointerØ00__func__Ø000[0], str(55686), 18)
}
-func _sqlite3PagerTruncateImage(tls *crt.TLS, _pPager *XPager, _nPage uint32) { // sqlite3.c:50875:1
+// Truncate the in-memory database file image to nPage pages. This
+// function does not actually modify the database file on disk. It
+// just sets the internal state of the pager object so that the
+// truncation will be done when the current transaction is committed.
+//
+// This function is only called right before committing a transaction.
+// Once this function has been called, the transaction must either be
+// rolled back or committed. It is not safe to call this function and
+// then continue writing to the database.
+func _sqlite3PagerTruncateImage(tls *crt.TLS, _pPager *XPager, _nPage uint32) {
func() {
if (_pPager.X22) < _nPage {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50876), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerTruncateImageØ00__func__Ø000))), unsafe.Pointer(str(57576)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50876), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerTruncateImageØ00__func__Ø000))), unsafe.Pointer(str(55704)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X14) < i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerTruncateImageØ00__func__Ø000))), unsafe.Pointer(str(12304)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerTruncateImageØ00__func__Ø000))), unsafe.Pointer(str(13332)))
crt.X__builtin_abort(tls)
}
}()
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(28 /* X22 */))) = _nPage
}
-var _sqlite3PagerTruncateImageØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerTruncateImageØ00__func__Ø000[0], str(57600), 26)
-}
-
-func _sqlite3PagerCommitPhaseOne(tls *crt.TLS, _pPager *XPager, _zMaster *int8, _noSync int32) (r0 int32) { // sqlite3.c:53221:1
- var _rc int32 // sqlite3.c:53226:7
- _ = _rc
- var _3_pList *XPgHdr // sqlite3.c:53256:13
- _ = _3_pList
- var _3_pPageOne *XPgHdr // sqlite3.c:53257:13
- _ = _3_pPageOne
- var _9_nNew uint32 // sqlite3.c:53361:14
- _ = _9_nNew
+var _sqlite3PagerTruncateImageØ00__func__Ø000 [26]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerTruncateImageØ00__func__Ø000[0], str(55726), 26)
+}
+
+// Sync the database file for the pager pPager. zMaster points to the name
+// of a master journal file that should be written into the individual
+// journal file. zMaster may be NULL, which is interpreted as no master
+// journal (a single database transaction).
+//
+// This routine ensures that:
+//
+// * The database file change-counter is updated,
+// * the journal is synced (unless the atomic-write optimization is used),
+// * all dirty pages are written to the database file,
+// * the database file is truncated (if required), and
+// * the database file synced.
+//
+// The only thing that remains to commit the transaction is to finalize
+// (delete, truncate or zero the first part of) the journal file (or
+// delete the master journal file if specified).
+//
+// Note that if zMaster==NULL, this does not overwrite a previous value
+// passed to an sqlite3PagerCommitPhaseOne() call.
+//
+// If the final parameter - noSync - is true, then the database file itself
+// is not synced. The caller must call sqlite3PagerSync() directly to
+// sync the database file before calling CommitPhaseTwo() to delete the
+// journal file in this case.
+func _sqlite3PagerCommitPhaseOne(tls *crt.TLS, _pPager *XPager, _zMaster *int8, _noSync int32) (r0 int32) {
+ var _rc int32
+ var _9_nNew uint32
+ var _3_pList, _3_pPageOne *XPgHdr
_rc = i32(0)
func() {
if int32(_pPager.X14) != i32(2) && int32(_pPager.X14) != i32(3) && int32(_pPager.X14) != i32(4) && int32(_pPager.X14) != i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53228), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(57628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53228), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(55752)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
if func() int32 {
if (_pPager.X26) != 0 {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53236), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _9
+ }() != 0 {
+ return _pPager.X26
}
- return _pPager.X26
-
-_9:
- if _sqlite3FaultSim(tls, i32(400)) == 0 {
- goto _10
+ if _sqlite3FaultSim(tls, i32(400)) != 0 {
+ return i32(10)
}
- return i32(10)
-
-_10:
- if int32(_pPager.X14) >= i32(3) {
- goto _11
+ if int32(_pPager.X14) < i32(3) {
+ return i32(0)
}
- return i32(0)
-
-_11:
func() {
if int32(_pPager.X13) != i32(0) && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(57776)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53247), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(55898)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53248), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(19024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53248), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(19565)))
crt.X__builtin_abort(tls)
}
}()
- if i32(0) != _pagerFlushOnCommit(tls, _pPager, i32(1)) {
- goto _18
+ if i32(0) == _pagerFlushOnCommit(tls, _pPager, i32(1)) {
+ _sqlite3BackupRestart(tls, (*Xsqlite3_backup)(_pPager.X36))
+ goto _19
}
-
- _sqlite3BackupRestart(tls, (*Xsqlite3_backup)(_pPager.X36))
- goto _19
-
-_18:
if (*XWal)(_pPager.X60) == nil {
goto _20
}
-
_3_pList = _sqlite3PcacheDirtyList(tls, (*XPCache)(_pPager.X59))
_3_pPageOne = nil
- if _3_pList != nil {
- goto _21
+ if _3_pList == nil {
+ _rc = _sqlite3PagerGet(tls, _pPager, uint32(i32(1)), &_3_pPageOne, i32(0))
+ _3_pList = _3_pPageOne
+ *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pList)) + uintptr(12 /* X3 */))))) = nil
}
-
- _rc = _sqlite3PagerGet(tls, _pPager, uint32(i32(1)), &_3_pPageOne, i32(0))
- _3_pList = _3_pPageOne
- *(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pList)) + uintptr(12 /* X3 */))))) = nil
-_21:
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53265), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53265), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
@@ -46683,112 +42134,77 @@ _21:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53266), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53266), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _26
+ }() != 0 {
+ _rc = _pagerWalFrames(tls, _pPager, _3_pList, _pPager.X22, i32(1))
}
-
- _rc = _pagerWalFrames(tls, _pPager, _3_pList, _pPager.X22, i32(1))
-_26:
_sqlite3PagerUnref(tls, _3_pPageOne)
- if _rc != i32(0) {
- goto _27
+ if _rc == i32(0) {
+ _sqlite3PcacheCleanAll(tls, (*XPCache)(_pPager.X59))
}
-
- _sqlite3PcacheCleanAll(tls, (*XPCache)(_pPager.X59))
-_27:
goto _28
-
_20:
_rc = _pager_incr_changecounter(tls, _pPager, i32(0))
- if _rc == i32(0) {
- goto _29
+ if _rc != i32(0) {
+ goto _commit_phase_one_exit
}
-
- goto _commit_phase_one_exit
-
-_29:
_rc = _writeMasterJournal(tls, _pPager, _zMaster)
- if _rc == i32(0) {
- goto _30
+ if _rc != i32(0) {
+ goto _commit_phase_one_exit
}
-
- goto _commit_phase_one_exit
-
-_30:
_rc = _syncJournal(tls, _pPager, i32(0))
- if _rc == i32(0) {
- goto _31
+ if _rc != i32(0) {
+ goto _commit_phase_one_exit
}
-
- goto _commit_phase_one_exit
-
-_31:
_rc = _pager_write_pagelist(tls, _pPager, _sqlite3PcacheDirtyList(tls, (*XPCache)(_pPager.X59)))
- if _rc == i32(0) {
- goto _32
+ if _rc != i32(0) {
+ func() {
+ if _rc == i32(2826) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53349), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(55927)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _commit_phase_one_exit
}
-
- func() {
- if _rc == i32(2826) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53349), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(57808)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _commit_phase_one_exit
-
-_32:
_sqlite3PcacheCleanAll(tls, (*XPCache)(_pPager.X59))
if (_pPager.X22) <= (_pPager.X24) {
goto _35
}
-
_9_nNew = (_pPager.X22) - uint32(bool2int((_pPager.X22) == uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1))))
func() {
if int32(_pPager.X14) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(57836)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseOneØ00__func__Ø000))), unsafe.Pointer(str(55952)))
crt.X__builtin_abort(tls)
}
}()
_rc = _pager_truncate(tls, _pPager, _9_nNew)
- if _rc == i32(0) {
- goto _38
+ if _rc != i32(0) {
+ goto _commit_phase_one_exit
}
-
- goto _commit_phase_one_exit
-
-_38:
_35:
- if _noSync != 0 {
- goto _39
+ if _noSync == 0 {
+ _rc = _sqlite3PagerSync(tls, _pPager, _zMaster)
}
-
- _rc = _sqlite3PagerSync(tls, _pPager, _zMaster)
-_39:
_28:
_19:
_commit_phase_one_exit:
- if _rc != i32(0) || (*XWal)(_pPager.X60) != nil {
- goto _41
+ if (_rc == i32(0)) && ((*XWal)(_pPager.X60) == nil) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(5))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(5))
-_41:
return _rc
}
-var _sqlite3PagerCommitPhaseOneØ00__func__Ø000 [27]int8 // -
+var _sqlite3PagerCommitPhaseOneØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerCommitPhaseOneØ00__func__Ø000[0], str(57872), 27)
+ crt.Xstrncpy(nil, &_sqlite3PagerCommitPhaseOneØ00__func__Ø000[0], str(55987), 27)
}
-func _sqlite3FaultSim(tls *crt.TLS, _iTest int32) (r0 int32) { // sqlite3.c:27702:1
- var _xCallback func(*crt.TLS, int32) int32 // sqlite3.c:27703:7
- _ = _xCallback
+func _sqlite3FaultSim(tls *crt.TLS, _iTest int32) (r0 int32) {
+ var _xCallback func(*crt.TLS, int32) int32
_xCallback = _sqlite3Config.X37
return func() int32 {
if _xCallback != nil {
@@ -46798,24 +42214,19 @@ func _sqlite3FaultSim(tls *crt.TLS, _iTest int32) (r0 int32) { // sqlite3.c:2770
}()
}
-func _pagerWalFrames(tls *crt.TLS, _pPager *XPager, _pList *XPgHdr, _nTruncate uint32, _isCommit int32) (r0 int32) { // sqlite3.c:50057:1
- var _rc int32 // sqlite3.c:50063:7
- _ = _rc
- var _nList int32 // sqlite3.c:50064:7
- _ = _nList
- var _p *XPgHdr // sqlite3.c:50065:9
- _ = _p
- var _2_ppNext **XPgHdr // sqlite3.c:50082:11
- _ = _2_ppNext
+func _pagerWalFrames(tls *crt.TLS, _pPager *XPager, _pList *XPgHdr, _nTruncate uint32, _isCommit int32) (r0 int32) {
+ var _rc, _nList int32
+ var _p *XPgHdr
+ var _2_ppNext **XPgHdr
func() {
if (*XWal)(_pPager.X60) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50067), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(57900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50067), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(56014)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50068), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(57916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50068), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(56027)))
crt.X__builtin_abort(tls)
}
}()
@@ -46824,54 +42235,45 @@ _4:
if _p == nil || (*XPgHdr)(_p.X3) == nil {
goto _8
}
-
func() {
if (_p.X5) >= ((*XPgHdr)(_p.X3).X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50072), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(57924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50072), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(56033)))
crt.X__builtin_abort(tls)
}
}()
_p = (*XPgHdr)(_p.X3)
goto _4
-
_8:
func() {
if (*XPgHdr)(_pList.X3) != nil && _isCommit == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50076), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(57952)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50076), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(56059)))
crt.X__builtin_abort(tls)
}
}()
if _isCommit == 0 {
goto _14
}
-
_2_ppNext = &_pList
_nList = i32(0)
_p = _pList
_15:
- if store23(_2_ppNext, _p) == nil {
+ if store25(_2_ppNext, _p) == nil {
goto _18
}
-
- if (_p.X5) > _nTruncate {
- goto _19
+ if (_p.X5) <= _nTruncate {
+ _2_ppNext = (**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */)))))
+ _nList += 1
}
-
- _2_ppNext = (**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */)))))
- _nList += 1
-_19:
_p = (*XPgHdr)(_p.X3)
goto _15
-
_18:
func() {
if _pList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50090), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(57916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50090), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerWalFramesØ00__func__Ø000))), unsafe.Pointer(str(56027)))
crt.X__builtin_abort(tls)
}
}()
goto _22
-
_14:
_nList = i32(1)
_22:
@@ -46880,136 +42282,97 @@ _22:
*p = (*p) + _nList
sink1 = *p
}
- if (_pList.X5) != uint32(i32(1)) {
- goto _23
+ if (_pList.X5) == uint32(i32(1)) {
+ _pager_write_changecounter(tls, _pList)
}
-
- _pager_write_changecounter(tls, _pList)
-_23:
_rc = _sqlite3WalFrames(tls, (*XWal)(_pPager.X60), _pPager.X48, _pList, _nTruncate, _isCommit, int32(_pPager.X8))
if _rc != i32(0) || (*Xsqlite3_backup)(_pPager.X36) == nil {
goto _25
}
-
_p = _pList
_26:
if _p == nil {
goto _29
}
-
_sqlite3BackupUpdate(tls, (*Xsqlite3_backup)(_pPager.X36), _p.X5, (*uint8)(_p.X1))
_p = (*XPgHdr)(_p.X3)
goto _26
-
_29:
_25:
- r0 = _rc
- return
+ return _rc
}
-var _pagerWalFramesØ00__func__Ø000 [15]int8 // -
+var _pagerWalFramesØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_pagerWalFramesØ00__func__Ø000[0], str(57984), 15)
+ crt.Xstrncpy(nil, &_pagerWalFramesØ00__func__Ø000[0], str(56088), 15)
}
-func _pager_write_changecounter(tls *crt.TLS, _pPg *XPgHdr) { // sqlite3.c:49959:1
- var _change_counter uint32 // sqlite3.c:49960:7
- _ = _change_counter
+// Update the value of the change-counter at offsets 24 and 92 in
+// the header and the sqlite version number at offset 96.
+//
+// This is an unconditional update. See also the pager_incr_changecounter()
+// routine which only updates the change-counter if the update is actually
+// needed, as determined by the pPager->changeCountDone state variable.
+func _pager_write_changecounter(tls *crt.TLS, _pPg *XPgHdr) {
+ var _change_counter uint32
_change_counter = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer((*[16]int8)(unsafe.Pointer(uintptr(_pPg.X4)+uintptr(108 /* X40 */)))))))) + uint32(i32(1))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*int8)(_pPg.X1)))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(24)))))))), _change_counter)
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*int8)(_pPg.X1)))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(92)))))))), _change_counter)
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*int8)(_pPg.X1)))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(96)))))))), uint32(i32(3019003)))
}
-func _sqlite3WalFrames(tls *crt.TLS, _pWal *XWal, _szPage int32, _pList *XPgHdr, _nTruncate uint32, _isCommit int32, _sync_flags int32) (r0 int32) { // sqlite3.c:57517:1
- var _rc int32 // sqlite3.c:57525:7
- _ = _rc
- var _iFrame uint32 // sqlite3.c:57526:7
- _ = _iFrame
- var _p *XPgHdr // sqlite3.c:57527:9
- _ = _p
- var _pLast *XPgHdr // sqlite3.c:57528:9
- _ = _pLast
- var _nExtra int32 // sqlite3.c:57529:7
- _ = _nExtra
- var _szFrame int32 // sqlite3.c:57530:7
- _ = _szFrame
- var _iOffset int64 // sqlite3.c:57531:7
- _ = _iOffset
- var _w XWalWriter // sqlite3.c:57532:13
- _ = _w
- var _iFirst uint32 // sqlite3.c:57533:7
- _ = _iFirst
- var _pLive *XWalIndexHdr // sqlite3.c:57534:15
- _ = _pLive
- var _3_aWalHdr [32]uint8 // sqlite3.c:57568:8
- _ = _3_aWalHdr
- var _3_aCksum [2]uint32 // sqlite3.c:57569:9
- _ = _3_aCksum
- var _6_nDbSize int32 // sqlite3.c:57618:9
- _ = _6_nDbSize
- var _7_iWrite uint32 // sqlite3.c:57625:11
- _ = _7_iWrite
- var _8_iOff int64 // sqlite3.c:57629:13
- _ = _8_iOff
- var _8_pData unsafe.Pointer // sqlite3.c:57630:14
- _ = _8_pData
- var _11_bSync int32 // sqlite3.c:57677:9
- _ = _11_bSync
- var _12_sectorSize int32 // sqlite3.c:57679:11
- _ = _12_sectorSize
- var _15_sz int64 // sqlite3.c:57701:9
- _ = _15_sz
+// Write a set of frames to the log. The caller must hold the write-lock
+// on the log file (obtained using sqlite3WalBeginWriteTransaction()).
+func _sqlite3WalFrames(tls *crt.TLS, _pWal *XWal, _szPage int32, _pList *XPgHdr, _nTruncate uint32, _isCommit int32, _sync_flags int32) (r0 int32) {
+ var _rc, _nExtra, _szFrame, _6_nDbSize, _11_bSync, _12_sectorSize int32
+ var _iOffset, _8_iOff, _15_sz int64
+ var _iFrame, _iFirst, _7_iWrite uint32
+ var _8_pData unsafe.Pointer
+ var _3_aWalHdr [32]uint8
+ var _p, _pLast *XPgHdr
+ var _3_aCksum [2]uint32
+ var _pLive *XWalIndexHdr
+ var _w XWalWriter
_pLast = nil
_nExtra = i32(0)
_iFirst = u32(0)
func() {
if _pList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(57916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(56027)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pWal.X12) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(14700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(15606)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_isCommit != i32(0)) != (_nTruncate != uint32(i32(0))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57541), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(58000)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57541), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(56103)))
crt.X__builtin_abort(tls)
}
}()
_pLive = _walIndexHdr(tls, _pWal)
- if crt.Xmemcmp(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(_pLive), u32(48)) == i32(0) {
- goto _6
+ if crt.Xmemcmp(tls, (unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))), (unsafe.Pointer)(_pLive), u32(48)) != i32(0) {
+ _iFirst = (_pLive.X6) + uint32(i32(1))
}
-
- _iFirst = (_pLive.X6) + uint32(i32(1))
-_6:
- if i32(0) == store1(&_rc, _walRestartLog(tls, _pWal)) {
- goto _7
+ if i32(0) != store1(&_rc, _walRestartLog(tls, _pWal)) {
+ return _rc
}
- return _rc
-
-_7:
_iFrame = (*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6
if _iFrame != uint32(i32(0)) {
goto _8
}
-
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aWalHdr))+1*uintptr(i32(0)))), uint32(i32(931071618)))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aWalHdr))+1*uintptr(i32(4)))), uint32(i32(3007000)))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aWalHdr))+1*uintptr(i32(8)))), uint32(_szPage))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aWalHdr))+1*uintptr(i32(12)))), _pWal.X22)
- if (_pWal.X22) != uint32(i32(0)) {
- goto _9
+ if (_pWal.X22) == uint32(i32(0)) {
+ Xsqlite3_randomness(tls, i32(8), (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))))
}
-
- Xsqlite3_randomness(tls, i32(8), (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))))
-_9:
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aWalHdr))+1*uintptr(i32(16))))), (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))), uint32(i32(8)))
_walChecksumBytes(tls, i32(1), (*uint8)(unsafe.Pointer(&_3_aWalHdr)), i32(24), nil, (*uint32)(unsafe.Pointer(&_3_aCksum)))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aWalHdr))+1*uintptr(i32(24)))), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aCksum)) + 4*uintptr(i32(0)))))
@@ -47020,28 +42383,21 @@ _9:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(24 /* X8 */))))) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_aCksum)) + 4*uintptr(i32(1))))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(47 /* X15 */))) = uint8(i32(1))
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(&_3_aWalHdr), int32(u32(32)), int64(i32(0)))
- if _rc == i32(0) {
- goto _10
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_10:
if (_pWal.X16) == 0 || _sync_flags == 0 {
goto _12
}
-
_rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pWal.X2), _sync_flags&i32(19))
- if _rc == 0 {
- goto _13
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_13:
_12:
_8:
func() {
if int32(_pWal.X8) != _szPage {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57605), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(58032)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57605), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(56133)))
crt.X__builtin_abort(tls)
}
}()
@@ -47057,51 +42413,41 @@ _16:
if _p == nil {
goto _19
}
-
if _iFirst == 0 || (*XPgHdr)(_p.X3) == nil && _isCommit != i32(0) {
goto _22
}
-
_7_iWrite = uint32(i32(0))
_rc = _sqlite3WalFindFrame(tls, _pWal, _p.X5, &_7_iWrite)
func() {
if _rc != i32(0) && _7_iWrite != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57627), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(58060)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57627), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(56159)))
crt.X__builtin_abort(tls)
}
}()
if _7_iWrite < _iFirst {
goto _26
}
-
_8_iOff = (int64(i32(32)) + (int64(_7_iWrite-uint32(i32(1))) * int64(_szPage+i32(24)))) + int64(i32(24))
- if (_pWal.X20) != uint32(i32(0)) && _7_iWrite >= (_pWal.X20) {
- goto _28
+ if ((_pWal.X20) == uint32(i32(0))) || (_7_iWrite < (_pWal.X20)) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(104 /* X20 */))) = _7_iWrite
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(104 /* X20 */))) = _7_iWrite
-_28:
_8_pData = _p.X1
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pWal.X2), _8_pData, _szPage, _8_iOff)
- if _rc == 0 {
- goto _29
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_29:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) & i32(-65))
- sink12 = *p
+ sink14 = *p
}
goto _17
-
_26:
_22:
_iFrame += 1
func() {
if _iOffset != (int64(i32(32)) + (int64(_iFrame-uint32(i32(1))) * int64(_szPage+i32(24)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57647), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(58088)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57647), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(56186)))
crt.X__builtin_abort(tls)
}
}()
@@ -47112,12 +42458,9 @@ _22:
return uint32(i32(0))
}())
_rc = _walWriteOneFrame(tls, &_w, _p, _6_nDbSize, _iOffset)
- if _rc == 0 {
- goto _35
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_35:
_pLast = _p
{
p := &_iOffset
@@ -47127,34 +42470,27 @@ _35:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) | i32(64))
- sink12 = *p
+ sink14 = *p
}
_17:
_p = (*XPgHdr)(_p.X3)
goto _16
-
_19:
if _isCommit == 0 || (_pWal.X20) == 0 {
goto _37
}
-
_rc = _walRewriteChecksums(tls, _pWal, _iFrame)
- if _rc == 0 {
- goto _38
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_38:
_37:
if _isCommit == 0 || (_sync_flags&i32(32)) == i32(0) {
goto _40
}
-
_11_bSync = i32(1)
if (_pWal.X17) == 0 {
goto _41
}
-
_12_sectorSize = _sqlite3SectorSize(tls, (*Xsqlite3_file)(_pWal.X2))
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))) = (((_iOffset + int64(_12_sectorSize)) - int64(i32(1))) / int64(_12_sectorSize)) * int64(_12_sectorSize)
_11_bSync = bool2int((_w.X2) == _iOffset)
@@ -47162,14 +42498,10 @@ _42:
if _iOffset >= (_w.X2) {
goto _43
}
-
_rc = _walWriteOneFrame(tls, &_w, _pLast, int32(_nTruncate), _iOffset)
- if _rc == 0 {
- goto _44
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_44:
{
p := &_iOffset
*p = (*p) + int64(_szFrame)
@@ -47177,33 +42509,25 @@ _44:
}
_nExtra += 1
goto _42
-
_43:
_41:
- if _11_bSync == 0 {
- goto _45
+ if _11_bSync != 0 {
+ func() {
+ if _rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57691), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(15012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_w.X1), _sync_flags&i32(19))
}
-
- func() {
- if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57691), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WalFramesØ00__func__Ø000))), unsafe.Pointer(str(14080)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_w.X1), _sync_flags&i32(19))
-_45:
_40:
if _isCommit == 0 || (_pWal.X15) == 0 || (_pWal.X4) < int64(i32(0)) {
goto _50
}
-
_15_sz = _pWal.X4
- if (int64(i32(32)) + (int64(((_iFrame+uint32(_nExtra))+uint32(i32(1)))-uint32(i32(1))) * int64(_szPage+i32(24)))) <= (_pWal.X4) {
- goto _51
+ if (int64(i32(32)) + (int64(((_iFrame+uint32(_nExtra))+uint32(i32(1)))-uint32(i32(1))) * int64(_szPage+i32(24)))) > (_pWal.X4) {
+ _15_sz = int64(i32(32)) + (int64(((_iFrame+uint32(_nExtra))+uint32(i32(1)))-uint32(i32(1))) * int64(_szPage+i32(24)))
}
-
- _15_sz = int64(i32(32)) + (int64(((_iFrame+uint32(_nExtra))+uint32(i32(1)))-uint32(i32(1))) * int64(_szPage+i32(24)))
-_51:
_walLimitSize(tls, _pWal, _15_sz)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(47 /* X15 */))) = uint8(i32(0))
_50:
@@ -47213,107 +42537,88 @@ _52:
if _p == nil || _rc != i32(0) {
goto _56
}
-
- if (int32(_p.X6) & i32(64)) != i32(0) {
- goto _57
+ if (int32(_p.X6) & i32(64)) == i32(0) {
+ goto _53
}
-
- goto _53
-
-_57:
_iFrame += 1
_rc = _walIndexAppend(tls, _pWal, _iFrame, _p.X5)
_53:
_p = (*XPgHdr)(_p.X3)
goto _52
-
_56:
_58:
- if _rc != i32(0) || _nExtra <= i32(0) {
- goto _59
+ if (_rc == i32(0)) && (_nExtra > i32(0)) {
+ _iFrame += 1
+ _nExtra -= 1
+ _rc = _walIndexAppend(tls, _pWal, _iFrame, _pLast.X5)
+ goto _58
}
-
- _iFrame += 1
- _nExtra -= 1
- _rc = _walIndexAppend(tls, _pWal, _iFrame, _pLast.X5)
- goto _58
-
-_59:
if _rc != i32(0) {
goto _61
}
-
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(14 /* X5 */))) = uint16((_szPage & i32(65280)) | (_szPage >> uint(i32(16))))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(16 /* X6 */))) = _iFrame
- if _isCommit == 0 {
- goto _62
+ if _isCommit != 0 {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(8 /* X2 */))) += 1
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(20 /* X7 */))) = _nTruncate
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(8 /* X2 */))) += 1
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(20 /* X7 */))) = _nTruncate
-_62:
- if _isCommit == 0 {
- goto _63
+ if _isCommit != 0 {
+ _walIndexWriteHdr(tls, _pWal)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(12 /* X3 */))) = _iFrame
}
-
- _walIndexWriteHdr(tls, _pWal)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(12 /* X3 */))) = _iFrame
-_63:
_61:
- r0 = _rc
- return
+ return _rc
+
+ _ = _w
+ _ = _3_aWalHdr
+ _ = _3_aCksum
+ panic(0)
}
-var _sqlite3WalFramesØ00__func__Ø000 [17]int8 // -
+var _sqlite3WalFramesØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WalFramesØ00__func__Ø000[0], str(58128), 17)
+ crt.Xstrncpy(nil, &_sqlite3WalFramesØ00__func__Ø000[0], str(56226), 17)
}
-func _walRestartLog(tls *crt.TLS, _pWal *XWal) (r0 int32) { // sqlite3.c:57350:1
- var _rc int32 // sqlite3.c:57351:7
- _ = _rc
- var _cnt int32 // sqlite3.c:57352:7
- _ = _cnt
- var _1_pInfo *XWalCkptInfo // sqlite3.c:57355:26
- _ = _1_pInfo
- var _2_salt1 uint32 // sqlite3.c:57358:11
- _ = _2_salt1
- var _5_notUsed int32 // sqlite3.c:57381:11
- _ = _5_notUsed
+// This function is called just before writing a set of frames to the log
+// file (see sqlite3WalFrames()). It checks to see if, instead of appending
+// to the current log file, it is possible to overwrite the start of the
+// existing log file with the new frames (i.e. "reset" the log). If so,
+// it sets pWal->hdr.mxFrame to 0. Otherwise, pWal->hdr.mxFrame is left
+// unchanged.
+//
+// SQLITE_OK is returned if no error is encountered (regardless of whether
+// or not pWal->hdr.mxFrame is modified). An SQLite error code is returned
+// if an error occurs.
+func _walRestartLog(tls *crt.TLS, _pWal *XWal) (r0 int32) {
+ var _rc, _cnt, _5_notUsed int32
+ var _2_salt1 uint32
+ var _1_pInfo *XWalCkptInfo
_rc = i32(0)
if int32(_pWal.X9) != i32(0) {
goto _0
}
-
_1_pInfo = _walCkptInfo(tls, _pWal)
func() {
if (_1_pInfo.X0) != ((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(52 /* X18 */))).X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57356), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRestartLogØ00__func__Ø000))), unsafe.Pointer(str(22620)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57356), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRestartLogØ00__func__Ø000))), unsafe.Pointer(str(22957)))
crt.X__builtin_abort(tls)
}
}()
if (_1_pInfo.X0) <= uint32(i32(0)) {
goto _3
}
-
Xsqlite3_randomness(tls, i32(4), (unsafe.Pointer)(&_2_salt1))
_rc = _walLockExclusive(tls, _pWal, i32(4), i32(4))
- if _rc != i32(0) {
- goto _4
+ if _rc == i32(0) {
+ _walRestartHdr(tls, _pWal, _2_salt1)
+ _walUnlockExclusive(tls, _pWal, i32(4), i32(4))
+ goto _5
}
-
- _walRestartHdr(tls, _pWal, _2_salt1)
- _walUnlockExclusive(tls, _pWal, i32(4), i32(4))
- goto _5
-
-_4:
- if _rc == i32(5) {
- goto _6
+ if _rc != i32(5) {
+ return _rc
}
- return _rc
-
-_6:
_5:
_3:
_walUnlockShared(tls, _pWal, i32(3))
@@ -47324,86 +42629,91 @@ _7:
if _rc == i32(-1) {
goto _7
}
-
func() {
if (_rc & i32(255)) == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57384), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRestartLogØ00__func__Ø000))), unsafe.Pointer(str(58148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57384), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRestartLogØ00__func__Ø000))), unsafe.Pointer(str(56243)))
crt.X__builtin_abort(tls)
}
}()
_0:
return _rc
+
+ _ = _cnt
+ _ = _5_notUsed
+ panic(0)
}
-var _walRestartLogØ00__func__Ø000 [14]int8 // -
+var _walRestartLogØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_walRestartLogØ00__func__Ø000[0], str(58172), 14)
+ crt.Xstrncpy(nil, &_walRestartLogØ00__func__Ø000[0], str(56266), 14)
}
-func _walWriteOneFrame(tls *crt.TLS, _p *XWalWriter, _pPage *XPgHdr, _nTruncate int32, _iOffset int64) (r0 int32) { // sqlite3.c:57438:1
- var _rc int32 // sqlite3.c:57444:7
- _ = _rc
- var _pData unsafe.Pointer // sqlite3.c:57445:8
- _ = _pData
- var _aFrame [24]uint8 // sqlite3.c:57446:6
- _ = _aFrame
+// Write out a single frame of the WAL
+func _walWriteOneFrame(tls *crt.TLS, _p *XWalWriter, _pPage *XPgHdr, _nTruncate int32, _iOffset int64) (r0 int32) {
+ var _rc int32
+ var _pData unsafe.Pointer
+ var _aFrame [24]uint8
_pData = _pPage.X1
_walEncodeFrame(tls, (*XWal)(_p.X0), _pPage.X5, uint32(_nTruncate), (*uint8)(_pData), (*uint8)(unsafe.Pointer(&_aFrame)))
_rc = _walWriteToLog(tls, _p, (unsafe.Pointer)(&_aFrame), int32(u32(24)), _iOffset)
- if _rc == 0 {
- goto _0
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_0:
_rc = _walWriteToLog(tls, _p, _pData, _p.X4, _iOffset+int64(u32(24)))
return _rc
-}
-func _walEncodeFrame(tls *crt.TLS, _pWal *XWal, _iPage uint32, _nTruncate uint32, _aData *uint8, _aFrame *uint8) { // sqlite3.c:55166:1
- var _nativeCksum int32 // sqlite3.c:55173:7
- _ = _nativeCksum
- var _aCksum *uint32 // sqlite3.c:55174:7
- _ = _aCksum
+ _ = _aFrame
+ panic(0)
+}
+
+// This function encodes a single frame header and writes it to a buffer
+// supplied by the caller. A frame-header is made up of a series of
+// 4-byte big-endian integers, as follows:
+//
+// 0: Page number.
+// 4: For commit records, the size of the database image in pages
+// after the commit. For all other records, zero.
+// 8: Salt-1 (copied from the wal-header)
+// 12: Salt-2 (copied from the wal-header)
+// 16: Checksum-1.
+// 20: Checksum-2.
+func _walEncodeFrame(tls *crt.TLS, _pWal *XWal, _iPage uint32, _nTruncate uint32, _aData *uint8, _aFrame *uint8) {
+ var _nativeCksum int32
+ var _aCksum *uint32
_aCksum = (*uint32)(unsafe.Pointer((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))))) + uintptr(24 /* X8 */)))))
i32(0)
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(0)))), _iPage)
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(4)))), _nTruncate)
- if (_pWal.X20) != uint32(i32(0)) {
- goto _0
+ if (_pWal.X20) == uint32(i32(0)) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(8))))), (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))), uint32(i32(8)))
+ _nativeCksum = bool2int(int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X4) == i32(0))
+ _walChecksumBytes(tls, _nativeCksum, _aFrame, i32(8), _aCksum, _aCksum)
+ _walChecksumBytes(tls, _nativeCksum, _aData, int32(_pWal.X8), _aCksum, _aCksum)
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(16)))), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(0)))))
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(20)))), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(1)))))
+ goto _1
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(8))))), (unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */)))))+uintptr(32 /* X9 */)))), uint32(i32(8)))
- _nativeCksum = bool2int(int32((*XWalIndexHdr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal))+uintptr(52 /* X18 */))).X4) == i32(0))
- _walChecksumBytes(tls, _nativeCksum, _aFrame, i32(8), _aCksum, _aCksum)
- _walChecksumBytes(tls, _nativeCksum, _aData, int32(_pWal.X8), _aCksum, _aCksum)
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(16)))), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(0)))))
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(20)))), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCksum)) + 4*uintptr(i32(1)))))
- goto _1
-
-_0:
crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrame))+1*uintptr(i32(8))))), i32(0), uint32(i32(16)))
_1:
}
-func _walWriteToLog(tls *crt.TLS, _p *XWalWriter, _pContent unsafe.Pointer, _iAmt int32, _iOffset int64) (r0 int32) { // sqlite3.c:57413:1
- var _rc int32 // sqlite3.c:57419:7
- _ = _rc
- var _1_iFirstAmt int32 // sqlite3.c:57421:9
- _ = _1_iFirstAmt
+// Write iAmt bytes of content into the WAL file beginning at iOffset.
+// Do a sync when crossing the p->iSyncPoint boundary.
+//
+// In other words, if iSyncPoint is in between iOffset and iOffset+iAmt,
+// first write the part before iSyncPoint, then sync, then write the
+// rest.
+func _walWriteToLog(tls *crt.TLS, _p *XWalWriter, _pContent unsafe.Pointer, _iAmt int32, _iOffset int64) (r0 int32) {
+ var _rc, _1_iFirstAmt int32
if _iOffset >= (_p.X2) || (_iOffset+int64(_iAmt)) < (_p.X2) {
goto _1
}
-
_1_iFirstAmt = int32((_p.X2) - _iOffset)
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_p.X1), _pContent, _1_iFirstAmt, _iOffset)
- if _rc == 0 {
- goto _2
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_2:
{
p := &_iOffset
*p = (*p) + int64(_1_iFirstAmt)
@@ -47417,70 +42727,53 @@ _2:
_pContent = (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_1_iFirstAmt))))) + uintptr(unsafe.Pointer((*int8)(_pContent))))))
func() {
if ((_p.X3) & i32(3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57427), unsafe.Pointer((*int8)(unsafe.Pointer(&_walWriteToLogØ00__func__Ø000))), unsafe.Pointer(str(58188)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57427), unsafe.Pointer((*int8)(unsafe.Pointer(&_walWriteToLogØ00__func__Ø000))), unsafe.Pointer(str(56280)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_p.X1), (_p.X3)&i32(19))
- if _iAmt != i32(0) && _rc == 0 {
- goto _6
+ if (_iAmt == i32(0)) || _rc != 0 {
+ return _rc
}
- return _rc
-
-_6:
_1:
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_p.X1), _pContent, _iAmt, _iOffset)
return _rc
}
-var _walWriteToLogØ00__func__Ø000 [14]int8 // -
+var _walWriteToLogØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_walWriteToLogØ00__func__Ø000[0], str(58244), 14)
+ crt.Xstrncpy(nil, &_walWriteToLogØ00__func__Ø000[0], str(56333), 14)
}
-func _walRewriteChecksums(tls *crt.TLS, _pWal *XWal, _iLast uint32) (r0 int32) { // sqlite3.c:57468:1
- var _szPage int32 // sqlite3.c:57469:13
- _ = _szPage
- var _rc int32 // sqlite3.c:57470:7
- _ = _rc
- var _aBuf *uint8 // sqlite3.c:57471:6
- _ = _aBuf
- var _aFrame [24]uint8 // sqlite3.c:57472:6
- _ = _aFrame
- var _iRead uint32 // sqlite3.c:57473:7
- _ = _iRead
- var _iCksumOff int64 // sqlite3.c:57474:7
- _ = _iCksumOff
- var _3_iOff int64 // sqlite3.c:57497:9
- _ = _3_iOff
- var _4_iPgno uint32 // sqlite3.c:57500:11
- _ = _4_iPgno
- var _4_nDbSize uint32 // sqlite3.c:57500:18
- _ = _4_nDbSize
+// This function is called as part of committing a transaction within which
+// one or more frames have been overwritten. It updates the checksums for
+// all frames written to the wal file by the current transaction starting
+// with the earliest to have been overwritten.
+//
+// SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+func _walRewriteChecksums(tls *crt.TLS, _pWal *XWal, _iLast uint32) (r0 int32) {
+ var _szPage, _rc int32
+ var _iCksumOff, _3_iOff int64
+ var _iRead, _4_iPgno, _4_nDbSize uint32
+ var _aBuf *uint8
+ var _aFrame [24]uint8
_szPage = int32(_pWal.X8)
_rc = i32(0)
_aBuf = (*uint8)(Xsqlite3_malloc(tls, _szPage+i32(24)))
- if _aBuf != nil {
- goto _0
+ if _aBuf == nil {
+ return _sqlite3NomemError(tls, i32(57477))
}
- return _sqlite3NomemError(tls, i32(57477))
-
-_0:
func() {
if (_pWal.X20) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(57484), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRewriteChecksumsØ00__func__Ø000))), unsafe.Pointer(str(58260)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(57484), unsafe.Pointer((*int8)(unsafe.Pointer(&_walRewriteChecksumsØ00__func__Ø000))), unsafe.Pointer(str(56347)))
crt.X__builtin_abort(tls)
}
}()
- if (_pWal.X20) != uint32(i32(1)) {
- goto _3
+ if (_pWal.X20) == uint32(i32(1)) {
+ _iCksumOff = int64(i32(24))
+ goto _4
}
-
- _iCksumOff = int64(i32(24))
- goto _4
-
-_3:
_iCksumOff = (int64(i32(32)) + (int64(((_pWal.X20)-uint32(i32(1)))-uint32(i32(1))) * int64(_szPage+i32(24)))) + int64(i32(16))
_4:
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(_aBuf), int32(u32(8)), _iCksumOff)
@@ -47492,57 +42785,70 @@ _5:
if _rc != i32(0) || _iRead > _iLast {
goto _9
}
-
_3_iOff = int64(i32(32)) + (int64(_iRead-uint32(i32(1))) * int64(_szPage+i32(24)))
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(_aBuf), _szPage+i32(24), _3_iOff)
- if _rc != i32(0) {
- goto _10
+ if _rc == i32(0) {
+ _4_iPgno = _sqlite3Get4byte(tls, _aBuf)
+ _4_nDbSize = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aBuf))+1*uintptr(i32(4)))))
+ _walEncodeFrame(tls, _pWal, _4_iPgno, _4_nDbSize, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aBuf))+1*uintptr(i32(24)))), (*uint8)(unsafe.Pointer(&_aFrame)))
+ _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(&_aFrame), int32(u32(24)), _3_iOff)
}
-
- _4_iPgno = _sqlite3Get4byte(tls, _aBuf)
- _4_nDbSize = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aBuf))+1*uintptr(i32(4)))))
- _walEncodeFrame(tls, _pWal, _4_iPgno, _4_nDbSize, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aBuf))+1*uintptr(i32(24)))), (*uint8)(unsafe.Pointer(&_aFrame)))
- _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pWal.X2), (unsafe.Pointer)(&_aFrame), int32(u32(24)), _3_iOff)
-_10:
_iRead += 1
goto _5
-
_9:
Xsqlite3_free(tls, (unsafe.Pointer)(_aBuf))
return _rc
-}
-
-var _walRewriteChecksumsØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_walRewriteChecksumsØ00__func__Ø000[0], str(58280), 20)
-}
-func _pager_incr_changecounter(tls *crt.TLS, _pPager *XPager, _isDirectMode int32) (r0 int32) { // sqlite3.c:53070:1
- var _rc int32 // sqlite3.c:53071:7
- _ = _rc
- var _1_pPgHdr *XPgHdr // sqlite3.c:53097:11
- _ = _1_pPgHdr
- var _4_zBuf unsafe.Pointer // sqlite3.c:53120:20
- _ = _4_zBuf
- var _6_pCopy unsafe.Pointer // sqlite3.c:53131:22
- _ = _6_pCopy
+ _ = _aFrame
+ panic(0)
+}
+
+var _walRewriteChecksumsØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_walRewriteChecksumsØ00__func__Ø000[0], str(56364), 20)
+}
+
+// This routine is called to increment the value of the database file
+// change-counter, stored as a 4-byte big-endian integer starting at
+// byte offset 24 of the pager file. The secondary change counter at
+// 92 is also updated, as is the SQLite version number at offset 96.
+//
+// But this only happens if the pPager->changeCountDone flag is false.
+// To avoid excess churning of page 1, the update only happens once.
+// See also the pager_write_changecounter() routine that does an
+// unconditional update of the change counters.
+//
+// If the isDirectMode flag is zero, then this is done by calling
+// sqlite3PagerWrite() on page 1, then modifying the contents of the
+// page data. In this case the file will be updated when the current
+// transaction is committed.
+//
+// The isDirectMode flag may only be non-zero if the library was compiled
+// with the SQLITE_ENABLE_ATOMIC_WRITE macro defined. In this case,
+// if isDirect is non-zero, then the database file is updated directly
+// by writing an updated version of page 1 using a call to the
+// sqlite3OsWrite() function.
+func _pager_incr_changecounter(tls *crt.TLS, _pPager *XPager, _isDirectMode int32) (r0 int32) {
+ var _rc int32
+ var _4_zBuf, _6_pCopy unsafe.Pointer
+ var _1_pPgHdr *XPgHdr
_rc = i32(0)
func() {
if int32(_pPager.X14) != i32(3) && int32(_pPager.X14) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53073), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(56856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53073), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(55020)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53076), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53076), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _isDirectMode != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53090), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(58300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53090), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(56384)))
crt.X__builtin_abort(tls)
}
}()
@@ -47552,97 +42858,102 @@ func _pager_incr_changecounter(tls *crt.TLS, _pPager *XPager, _isDirectMode int3
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53096), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53096), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _10
}
-
func() {
if (_pPager.X10) != 0 || (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53099), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(58316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53099), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(56400)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerGet(tls, _pPager, uint32(i32(1)), &_1_pPgHdr, i32(0))
func() {
if _1_pPgHdr != nil && _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53103), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(58356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53103), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(56440)))
crt.X__builtin_abort(tls)
}
}()
- if i32(1) == 0 || func() int32 {
+ if i32(1) != 0 && func() int32 {
if _rc == i32(0) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53110), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53110), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_incr_changecounterØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 {
- goto _20
+ }() != 0 {
+ _rc = _sqlite3PagerWrite(tls, _1_pPgHdr)
}
-
- _rc = _sqlite3PagerWrite(tls, _1_pPgHdr)
-_20:
if _rc != i32(0) {
goto _21
}
-
_pager_write_changecounter(tls, _1_pPgHdr)
goto _22
-
_22:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(19 /* X16 */))) = uint8(i32(1))
_21:
_sqlite3PagerUnref(tls, _1_pPgHdr)
_10:
return _rc
-}
-
-var _pager_incr_changecounterØ00__func__Ø000 [25]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pager_incr_changecounterØ00__func__Ø000[0], str(58384), 25)
-}
-func _writeMasterJournal(tls *crt.TLS, _pPager *XPager, _zMaster *int8) (r0 int32) { // sqlite3.c:48578:1
- var _rc int32 // sqlite3.c:48579:7
- _ = _rc
- var _nMaster int32 // sqlite3.c:48580:7
- _ = _nMaster
- var _iHdrOff int64 // sqlite3.c:48581:7
- _ = _iHdrOff
- var _jrnlSize int64 // sqlite3.c:48582:7
- _ = _jrnlSize
- var _cksum uint32 // sqlite3.c:48583:7
- _ = _cksum
+ _ = _4_zBuf
+ _ = _6_pCopy
+ panic(0)
+}
+
+var _pager_incr_changecounterØ00__func__Ø000 [25]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pager_incr_changecounterØ00__func__Ø000[0], str(56467), 25)
+}
+
+// Write the supplied master journal name into the journal file for pager
+// pPager at the current location. The master journal name must be the last
+// thing written to a journal file. If the pager is in full-sync mode, the
+// journal file descriptor is advanced to the next sector boundary before
+// anything is written. The format is:
+//
+// + 4 bytes: PAGER_MJ_PGNO.
+// + N bytes: Master journal filename in utf-8.
+// + 4 bytes: N (length of master journal name in bytes, no nul-terminator).
+// + 4 bytes: Master journal name checksum.
+// + 8 bytes: aJournalMagic[].
+//
+// The master journal page checksum is the sum of the bytes in the master
+// journal name, where each byte is interpreted as a signed 8-bit integer.
+//
+// If zMaster is a NULL pointer (occurs for a single database transaction),
+// this call is a no-op.
+func _writeMasterJournal(tls *crt.TLS, _pPager *XPager, _zMaster *int8) (r0 int32) {
+ var _rc, _nMaster int32
+ var _iHdrOff, _jrnlSize int64
+ var _cksum uint32
_cksum = u32(0)
func() {
if int32(_pPager.X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48585), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeMasterJournalØ00__func__Ø000))), unsafe.Pointer(str(10932)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48585), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeMasterJournalØ00__func__Ø000))), unsafe.Pointer(str(12025)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48586), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeMasterJournalØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48586), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeMasterJournalØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
- if _zMaster != nil && int32(_pPager.X2) != i32(4) && (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil {
- goto _6
+ if ((_zMaster == nil) || (int32(_pPager.X2) == i32(4))) || ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil) {
+ return i32(0)
}
- return i32(0)
-
-_6:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(20 /* X17 */))) = uint8(i32(1))
func() {
if (_pPager.X35) > (_pPager.X34) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(48595), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeMasterJournalØ00__func__Ø000))), unsafe.Pointer(str(12672)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(48595), unsafe.Pointer((*int8)(unsafe.Pointer(&_writeMasterJournalØ00__func__Ø000))), unsafe.Pointer(str(13683)))
crt.X__builtin_abort(tls)
}
}()
@@ -47651,7 +42962,6 @@ _9:
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(_nMaster)))) == 0 {
goto _12
}
-
{
p := &_cksum
*p = (*p) + uint32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zMaster)) + 1*uintptr(_nMaster))))
@@ -47659,171 +42969,160 @@ _9:
}
_nMaster += 1
goto _9
-
_12:
- if (_pPager.X5) == 0 {
- goto _13
+ if (_pPager.X5) != 0 {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _journalHdrOffset(tls, _pPager)
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */))) = _journalHdrOffset(tls, _pPager)
-_13:
_iHdrOff = _pPager.X34
- if i32(0) == store1(&_rc, _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff, uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1)))) && i32(0) == store1(&_rc, _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(_zMaster), _nMaster, _iHdrOff+int64(i32(4)))) && i32(0) == store1(&_rc, _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), (_iHdrOff+int64(i32(4)))+int64(_nMaster), uint32(_nMaster))) && i32(0) == store1(&_rc, _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), ((_iHdrOff+int64(i32(4)))+int64(_nMaster))+int64(i32(4)), _cksum)) && i32(0) == store1(&_rc, _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_aJournalMagic), i32(8), ((_iHdrOff+int64(i32(4)))+int64(_nMaster))+int64(i32(8)))) {
- goto _18
+ if ((((i32(0) != store1(&_rc, _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), _iHdrOff, uint32((_sqlite3PendingByte/(_pPager.X48))+i32(1))))) || (i32(0) != store1(&_rc, _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(_zMaster), _nMaster, _iHdrOff+int64(i32(4)))))) || (i32(0) != store1(&_rc, _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), (_iHdrOff+int64(i32(4)))+int64(_nMaster), uint32(_nMaster))))) || (i32(0) != store1(&_rc, _write32bits(tls, (*Xsqlite3_file)(_pPager.X32), ((_iHdrOff+int64(i32(4)))+int64(_nMaster))+int64(i32(4)), _cksum)))) || (i32(0) != store1(&_rc, _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_aJournalMagic), i32(8), ((_iHdrOff+int64(i32(4)))+int64(_nMaster))+int64(i32(8))))) {
+ return _rc
}
- return _rc
-
-_18:
{
p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(76 /* X34 */)))
*p = (*p) + int64(_nMaster+i32(20))
sink6 = *p
}
- if i32(0) != store1(&_rc, _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X32), &_jrnlSize)) || _jrnlSize <= (_pPager.X34) {
- goto _20
+ if (i32(0) == store1(&_rc, _sqlite3OsFileSize(tls, (*Xsqlite3_file)(_pPager.X32), &_jrnlSize))) && (_jrnlSize > (_pPager.X34)) {
+ _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X32), _pPager.X34)
}
-
- _rc = _sqlite3OsTruncate(tls, (*Xsqlite3_file)(_pPager.X32), _pPager.X34)
-_20:
return _rc
}
-var _writeMasterJournalØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_writeMasterJournalØ00__func__Ø000[0], str(58412), 19)
-}
-
-func _syncJournal(tls *crt.TLS, _pPager *XPager, _newHdr int32) (r0 int32) { // sqlite3.c:51117:1
- var _rc int32 // sqlite3.c:51118:7
- _ = _rc
- var _2_iDc int32 // sqlite3.c:51132:17
- _ = _2_iDc
- var _3_iNextHdrOffset int64 // sqlite3.c:51158:13
- _ = _3_iNextHdrOffset
- var _3_aMagic [8]uint8 // sqlite3.c:51159:12
- _ = _3_aMagic
- var _3_zHeader [12]uint8 // sqlite3.c:51160:12
- _ = _3_zHeader
+var _writeMasterJournalØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_writeMasterJournalØ00__func__Ø000[0], str(56492), 19)
+}
+
+// Sync the journal. In other words, make sure all the pages that have
+// been written to the journal have actually reached the surface of the
+// disk and can be restored in the event of a hot-journal rollback.
+//
+// If the Pager.noSync flag is set, then this function is a no-op.
+// Otherwise, the actions required depend on the journal-mode and the
+// device characteristics of the file-system, as follows:
+//
+// * If the journal file is an in-memory journal file, no action need
+// be taken.
+//
+// * Otherwise, if the device does not support the SAFE_APPEND property,
+// then the nRec field of the most recently written journal header
+// is updated to contain the number of journal records that have
+// been written following it. If the pager is operating in full-sync
+// mode, then the journal file is synced before this field is updated.
+//
+// * If the device does not support the SEQUENTIAL property, then
+// journal file is synced.
+//
+// Or, in pseudo-code:
+//
+// if( NOT ){
+// if( NOT SAFE_APPEND ){
+// if( ) xSync();
+//
+// }
+// if( NOT SEQUENTIAL ) xSync();
+// }
+//
+// If successful, this routine clears the PGHDR_NEED_SYNC flag of every
+// page currently held in memory before returning SQLITE_OK. If an IO
+// error is encountered, then the IO error code is returned to the caller.
+func _syncJournal(tls *crt.TLS, _pPager *XPager, _newHdr int32) (r0 int32) {
+ var _rc, _2_iDc int32
+ var _3_iNextHdrOffset int64
+ var _3_aMagic [8]uint8
+ var _3_zHeader [12]uint8
func() {
if int32(_pPager.X14) != i32(3) && int32(_pPager.X14) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51120), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(56856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51120), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(55020)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51123), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51123), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51124), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51124), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerExclusiveLock(tls, _pPager)
- if _rc == i32(0) {
- goto _7
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_7:
if (_pPager.X4) != 0 {
goto _8
}
-
func() {
if (_pPager.X10) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51130), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(53344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51130), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(51663)))
crt.X__builtin_abort(tls)
}
}()
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil || int32(_pPager.X2) == i32(4) {
goto _12
}
-
_2_iDc = _sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X31))
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51133), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(12612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51133), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(13626)))
crt.X__builtin_abort(tls)
}
}()
if i32(0) != (_2_iDc & i32(512)) {
goto _15
}
-
crt.Xmemcpy(tls, (unsafe.Pointer)(&_3_zHeader), (unsafe.Pointer)(&_aJournalMagic), u32(8))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_zHeader))+1*uintptr(u32(8)))), uint32(_pPager.X27))
_3_iNextHdrOffset = _journalHdrOffset(tls, _pPager)
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_3_aMagic), i32(8), _3_iNextHdrOffset)
- if _rc != i32(0) || i32(0) != crt.Xmemcmp(tls, (unsafe.Pointer)(&_3_aMagic), (unsafe.Pointer)(&_aJournalMagic), uint32(i32(8))) {
- goto _17
+ if (_rc == i32(0)) && (i32(0) == crt.Xmemcmp(tls, (unsafe.Pointer)(&_3_aMagic), (unsafe.Pointer)(&_aJournalMagic), uint32(i32(8)))) {
+ _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_syncJournalØ00zerobyteØ001), i32(1), _3_iNextHdrOffset)
}
-
- _rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_syncJournalØ00zerobyteØ001), i32(1), _3_iNextHdrOffset)
-_17:
- if _rc == i32(0) || _rc == i32(522) {
- goto _19
+ if (_rc != i32(0)) && (_rc != i32(522)) {
+ return _rc
}
- return _rc
-
-_19:
if (_pPager.X5) == 0 || i32(0) != (_2_iDc&i32(1024)) {
goto _21
}
-
_rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), int32(_pPager.X9))
- if _rc == i32(0) {
- goto _22
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_22:
_21:
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X32), (unsafe.Pointer)(&_3_zHeader), int32(u32(12)), _pPager.X35)
- if _rc == i32(0) {
- goto _23
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_23:
_15:
if i32(0) != (_2_iDc & i32(1024)) {
goto _24
}
-
_rc = _sqlite3OsSync(tls, (*Xsqlite3_file)(_pPager.X32), int32(_pPager.X9)|func() int32 {
if int32(_pPager.X9) == i32(3) {
return i32(16)
}
return i32(0)
}())
- if _rc == i32(0) {
- goto _27
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_27:
_24:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(84 /* X35 */))) = _pPager.X34
if _newHdr == 0 || i32(0) != (_2_iDc&i32(512)) {
goto _29
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(48 /* X27 */))) = i32(0)
_rc = _writeJournalHdr(tls, _pPager)
- if _rc == i32(0) {
- goto _30
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_30:
_29:
goto _31
-
_12:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(84 /* X35 */))) = _pPager.X34
_31:
@@ -47832,206 +43131,231 @@ _8:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(4))
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51224), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51224), unsafe.Pointer((*int8)(unsafe.Pointer(&_syncJournalØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
return i32(0)
+
+ _ = _3_aMagic
+ _ = _3_zHeader
+ panic(0)
}
-var _syncJournalØ00__func__Ø000 [12]int8 // -
+var _syncJournalØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_syncJournalØ00__func__Ø000[0], str(58432), 12)
+ crt.Xstrncpy(nil, &_syncJournalØ00__func__Ø000[0], str(56511), 12)
}
-func _sqlite3PagerExclusiveLock(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:53179:1
- var _rc int32 // sqlite3.c:53180:7
- _ = _rc
+// This function may only be called while a write-transaction is active in
+// rollback. If the connection is in WAL mode, this call is a no-op.
+// Otherwise, if the connection does not already have an EXCLUSIVE lock on
+// the database file, an attempt is made to obtain one.
+//
+// If the EXCLUSIVE lock is already held or the attempt to obtain it is
+// successful, or the connection is in WAL mode, SQLITE_OK is returned.
+// Otherwise, either SQLITE_BUSY or an SQLITE_IOERR_XXX error code is
+// returned.
+func _sqlite3PagerExclusiveLock(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc int32
_rc = _pPager.X26
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53181), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53181), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
if _rc != i32(0) {
goto _2
}
-
func() {
if int32(_pPager.X14) != i32(3) && int32(_pPager.X14) != i32(4) && int32(_pPager.X14) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53183), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(58444)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53183), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(56523)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53187), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53187), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerExclusiveLockØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
- if i32(0) != bool2int((*XWal)(_pPager.X60) != nil) {
- goto _9
+ if i32(0) == bool2int((*XWal)(_pPager.X60) != nil) {
+ _rc = _pager_wait_on_lock(tls, _pPager, i32(4))
}
-
- _rc = _pager_wait_on_lock(tls, _pPager, i32(4))
-_9:
_2:
- r0 = _rc
- return
+ return _rc
}
-var _sqlite3PagerExclusiveLockØ00__func__Ø000 [26]int8 // -
+var _sqlite3PagerExclusiveLockØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerExclusiveLockØ00__func__Ø000[0], str(58560), 26)
+ crt.Xstrncpy(nil, &_sqlite3PagerExclusiveLockØ00__func__Ø000[0], str(56638), 26)
}
-var _syncJournalØ00zerobyteØ001 uint8 // sqlite3.c:51168:27
+var _syncJournalØ00zerobyteØ001 uint8
-func _sqlite3PcacheClearSyncFlags(tls *crt.TLS, _pCache *XPCache) { // sqlite3.c:44738:1
- var _p *XPgHdr // sqlite3.c:44739:9
- _ = _p
+// Clear the PGHDR_NEED_SYNC flag from all dirty pages.
+func _sqlite3PcacheClearSyncFlags(tls *crt.TLS, _pCache *XPCache) {
+ var _p *XPgHdr
_p = (*XPgHdr)(_pCache.X0)
_0:
if _p == nil {
goto _3
}
-
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */)))
*p = uint16(int32(*p) & i32(-9))
- sink12 = *p
+ sink14 = *p
}
_p = (*XPgHdr)(_p.X9)
goto _0
-
_3:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCache)) + uintptr(8 /* X2 */))))) = (*XPgHdr)(_pCache.X1)
}
-func _pager_write_pagelist(tls *crt.TLS, _pPager *XPager, _pList *XPgHdr) (r0 int32) { // sqlite3.c:51260:1
- var _rc int32 // sqlite3.c:51261:7
- _ = _rc
- var _2_szFile int64 // sqlite3.c:51286:19
- _ = _2_szFile
- var _3_pgno uint32 // sqlite3.c:51292:10
- _ = _3_pgno
- var _4_offset int64 // sqlite3.c:51303:11
- _ = _4_offset
- var _4_pData *int8 // sqlite3.c:51304:12
- _ = _4_pData
+// The argument is the first in a linked list of dirty pages connected
+// by the PgHdr.pDirty pointer. This function writes each one of the
+// in-memory pages in the list to the database file. The argument may
+// be NULL, representing an empty list. In this case this function is
+// a no-op.
+//
+// The pager must hold at least a RESERVED lock when this function
+// is called. Before writing anything to the database file, this lock
+// is upgraded to an EXCLUSIVE lock. If the lock cannot be obtained,
+// SQLITE_BUSY is returned and no data is written to the database file.
+//
+// If the pager is a temp-file pager and the actual file-system file
+// is not yet open, it is created and opened before any data is
+// written out.
+//
+// Once the lock has been upgraded and, if necessary, the file opened,
+// the pages are written out to the database file in list order. Writing
+// a page is skipped if it meets either of the following criteria:
+//
+// * The page number is greater than Pager.dbSize, or
+// * The PGHDR_DONT_WRITE flag is set on the page.
+//
+// If writing out a page causes the database file to grow, Pager.dbFileSize
+// is updated accordingly. If page 1 is written out, then the value cached
+// in Pager.dbFileVers[] is updated to match the new value stored in
+// the database file.
+//
+// If everything is successful, SQLITE_OK is returned. If an IO error
+// occurs, an IO error code is returned. Or, if the EXCLUSIVE lock cannot
+// be obtained, SQLITE_BUSY is returned.
+func _pager_write_pagelist(tls *crt.TLS, _pPager *XPager, _pList *XPgHdr) (r0 int32) {
+ var _rc int32
+ var _2_szFile, _4_offset int64
+ var _3_pgno uint32
+ var _4_pData *int8
_rc = i32(0)
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51264), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51264), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPager.X10) == 0 && int32(_pPager.X14) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51265), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(58588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51265), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(56664)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPager.X15) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51266), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(18308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51266), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(18888)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && (*XPgHdr)(_pList.X3) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51267), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(58644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51267), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(56719)))
crt.X__builtin_abort(tls)
}
}()
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil {
- goto _10
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
+ func() {
+ if (_pPager.X10) == 0 || _rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51274), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(56758)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _pagerOpentemp(tls, _pPager, (*Xsqlite3_file)(_pPager.X31), int32(_pPager.X46))
}
-
- func() {
- if (_pPager.X10) == 0 || _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51274), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(58684)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _pagerOpentemp(tls, _pPager, (*Xsqlite3_file)(_pPager.X31), int32(_pPager.X46))
-_10:
func() {
if _rc == i32(0) && (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51281), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(58720)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51281), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(56792)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(0) || (_pPager.X25) >= (_pPager.X22) || (*XPgHdr)(_pList.X3) == nil && (_pList.X5) <= (_pPager.X25) {
- goto _20
+ if ((_rc == i32(0)) && ((_pPager.X25) < (_pPager.X22))) && (((*XPgHdr)(_pList.X3) != nil) || ((_pList.X5) > (_pPager.X25))) {
+ _2_szFile = int64(_pPager.X48) * int64(_pPager.X22)
+ _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), i32(5), (unsafe.Pointer)(&_2_szFile))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(40 /* X25 */))) = _pPager.X22
}
-
- _2_szFile = int64(_pPager.X48) * int64(_pPager.X22)
- _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), i32(5), (unsafe.Pointer)(&_2_szFile))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(40 /* X25 */))) = _pPager.X22
-_20:
_21:
if _rc != i32(0) || _pList == nil {
goto _22
}
-
_3_pgno = _pList.X5
if _3_pgno > (_pPager.X22) || i32(0) != (int32(_pList.X6)&i32(16)) {
goto _25
}
-
_4_offset = int64(_3_pgno-uint32(i32(1))) * int64(_pPager.X48)
func() {
if (int32(_pList.X6) & i32(8)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51306), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(58756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51306), unsafe.Pointer((*int8)(unsafe.Pointer(&_pager_write_pagelistØ00__func__Ø000))), unsafe.Pointer(str(56828)))
crt.X__builtin_abort(tls)
}
}()
- if (_pList.X5) != uint32(i32(1)) {
- goto _28
+ if (_pList.X5) == uint32(i32(1)) {
+ _pager_write_changecounter(tls, _pList)
}
-
- _pager_write_changecounter(tls, _pList)
-_28:
_4_pData = (*int8)(_pList.X1)
_rc = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_pPager.X31), (unsafe.Pointer)(_4_pData), _pPager.X48, _4_offset)
- if _3_pgno != uint32(i32(1)) {
- goto _29
+ if _3_pgno == uint32(i32(1)) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pData))+1*uintptr(i32(24))))), u32(16))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*[16]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(108 /* X40 */)))), (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pData))+1*uintptr(i32(24))))), u32(16))
-_29:
- if _3_pgno <= (_pPager.X24) {
- goto _30
+ if _3_pgno > (_pPager.X24) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _3_pgno
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(36 /* X24 */))) = _3_pgno
-_30:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager))+uintptr(184 /* X55 */))))) + 4*uintptr(i32(2)))) += 1
_sqlite3BackupUpdate(tls, (*Xsqlite3_backup)(_pPager.X36), _3_pgno, (*uint8)(_pList.X1))
goto _31
-
_25:
_31:
_pList = (*XPgHdr)(_pList.X3)
goto _21
-
_22:
return _rc
+
+ _ = _2_szFile
+ panic(0)
}
-var _pager_write_pagelistØ00__func__Ø000 [21]int8 // -
+var _pager_write_pagelistØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_pager_write_pagelistØ00__func__Ø000[0], str(58792), 21)
+ crt.Xstrncpy(nil, &_pager_write_pagelistØ00__func__Ø000[0], str(56862), 21)
}
-func _pagerOpentemp(tls *crt.TLS, _pPager *XPager, _pFile *Xsqlite3_file, _vfsFlags int32) (r0 int32) { // sqlite3.c:50556:1
- var _rc int32 // sqlite3.c:50561:7
- _ = _rc
+// Open a temporary file.
+//
+// Write the file descriptor into *pFile. Return SQLITE_OK on success
+// or some other error code if we fail. The OS will automatically
+// delete the temporary file when it is closed.
+//
+// The flags passed to the VFS layer xOpen() call are those specified
+// by parameter vfsFlags ORed with the following:
+//
+// SQLITE_OPEN_READWRITE
+// SQLITE_OPEN_CREATE
+// SQLITE_OPEN_EXCLUSIVE
+// SQLITE_OPEN_DELETEONCLOSE
+func _pagerOpentemp(tls *crt.TLS, _pPager *XPager, _pFile *Xsqlite3_file, _vfsFlags int32) (r0 int32) {
+ var _rc int32
{
p := &_vfsFlags
*p = (*p) | i32(30)
@@ -48040,69 +43364,83 @@ func _pagerOpentemp(tls *crt.TLS, _pPager *XPager, _pFile *Xsqlite3_file, _vfsFl
_rc = _sqlite3OsOpen(tls, (*Xsqlite3_vfs)(_pPager.X0), nil, _pFile, _vfsFlags, nil)
func() {
if _rc == i32(0) && (*Xsqlite3_io_methods)(_pFile.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50570), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpentempØ00__func__Ø000))), unsafe.Pointer(str(58816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50570), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerOpentempØ00__func__Ø000))), unsafe.Pointer(str(56883)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-var _pagerOpentempØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pagerOpentempØ00__func__Ø000[0], str(58848), 14)
-}
-
-func _sqlite3BtreeCommitPhaseTwo(tls *crt.TLS, _p *XBtree, _bCleanup int32) (r0 int32) { // sqlite3.c:62920:1
- var _1_rc int32 // sqlite3.c:62930:9
- _ = _1_rc
- var _1_pBt *XBtShared // sqlite3.c:62931:14
- _ = _1_pBt
- if int32(_p.X2) != i32(0) {
- goto _0
+var _pagerOpentempØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pagerOpentempØ00__func__Ø000[0], str(56914), 14)
+}
+
+// Commit the transaction currently in progress.
+//
+// This routine implements the second phase of a 2-phase commit. The
+// sqlite3BtreeCommitPhaseOne() routine does the first phase and should
+// be invoked prior to calling this routine. The sqlite3BtreeCommitPhaseOne()
+// routine did all the work of writing information out to disk and flushing the
+// contents so that they are written onto the disk platter. All this
+// routine has to do is delete or truncate or zero the header in the
+// the rollback journal (which causes the transaction to commit) and
+// drop locks.
+//
+// Normally, if an error occurs while the pager layer is attempting to
+// finalize the underlying journal file, this function returns an error and
+// the upper layer will attempt a rollback. However, if the second argument
+// is non-zero then this b-tree transaction is part of a multi-file
+// transaction. In this case, the transaction has already been committed
+// (by deleting a master journal file) and the caller will ignore this
+// functions return code. So, even if an error occurs in the pager layer,
+// reset the b-tree objects internal state to indicate that the write
+// transaction has been closed. This is quite safe, as the pager will have
+// transitioned to the error state.
+//
+// This will release the write lock on the database file. If there
+// are no active cursors, it also releases the read lock.
+func _sqlite3BtreeCommitPhaseTwo(tls *crt.TLS, _p *XBtree, _bCleanup int32) (r0 int32) {
+ var _1_rc int32
+ var _1_pBt *XBtShared
+ if int32(_p.X2) == i32(0) {
+ return i32(0)
}
- return i32(0)
-
-_0:
_sqlite3BtreeEnter(tls, _p)
func() {
if int32((*XBtShared)(_p.X1).X8) == i32(0) && ((*XBtShared)(_p.X1).X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(8808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(9977)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XBtShared)(_p.X1).X8) < int32(_p.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(8872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(10038)))
crt.X__builtin_abort(tls)
}
}()
if int32(_p.X2) != i32(2) {
goto _6
}
-
_1_pBt = (*XBtShared)(_p.X1)
func() {
if int32(_1_pBt.X8) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62932), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(58864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62932), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(56928)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_1_pBt.X17) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62933), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(58896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62933), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(56960)))
crt.X__builtin_abort(tls)
}
}()
_1_rc = _sqlite3PagerCommitPhaseTwo(tls, (*XPager)(_1_pBt.X0))
- if _1_rc == i32(0) || _bCleanup != i32(0) {
- goto _12
+ if (_1_rc != i32(0)) && (_bCleanup == i32(0)) {
+ _sqlite3BtreeLeave(tls, _p)
+ return _1_rc
}
-
- _sqlite3BtreeLeave(tls, _p)
- return _1_rc
-
-_12:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X8 */))) -= 1
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pBt)) + uintptr(20 /* X8 */))) = uint8(i32(1))
_btreeClearHasContent(tls, _1_pBt)
@@ -48112,216 +43450,204 @@ _6:
return i32(0)
}
-var _sqlite3BtreeCommitPhaseTwoØ00__func__Ø000 [27]int8 // -
+var _sqlite3BtreeCommitPhaseTwoØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000[0], str(58916), 27)
+ crt.Xstrncpy(nil, &_sqlite3BtreeCommitPhaseTwoØ00__func__Ø000[0], str(56980), 27)
}
-func _sqlite3PagerCommitPhaseTwo(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:53398:1
- var _rc int32 // sqlite3.c:53399:7
- _ = _rc
+// When this function is called, the database file has been completely
+// updated to reflect the changes made by the current transaction and
+// synced to disk. The journal file still exists in the file-system
+// though, and if a failure occurs at this point it will eventually
+// be used as a hot-journal and the current transaction rolled back.
+//
+// This function finalizes the journal file, either by deleting,
+// truncating or partially zeroing it, so that it cannot be used
+// for hot-journal rollback. Once this is done the transaction is
+// irrevocably committed.
+//
+// If an error occurs, an IO error code is returned and the pager
+// moves into the error state. Otherwise, SQLITE_OK is returned.
+func _sqlite3PagerCommitPhaseTwo(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ var _rc int32
_rc = i32(0)
if func() int32 {
if (_pPager.X26) != 0 {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _2
+ }() != 0 {
+ return _pPager.X26
}
- return _pPager.X26
-
-_2:
func() {
if int32(_pPager.X14) != i32(2) && int32(_pPager.X14) != i32(5) && ((*XWal)(_pPager.X60) == nil || int32(_pPager.X14) != i32(3)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53406), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(58944)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53406), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(57007)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53410), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53410), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(11016)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pPager.X14) != i32(2) || (_pPager.X1) == 0 || int32(_pPager.X2) != i32(1) {
- goto _12
+ if ((int32(_pPager.X14) == i32(2)) && ((_pPager.X1) != 0)) && (int32(_pPager.X2) == i32(1)) {
+ func() {
+ if (_pPager.X34) != int64(_pPager.X47) && (_pPager.X34) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(53427), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(57150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(1))
+ return i32(0)
}
-
- func() {
- if (_pPager.X34) != int64(_pPager.X47) && (_pPager.X34) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(53427), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCommitPhaseTwoØ00__func__Ø000))), unsafe.Pointer(str(59088)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(17 /* X14 */))) = uint8(i32(1))
- return i32(0)
-
-_12:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(104 /* X39 */))) += 1
_rc = _pager_end_transaction(tls, _pPager, int32(_pPager.X17), i32(1))
return _pager_error(tls, _pPager, _rc)
}
-var _sqlite3PagerCommitPhaseTwoØ00__func__Ø000 [27]int8 // -
+var _sqlite3PagerCommitPhaseTwoØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerCommitPhaseTwoØ00__func__Ø000[0], str(59156), 27)
+ crt.Xstrncpy(nil, &_sqlite3PagerCommitPhaseTwoØ00__func__Ø000[0], str(57216), 27)
}
-func _sqlite3VdbeSetNumCols(tls *crt.TLS, _p *TVdbe, _nResColumn int32) { // sqlite3.c:73582:1
- var _pColName *XMem // sqlite3.c:73583:7
- _ = _pColName
- var _n int32 // sqlite3.c:73584:7
- _ = _n
- var _db *Xsqlite3 // sqlite3.c:73585:11
- _ = _db
+// Set the number of result columns that will be returned by this SQL
+// statement. This is now set at compile time, rather than during
+// execution of the vdbe program so that sqlite3_column_count() can
+// be called on an SQL statement before sqlite3_step().
+func _sqlite3VdbeSetNumCols(tls *crt.TLS, _p *TVdbe, _nResColumn int32) {
+ var _n int32
+ var _db *Xsqlite3
+ var _pColName *XMem
_db = (*Xsqlite3)(_p.X0)
_releaseMemArray(tls, (*XMem)(_p.X20), int32(_p.X29)*i32(2))
_sqlite3DbFree(tls, _db, _p.X20)
_n = _nResColumn * i32(2)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(136 /* X29 */))) = uint16(_nResColumn)
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(96 /* X20 */))))) = store18(&_pColName, (*XMem)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(48)*uint32(_n)))))
- if (*XMem)(_p.X20) != nil {
- goto _0
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(96 /* X20 */))))) = store20(&_pColName, (*XMem)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(48)*uint32(_n)))))
+ if (*XMem)(_p.X20) == nil {
+ return
}
- return
-
-_0:
_initMemArray(tls, (*XMem)(_p.X20), _n, (*Xsqlite3)(_p.X0), uint16(i32(1)))
+ _ = _pColName
}
-func _releaseMemArray(tls *crt.TLS, _p *XMem, _N int32) { // sqlite3.c:72949:1
- var _1_pEnd *XMem // sqlite3.c:72951:9
- _ = _1_pEnd
- var _1_db *Xsqlite3 // sqlite3.c:72952:13
- _ = _1_db
+// Release an array of N Mem elements
+func _releaseMemArray(tls *crt.TLS, _p *XMem, _N int32) {
+ var _1_db *Xsqlite3
+ var _1_pEnd *XMem
if _p == nil || _N == 0 {
goto _1
}
-
_1_pEnd = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 48*uintptr(_N)))
_1_db = (*Xsqlite3)(_p.X9)
if (_1_db.X79) == nil {
goto _2
}
-
_3:
- if (_p.X7) == 0 {
- goto _4
+ if (_p.X7) != 0 {
+ _sqlite3DbFree(tls, _1_db, (unsafe.Pointer)(_p.X6))
}
-
- _sqlite3DbFree(tls, _1_db, (unsafe.Pointer)(_p.X6))
-_4:
- if uintptr(unsafe.Pointer(preInc18(&_p, 48))) < uintptr(unsafe.Pointer(_1_pEnd)) {
+ if uintptr(unsafe.Pointer(preInc20(&_p, 48))) < uintptr(unsafe.Pointer(_1_pEnd)) {
goto _3
}
return
-
_2:
_5:
func() {
if (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+48*uintptr(i32(1)))) != _1_pEnd && (*Xsqlite3)((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+48*uintptr(i32(0)))).X9) != (*Xsqlite3)((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+48*uintptr(i32(1)))).X9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72960), unsafe.Pointer((*int8)(unsafe.Pointer(&_releaseMemArrayØ00__func__Ø000))), unsafe.Pointer(str(59184)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72960), unsafe.Pointer((*int8)(unsafe.Pointer(&_releaseMemArrayØ00__func__Ø000))), unsafe.Pointer(str(57243)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3VdbeCheckMemInvariants(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72961), unsafe.Pointer((*int8)(unsafe.Pointer(&_releaseMemArrayØ00__func__Ø000))), unsafe.Pointer(str(4560)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72961), unsafe.Pointer((*int8)(unsafe.Pointer(&_releaseMemArrayØ00__func__Ø000))), unsafe.Pointer(str(6177)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X1) & i32(9312)) == 0 {
- goto _11
+ if (int32(_p.X1) & i32(9312)) != 0 {
+ _sqlite3VdbeMemRelease(tls, _p)
+ goto _12
}
-
- _sqlite3VdbeMemRelease(tls, _p)
- goto _12
-
-_11:
- if (_p.X7) == 0 {
- goto _13
+ if (_p.X7) != 0 {
+ _sqlite3DbFreeNN(tls, _1_db, (unsafe.Pointer)(_p.X6))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(0)
}
-
- _sqlite3DbFreeNN(tls, _1_db, (unsafe.Pointer)(_p.X6))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(0)
-_13:
_12:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = uint16(i32(128))
- if uintptr(unsafe.Pointer(preInc18(&_p, 48))) < uintptr(unsafe.Pointer(_1_pEnd)) {
+ if uintptr(unsafe.Pointer(preInc20(&_p, 48))) < uintptr(unsafe.Pointer(_1_pEnd)) {
goto _5
}
-
_1:
}
-var _releaseMemArrayØ00__func__Ø000 [16]int8 // -
+var _releaseMemArrayØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_releaseMemArrayØ00__func__Ø000[0], str(59220), 16)
+ crt.Xstrncpy(nil, &_releaseMemArrayØ00__func__Ø000[0], str(57277), 16)
}
-func _initMemArray(tls *crt.TLS, _p *XMem, _N int32, _db *Xsqlite3, _flags uint16) { // sqlite3.c:72934:1
+// Initialize an array of N Mem element.
+func _initMemArray(tls *crt.TLS, _p *XMem, _N int32, _db *Xsqlite3, _flags uint16) {
_0:
- if postInc1(&_N, int32(-1)) <= i32(0) {
- goto _1
+ if postInc1(&_N, int32(-1)) > i32(0) {
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))))) = _db
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = _flags
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(0)
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X11 */))))) = nil
+ *(*uintptr)(unsafe.Pointer(&_p)) += uintptr(48)
+ goto _0
}
-
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))))) = _db
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = _flags
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(0)
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X11 */))))) = nil
- *(*uintptr)(unsafe.Pointer(&_p)) += uintptr(48)
- goto _0
-
-_1:
}
-func _sqlite3VdbeSetColName(tls *crt.TLS, _p *TVdbe, _idx int32, _var int32, _zName *int8, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) { // sqlite3.c:73606:1
- var _rc int32 // sqlite3.c:73613:7
- _ = _rc
- var _pColName *XMem // sqlite3.c:73614:7
- _ = _pColName
+// Set the name of the idx'th column to be returned by the SQL statement.
+// zName must be a pointer to a nul terminated string.
+//
+// This call must be made after a call to sqlite3VdbeSetNumCols().
+//
+// The final parameter, xDel, must be one of SQLITE_DYNAMIC, SQLITE_STATIC
+// or SQLITE_TRANSIENT. If it is SQLITE_DYNAMIC, then the buffer pointed
+// to by zName will be freed by sqlite3DbFree() when the vdbe is destroyed.
+func _sqlite3VdbeSetColName(tls *crt.TLS, _p *TVdbe, _idx int32, _var int32, _zName *int8, _xDel func(*crt.TLS, unsafe.Pointer)) (r0 int32) {
+ var _rc int32
+ var _pColName *XMem
func() {
if _idx >= int32(_p.X29) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(59236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(57293)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _var >= i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(59256)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(57311)))
crt.X__builtin_abort(tls)
}
}()
- if ((*Xsqlite3)(_p.X0).X17) == 0 {
- goto _4
+ if ((*Xsqlite3)(_p.X0).X17) != 0 {
+ func() {
+ if _zName != nil && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{_xDel})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))})) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(57325)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _sqlite3NomemError(tls, i32(73619))
}
-
- func() {
- if _zName != nil && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{_xDel})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(*(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(59272)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _sqlite3NomemError(tls, i32(73619))
-
-_4:
func() {
if (*XMem)(_p.X20) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73621), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(59304)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73621), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(57356)))
crt.X__builtin_abort(tls)
}
}()
@@ -48329,150 +43655,139 @@ _4:
_rc = _sqlite3VdbeMemSetStr(tls, _pColName, _zName, i32(-1), uint8(i32(1)), _xDel)
func() {
if _rc == i32(0) && _zName != nil && (int32(_pColName.X1)&i32(512)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73624), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(59320)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73624), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetColNameØ00__func__Ø000))), unsafe.Pointer(str(57371)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-var _sqlite3VdbeSetColNameØ00__func__Ø000 [22]int8 // -
+var _sqlite3VdbeSetColNameØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSetColNameØ00__func__Ø000[0], str(59372), 22)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSetColNameØ00__func__Ø000[0], str(57420), 22)
}
-var _sqlite3PrepareØ00azColNameØ001 [12]*int8 // sqlite3.c:116276:23
+var _sqlite3PrepareØ00azColNameØ001 [12]*int8
func init() {
- _sqlite3PrepareØ00azColNameØ001 = [12]*int8{str(59396), str(59404), str(59412), str(59416), str(59420), str(59424), str(59428), str(59432), str(59440), str(59452), str(26440), str(59460)}
+ _sqlite3PrepareØ00azColNameØ001 = [12]*int8{str(57442), str(57447), str(57454), str(57457), str(57460), str(57463), str(57466), str(57469), str(57477), str(57486), str(26370), str(57492)}
}
-func _sqlite3VdbeSetSql(tls *crt.TLS, _p *TVdbe, _z *int8, _n int32, _isPrepareV2 int32) { // sqlite3.c:71477:1
+// Remember the SQL string for a prepared statement.
+func _sqlite3VdbeSetSql(tls *crt.TLS, _p *TVdbe, _z *int8, _n int32, _isPrepareV2 int32) {
func() {
if _isPrepareV2 != i32(1) && _isPrepareV2 != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71478), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetSqlØ00__func__Ø000))), unsafe.Pointer(str(59468)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71478), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetSqlØ00__func__Ø000))), unsafe.Pointer(str(57499)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil {
- goto _3
+ if _p == nil {
+ return
}
- return
-
-_3:
- if _isPrepareV2 != 0 {
- goto _4
+ if _isPrepareV2 == 0 {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(192 /* X41 */))) = uint32(i32(0))
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(192 /* X41 */))) = uint32(i32(0))
-_4:
func() {
if (_p.X36) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71484), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetSqlØ00__func__Ø000))), unsafe.Pointer(str(59504)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71484), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetSqlØ00__func__Ø000))), unsafe.Pointer(str(57532)))
crt.X__builtin_abort(tls)
}
}()
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(172 /* X36 */))) = _sqlite3DbStrNDup(tls, (*Xsqlite3)(_p.X0), _z, uint64(_n))
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(uint8(_isPrepareV2)), 512, 9)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(uint8(_isPrepareV2)), 512, 9)
}
-var _sqlite3VdbeSetSqlØ00__func__Ø000 [18]int8 // -
+var _sqlite3VdbeSetSqlØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSetSqlØ00__func__Ø000[0], str(59516), 18)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSetSqlØ00__func__Ø000[0], str(57543), 18)
}
-func _sqlite3VdbeFinalize(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:74361:1
- var _rc int32 // sqlite3.c:74362:7
- _ = _rc
+// Clean up and delete a VDBE after execution. Return an integer which is
+// the result code. Write any error message text into *pzErrMsg.
+func _sqlite3VdbeFinalize(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _rc int32
_rc = i32(0)
- if (_p.X5) != uint32(i32(770837923)) && (_p.X5) != uint32(i32(832317811)) {
- goto _1
+ if ((_p.X5) == uint32(i32(770837923))) || ((_p.X5) == uint32(i32(832317811))) {
+ _rc = _sqlite3VdbeReset(tls, _p)
+ func() {
+ if (_rc & ((*Xsqlite3)(_p.X0).X11)) != _rc {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74365), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFinalizeØ00__func__Ø000))), unsafe.Pointer(str(57561)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _rc = _sqlite3VdbeReset(tls, _p)
- func() {
- if (_rc & ((*Xsqlite3)(_p.X0).X11)) != _rc {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74365), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFinalizeØ00__func__Ø000))), unsafe.Pointer(str(59536)))
- crt.X__builtin_abort(tls)
- }
- }()
-_1:
_sqlite3VdbeDelete(tls, _p)
return _rc
}
-func _sqlite3VdbeReset(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:74282:1
- var _db *Xsqlite3 // sqlite3.c:74283:11
- _ = _db
+// Clean up a VDBE after execution but do not delete the VDBE just yet.
+// Write any error messages into *pzErrMsg. Return the result code.
+//
+// After this routine is run, the VDBE should be ready to be executed
+// again.
+//
+// To look at it another way, this routine resets the state of the
+// virtual machine from VDBE_MAGIC_RUN or VDBE_MAGIC_HALT back to
+// VDBE_MAGIC_INIT.
+func _sqlite3VdbeReset(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_p.X0)
_sqlite3VdbeHalt(tls, _p)
if (_p.X9) < i32(0) {
goto _0
}
-
_sqlite3VdbeTransferError(tls, _p)
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X22))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = nil
- if ((uint32((_p.X32)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _1
+ if ((uint32((_p.X32)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
}
-
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
-_1:
goto _2
-
_0:
- if (_p.X10) == 0 || ((uint32(_p.X32)<>uint(i32(31))) == 0 {
- goto _4
+ if (_p.X10) != 0 && (((uint32(_p.X32) << uint(i32(31))) >> uint(i32(31))) != 0) {
+ _sqlite3ErrorWithMsg(tls, _db, _p.X10, func() *int8 {
+ if (_p.X22) != nil {
+ return str(24576)
+ }
+ return nil
+ }(), unsafe.Pointer(_p.X22))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X22))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = nil
}
-
- _sqlite3ErrorWithMsg(tls, _db, _p.X10, func() *int8 {
- if (_p.X22) != nil {
- return str(24316)
- }
- return nil
- }(), unsafe.Pointer(_p.X22))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X22))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = nil
-_4:
_2:
_Cleanup(tls, _p)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = uint32(i32(1224384374))
return (_p.X10) & (_db.X11)
}
-func _sqlite3VdbeHalt(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:74020:1
- var _rc int32 // sqlite3.c:74021:7
- _ = _rc
- var _db *Xsqlite3 // sqlite3.c:74022:11
- _ = _db
- var _3_mrc int32 // sqlite3.c:74052:9
- _ = _3_mrc
- var _3_eStatementOp int32 // sqlite3.c:74053:9
- _ = _3_eStatementOp
- var _3_isSpecialError int32 // sqlite3.c:74054:9
- _ = _3_isSpecialError
+// This routine is called the when a VDBE tries to halt. If the VDBE
+// has made changes and is in autocommit mode, then commit those
+// changes. If a rollback is needed, then do the rollback.
+//
+// This routine is the only way to move the state of a VM from
+// SQLITE_MAGIC_RUN to SQLITE_MAGIC_HALT. It is harmless to
+// call this on a VM that is in the SQLITE_MAGIC_HALT state.
+//
+// Return an error code. If the commit could not complete because of
+// lock contention, return SQLITE_BUSY. If SQLITE_BUSY is returned, it
+// means the close did not happen and needs to be repeated.
+func _sqlite3VdbeHalt(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _rc, _3_mrc, _3_eStatementOp, _3_isSpecialError int32
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_p.X0)
- if (_p.X5) == uint32(i32(770837923)) {
- goto _0
+ if (_p.X5) != uint32(i32(770837923)) {
+ return i32(0)
}
- return i32(0)
-
-_0:
- if (_db.X17) == 0 {
- goto _1
+ if (_db.X17) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3NomemError(tls, i32(74044))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3NomemError(tls, i32(74044))
-_1:
_closeAllCursors(tls, _p)
_checkActiveVdbeCnt(tls, _db)
if (_p.X9) < i32(0) || ((uint32((_p.X32)>>uint(i32(8)))<>uint(i32(31))) == 0 {
goto _3
}
-
_3_eStatementOp = i32(0)
_sqlite3VdbeEnter(tls, _p)
_3_mrc = (_p.X10) & i32(255)
@@ -48480,19 +43795,13 @@ _1:
if _3_isSpecialError == 0 {
goto _7
}
-
if ((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != 0 && _3_mrc == i32(9) {
goto _9
}
-
- if _3_mrc != i32(7) && _3_mrc != i32(13) || ((uint32((_p.X32)>>uint(i32(6)))<>uint(i32(31))) == 0 {
- goto _12
+ if ((_3_mrc == i32(7)) || (_3_mrc == i32(13))) && (((uint32((_p.X32)>>uint(i32(6))) << uint(i32(31))) >> uint(i32(31))) != 0) {
+ _3_eStatementOp = i32(2)
+ goto _13
}
-
- _3_eStatementOp = i32(2)
- goto _13
-
-_12:
_sqlite3RollbackAll(tls, _db, i32(516))
_sqlite3CloseSavepoints(tls, _db)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
@@ -48500,66 +43809,47 @@ _12:
_13:
_9:
_7:
- if (_p.X10) != i32(0) {
- goto _14
+ if (_p.X10) == i32(0) {
+ _sqlite3VdbeCheckFk(tls, _p, i32(0))
}
-
- _sqlite3VdbeCheckFk(tls, _p, i32(0))
-_14:
if (_db.X64) > i32(0) && (**XVTable)(unsafe.Pointer(_db.X67)) == nil || (_db.X15) == 0 || (_db.X36) != bool2int(int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) == i32(0)) {
goto _18
}
-
if (_p.X10) != i32(0) && (int32(_p.X30) != i32(3) || _3_isSpecialError != 0) {
goto _21
}
-
_rc = _sqlite3VdbeCheckFk(tls, _p, i32(1))
if _rc == i32(0) {
goto _22
}
-
if func() int32 {
if ((uint32((_p.X32)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) != 0 {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _25
+ }() != 0 {
+ _sqlite3VdbeLeave(tls, _p)
+ return i32(1)
}
-
- _sqlite3VdbeLeave(tls, _p)
- return i32(1)
-
-_25:
_rc = i32(787)
goto _26
-
_22:
_rc = _vdbeCommit(tls, _db, _p)
_26:
- if _rc != i32(5) || ((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) == 0 {
- goto _28
+ if (_rc == i32(5)) && (((uint32((_p.X32)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) != 0) {
+ _sqlite3VdbeLeave(tls, _p)
+ return i32(5)
}
-
- _sqlite3VdbeLeave(tls, _p)
- return i32(5)
-
-_28:
- if _rc == i32(0) {
- goto _30
+ if _rc != i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
+ _sqlite3RollbackAll(tls, _db, i32(0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
+ goto _31
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
- _sqlite3RollbackAll(tls, _db, i32(0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
- goto _31
-
-_30:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(436 /* X77 */))) = int64(i32(0))
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */))) = int64(i32(0))
{
@@ -48570,35 +43860,24 @@ _30:
_sqlite3CommitInternalChanges(tls, _db)
_31:
goto _32
-
_21:
_sqlite3RollbackAll(tls, _db, i32(0))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
_32:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(432 /* X76 */))) = i32(0)
goto _33
-
_18:
if _3_eStatementOp != i32(0) {
goto _34
}
-
- if (_p.X10) != i32(0) && int32(_p.X30) != i32(3) {
- goto _36
+ if ((_p.X10) == i32(0)) || (int32(_p.X30) == i32(3)) {
+ _3_eStatementOp = i32(1)
+ goto _37
}
-
- _3_eStatementOp = i32(1)
- goto _37
-
-_36:
- if int32(_p.X30) != i32(2) {
- goto _38
+ if int32(_p.X30) == i32(2) {
+ _3_eStatementOp = i32(2)
+ goto _39
}
-
- _3_eStatementOp = i32(2)
- goto _39
-
-_38:
_sqlite3RollbackAll(tls, _db, i32(516))
_sqlite3CloseSavepoints(tls, _db)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
@@ -48610,20 +43889,15 @@ _33:
if _3_eStatementOp == 0 {
goto _40
}
-
_rc = _sqlite3VdbeCloseStatement(tls, _p, _3_eStatementOp)
if _rc == 0 {
goto _41
}
-
- if (_p.X10) != i32(0) && ((_p.X10)&i32(255)) != i32(19) {
- goto _43
+ if ((_p.X10) == i32(0)) || (((_p.X10) & i32(255)) == i32(19)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X22))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = nil
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X22))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = nil
-_43:
_sqlite3RollbackAll(tls, _db, i32(516))
_sqlite3CloseSavepoints(tls, _db)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
@@ -48633,15 +43907,10 @@ _40:
if ((uint32((_p.X32)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) == 0 {
goto _44
}
-
- if _3_eStatementOp == i32(2) {
- goto _45
+ if _3_eStatementOp != i32(2) {
+ _sqlite3VdbeSetChanges(tls, _db, _p.X11)
+ goto _46
}
-
- _sqlite3VdbeSetChanges(tls, _db, _p.X11)
- goto _46
-
-_45:
_sqlite3VdbeSetChanges(tls, _db, i32(0))
_46:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
@@ -48651,55 +43920,42 @@ _3:
if (_p.X9) < i32(0) {
goto _47
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(152 /* X34 */))) -= 1
- if ((uint32((_p.X32)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) != 0 {
- goto _48
+ if ((uint32((_p.X32)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) == 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(160 /* X36 */))) -= 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(160 /* X36 */))) -= 1
-_48:
- if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _49
+ if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(156 /* X35 */))) -= 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(156 /* X35 */))) -= 1
-_49:
func() {
if (_db.X34) < (_db.X35) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74194), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(59564)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74194), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(57587)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_db.X35) < (_db.X36) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74195), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(59596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74195), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(57618)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_db.X36) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74196), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(59628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74196), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(57648)))
crt.X__builtin_abort(tls)
}
}()
_47:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = uint32(i32(832317811))
_checkActiveVdbeCnt(tls, _db)
- if (_db.X17) == 0 {
- goto _56
+ if (_db.X17) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3NomemError(tls, i32(74201))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3NomemError(tls, i32(74201))
-_56:
- if (_db.X15) == 0 {
- goto _57
+ if (_db.X15) != 0 {
}
-
-_57:
func() {
if (_db.X34) <= i32(0) && int32(_db.X15) != i32(0) && (_db.X76) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74212), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(59648)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74212), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeHaltØ00__func__Ø000))), unsafe.Pointer(str(57666)))
crt.X__builtin_abort(tls)
}
}()
@@ -48711,24 +43967,24 @@ _57:
}()
}
-func _closeAllCursors(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:73531:1
- var _1_pFrame *XVdbeFrame // sqlite3.c:73533:15
- _ = _1_pFrame
- var _3_pDel *XVdbeFrame // sqlite3.c:73545:15
- _ = _3_pDel
+// Close all cursors.
+//
+// Also release any dynamic memory held by the VM in the Vdbe.aMem memory
+// cell array. This is necessary as the memory cell array may contain
+// pointers to VdbeFrame objects, which may in turn contain pointers to
+// open cursors.
+func _closeAllCursors(tls *crt.TLS, _p *TVdbe) {
+ var _1_pFrame, _3_pDel *XVdbeFrame
if (*XVdbeFrame)(_p.X38) == nil {
goto _0
}
-
_1_pFrame = (*XVdbeFrame)(_p.X38)
_1:
if (*XVdbeFrame)(_1_pFrame.X1) == nil {
goto _4
}
-
_1_pFrame = (*XVdbeFrame)(_1_pFrame.X1)
goto _1
-
_4:
_sqlite3VdbeFrameRestore(tls, _1_pFrame)
*(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(180 /* X38 */))))) = nil
@@ -48736,45 +43992,37 @@ _4:
_0:
func() {
if (_p.X40) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73539), unsafe.Pointer((*int8)(unsafe.Pointer(&_closeAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(59708)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73539), unsafe.Pointer((*int8)(unsafe.Pointer(&_closeAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(57726)))
crt.X__builtin_abort(tls)
}
}()
_closeCursorsInFrame(tls, _p)
- if (*XMem)(_p.X18) == nil {
- goto _7
+ if (*XMem)(_p.X18) != nil {
+ _releaseMemArray(tls, (*XMem)(_p.X18), _p.X6)
}
-
- _releaseMemArray(tls, (*XMem)(_p.X18), _p.X6)
-_7:
_8:
- if (*XVdbeFrame)(_p.X39) == nil {
- goto _9
+ if (*XVdbeFrame)(_p.X39) != nil {
+ _3_pDel = (*XVdbeFrame)(_p.X39)
+ *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(184 /* X39 */))))) = (*XVdbeFrame)(_3_pDel.X1)
+ _sqlite3VdbeFrameDelete(tls, _3_pDel)
+ goto _8
}
-
- _3_pDel = (*XVdbeFrame)(_p.X39)
- *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(184 /* X39 */))))) = (*XVdbeFrame)(_3_pDel.X1)
- _sqlite3VdbeFrameDelete(tls, _3_pDel)
- goto _8
-
-_9:
- if (*XAuxData)(_p.X43) == nil {
- goto _10
+ if (*XAuxData)(_p.X43) != nil {
+ _sqlite3VdbeDeleteAuxData(tls, (*Xsqlite3)(_p.X0), (**XAuxData)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(200 /* X43 */))))), i32(-1), i32(0))
}
-
- _sqlite3VdbeDeleteAuxData(tls, (*Xsqlite3)(_p.X0), (**XAuxData)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(200 /* X43 */))))), i32(-1), i32(0))
-_10:
func() {
if (*XAuxData)(_p.X43) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73552), unsafe.Pointer((*int8)(unsafe.Pointer(&_closeAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(59724)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73552), unsafe.Pointer((*int8)(unsafe.Pointer(&_closeAllCursorsØ00__func__Ø000))), unsafe.Pointer(str(57739)))
crt.X__builtin_abort(tls)
}
}()
}
-func _sqlite3VdbeFrameRestore(tls *crt.TLS, _pFrame *XVdbeFrame) (r0 int32) { // sqlite3.c:73502:1
- var _v *TVdbe // sqlite3.c:73503:8
- _ = _v
+// Copy the values stored in the VdbeFrame structure to its Vdbe. This
+// is used, for example, when a trigger sub-program is halted to restore
+// control to the main program.
+func _sqlite3VdbeFrameRestore(tls *crt.TLS, _pFrame *XVdbeFrame) (r0 int32) {
+ var _v *TVdbe
_v = (*TVdbe)(_pFrame.X0)
_closeCursorsInFrame(tls, _v)
*(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(84 /* X17 */))))) = (*XVdbeOp)(_pFrame.X2)
@@ -48792,50 +44040,40 @@ func _sqlite3VdbeFrameRestore(tls *crt.TLS, _pFrame *XVdbeFrame) (r0 int32) { //
return _pFrame.X11
}
-func _closeCursorsInFrame(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:73484:1
- var _1_i int32 // sqlite3.c:73486:9
- _ = _1_i
- var _2_pC *XVdbeCursor // sqlite3.c:73488:18
- _ = _2_pC
+// Close all cursors in the current frame.
+func _closeCursorsInFrame(tls *crt.TLS, _p *TVdbe) {
+ var _1_i int32
+ var _2_pC *XVdbeCursor
if (**XVdbeCursor)(unsafe.Pointer(_p.X23)) == nil {
goto _0
}
-
_1_i = i32(0)
_1:
if _1_i >= (_p.X7) {
goto _4
}
-
_2_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_1_i)))
- if _2_pC == nil {
- goto _5
+ if _2_pC != nil {
+ _sqlite3VdbeFreeCursor(tls, _p, _2_pC)
+ *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_1_i))) = nil
}
-
- _sqlite3VdbeFreeCursor(tls, _p, _2_pC)
- *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_1_i))) = nil
-_5:
_1_i += 1
goto _1
-
_4:
_0:
}
-func _sqlite3VdbeFreeCursor(tls *crt.TLS, _p *TVdbe, _pCx *XVdbeCursor) { // sqlite3.c:73447:1
- var _7_pVCur *Xsqlite3_file // sqlite3.c:73470:27
- _ = _7_pVCur
- var _7_pModule *Xsqlite3_module // sqlite3.c:73471:28
- _ = _7_pModule
- if _pCx != nil {
- goto _0
+// Close a VDBE cursor and release all the resources that cursor
+// happens to hold.
+func _sqlite3VdbeFreeCursor(tls *crt.TLS, _p *TVdbe, _pCx *XVdbeCursor) {
+ var _7_pVCur *Xsqlite3_file
+ var _7_pModule *Xsqlite3_module
+ if _pCx == nil {
+ return
}
- return
-
-_0:
func() {
if (*XBtree)(_pCx.X8) != nil && int32(_pCx.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFreeCursorØ00__func__Ø000))), unsafe.Pointer(str(59740)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFreeCursorØ00__func__Ø000))), unsafe.Pointer(str(57754)))
crt.X__builtin_abort(tls)
}
}()
@@ -48853,37 +44091,30 @@ _0:
_5:
_sqlite3VdbeSorterClose(tls, (*Xsqlite3)(_p.X0), _pCx)
goto _8
-
_6:
if ((uint32(_pCx.X7) << uint(i32(31))) >> uint(i32(31))) == 0 {
goto _9
}
-
- if (*XBtree)(_pCx.X8) == nil {
- goto _10
+ if (*XBtree)(_pCx.X8) != nil {
+ _sqlite3BtreeClose(tls, (*XBtree)(_pCx.X8))
}
-
- _sqlite3BtreeClose(tls, (*XBtree)(_pCx.X8))
-_10:
goto _11
-
_9:
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73463), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFreeCursorØ00__func__Ø000))), unsafe.Pointer(str(59788)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73463), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFreeCursorØ00__func__Ø000))), unsafe.Pointer(str(57799)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3BtreeCloseCursor(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */)))))))
+ _sqlite3BtreeCloseCursor(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */)))))))
_11:
goto _8
-
_7:
- _7_pVCur = (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */))))))
+ _7_pVCur = (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */))))))
_7_pModule = (*Xsqlite3_module)((*Xsqlite3_vtab)(_7_pVCur.X0).X0)
func() {
if ((*Xsqlite3_vtab)(_7_pVCur.X0).X1) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73472), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFreeCursorØ00__func__Ø000))), unsafe.Pointer(str(59808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73472), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFreeCursorØ00__func__Ø000))), unsafe.Pointer(str(57818)))
crt.X__builtin_abort(tls)
}
}()
@@ -48892,63 +44123,55 @@ _7:
f func(*crt.TLS, unsafe.Pointer) int32
}{(_7_pModule.X7)})))(tls, _7_pVCur)
goto _8
-
_8:
}
-var _sqlite3VdbeFreeCursorØ00__func__Ø000 [22]int8 // -
+var _sqlite3VdbeFreeCursorØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeFreeCursorØ00__func__Ø000[0], str(59832), 22)
+ crt.Xstrncpy(nil, &_sqlite3VdbeFreeCursorØ00__func__Ø000[0], str(57839), 22)
}
-func _sqlite3VdbeSorterClose(tls *crt.TLS, _db *Xsqlite3, _pCsr *XVdbeCursor) { // sqlite3.c:87273:1
- var _pSorter *XVdbeSorter // sqlite3.c:87274:14
- _ = _pSorter
+// Free any cursor components allocated by sqlite3VdbeSorterXXX routines.
+func _sqlite3VdbeSorterClose(tls *crt.TLS, _db *Xsqlite3, _pCsr *XVdbeCursor) {
+ var _pSorter *XVdbeSorter
func() {
if int32(_pCsr.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87275), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterCloseØ00__func__Ø000))), unsafe.Pointer(str(59856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87275), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterCloseØ00__func__Ø000))), unsafe.Pointer(str(57861)))
crt.X__builtin_abort(tls)
}
}()
- _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
- if _pSorter == nil {
- goto _2
+ _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
+ if _pSorter != nil {
+ _sqlite3VdbeSorterReset(tls, _db, _pSorter)
+ Xsqlite3_free(tls, (unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSorter))
+ *(**XVdbeSorter)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))) = nil
}
-
- _sqlite3VdbeSorterReset(tls, _db, _pSorter)
- Xsqlite3_free(tls, (unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSorter))
- *(**XVdbeSorter)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))) = nil
-_2:
}
-var _sqlite3VdbeSorterCloseØ00__func__Ø000 [23]int8 // -
+var _sqlite3VdbeSorterCloseØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterCloseØ00__func__Ø000[0], str(59888), 23)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterCloseØ00__func__Ø000[0], str(57892), 23)
}
-func _sqlite3VdbeSorterReset(tls *crt.TLS, _db *Xsqlite3, _pSorter *XVdbeSorter) { // sqlite3.c:87240:1
- var _i int32 // sqlite3.c:87241:7
- _ = _i
- var _2_pTask *XSortSubtask // sqlite3.c:87254:17
- _ = _2_pTask
+// Reset a sorting cursor back to its original empty state.
+func _sqlite3VdbeSorterReset(tls *crt.TLS, _db *Xsqlite3, _pSorter *XVdbeSorter) {
+ var _i int32
+ var _2_pTask *XSortSubtask
_vdbeSorterJoinAll(tls, _pSorter, i32(0))
func() {
if (_pSorter.X13) == 0 && (*XPmaReader)(_pSorter.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87243), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterResetØ00__func__Ø000))), unsafe.Pointer(str(59912)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87243), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterResetØ00__func__Ø000))), unsafe.Pointer(str(57915)))
crt.X__builtin_abort(tls)
}
}()
- if (*XPmaReader)(_pSorter.X4) == nil {
- goto _3
+ if (*XPmaReader)(_pSorter.X4) != nil {
+ _vdbePmaReaderClear(tls, (*XPmaReader)(_pSorter.X4))
+ _sqlite3DbFree(tls, _db, _pSorter.X4)
+ *(**XPmaReader)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(16 /* X4 */))))) = nil
}
-
- _vdbePmaReaderClear(tls, (*XPmaReader)(_pSorter.X4))
- _sqlite3DbFree(tls, _db, _pSorter.X4)
- *(**XPmaReader)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(16 /* X4 */))))) = nil
-_3:
_vdbeMergeEngineFree(tls, (*XMergeEngine)(_pSorter.X5))
*(**XMergeEngine)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(20 /* X5 */))))) = nil
_i = i32(0)
@@ -48956,22 +44179,17 @@ _4:
if _i >= int32(_pSorter.X15) {
goto _7
}
-
_2_pTask = (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */))))) + 60*uintptr(_i)))
_vdbeSortSubtaskCleanup(tls, _db, _2_pTask)
*(**XVdbeSorter)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pTask)) + uintptr(8 /* X2 */))))) = _pSorter
_i += 1
goto _4
-
_7:
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) != nil {
- goto _8
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
+ _vdbeSorterRecordFree(tls, nil, (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))
}
-
- _vdbeSorterRecordFree(tls, nil, (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))
-_8:
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */))) = i32(0)
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */))) = i32(0)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(56 /* X12 */))) = uint8(i32(0))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(48 /* X10 */))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(8 /* X2 */))) = i32(0)
@@ -48979,95 +44197,75 @@ _8:
*(**XUnpackedRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(32 /* X8 */))))) = nil
}
-func _vdbeSorterJoinAll(tls *crt.TLS, _pSorter *XVdbeSorter, _rcin int32) (r0 int32) { // sqlite3.c:87156:1
- var _rc int32 // sqlite3.c:87157:7
- _ = _rc
- var _i int32 // sqlite3.c:87158:7
- _ = _i
- var _1_pTask *XSortSubtask // sqlite3.c:87168:17
- _ = _1_pTask
- var _1_rc2 int32 // sqlite3.c:87169:9
- _ = _1_rc2
+// Join all outstanding threads launched by SorterWrite() to create
+// level-0 PMAs.
+func _vdbeSorterJoinAll(tls *crt.TLS, _pSorter *XVdbeSorter, _rcin int32) (r0 int32) {
+ var _rc, _i, _1_rc2 int32
+ var _1_pTask *XSortSubtask
_rc = _rcin
_i = int32(_pSorter.X15) - i32(1)
_0:
if _i < i32(0) {
goto _3
}
-
_1_pTask = (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */))))) + 60*uintptr(_i)))
_1_rc2 = _vdbeSorterJoinThread(tls, _1_pTask)
- if _rc != i32(0) {
- goto _4
+ if _rc == i32(0) {
+ _rc = _1_rc2
}
-
- _rc = _1_rc2
-_4:
_i -= 1
goto _0
-
_3:
return _rc
}
-func _vdbeSorterJoinThread(tls *crt.TLS, _pTask *XSortSubtask) (r0 int32) { // sqlite3.c:87122:1
- var _rc int32 // sqlite3.c:87123:7
- _ = _rc
- var _1_pRet unsafe.Pointer // sqlite3.c:87128:10
- _ = _1_pRet
+// Join thread pTask->thread.
+func _vdbeSorterJoinThread(tls *crt.TLS, _pTask *XSortSubtask) (r0 int32) {
+ var _rc int32
+ var _1_pRet unsafe.Pointer
_rc = i32(0)
- if (*XSQLiteThread)(_pTask.X0) == nil {
- goto _0
+ if (*XSQLiteThread)(_pTask.X0) != nil {
+ _1_pRet = (unsafe.Pointer)(uintptr(1))
+ _sqlite3ThreadJoin(tls, (*XSQLiteThread)(_pTask.X0), &_1_pRet)
+ _rc = int32(uintptr(_1_pRet))
+ func() {
+ if (_pTask.X1) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87133), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterJoinThreadØ00__func__Ø000))), unsafe.Pointer(str(57959)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(4 /* X1 */))) = i32(0)
+ *(**XSQLiteThread)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(0 /* X0 */))))) = nil
}
-
- _1_pRet = (unsafe.Pointer)(uintptr(1))
- _sqlite3ThreadJoin(tls, (*XSQLiteThread)(_pTask.X0), &_1_pRet)
- _rc = int32(uintptr(_1_pRet))
- func() {
- if (_pTask.X1) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87133), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterJoinThreadØ00__func__Ø000))), unsafe.Pointer(str(59956)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(4 /* X1 */))) = i32(0)
- *(**XSQLiteThread)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(0 /* X0 */))))) = nil
-_0:
return _rc
}
-func _sqlite3ThreadJoin(tls *crt.TLS, _p *XSQLiteThread, _ppOut *unsafe.Pointer) (r0 int32) { // sqlite3.c:26934:1
- var _rc int32 // sqlite3.c:26935:7
- _ = _rc
+// Get the results of the thread
+func _sqlite3ThreadJoin(tls *crt.TLS, _p *XSQLiteThread, _ppOut *unsafe.Pointer) (r0 int32) {
+ var _rc int32
func() {
if _ppOut == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26937), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadJoinØ00__func__Ø000))), unsafe.Pointer(str(59972)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26937), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadJoinØ00__func__Ø000))), unsafe.Pointer(str(57975)))
crt.X__builtin_abort(tls)
}
}()
if func() int32 {
if _p == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadJoinØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadJoinØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _4
+ }() != 0 {
+ return _sqlite3NomemError(tls, i32(26938))
}
- return _sqlite3NomemError(tls, i32(26938))
-
-_4:
- if (_p.X1) == 0 {
- goto _5
+ if (_p.X1) != 0 {
+ *_ppOut = _p.X2
+ _rc = i32(0)
+ goto _6
}
-
- *_ppOut = _p.X2
- _rc = i32(0)
- goto _6
-
-_5:
_rc = func() int32 {
if crt.Xpthread_join(tls, _p.X0, _ppOut) != 0 {
return i32(1)
@@ -49079,69 +44277,62 @@ _6:
return _rc
}
-var _sqlite3ThreadJoinØ00__func__Ø000 [18]int8 // -
+var _sqlite3ThreadJoinØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ThreadJoinØ00__func__Ø000[0], str(59984), 18)
+ crt.Xstrncpy(nil, &_sqlite3ThreadJoinØ00__func__Ø000[0], str(57984), 18)
}
-var _vdbeSorterJoinThreadØ00__func__Ø000 [21]int8 // -
+var _vdbeSorterJoinThreadØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterJoinThreadØ00__func__Ø000[0], str(60004), 21)
+ crt.Xstrncpy(nil, &_vdbeSorterJoinThreadØ00__func__Ø000[0], str(58002), 21)
}
-var _sqlite3VdbeSorterResetØ00__func__Ø000 [23]int8 // -
+var _sqlite3VdbeSorterResetØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterResetØ00__func__Ø000[0], str(60028), 23)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterResetØ00__func__Ø000[0], str(58023), 23)
}
-func _vdbePmaReaderClear(tls *crt.TLS, _pReadr *XPmaReader) { // sqlite3.c:86483:1
+// Free all memory belonging to the PmaReader object passed as the
+// argument. All structure fields are set to zero before returning.
+func _vdbePmaReaderClear(tls *crt.TLS, _pReadr *XPmaReader) {
Xsqlite3_free(tls, (unsafe.Pointer)(_pReadr.X5))
Xsqlite3_free(tls, (unsafe.Pointer)(_pReadr.X7))
- if (_pReadr.X9) == nil {
- goto _0
+ if (_pReadr.X9) != nil {
+ _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pReadr.X4), int64(i32(0)), (unsafe.Pointer)(_pReadr.X9))
}
-
- _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pReadr.X4), int64(i32(0)), (unsafe.Pointer)(_pReadr.X9))
-_0:
_vdbeIncrFree(tls, (*XIncrMerger)(_pReadr.X10))
crt.Xmemset(tls, (unsafe.Pointer)(_pReadr), i32(0), u32(52))
}
-func _vdbeIncrFree(tls *crt.TLS, _pIncr *XIncrMerger) { // sqlite3.c:87223:1
+// Free all resources associated with the IncrMerger object indicated by
+// the first argument.
+func _vdbeIncrFree(tls *crt.TLS, _pIncr *XIncrMerger) {
if _pIncr == nil {
goto _0
}
-
if (_pIncr.X5) == 0 {
goto _1
}
-
_vdbeSorterJoinThread(tls, (*XSortSubtask)(_pIncr.X0))
- if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(0)))).X0) == nil {
- goto _2
+ if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(0)))).X0) != nil {
+ _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(0)))).X0))
}
-
- _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(0)))).X0))
-_2:
- if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1)))).X0) == nil {
- goto _3
+ if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1)))).X0) != nil {
+ _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1)))).X0))
}
-
- _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1)))).X0))
-_3:
_1:
_vdbeMergeEngineFree(tls, (*XMergeEngine)(_pIncr.X1))
Xsqlite3_free(tls, (unsafe.Pointer)(_pIncr))
_0:
}
-func _sqlite3OsCloseFree(tls *crt.TLS, _pFile *Xsqlite3_file) { // sqlite3.c:20382:1
+func _sqlite3OsCloseFree(tls *crt.TLS, _pFile *Xsqlite3_file) {
func() {
if _pFile == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(20383), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OsCloseFreeØ00__func__Ø000))), unsafe.Pointer(str(60052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(20383), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OsCloseFreeØ00__func__Ø000))), unsafe.Pointer(str(58046)))
crt.X__builtin_abort(tls)
}
}()
@@ -49149,136 +44340,126 @@ func _sqlite3OsCloseFree(tls *crt.TLS, _pFile *Xsqlite3_file) { // sqlite3.c:203
Xsqlite3_free(tls, (unsafe.Pointer)(_pFile))
}
-var _sqlite3OsCloseFreeØ00__func__Ø000 [19]int8 // -
+var _sqlite3OsCloseFreeØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3OsCloseFreeØ00__func__Ø000[0], str(60060), 19)
+ crt.Xstrncpy(nil, &_sqlite3OsCloseFreeØ00__func__Ø000[0], str(58052), 19)
}
-func _vdbeMergeEngineFree(tls *crt.TLS, _pMerger *XMergeEngine) { // sqlite3.c:87209:1
- var _i int32 // sqlite3.c:87210:7
- _ = _i
+// Free the MergeEngine object passed as the only argument.
+func _vdbeMergeEngineFree(tls *crt.TLS, _pMerger *XMergeEngine) {
+ var _i int32
if _pMerger == nil {
goto _0
}
-
_i = i32(0)
_1:
if _i >= (_pMerger.X0) {
goto _4
}
-
_vdbePmaReaderClear(tls, (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3)+52*uintptr(_i))))
_i += 1
goto _1
-
_4:
_0:
Xsqlite3_free(tls, (unsafe.Pointer)(_pMerger))
}
-func _vdbeSortSubtaskCleanup(tls *crt.TLS, _db *Xsqlite3, _pTask *XSortSubtask) { // sqlite3.c:87057:1
+// Free all resources owned by the object indicated by argument pTask. All
+// fields of *pTask are zeroed before returning.
+func _vdbeSortSubtaskCleanup(tls *crt.TLS, _db *Xsqlite3, _pTask *XSortSubtask) {
_sqlite3DbFree(tls, _db, _pTask.X3)
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))).X1) == nil {
- goto _0
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))).X1) != nil {
+ Xsqlite3_free(tls, (unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X1))
+ goto _1
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X1))
- goto _1
-
-_0:
func() {
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))).X1) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87067), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSortSubtaskCleanupØ00__func__Ø000))), unsafe.Pointer(str(60080)))
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))).X1) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87067), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSortSubtaskCleanupØ00__func__Ø000))), unsafe.Pointer(str(58071)))
crt.X__builtin_abort(tls)
}
}()
- _vdbeSorterRecordFree(tls, nil, (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X0))
+ _vdbeSorterRecordFree(tls, nil, (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X0))
_1:
- if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0) == nil {
- goto _4
+ if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0) != nil {
+ _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0))
}
-
- _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0))
-_4:
- if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X0) == nil {
- goto _5
+ if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X0) != nil {
+ _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X0))
}
-
- _sqlite3OsCloseFree(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X0))
-_5:
crt.Xmemset(tls, (unsafe.Pointer)(_pTask), i32(0), u32(60))
}
-var _vdbeSortSubtaskCleanupØ00__func__Ø000 [23]int8 // -
+var _vdbeSortSubtaskCleanupØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSortSubtaskCleanupØ00__func__Ø000[0], str(60104), 23)
+ crt.Xstrncpy(nil, &_vdbeSortSubtaskCleanupØ00__func__Ø000[0], str(58094), 23)
}
-func _vdbeSorterRecordFree(tls *crt.TLS, _db *Xsqlite3, _pRecord *XSorterRecord) { // sqlite3.c:87044:1
- var _p *XSorterRecord // sqlite3.c:87045:16
- _ = _p
- var _pNext *XSorterRecord // sqlite3.c:87046:16
- _ = _pNext
+// Free the list of sorted records starting at pRecord.
+func _vdbeSorterRecordFree(tls *crt.TLS, _db *Xsqlite3, _pRecord *XSorterRecord) {
+ var _p, _pNext *XSorterRecord
_p = _pRecord
_0:
if _p == nil {
goto _3
}
-
- _pNext = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))
+ _pNext = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p))
_p = _pNext
goto _0
-
_3:
}
-func _sqlite3VdbeDeleteAuxData(tls *crt.TLS, _db *Xsqlite3, _pp **XAuxData, _iOp int32, _mask int32) { // sqlite3.c:74387:1
- var _1_pAux *XAuxData // sqlite3.c:74389:13
- _ = _1_pAux
+// If parameter iOp is less than zero, then invoke the destructor for
+// all auxiliary data pointers currently cached by the VM passed as
+// the first argument.
+//
+// Or, if iOp is greater than or equal to zero, then the destructor is
+// only invoked for those auxiliary data pointers created by the user
+// function invoked by the OP_Function opcode at instruction iOp of
+// VM pVdbe, and only then if:
+//
+// * the associated function parameter is the 32nd or later (counting
+// from left to right), or
+//
+// * the corresponding bit in argument mask is clear (where the first
+// function parameter corresponds to bit 0 etc.).
+func _sqlite3VdbeDeleteAuxData(tls *crt.TLS, _db *Xsqlite3, _pp **XAuxData, _iOp int32, _mask int32) {
+ var _1_pAux *XAuxData
_0:
if (*_pp) == nil {
goto _1
}
-
_1_pAux = *_pp
if _iOp >= i32(0) && ((_1_pAux.X0) != _iOp || (_1_pAux.X1) < i32(0) || (_1_pAux.X1) <= i32(31) && (uint32(_mask)&(u32(1)<= (_p.X15) {
goto _3
}
-
_sqlite3VdbeFreeCursor(tls, (*TVdbe)(_p.X0), *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apCsr)) + 4*uintptr(_i))))
_i += 1
goto _0
-
_3:
_releaseMemArray(tls, _aMem, _p.X14)
_sqlite3VdbeDeleteAuxData(tls, (*Xsqlite3)((*TVdbe)(_p.X0).X0), (**XAuxData)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(40 /* X9 */))))), i32(-1), i32(0))
_sqlite3DbFree(tls, (*Xsqlite3)((*TVdbe)(_p.X0).X0), (unsafe.Pointer)(_p))
}
-func _checkActiveVdbeCnt(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:73896:1
- var _p *TVdbe // sqlite3.c:73897:8
- _ = _p
- var _cnt int32 // sqlite3.c:73898:7
- _ = _cnt
- var _nWrite int32 // sqlite3.c:73899:7
- _ = _nWrite
- var _nRead int32 // sqlite3.c:73900:7
- _ = _nRead
+func _checkActiveVdbeCnt(tls *crt.TLS, _db *Xsqlite3) {
+ var _cnt, _nWrite, _nRead int32
+ var _p *TVdbe
_cnt = i32(0)
_nWrite = i32(0)
_nRead = i32(0)
@@ -49314,77 +44487,79 @@ _0:
if _p == nil {
goto _1
}
-
if Xsqlite3_stmt_busy(tls, (unsafe.Pointer)(_p)) == 0 {
goto _2
}
-
_cnt += 1
- if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- goto _3
+ if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) == i32(0) {
+ _nWrite += 1
}
-
- _nWrite += 1
-_3:
- if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _4
+ if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _nRead += 1
}
-
- _nRead += 1
-_4:
_2:
_p = (*TVdbe)(_p.X2)
goto _0
-
_1:
func() {
if _cnt != (_db.X34) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73910), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkActiveVdbeCntØ00__func__Ø000))), unsafe.Pointer(str(60144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73910), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkActiveVdbeCntØ00__func__Ø000))), unsafe.Pointer(str(58133)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nWrite != (_db.X36) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73911), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkActiveVdbeCntØ00__func__Ø000))), unsafe.Pointer(str(60168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73911), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkActiveVdbeCntØ00__func__Ø000))), unsafe.Pointer(str(58154)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nRead != (_db.X35) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73912), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkActiveVdbeCntØ00__func__Ø000))), unsafe.Pointer(str(60192)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73912), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkActiveVdbeCntØ00__func__Ø000))), unsafe.Pointer(str(58177)))
crt.X__builtin_abort(tls)
}
}()
}
-func Xsqlite3_stmt_busy(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:77669:12
- var _v *TVdbe // sqlite3.c:77670:8
- _ = _v
+// Return true if the prepared statement is in need of being reset.
+func Xsqlite3_stmt_busy(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) {
+ var _v *TVdbe
_v = (*TVdbe)(_pStmt)
return bool2int(((_v != nil) && ((_v.X5) == uint32(i32(770837923)))) && ((_v.X9) >= i32(0)))
}
-var _checkActiveVdbeCntØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_checkActiveVdbeCntØ00__func__Ø000[0], str(60216), 19)
-}
-
-func _sqlite3VdbeEnter(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:72863:1
- var _i int32 // sqlite3.c:72864:7
- _ = _i
- var _db *Xsqlite3 // sqlite3.c:72865:11
- _ = _db
- var _aDb *XDb // sqlite3.c:72866:6
- _ = _aDb
- var _nDb int32 // sqlite3.c:72867:7
- _ = _nDb
- if (_p.X34) != uint32(i32(0)) {
- goto _0
+var _checkActiveVdbeCntØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_checkActiveVdbeCntØ00__func__Ø000[0], str(58198), 19)
+}
+
+// If SQLite is compiled to support shared-cache mode and to be threadsafe,
+// this routine obtains the mutex associated with each BtShared structure
+// that may be accessed by the VM passed as an argument. In doing so it also
+// sets the BtShared.db member of each of the BtShared structures, ensuring
+// that the correct busy-handler callback is invoked if required.
+//
+// If SQLite is not threadsafe but does support shared-cache mode, then
+// sqlite3BtreeEnter() is invoked to set the BtShared.db variables
+// of all of BtShared structures accessible via the database handle
+// associated with the VM.
+//
+// If SQLite is not threadsafe and does not support shared-cache mode, this
+// function is a no-op.
+//
+// The p->btreeMask field is a bitmask of all btrees that the prepared
+// statement p will ever use. Let N be the number of bits in p->btreeMask
+// corresponding to btrees that use shared cache. Then the runtime of
+// this routine is N*N. But as N is rarely more than 1, this should not
+// be a problem.
+func _sqlite3VdbeEnter(tls *crt.TLS, _p *TVdbe) {
+ var _i, _nDb int32
+ var _db *Xsqlite3
+ var _aDb *XDb
+ if (_p.X34) == uint32(i32(0)) {
+ return
}
- return
-
-_0:
_db = (*Xsqlite3)(_p.X0)
_aDb = (*XDb)(_db.X4)
_nDb = _db.X5
@@ -49393,85 +44568,68 @@ _1:
if _i >= _nDb {
goto _4
}
-
- if _i == i32(1) || ((_p.X34)&(u32(1)< int64(i32(0)))) || ((_deferred == 0) && ((_p.X14) > int64(i32(0)))) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(787)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(i32(2))
+ _sqlite3VdbeError(tls, _p, str(58234))
+ return i32(1)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(787)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(i32(2))
- _sqlite3VdbeError(tls, _p, str(60256))
- return i32(1)
-
-_3:
return i32(0)
}
-func _sqlite3VdbeError(tls *crt.TLS, _p *TVdbe, _zFormat *int8, args ...interface{}) { // sqlite3.c:71466:1
- var _ap []interface{} // sqlite3.c:71467:11
- _ = _ap
+// Change the error string stored in Vdbe.zErrMsg
+func _sqlite3VdbeError(tls *crt.TLS, _p *TVdbe, _zFormat *int8, args ...interface{}) {
+ var _ap []interface{}
_sqlite3DbFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_p.X22))
_ap = args
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = _sqlite3VMPrintf(tls, (*Xsqlite3)(_p.X0), _zFormat, _ap)
_ap = nil
}
-var _sqlite3VdbeHaltØ00__func__Ø000 [16]int8 // -
+var _sqlite3VdbeHaltØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeHaltØ00__func__Ø000[0], str(60288), 16)
+ crt.Xstrncpy(nil, &_sqlite3VdbeHaltØ00__func__Ø000[0], str(58264), 16)
}
-func _sqlite3VdbeLeave(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:72898:1
- if (_p.X34) != uint32(i32(0)) {
- goto _0
+func _sqlite3VdbeLeave(tls *crt.TLS, _p *TVdbe) {
+ if (_p.X34) == uint32(i32(0)) {
+ return
}
- return
-
-_0:
_vdbeLeave(tls, _p)
}
-func _vdbeLeave(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:72884:1
- var _i int32 // sqlite3.c:72885:7
- _ = _i
- var _db *Xsqlite3 // sqlite3.c:72886:11
- _ = _db
- var _aDb *XDb // sqlite3.c:72887:6
- _ = _aDb
- var _nDb int32 // sqlite3.c:72888:7
- _ = _nDb
+// Unlock all of the btrees previously locked by a call to sqlite3VdbeEnter().
+func _vdbeLeave(tls *crt.TLS, _p *TVdbe) {
+ var _i, _nDb int32
+ var _db *Xsqlite3
+ var _aDb *XDb
_db = (*Xsqlite3)(_p.X0)
_aDb = (*XDb)(_db.X4)
_nDb = _db.X5
@@ -49480,77 +44638,42 @@ _0:
if _i >= _nDb {
goto _3
}
-
- if _i == i32(1) || ((_p.X34)&(u32(1)<= (_db.X5) {
goto _4
}
-
_1_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
if _sqlite3BtreeIsInTrans(tls, _1_pBt) == 0 {
goto _5
}
-
_needXcommit = i32(1)
_sqlite3BtreeEnter(tls, _1_pBt)
_2_pPager = _sqlite3BtreePager(tls, _1_pBt)
- if int32((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X2) == i32(1) || (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_vdbeCommitØ00aMJNeededØ001)) + 1*uintptr(_sqlite3PagerGetJournalMode(tls, _2_pPager))))) == 0 {
- goto _7
+ if (int32((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X2) != i32(1)) && ((*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_vdbeCommitØ00aMJNeededØ001)) + 1*uintptr(_sqlite3PagerGetJournalMode(tls, _2_pPager))))) != 0) {
+ func() {
+ if _i == i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73684), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(58290)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nTrans += 1
}
-
- func() {
- if _i == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73684), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(60316)))
- crt.X__builtin_abort(tls)
- }
- }()
- _nTrans += 1
-_7:
_rc = _sqlite3PagerExclusiveLock(tls, _2_pPager)
_sqlite3BtreeLeave(tls, _1_pBt)
_5:
_i += 1
goto _0
-
_4:
- if _rc == i32(0) {
- goto _10
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_10:
if _needXcommit == 0 || (_db.X46) == nil {
goto _12
}
-
_rc = (_db.X46)(tls, _db.X45)
- if _rc == 0 {
- goto _13
+ if _rc != 0 {
+ return i32(531)
}
- return i32(531)
-
-_13:
_12:
if i32(0) != _sqlite3Strlen30(tls, _sqlite3BtreeGetFilename(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(0)))).X1))) && _nTrans > i32(1) {
goto _15
}
-
_i = i32(0)
_16:
if _rc != i32(0) || _i >= (_db.X5) {
goto _20
}
-
_8_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _8_pBt == nil {
- goto _21
+ if _8_pBt != nil {
+ _rc = _sqlite3BtreeCommitPhaseOne(tls, _8_pBt, nil)
}
-
- _rc = _sqlite3BtreeCommitPhaseOne(tls, _8_pBt, nil)
-_21:
_i += 1
goto _16
-
_20:
_i = i32(0)
_22:
if _rc != i32(0) || _i >= (_db.X5) {
goto _26
}
-
_10_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _10_pBt == nil {
- goto _27
+ if _10_pBt != nil {
+ _rc = _sqlite3BtreeCommitPhaseTwo(tls, _10_pBt, i32(0))
}
-
- _rc = _sqlite3BtreeCommitPhaseTwo(tls, _10_pBt, i32(0))
-_27:
_i += 1
goto _22
-
_26:
- if _rc != i32(0) {
- goto _28
+ if _rc == i32(0) {
+ _sqlite3VtabCommit(tls, _db)
}
-
- _sqlite3VtabCommit(tls, _db)
-_28:
goto _29
-
_15:
_13_pVfs = (*Xsqlite3_vfs)(_db.X0)
_13_zMaster = nil
@@ -49660,40 +44755,29 @@ _15:
_13_offset = i64(0)
_13_retryCount = i32(0)
_13_nMainFile = _sqlite3Strlen30(tls, _13_zMainFile)
- _13_zMaster = _sqlite3MPrintf(tls, _db, str(60324), unsafe.Pointer(_13_zMainFile))
- if _13_zMaster != nil {
- goto _30
+ _13_zMaster = _sqlite3MPrintf(tls, _db, str(58295), unsafe.Pointer(_13_zMainFile))
+ if _13_zMaster == nil {
+ return _sqlite3NomemError(tls, i32(73756))
}
- return _sqlite3NomemError(tls, i32(73756))
-
-_30:
_31:
if _13_retryCount == 0 {
goto _32
}
-
- if _13_retryCount <= i32(100) {
- goto _33
+ if _13_retryCount > i32(100) {
+ Xsqlite3_log(tls, i32(13), str(58311), unsafe.Pointer(_13_zMaster))
+ _sqlite3OsDelete(tls, _13_pVfs, _13_zMaster, i32(0))
+ goto _34
}
-
- Xsqlite3_log(tls, i32(13), str(60340), unsafe.Pointer(_13_zMaster))
- _sqlite3OsDelete(tls, _13_pVfs, _13_zMaster, i32(0))
- goto _34
-
-_33:
- if _13_retryCount != i32(1) {
- goto _36
+ if _13_retryCount == i32(1) {
+ Xsqlite3_log(tls, i32(13), str(58325), unsafe.Pointer(_13_zMaster))
}
-
- Xsqlite3_log(tls, i32(13), str(60356), unsafe.Pointer(_13_zMaster))
-_36:
_32:
_13_retryCount += 1
Xsqlite3_randomness(tls, int32(u32(4)), (unsafe.Pointer)(&_14_iRandom))
- Xsqlite3_snprintf(tls, i32(13), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_zMaster))+1*uintptr(_13_nMainFile))), str(60372), (_14_iRandom>>uint(i32(8)))&uint32(i32(16777215)), _14_iRandom&uint32(i32(255)))
+ Xsqlite3_snprintf(tls, i32(13), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_zMaster))+1*uintptr(_13_nMainFile))), str(58340), (_14_iRandom>>uint(i32(8)))&uint32(i32(16777215)), _14_iRandom&uint32(i32(255)))
func() {
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_zMaster)) + 1*uintptr(_sqlite3Strlen30(tls, _13_zMaster)-i32(3))))) != i32(57) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73774), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(60388)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73774), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(58353)))
crt.X__builtin_abort(tls)
}
}()
@@ -49701,44 +44785,30 @@ _32:
if (_rc == i32(0)) && _13_res != 0 {
goto _31
}
-
_34:
- if _rc != i32(0) {
- goto _40
- }
-
- _rc = _sqlite3OsOpenMalloc(tls, _13_pVfs, _13_zMaster, &_13_pMaster, i32(16406), nil)
-_40:
if _rc == i32(0) {
- goto _41
+ _rc = _sqlite3OsOpenMalloc(tls, _13_pVfs, _13_zMaster, &_13_pMaster, i32(16406), nil)
+ }
+ if _rc != i32(0) {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
+ return _rc
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
- return _rc
-
-_41:
_i = i32(0)
_42:
if _i >= (_db.X5) {
goto _45
}
-
_20_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
if _sqlite3BtreeIsInTrans(tls, _20_pBt) == 0 {
goto _46
}
-
_21_zFile = _sqlite3BtreeGetJournalname(tls, _20_pBt)
- if _21_zFile != nil {
- goto _47
+ if _21_zFile == nil {
+ goto _43
}
-
- goto _43
-
-_47:
func() {
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_21_zFile)) + 1*uintptr(i32(0))))) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73803), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(60432)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73803), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(58394)))
crt.X__builtin_abort(tls)
}
}()
@@ -49748,90 +44818,64 @@ _47:
*p = (*p) + int64(_sqlite3Strlen30(tls, _21_zFile)+i32(1))
sink6 = *p
}
- if _rc == i32(0) {
- goto _50
+ if _rc != i32(0) {
+ _sqlite3OsCloseFree(tls, _13_pMaster)
+ _sqlite3OsDelete(tls, _13_pVfs, _13_zMaster, i32(0))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
+ return _rc
}
-
- _sqlite3OsCloseFree(tls, _13_pMaster)
- _sqlite3OsDelete(tls, _13_pVfs, _13_zMaster, i32(0))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
- return _rc
-
-_50:
_46:
_43:
_i += 1
goto _42
-
_45:
- if i32(0) != (_sqlite3OsDeviceCharacteristics(tls, _13_pMaster)&i32(1024)) || i32(0) == store1(&_rc, _sqlite3OsSync(tls, _13_pMaster, i32(2))) {
- goto _52
+ if (i32(0) == (_sqlite3OsDeviceCharacteristics(tls, _13_pMaster) & i32(1024))) && (i32(0) != store1(&_rc, _sqlite3OsSync(tls, _13_pMaster, i32(2)))) {
+ _sqlite3OsCloseFree(tls, _13_pMaster)
+ _sqlite3OsDelete(tls, _13_pVfs, _13_zMaster, i32(0))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
+ return _rc
}
-
- _sqlite3OsCloseFree(tls, _13_pMaster)
- _sqlite3OsDelete(tls, _13_pVfs, _13_zMaster, i32(0))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
- return _rc
-
-_52:
_i = i32(0)
_53:
if _rc != i32(0) || _i >= (_db.X5) {
goto _57
}
-
_25_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _25_pBt == nil {
- goto _58
+ if _25_pBt != nil {
+ _rc = _sqlite3BtreeCommitPhaseOne(tls, _25_pBt, _13_zMaster)
}
-
- _rc = _sqlite3BtreeCommitPhaseOne(tls, _25_pBt, _13_zMaster)
-_58:
_i += 1
goto _53
-
_57:
_sqlite3OsCloseFree(tls, _13_pMaster)
func() {
if _rc == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73844), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(60444)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73844), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCommitØ00__func__Ø000))), unsafe.Pointer(str(58406)))
crt.X__builtin_abort(tls)
}
}()
- if _rc == i32(0) {
- goto _61
+ if _rc != i32(0) {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
+ return _rc
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
- return _rc
-
-_61:
_rc = _sqlite3OsDelete(tls, _13_pVfs, _13_zMaster, i32(1))
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_13_zMaster))
_13_zMaster = nil
- if _rc == 0 {
- goto _62
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_62:
_sqlite3BeginBenignMalloc(tls)
_i = i32(0)
_63:
if _i >= (_db.X5) {
goto _66
}
-
_29_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _29_pBt == nil {
- goto _67
+ if _29_pBt != nil {
+ _sqlite3BtreeCommitPhaseTwo(tls, _29_pBt, i32(1))
}
-
- _sqlite3BtreeCommitPhaseTwo(tls, _29_pBt, i32(1))
-_67:
_i += 1
goto _63
-
_66:
_sqlite3EndBenignMalloc(tls)
_sqlite3VtabCommit(tls, _db)
@@ -49839,17 +44883,16 @@ _29:
return _rc
}
-func _sqlite3VtabSync(tls *crt.TLS, _db *Xsqlite3, _p *TVdbe) (r0 int32) { // sqlite3.c:125872:1
- var _i int32 // sqlite3.c:125873:7
- _ = _i
- var _rc int32 // sqlite3.c:125874:7
- _ = _rc
- var _aVTrans **XVTable // sqlite3.c:125875:10
- _ = _aVTrans
- var _1_x func(*crt.TLS, *Xsqlite3_vtab) int32 // sqlite3.c:125879:9
- _ = _1_x
- var _1_pVtab *Xsqlite3_vtab // sqlite3.c:125880:18
- _ = _1_pVtab
+// Invoke the xSync method of all virtual tables in the sqlite3.aVTrans
+// array. Return the error code for the first error that occurs, or
+// SQLITE_OK if all xSync operations are successful.
+//
+// If an error message is available, leave it in p->zErrMsg.
+func _sqlite3VtabSync(tls *crt.TLS, _db *Xsqlite3, _p *TVdbe) (r0 int32) {
+ var _i, _rc int32
+ var _1_pVtab *Xsqlite3_vtab
+ var _aVTrans **XVTable
+ var _1_x func(*crt.TLS, *Xsqlite3_vtab) int32
_rc = i32(0)
_aVTrans = (**XVTable)(unsafe.Pointer(_db.X67))
*(***XVTable)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(336 /* X67 */))))) = nil
@@ -49858,140 +44901,150 @@ _0:
if _rc != i32(0) || _i >= (_db.X64) {
goto _4
}
-
_1_pVtab = (*Xsqlite3_vtab)((*(**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aVTrans)) + 4*uintptr(_i)))).X2)
- if _1_pVtab == nil || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ if (_1_pVtab != nil) && (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_vtab) int32
- }{store47(&_1_x, *(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
+ }{store49(&_1_x, *(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_module)(_1_pVtab.X0).X15)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{((*Xsqlite3_module)(_1_pVtab.X0).X15)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *Xsqlite3_vtab) int32
- }{nil})) {
- goto _6
+ }{nil}))) {
+ _rc = _1_x(tls, _1_pVtab)
+ _sqlite3VtabImportErrmsg(tls, _p, _1_pVtab)
}
-
- _rc = _1_x(tls, _1_pVtab)
- _sqlite3VtabImportErrmsg(tls, _p, _1_pVtab)
-_6:
_i += 1
goto _0
-
_4:
*(***XVTable)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(336 /* X67 */))))) = _aVTrans
return _rc
}
-func _sqlite3VtabImportErrmsg(tls *crt.TLS, _p *TVdbe, _pVtab *Xsqlite3_vtab) { // sqlite3.c:75995:1
- var _1_db *Xsqlite3 // sqlite3.c:75997:13
- _ = _1_db
- if (_pVtab.X2) == nil {
- goto _0
+// Transfer error message text from an sqlite3_vtab.zErrMsg (text stored
+// in memory obtained from sqlite3_malloc) into a Vdbe.zErrMsg (text stored
+// in memory obtained from sqlite3DbMalloc).
+func _sqlite3VtabImportErrmsg(tls *crt.TLS, _p *TVdbe, _pVtab *Xsqlite3_vtab) {
+ var _1_db *Xsqlite3
+ if (_pVtab.X2) != nil {
+ _1_db = (*Xsqlite3)(_p.X0)
+ _sqlite3DbFree(tls, _1_db, (unsafe.Pointer)(_p.X22))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = _sqlite3DbStrDup(tls, _1_db, _pVtab.X2)
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pVtab.X2))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVtab)) + uintptr(8 /* X2 */))) = nil
}
-
- _1_db = (*Xsqlite3)(_p.X0)
- _sqlite3DbFree(tls, _1_db, (unsafe.Pointer)(_p.X22))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = _sqlite3DbStrDup(tls, _1_db, _pVtab.X2)
- Xsqlite3_free(tls, (unsafe.Pointer)(_pVtab.X2))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVtab)) + uintptr(8 /* X2 */))) = nil
-_0:
}
-var _vdbeCommitØ00aMJNeededØ001 [6]uint8 // sqlite3.c:73669:23
+var _vdbeCommitØ00aMJNeededØ001 [6]uint8
func init() {
_vdbeCommitØ00aMJNeededØ001 = [6]uint8{1, 1, 0, 1, 0, 0}
}
-func _sqlite3PagerGetJournalMode(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:54177:1
+// Return the current journal mode.
+func _sqlite3PagerGetJournalMode(tls *crt.TLS, _pPager *XPager) (r0 int32) {
return int32(_pPager.X2)
}
-var _vdbeCommitØ00__func__Ø000 [11]int8 // -
+var _vdbeCommitØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeCommitØ00__func__Ø000[0], str(60460), 11)
+ crt.Xstrncpy(nil, &_vdbeCommitØ00__func__Ø000[0], str(58422), 11)
}
-func _sqlite3BtreeGetFilename(tls *crt.TLS, _p *XBtree) (r0 *int8) { // sqlite3.c:68619:1
+// Return the full pathname of the underlying database file. Return
+// an empty string if the database is in-memory or a TEMP database.
+//
+// The pager filename is invariant as long as the pager is
+// open so it is safe to access without the BtShared mutex.
+func _sqlite3BtreeGetFilename(tls *crt.TLS, _p *XBtree) (r0 *int8) {
func() {
if (*XPager)((*XBtShared)(_p.X1).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68620), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetFilenameØ00__func__Ø000))), unsafe.Pointer(str(60472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68620), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetFilenameØ00__func__Ø000))), unsafe.Pointer(str(58433)))
crt.X__builtin_abort(tls)
}
}()
return _sqlite3PagerFilename(tls, (*XPager)((*XBtShared)(_p.X1).X0), i32(1))
}
-var _sqlite3BtreeGetFilenameØ00__func__Ø000 [24]int8 // -
+var _sqlite3BtreeGetFilenameØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeGetFilenameØ00__func__Ø000[0], str(60492), 24)
+ crt.Xstrncpy(nil, &_sqlite3BtreeGetFilenameØ00__func__Ø000[0], str(58451), 24)
}
-func _sqlite3PagerFilename(tls *crt.TLS, _pPager *XPager, _nullIfMemDb int32) (r0 *int8) { // sqlite3.c:53771:1
+// Return the full pathname of the database file.
+//
+// Except, if the pager is in-memory only, then return an empty string if
+// nullIfMemDb is true. This routine is called with nullIfMemDb==1 when
+// used to report the filename to the user, for compatibility with legacy
+// behavior. But when the Btree needs to know the filename for matching to
+// shared cache, it uses nullIfMemDb==0 so that in-memory databases can
+// participate in shared-cache.
+func _sqlite3PagerFilename(tls *crt.TLS, _pPager *XPager, _nullIfMemDb int32) (r0 *int8) {
return func() *int8 {
if _nullIfMemDb != 0 && ((_pPager.X13) != 0) {
- return str(196)
+ return str(0)
}
return (_pPager.X51)
}()
}
-func _sqlite3VtabCommit(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:125903:1
+// Invoke the xCommit method of all virtual tables in the
+// sqlite3.aVTrans array. Then clear the array itself.
+func _sqlite3VtabCommit(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
_callFinaliser(tls, _db, int32(u32(64)))
return i32(0)
}
-func _sqlite3OsOpenMalloc(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zFile *int8, _ppFile **Xsqlite3_file, _flags int32, _pOutFlags *int32) (r0 int32) { // sqlite3.c:20360:1
- var _rc int32 // sqlite3.c:20367:7
- _ = _rc
- var _pFile *Xsqlite3_file // sqlite3.c:20368:16
- _ = _pFile
+func _sqlite3OsOpenMalloc(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zFile *int8, _ppFile **Xsqlite3_file, _flags int32, _pOutFlags *int32) (r0 int32) {
+ var _rc int32
+ var _pFile *Xsqlite3_file
_pFile = (*Xsqlite3_file)(_sqlite3MallocZero(tls, uint64(_pVfs.X1)))
if _pFile == nil {
goto _0
}
-
_rc = _sqlite3OsOpen(tls, _pVfs, _zFile, _pFile, _flags, _pOutFlags)
- if _rc == i32(0) {
- goto _1
+ if _rc != i32(0) {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pFile))
+ goto _2
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_pFile))
- goto _2
-
-_1:
*_ppFile = _pFile
_2:
goto _3
-
_0:
_rc = _sqlite3NomemError(tls, i32(20378))
_3:
return _rc
}
-func _sqlite3BtreeGetJournalname(tls *crt.TLS, _p *XBtree) (r0 *int8) { // sqlite3.c:68632:1
+// Return the pathname of the journal file for this database. The return
+// value of this routine is the same regardless of whether the journal file
+// has been created or not.
+//
+// The pager journal filename is invariant as long as the pager is
+// open so it is safe to access without the BtShared mutex.
+func _sqlite3BtreeGetJournalname(tls *crt.TLS, _p *XBtree) (r0 *int8) {
func() {
if (*XPager)((*XBtShared)(_p.X1).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68633), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetJournalnameØ00__func__Ø000))), unsafe.Pointer(str(60472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68633), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeGetJournalnameØ00__func__Ø000))), unsafe.Pointer(str(58433)))
crt.X__builtin_abort(tls)
}
}()
return _sqlite3PagerJournalname(tls, (*XPager)((*XBtShared)(_p.X1).X0))
}
-var _sqlite3BtreeGetJournalnameØ00__func__Ø000 [27]int8 // -
+var _sqlite3BtreeGetJournalnameØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeGetJournalnameØ00__func__Ø000[0], str(60516), 27)
+ crt.Xstrncpy(nil, &_sqlite3BtreeGetJournalnameØ00__func__Ø000[0], str(58475), 27)
}
-func _sqlite3PagerJournalname(tls *crt.TLS, _pPager *XPager) (r0 *int8) { // sqlite3.c:53806:1
+// Return the full pathname of the journal file.
+func _sqlite3PagerJournalname(tls *crt.TLS, _pPager *XPager) (r0 *int8) {
return _pPager.X52
}
-func _sqlite3CommitInternalChanges(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:100259:1
+// This routine is called when a commit occurs.
+func _sqlite3CommitInternalChanges(tls *crt.TLS, _db *Xsqlite3) {
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
*p = (*p) & i32(-3)
@@ -49999,47 +45052,43 @@ func _sqlite3CommitInternalChanges(tls *crt.TLS, _db *Xsqlite3) { // sqlite3.c:1
}
}
-func _sqlite3VdbeCloseStatement(tls *crt.TLS, _p *TVdbe, _eOp int32) (r0 int32) { // sqlite3.c:73974:1
- if ((*Xsqlite3)(_p.X0).X76) == 0 || (_p.X12) == 0 {
- goto _1
+func _sqlite3VdbeCloseStatement(tls *crt.TLS, _p *TVdbe, _eOp int32) (r0 int32) {
+ if ((*Xsqlite3)(_p.X0).X76) != 0 && (_p.X12) != 0 {
+ return _vdbeCloseStatement(tls, _p, _eOp)
}
- return _vdbeCloseStatement(tls, _p, _eOp)
-
-_1:
return i32(0)
}
-func _vdbeCloseStatement(tls *crt.TLS, _p *TVdbe, _eOp int32) (r0 int32) { // sqlite3.c:73928:1
- var _db *Xsqlite3 // sqlite3.c:73929:11
- _ = _db
- var _rc int32 // sqlite3.c:73930:7
- _ = _rc
- var _i int32 // sqlite3.c:73931:7
- _ = _i
- var _iSavepoint int32 // sqlite3.c:73932:13
- _ = _iSavepoint
- var _1_rc2 int32 // sqlite3.c:73939:9
- _ = _1_rc2
- var _1_pBt *XBtree // sqlite3.c:73940:11
- _ = _1_pBt
+// If the Vdbe passed as the first argument opened a statement-transaction,
+// close it now. Argument eOp must be either SAVEPOINT_ROLLBACK or
+// SAVEPOINT_RELEASE. If it is SAVEPOINT_ROLLBACK, then the statement
+// transaction is rolled back. If eOp is SAVEPOINT_RELEASE, then the
+// statement transaction is committed.
+//
+// If an IO error occurs, an SQLITE_IOERR_XXX error code is returned.
+// Otherwise SQLITE_OK.
+func _vdbeCloseStatement(tls *crt.TLS, _p *TVdbe, _eOp int32) (r0 int32) {
+ var _rc, _i, _iSavepoint, _1_rc2 int32
+ var _db *Xsqlite3
+ var _1_pBt *XBtree
_db = (*Xsqlite3)(_p.X0)
_rc = i32(0)
_iSavepoint = (_p.X12) - i32(1)
func() {
if _eOp != i32(2) && _eOp != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73934), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCloseStatementØ00__func__Ø000))), unsafe.Pointer(str(60544)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73934), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCloseStatementØ00__func__Ø000))), unsafe.Pointer(str(58502)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_db.X76) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73935), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCloseStatementØ00__func__Ø000))), unsafe.Pointer(str(60596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73935), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCloseStatementØ00__func__Ø000))), unsafe.Pointer(str(58552)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X12) != ((_db.X76) + (_db.X75)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73936), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCloseStatementØ00__func__Ø000))), unsafe.Pointer(str(60616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73936), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeCloseStatementØ00__func__Ø000))), unsafe.Pointer(str(58569)))
crt.X__builtin_abort(tls)
}
}()
@@ -50048,122 +45097,97 @@ _7:
if _i >= (_db.X5) {
goto _10
}
-
_1_rc2 = i32(0)
_1_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
if _1_pBt == nil {
goto _11
}
-
- if _eOp != i32(2) {
- goto _12
+ if _eOp == i32(2) {
+ _1_rc2 = _sqlite3BtreeSavepoint(tls, _1_pBt, i32(2), _iSavepoint)
}
-
- _1_rc2 = _sqlite3BtreeSavepoint(tls, _1_pBt, i32(2), _iSavepoint)
-_12:
- if _1_rc2 != i32(0) {
- goto _13
+ if _1_rc2 == i32(0) {
+ _1_rc2 = _sqlite3BtreeSavepoint(tls, _1_pBt, i32(1), _iSavepoint)
}
-
- _1_rc2 = _sqlite3BtreeSavepoint(tls, _1_pBt, i32(1), _iSavepoint)
-_13:
- if _rc != i32(0) {
- goto _14
+ if _rc == i32(0) {
+ _rc = _1_rc2
}
-
- _rc = _1_rc2
-_14:
_11:
_i += 1
goto _7
-
_10:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(432 /* X76 */))) -= 1
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = i32(0)
if _rc != i32(0) {
goto _15
}
-
- if _eOp != i32(2) {
- goto _16
+ if _eOp == i32(2) {
+ _rc = _sqlite3VtabSavepoint(tls, _db, i32(2), _iSavepoint)
}
-
- _rc = _sqlite3VtabSavepoint(tls, _db, i32(2), _iSavepoint)
-_16:
- if _rc != i32(0) {
- goto _17
+ if _rc == i32(0) {
+ _rc = _sqlite3VtabSavepoint(tls, _db, i32(1), _iSavepoint)
}
-
- _rc = _sqlite3VtabSavepoint(tls, _db, i32(1), _iSavepoint)
-_17:
_15:
- if _eOp != i32(2) {
- goto _18
+ if _eOp == i32(2) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(436 /* X77 */))) = _p.X15
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */))) = _p.X16
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(436 /* X77 */))) = _p.X15
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */))) = _p.X16
-_18:
return _rc
}
-var _vdbeCloseStatementØ00__func__Ø000 [19]int8 // -
+var _vdbeCloseStatementØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeCloseStatementØ00__func__Ø000[0], str(60664), 19)
+ crt.Xstrncpy(nil, &_vdbeCloseStatementØ00__func__Ø000[0], str(58616), 19)
}
-func _sqlite3BtreeSavepoint(tls *crt.TLS, _p *XBtree, _op int32, _iSavepoint int32) (r0 int32) { // sqlite3.c:63132:1
- var _rc int32 // sqlite3.c:63133:7
- _ = _rc
- var _1_pBt *XBtShared // sqlite3.c:63135:14
- _ = _1_pBt
+// The second argument to this function, op, is always SAVEPOINT_ROLLBACK
+// or SAVEPOINT_RELEASE. This function either releases or rolls back the
+// savepoint identified by parameter iSavepoint, depending on the value
+// of op.
+//
+// Normally, iSavepoint is greater than or equal to zero. However, if op is
+// SAVEPOINT_ROLLBACK, then iSavepoint may also be -1. In this case the
+// contents of the entire transaction are rolled back. This is different
+// from a normal transaction rollback, as no locks are released and the
+// transaction remains open.
+func _sqlite3BtreeSavepoint(tls *crt.TLS, _p *XBtree, _op int32, _iSavepoint int32) (r0 int32) {
+ var _rc int32
+ var _1_pBt *XBtShared
_rc = i32(0)
if _p == nil || int32(_p.X2) != i32(2) {
goto _1
}
-
_1_pBt = (*XBtShared)(_p.X1)
func() {
if _op != i32(1) && _op != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63136), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSavepointØ00__func__Ø000))), unsafe.Pointer(str(13992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63136), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSavepointØ00__func__Ø000))), unsafe.Pointer(str(14924)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iSavepoint < i32(0) && (_iSavepoint != i32(-1) || _op != i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63137), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSavepointØ00__func__Ø000))), unsafe.Pointer(str(60684)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63137), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSavepointØ00__func__Ø000))), unsafe.Pointer(str(58635)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3BtreeEnter(tls, _p)
- if _op != i32(2) {
- goto _9
+ if _op == i32(2) {
+ _rc = _saveAllCursors(tls, _1_pBt, uint32(i32(0)), nil)
}
-
- _rc = _saveAllCursors(tls, _1_pBt, uint32(i32(0)), nil)
-_9:
- if _rc != i32(0) {
- goto _10
+ if _rc == i32(0) {
+ _rc = _sqlite3PagerSavepoint(tls, (*XPager)(_1_pBt.X0), _op, _iSavepoint)
}
-
- _rc = _sqlite3PagerSavepoint(tls, (*XPager)(_1_pBt.X0), _op, _iSavepoint)
-_10:
if _rc != i32(0) {
goto _11
}
-
- if _iSavepoint >= i32(0) || (int32(_1_pBt.X10)&i32(8)) == i32(0) {
- goto _13
+ if (_iSavepoint < i32(0)) && ((int32(_1_pBt.X10) & i32(8)) != i32(0)) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pBt)) + uintptr(44 /* X18 */))) = uint32(i32(0))
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pBt)) + uintptr(44 /* X18 */))) = uint32(i32(0))
-_13:
_rc = _newDatabase(tls, _1_pBt)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pBt)) + uintptr(44 /* X18 */))) = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(28))))))+uintptr(unsafe.Pointer((*XMemPage)(_1_pBt.X3).X19)))))
func() {
if (_1_pBt.X18) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63155), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSavepointØ00__func__Ø000))), unsafe.Pointer(str(60744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63155), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSavepointØ00__func__Ø000))), unsafe.Pointer(str(58695)))
crt.X__builtin_abort(tls)
}
}()
@@ -50173,52 +45197,56 @@ _1:
return _rc
}
-var _sqlite3BtreeSavepointØ00__func__Ø000 [22]int8 // -
+var _sqlite3BtreeSavepointØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeSavepointØ00__func__Ø000[0], str(60760), 22)
+ crt.Xstrncpy(nil, &_sqlite3BtreeSavepointØ00__func__Ø000[0], str(58708), 22)
}
-func _sqlite3VtabSavepoint(tls *crt.TLS, _db *Xsqlite3, _op int32, _iSavepoint int32) (r0 int32) { // sqlite3.c:125976:1
- var _rc int32 // sqlite3.c:125977:7
- _ = _rc
- var _1_i int32 // sqlite3.c:125982:9
- _ = _1_i
- var _2_pVTab *XVTable // sqlite3.c:125984:14
- _ = _2_pVTab
- var _2_pMod *Xsqlite3_module // sqlite3.c:125985:28
- _ = _2_pMod
- var _3_xMethod func(*crt.TLS, *Xsqlite3_vtab, int32) int32 // sqlite3.c:125987:13
- _ = _3_xMethod
+// Invoke either the xSavepoint, xRollbackTo or xRelease method of all
+// virtual tables that currently have an open transaction. Pass iSavepoint
+// as the second argument to the virtual table method invoked.
+//
+// If op is SAVEPOINT_BEGIN, the xSavepoint method is invoked. If it is
+// SAVEPOINT_ROLLBACK, the xRollbackTo method. Otherwise, if op is
+// SAVEPOINT_RELEASE, then the xRelease method of each virtual table with
+// an open transaction is invoked.
+//
+// If any virtual table method returns an error code other than SQLITE_OK,
+// processing is abandoned and the error returned to the caller of this
+// function immediately. If all calls to virtual table methods are successful,
+// SQLITE_OK is returned.
+func _sqlite3VtabSavepoint(tls *crt.TLS, _db *Xsqlite3, _op int32, _iSavepoint int32) (r0 int32) {
+ var _rc, _1_i int32
+ var _2_pVTab *XVTable
+ var _2_pMod *Xsqlite3_module
+ var _3_xMethod func(*crt.TLS, *Xsqlite3_vtab, int32) int32
_rc = i32(0)
func() {
if _op != i32(1) && _op != i32(2) && _op != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125979), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabSavepointØ00__func__Ø000))), unsafe.Pointer(str(60784)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125979), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabSavepointØ00__func__Ø000))), unsafe.Pointer(str(58730)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iSavepoint < i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125980), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabSavepointØ00__func__Ø000))), unsafe.Pointer(str(60852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125980), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabSavepointØ00__func__Ø000))), unsafe.Pointer(str(58797)))
crt.X__builtin_abort(tls)
}
}()
if (**XVTable)(unsafe.Pointer(_db.X67)) == nil {
goto _6
}
-
_1_i = i32(0)
_7:
if _rc != i32(0) || _1_i >= (_db.X64) {
goto _11
}
-
_2_pVTab = *(**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db.X67)) + 4*uintptr(_1_i)))
_2_pMod = (*Xsqlite3_module)((*XModule)(_2_pVTab.X1).X0)
if (*Xsqlite3_vtab)(_2_pVTab.X2) == nil || (_2_pMod.X0) < i32(2) {
goto _13
}
-
switch _op {
case i32(0):
goto _15
@@ -50234,46 +45262,40 @@ _15:
}{(_2_pMod.X20)}))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pVTab)) + uintptr(20 /* X5 */))) = _iSavepoint + i32(1)
goto _18
-
_16:
_3_xMethod = *(*func(*crt.TLS, *Xsqlite3_vtab, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
}{(_2_pMod.X22)}))
goto _18
-
_17:
_3_xMethod = *(*func(*crt.TLS, *Xsqlite3_vtab, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32) int32
}{(_2_pMod.X21)}))
goto _18
-
_18:
- if _3_xMethod == nil || (_2_pVTab.X5) <= _iSavepoint {
- goto _20
+ if (_3_xMethod != nil) && ((_2_pVTab.X5) > _iSavepoint) {
+ _rc = _3_xMethod(tls, (*Xsqlite3_vtab)(_2_pVTab.X2), _iSavepoint)
}
-
- _rc = _3_xMethod(tls, (*Xsqlite3_vtab)(_2_pVTab.X2), _iSavepoint)
-_20:
_13:
_1_i += 1
goto _7
-
_11:
_6:
- r0 = _rc
- return
+ return _rc
}
-var _sqlite3VtabSavepointØ00__func__Ø000 [21]int8 // -
+var _sqlite3VtabSavepointØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabSavepointØ00__func__Ø000[0], str(60868), 21)
+ crt.Xstrncpy(nil, &_sqlite3VtabSavepointØ00__func__Ø000[0], str(58812), 21)
}
-func _sqlite3VdbeSetChanges(tls *crt.TLS, _db *Xsqlite3, _nChange int32) { // sqlite3.c:75913:1
+// This routine sets the value to be returned by subsequent calls to
+// sqlite3_changes() on the database handle 'db'.
+func _sqlite3VdbeSetChanges(tls *crt.TLS, _db *Xsqlite3, _nChange int32) {
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetChangesØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetChangesØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
@@ -50285,89 +45307,81 @@ func _sqlite3VdbeSetChanges(tls *crt.TLS, _db *Xsqlite3, _nChange int32) { // sq
}
}
-var _sqlite3VdbeSetChangesØ00__func__Ø000 [22]int8 // -
+var _sqlite3VdbeSetChangesØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSetChangesØ00__func__Ø000[0], str(60892), 22)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSetChangesØ00__func__Ø000[0], str(58833), 22)
}
-func _sqlite3VdbeTransferError(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:74233:1
- var _db *Xsqlite3 // sqlite3.c:74234:11
- _ = _db
- var _rc int32 // sqlite3.c:74235:7
- _ = _rc
+// Copy the error code and error message belonging to the VDBE passed
+// as the first argument to its database handle (so that they will be
+// returned by calls to sqlite3_errcode() and sqlite3_errmsg()).
+//
+// This function does not clear the VDBE error code or message, just
+// copies them to the database handle.
+func _sqlite3VdbeTransferError(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _rc int32
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_p.X0)
_rc = _p.X10
if (_p.X22) == nil {
goto _0
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(66 /* X18 */))) += 1
_sqlite3BeginBenignMalloc(tls)
- if (*XMem)(_db.X56) != nil {
- goto _1
+ if (*XMem)(_db.X56) == nil {
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(240 /* X56 */))))) = _sqlite3ValueNew(tls, _db)
}
-
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(240 /* X56 */))))) = _sqlite3ValueNew(tls, _db)
-_1:
_sqlite3ValueSetStr(tls, (*XMem)(_db.X56), i32(-1), (unsafe.Pointer)(_p.X22), uint8(i32(1)), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
_sqlite3EndBenignMalloc(tls)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(66 /* X18 */))) -= 1
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(48 /* X10 */))) = _rc
goto _2
-
_0:
_sqlite3Error(tls, _db, _rc)
_2:
return _rc
}
-func _Cleanup(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:73558:1
- var _db *Xsqlite3 // sqlite3.c:73559:11
- _ = _db
- var _i int32 // sqlite3.c:73564:7
- _ = _i
+// Clean up the VM after a single run.
+func _Cleanup(tls *crt.TLS, _p *TVdbe) {
+ var _i int32
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_p.X0)
if (**XVdbeCursor)(unsafe.Pointer(_p.X23)) == nil {
goto _0
}
-
_i = i32(0)
_1:
if _i >= (_p.X7) {
goto _4
}
-
func() {
if (*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_i)))) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73565), unsafe.Pointer((*int8)(unsafe.Pointer(&_CleanupØ00__func__Ø000))), unsafe.Pointer(str(60916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73565), unsafe.Pointer((*int8)(unsafe.Pointer(&_CleanupØ00__func__Ø000))), unsafe.Pointer(str(58855)))
crt.X__builtin_abort(tls)
}
}()
_i += 1
goto _1
-
_4:
_0:
if (*XMem)(_p.X18) == nil {
goto _7
}
-
_i = i32(0)
_8:
if _i >= (_p.X6) {
goto _11
}
-
func() {
if int32((*XMem)(unsafe.Pointer(uintptr(_p.X18)+48*uintptr(_i))).X1) != i32(128) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73567), unsafe.Pointer((*int8)(unsafe.Pointer(&_CleanupØ00__func__Ø000))), unsafe.Pointer(str(60932)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73567), unsafe.Pointer((*int8)(unsafe.Pointer(&_CleanupØ00__func__Ø000))), unsafe.Pointer(str(58870)))
crt.X__builtin_abort(tls)
}
}()
_i += 1
goto _8
-
_11:
_7:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X22))
@@ -50375,85 +45389,78 @@ _7:
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(100 /* X21 */))))) = nil
}
-var _CleanupØ00__func__Ø000 [8]int8 // -
+var _CleanupØ00__func__Ø000 [8]int8
func init() {
- crt.Xstrncpy(nil, &_CleanupØ00__func__Ø000[0], str(60964), 8)
+ crt.Xstrncpy(nil, &_CleanupØ00__func__Ø000[0], str(58902), 8)
}
-var _sqlite3VdbeFinalizeØ00__func__Ø000 [20]int8 // -
+var _sqlite3VdbeFinalizeØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeFinalizeØ00__func__Ø000[0], str(60972), 20)
+ crt.Xstrncpy(nil, &_sqlite3VdbeFinalizeØ00__func__Ø000[0], str(58910), 20)
}
-func _sqlite3VdbeDelete(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:74446:1
- var _db *Xsqlite3 // sqlite3.c:74447:11
- _ = _db
+// Delete an entire VDBE.
+func _sqlite3VdbeDelete(tls *crt.TLS, _p *TVdbe) {
+ var _db *Xsqlite3
if func() int32 {
if _p == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74449), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeDeleteØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74449), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeDeleteØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _2
+ }() != 0 {
+ return
}
- return
-
-_2:
_db = (*Xsqlite3)(_p.X0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeDeleteØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74451), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeDeleteØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeClearObject(tls, _db, _p)
- if (*TVdbe)(_p.X1) == nil {
- goto _5
+ if (*TVdbe)(_p.X1) != nil {
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X1) + uintptr(8 /* X2 */))))) = (*TVdbe)(_p.X2)
+ goto _6
}
-
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X1) + uintptr(8 /* X2 */))))) = (*TVdbe)(_p.X2)
- goto _6
-
-_5:
func() {
if (*TVdbe)(_db.X1) != _p {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74456), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeDeleteØ00__func__Ø000))), unsafe.Pointer(str(60992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74456), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeDeleteØ00__func__Ø000))), unsafe.Pointer(str(58930)))
crt.X__builtin_abort(tls)
}
}()
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(4 /* X1 */))))) = (*TVdbe)(_p.X2)
_6:
- if (*TVdbe)(_p.X2) == nil {
- goto _9
+ if (*TVdbe)(_p.X2) != nil {
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X2) + uintptr(4 /* X1 */))))) = (*TVdbe)(_p.X1)
}
-
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X2) + uintptr(4 /* X1 */))))) = (*TVdbe)(_p.X1)
-_9:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = uint32(i32(1443283912))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = nil
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
}
-var _sqlite3VdbeDeleteØ00__func__Ø000 [18]int8 // -
+var _sqlite3VdbeDeleteØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeDeleteØ00__func__Ø000[0], str(61008), 18)
+ crt.Xstrncpy(nil, &_sqlite3VdbeDeleteØ00__func__Ø000[0], str(58943), 18)
}
-func _sqlite3VdbeClearObject(tls *crt.TLS, _db *Xsqlite3, _p *TVdbe) { // sqlite3.c:74415:1
- var _pSub *XSubProgram // sqlite3.c:74416:14
- _ = _pSub
- var _pNext *XSubProgram // sqlite3.c:74416:21
- _ = _pNext
+// Free all memory associated with the Vdbe passed as the second argument,
+// except for object itself, which is preserved.
+//
+// The difference between this function and sqlite3VdbeDelete() is that
+// VdbeDelete() also unlinks the Vdbe from the list of VMs associated with
+// the database connection and frees the object itself.
+func _sqlite3VdbeClearObject(tls *crt.TLS, _db *Xsqlite3, _p *TVdbe) {
+ var _pSub, _pNext *XSubProgram
func() {
if (*Xsqlite3)(_p.X0) != nil && (*Xsqlite3)(_p.X0) != _db {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeClearObjectØ00__func__Ø000))), unsafe.Pointer(str(61028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeClearObjectØ00__func__Ø000))), unsafe.Pointer(str(58961)))
crt.X__builtin_abort(tls)
}
}()
@@ -50463,127 +45470,108 @@ _3:
if _pSub == nil {
goto _6
}
-
_pNext = (*XSubProgram)(_pSub.X6)
_vdbeFreeOpArray(tls, _db, (*XVdbeOp)(_pSub.X0), _pSub.X1)
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSub))
_pSub = _pNext
goto _3
-
_6:
- if (_p.X5) == uint32(i32(381479589)) {
- goto _7
+ if (_p.X5) != uint32(i32(381479589)) {
+ _releaseMemArray(tls, (*XMem)(_p.X24), int32(_p.X4))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X25))
+ _sqlite3DbFree(tls, _db, _p.X37)
}
-
- _releaseMemArray(tls, (*XMem)(_p.X24), int32(_p.X4))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X25))
- _sqlite3DbFree(tls, _db, _p.X37)
-_7:
_vdbeFreeOpArray(tls, _db, (*XVdbeOp)(_p.X17), _p.X27)
_sqlite3DbFree(tls, _db, _p.X20)
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X36))
}
-var _sqlite3VdbeClearObjectØ00__func__Ø000 [23]int8 // -
+var _sqlite3VdbeClearObjectØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeClearObjectØ00__func__Ø000[0], str(61052), 23)
+ crt.Xstrncpy(nil, &_sqlite3VdbeClearObjectØ00__func__Ø000[0], str(58983), 23)
}
-func _vdbeFreeOpArray(tls *crt.TLS, _db *Xsqlite3, _aOp *XVdbeOp, _nOp int32) { // sqlite3.c:72299:1
- var _1_pOp *XVdbeOp // sqlite3.c:72301:8
- _ = _1_pOp
+// Free the space allocated for aOp and any p4 values allocated for the
+// opcodes contained within. If aOp is not NULL it is assumed to contain
+// nOp entries.
+func _vdbeFreeOpArray(tls *crt.TLS, _db *Xsqlite3, _aOp *XVdbeOp, _nOp int32) {
+ var _1_pOp *XVdbeOp
if _aOp == nil {
goto _0
}
-
_1_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(_nOp-i32(1))))
_1:
if uintptr(unsafe.Pointer(_1_pOp)) < uintptr(unsafe.Pointer(_aOp)) {
goto _4
}
-
- if (_1_pOp.X1) == 0 {
- goto _5
+ if (_1_pOp.X1) != 0 {
+ _freeP4(tls, _db, int32(_1_pOp.X1), *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */))))))
}
-
- _freeP4(tls, _db, int32(_1_pOp.X1), *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */))))))
-_5:
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pOp.X7))
*(*uintptr)(unsafe.Pointer(&_1_pOp)) += uintptr(4294967272)
goto _1
-
_4:
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_aOp))
_0:
}
-func _sqlite3ParserReset(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:116162:1
- var _1_db *Xsqlite3 // sqlite3.c:116164:13
- _ = _1_db
+// Free all memory allocations in the pParse object
+func _sqlite3ParserReset(tls *crt.TLS, _pParse *XParse) {
+ var _1_db *Xsqlite3
if _pParse == nil {
goto _0
}
-
_1_db = (*Xsqlite3)(_pParse.X0)
_sqlite3DbFree(tls, _1_db, (unsafe.Pointer)(_pParse.X26))
_sqlite3ExprListDelete(tls, _1_db, (*XExprList)(_pParse.X27))
- if _1_db == nil {
- goto _1
- }
-
- func() {
- if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_db)) + uintptr(252 /* X58 */))).X0) < uint32(_pParse.X12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116168), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ParserResetØ00__func__Ø000))), unsafe.Pointer(str(61076)))
- crt.X__builtin_abort(tls)
+ if _1_db != nil {
+ func() {
+ if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_db)) + uintptr(252 /* X58 */))).X0) < uint32(_pParse.X12) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116168), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ParserResetØ00__func__Ø000))), unsafe.Pointer(str(59006)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */)))
+ *p = (*p) - uint32(_pParse.X12)
+ sink5 = *p
}
- }()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */)))
- *p = (*p) - uint32(_pParse.X12)
- sink5 = *p
}
-_1:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(24 /* X12 */))) = uint8(i32(0))
_0:
}
-var _sqlite3ParserResetØ00__func__Ø000 [19]int8 // -
+var _sqlite3ParserResetØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ParserResetØ00__func__Ø000[0], str(61128), 19)
+ crt.Xstrncpy(nil, &_sqlite3ParserResetØ00__func__Ø000[0], str(59057), 19)
}
-func Xsqlite3_finalize(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:76193:12
- var _rc int32 // sqlite3.c:76194:7
- _ = _rc
- var _2_v *TVdbe // sqlite3.c:76200:10
- _ = _2_v
- var _2_db *Xsqlite3 // sqlite3.c:76201:13
- _ = _2_db
- if _pStmt != nil {
- goto _0
+// The following routine destroys a virtual machine that is created by
+// the sqlite3_compile() routine. The integer returned is an SQLITE_
+// success/failure code that describes the result of executing the virtual
+// machine.
+//
+// This routine sets the error code and string returned by
+// sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
+func Xsqlite3_finalize(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) {
+ var _rc int32
+ var _2_db *Xsqlite3
+ var _2_v *TVdbe
+ if _pStmt == nil {
+ _rc = i32(0)
+ goto _1
}
-
- _rc = i32(0)
- goto _1
-
-_0:
_2_v = (*TVdbe)(_pStmt)
_2_db = (*Xsqlite3)(_2_v.X0)
- if _vdbeSafety(tls, _2_v) == 0 {
- goto _2
+ if _vdbeSafety(tls, _2_v) != 0 {
+ return _sqlite3MisuseError(tls, i32(76202))
}
- return _sqlite3MisuseError(tls, i32(76202))
-
-_2:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_2_db.X3))
- if (_2_v.X26) <= int64(i32(0)) {
- goto _3
+ if (_2_v.X26) > int64(i32(0)) {
+ _invokeProfileCallback(tls, _2_db, _2_v)
}
-
- _invokeProfileCallback(tls, _2_db, _2_v)
-_3:
_rc = _sqlite3VdbeFinalize(tls, _2_v)
_rc = _sqlite3ApiExit(tls, _2_db, _rc)
_sqlite3LeaveMutexAndCloseZombie(tls, _2_db)
@@ -50591,14 +45579,13 @@ _1:
return _rc
}
-func _invokeProfileCallback(tls *crt.TLS, _db *Xsqlite3, _p *TVdbe) { // sqlite3.c:76157:1
- var _iNow int64 // sqlite3.c:76158:17
- _ = _iNow
- var _iElapse int64 // sqlite3.c:76159:17
- _ = _iElapse
+// Invoke the profile callback. This routine is only called if we already
+// know that the profile callback is defined and needs to be invoked.
+func _invokeProfileCallback(tls *crt.TLS, _db *Xsqlite3, _p *TVdbe) {
+ var _iNow, _iElapse int64
func() {
if (_p.X26) <= int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76160), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(61148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76160), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(59076)))
crt.X__builtin_abort(tls)
}
}()
@@ -50608,103 +45595,86 @@ func _invokeProfileCallback(tls *crt.TLS, _db *Xsqlite3, _p *TVdbe) { // sqlite3
}{(_db.X43)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int8, uint64)
}{nil})) && (int32(_db.X24)&i32(2)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76161), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(61164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76161), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(59091)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76162), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(51476)))
+ if int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76162), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(49896)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X36) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76163), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(61224)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76163), unsafe.Pointer((*int8)(unsafe.Pointer(&_invokeProfileCallbackØ00__func__Ø000))), unsafe.Pointer(str(59149)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3OsCurrentTimeInt64(tls, (*Xsqlite3_vfs)(_db.X0), &_iNow)
_iElapse = (_iNow - (_p.X26)) * int64(i32(1000000))
- if (_db.X43) == nil {
- goto _9
+ if (_db.X43) != nil {
+ (_db.X43)(tls, _db.X44, _p.X36, uint64(_iElapse))
}
-
- (_db.X43)(tls, _db.X44, _p.X36, uint64(_iElapse))
-_9:
- if (int32(_db.X24) & i32(2)) == 0 {
- goto _10
+ if (int32(_db.X24) & i32(2)) != 0 {
+ (_db.X41)(tls, uint32(i32(2)), _db.X42, (unsafe.Pointer)(_p), (unsafe.Pointer)(&_iElapse))
}
-
- (_db.X41)(tls, uint32(i32(2)), _db.X42, (unsafe.Pointer)(_p), (unsafe.Pointer)(&_iElapse))
-_10:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(120 /* X26 */))) = int64(i32(0))
}
-var _invokeProfileCallbackØ00__func__Ø000 [22]int8 // -
+var _invokeProfileCallbackØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_invokeProfileCallbackØ00__func__Ø000[0], str(61236), 22)
+ crt.Xstrncpy(nil, &_invokeProfileCallbackØ00__func__Ø000[0], str(59160), 22)
}
-var _sqlite3LockAndPrepareØ00__func__Ø000 [22]int8 // -
+var _sqlite3LockAndPrepareØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3LockAndPrepareØ00__func__Ø000[0], str(61260), 22)
+ crt.Xstrncpy(nil, &_sqlite3LockAndPrepareØ00__func__Ø000[0], str(59182), 22)
}
-var _sqlite3_prepareØ00__func__Ø000 [16]int8 // -
+var _sqlite3_prepareØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_prepareØ00__func__Ø000[0], str(61284), 16)
+ crt.Xstrncpy(nil, &_sqlite3_prepareØ00__func__Ø000[0], str(59204), 16)
}
-func Xsqlite3_errmsg(tls *crt.TLS, _db *Xsqlite3) (r0 *int8) { // sqlite3.c:142702:12
- var _z *int8 // sqlite3.c:142703:14
- _ = _z
- if _db != nil {
- goto _0
+// Return UTF-8 encoded English language explanation of the most recent
+// error.
+func Xsqlite3_errmsg(tls *crt.TLS, _db *Xsqlite3) (r0 *int8) {
+ var _z *int8
+ if _db == nil {
+ return _sqlite3ErrStr(tls, _sqlite3NomemError(tls, i32(142705)))
}
- return _sqlite3ErrStr(tls, _sqlite3NomemError(tls, i32(142705)))
-
-_0:
- if _sqlite3SafetyCheckSickOrOk(tls, _db) != 0 {
- goto _1
+ if _sqlite3SafetyCheckSickOrOk(tls, _db) == 0 {
+ return _sqlite3ErrStr(tls, _sqlite3MisuseError(tls, i32(142708)))
}
- return _sqlite3ErrStr(tls, _sqlite3MisuseError(tls, i32(142708)))
-
-_1:
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
- if (_db.X17) == 0 {
- goto _2
+ if (_db.X17) != 0 {
+ _z = _sqlite3ErrStr(tls, _sqlite3NomemError(tls, i32(142712)))
+ goto _3
}
-
- _z = _sqlite3ErrStr(tls, _sqlite3NomemError(tls, i32(142712)))
- goto _3
-
-_2:
_z = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, (*XMem)(_db.X56))))
func() {
if (_db.X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142716), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_errmsgØ00__func__Ø000))), unsafe.Pointer(str(23588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142716), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_errmsgØ00__func__Ø000))), unsafe.Pointer(str(23869)))
crt.X__builtin_abort(tls)
}
}()
- if _z != nil {
- goto _6
+ if _z == nil {
+ _z = _sqlite3ErrStr(tls, _db.X10)
}
-
- _z = _sqlite3ErrStr(tls, _db.X10)
-_6:
_3:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
return _z
}
-func _sqlite3ErrStr(tls *crt.TLS, _rc int32) (r0 *int8) { // sqlite3.c:141867:1
- var _zErr *int8 // sqlite3.c:141897:14
- _ = _zErr
- _zErr = str(61300)
+// Return a static string that describes the kind of error specified in the
+// argument.
+func _sqlite3ErrStr(tls *crt.TLS, _rc int32) (r0 *int8) {
+ var _zErr *int8
+ _zErr = str(59220)
switch _rc {
case i32(516):
goto _1
@@ -50713,67 +45683,67 @@ func _sqlite3ErrStr(tls *crt.TLS, _rc int32) (r0 *int8) { // sqlite3.c:141867:1
}
_1:
- _zErr = str(61316)
+ _zErr = str(59234)
goto _3
-
_2:
{
p := &_rc
*p = (*p) & i32(255)
sink1 = *p
}
- if func() int32 {
+ if (func() int32 {
if _rc >= i32(0) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(141905), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ErrStrØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(141905), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ErrStrØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 || _rc >= i32(27) || (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3ErrStrØ00aMsgØ001)) + 4*uintptr(_rc)))) == nil {
- goto _8
+ }() != 0 && (_rc < i32(27))) && ((*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3ErrStrØ00aMsgØ001)) + 4*uintptr(_rc)))) != nil) {
+ _zErr = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3ErrStrØ00aMsgØ001)) + 4*uintptr(_rc)))
}
-
- _zErr = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3ErrStrØ00aMsgØ001)) + 4*uintptr(_rc)))
-_8:
goto _3
-
_3:
return _zErr
}
-var _sqlite3ErrStrØ00__func__Ø000 [14]int8 // -
+var _sqlite3ErrStrØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ErrStrØ00__func__Ø000[0], str(61340), 14)
+ crt.Xstrncpy(nil, &_sqlite3ErrStrØ00__func__Ø000[0], str(59256), 14)
}
-var _sqlite3ErrStrØ00aMsgØ001 [27]*int8 // sqlite3.c:141868:20
+var _sqlite3ErrStrØ00aMsgØ001 [27]*int8
func init() {
- _sqlite3ErrStrØ00aMsgØ001 = [27]*int8{str(61356), str(61372), nil, str(61408), str(61436), str(61468), str(61488), str(61516), str(61532), str(61572), str(61584), str(61600), str(61636), str(61656), str(61684), str(61716), str(61736), str(61760), str(5236), str(61788), str(61808), str(61828), str(61868), str(61900), str(61924), str(61956), str(61992)}
+ _sqlite3ErrStrØ00aMsgØ001 = [27]*int8{str(59270), str(59283), nil, str(59319), str(59344), str(59375), str(59394), str(59419), str(59433), str(59470), str(59482), str(59497), str(59530), str(59548), str(59573), str(59602), str(59619), str(59642), str(6810), str(59670), str(59688), str(59706), str(59745), str(59776), str(59797), str(59829), str(59863)}
}
-var _sqlite3_errmsgØ00__func__Ø000 [15]int8 // -
+var _sqlite3_errmsgØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_errmsgØ00__func__Ø000[0], str(62032), 15)
+ crt.Xstrncpy(nil, &_sqlite3_errmsgØ00__func__Ø000[0], str(59902), 15)
}
-func _sqlite3FindIndex(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _zDb *int8) (r0 *XIndex) { // sqlite3.c:100116:1
- var _p *XIndex // sqlite3.c:100117:9
- _ = _p
- var _i int32 // sqlite3.c:100118:7
- _ = _i
- var _1_j int32 // sqlite3.c:100122:9
- _ = _1_j
- var _1_pSchema *XSchema // sqlite3.c:100123:12
- _ = _1_pSchema
+// Locate the in-memory structure that describes
+// a particular index given the name of that index
+// and the name of the database that contains the index.
+// Return NULL if not found.
+//
+// If zDatabase is 0, all databases are searched for the
+// table and the first matching index is returned. (No checking
+// for duplicate index names is done.) The search order is
+// TEMP first, then MAIN, then any auxiliary databases added
+// using the ATTACH command.
+func _sqlite3FindIndex(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _zDb *int8) (r0 *XIndex) {
+ var _i, _1_j int32
+ var _1_pSchema *XSchema
+ var _p *XIndex
_p = nil
func() {
if _zDb == nil && _sqlite3BtreeHoldsAllMutexes(tls, _db) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100120), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindIndexØ00__func__Ø000))), unsafe.Pointer(str(62048)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100120), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindIndexØ00__func__Ø000))), unsafe.Pointer(str(59917)))
crt.X__builtin_abort(tls)
}
}()
@@ -50782,7 +45752,6 @@ _3:
if _i >= (_db.X5) {
goto _6
}
-
_1_j = func() int32 {
if _i < i32(2) {
return (_i ^ i32(1))
@@ -50792,57 +45761,53 @@ _3:
_1_pSchema = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_1_j))).X4)
func() {
if _1_pSchema == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100124), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindIndexØ00__func__Ø000))), unsafe.Pointer(str(62092)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100124), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindIndexØ00__func__Ø000))), unsafe.Pointer(str(59959)))
crt.X__builtin_abort(tls)
}
}()
- if _zDb == nil || _sqlite3StrICmp(tls, _zDb, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_1_j))).X0) == 0 {
- goto _12
+ if (_zDb != nil) && _sqlite3StrICmp(tls, _zDb, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_1_j))).X0) != 0 {
+ goto _4
}
-
- goto _4
-
-_12:
func() {
if _sqlite3SchemaMutexHeld(tls, _db, _1_j, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100126), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindIndexØ00__func__Ø000))), unsafe.Pointer(str(62100)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100126), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindIndexØ00__func__Ø000))), unsafe.Pointer(str(59967)))
crt.X__builtin_abort(tls)
}
}()
_p = (*XIndex)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSchema))+uintptr(24 /* X3 */))), _zName))
- if _p == nil {
- goto _15
+ if _p != nil {
+ goto _6
}
-
- goto _6
-
-_15:
_4:
_i += 1
goto _3
-
_6:
return _p
}
-var _sqlite3FindIndexØ00__func__Ø000 [17]int8 // -
+var _sqlite3FindIndexØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FindIndexØ00__func__Ø000[0], str(62136), 17)
+ crt.Xstrncpy(nil, &_sqlite3FindIndexØ00__func__Ø000[0], str(60000), 17)
}
-func _sqlite3SetString(tls *crt.TLS, _pz **int8, _db *Xsqlite3, _zNew *int8) { // sqlite3.c:24987:1
+// Free any prior content in *pz and replace it with a copy of zNew.
+func _sqlite3SetString(tls *crt.TLS, _pz **int8, _db *Xsqlite3, _zNew *int8) {
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(*_pz))
*_pz = _sqlite3DbStrDup(tls, _db, _zNew)
}
-func _sqlite3BtreeSetCacheSize(tls *crt.TLS, _p *XBtree, _mxPage int32) (r0 int32) { // sqlite3.c:61660:1
- var _pBt *XBtShared // sqlite3.c:61661:12
- _ = _pBt
+// Change the "soft" limit on the number of pages in the cache.
+// Unused and unmodified pages will be recycled when the number of
+// pages in the cache exceeds this soft limit. But the size of the
+// cache is allowed to grow larger than this limit if it contains
+// dirty pages or pages still in active use.
+func _sqlite3BtreeSetCacheSize(tls *crt.TLS, _p *XBtree, _mxPage int32) (r0 int32) {
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_p.X1)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61662), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetCacheSizeØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61662), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetCacheSizeØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
@@ -50852,20 +45817,23 @@ func _sqlite3BtreeSetCacheSize(tls *crt.TLS, _p *XBtree, _mxPage int32) (r0 int3
return i32(0)
}
-var _sqlite3BtreeSetCacheSizeØ00__func__Ø000 [25]int8 // -
+var _sqlite3BtreeSetCacheSizeØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeSetCacheSizeØ00__func__Ø000[0], str(62156), 25)
+ crt.Xstrncpy(nil, &_sqlite3BtreeSetCacheSizeØ00__func__Ø000[0], str(60017), 25)
}
-func _sqlite3PagerSetCachesize(tls *crt.TLS, _pPager *XPager, _mxPage int32) { // sqlite3.c:50398:1
+// Change the maximum number of in-memory pages that are allowed
+// before attempting to recycle clean and unused pages.
+func _sqlite3PagerSetCachesize(tls *crt.TLS, _pPager *XPager, _mxPage int32) {
_sqlite3PcacheSetCachesize(tls, (*XPCache)(_pPager.X59), _mxPage)
}
-func _sqlite3PcacheSetCachesize(tls *crt.TLS, _pCache *XPCache, _mxPage int32) { // sqlite3.c:44938:1
+// Set the suggested cache-size value.
+func _sqlite3PcacheSetCachesize(tls *crt.TLS, _pCache *XPCache, _mxPage int32) {
func() {
if (_pCache.X12) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44939), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheSetCachesizeØ00__func__Ø000))), unsafe.Pointer(str(15076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44939), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheSetCachesizeØ00__func__Ø000))), unsafe.Pointer(str(15958)))
crt.X__builtin_abort(tls)
}
}()
@@ -50873,1810 +45841,2002 @@ func _sqlite3PcacheSetCachesize(tls *crt.TLS, _pCache *XPCache, _mxPage int32) {
((*Xsqlite3_pcache_methods2)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(108 /* X12 */))).X5)(tls, _pCache.X12, _numberOfCachePages(tls, _pCache))
}
-var _sqlite3PcacheSetCachesizeØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheSetCachesizeØ00__func__Ø000[0], str(62184), 26)
-}
-
-func Xsqlite3_exec(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _xCallback func(*crt.TLS, unsafe.Pointer, int32, **int8, **int8) int32, _pArg unsafe.Pointer, _pzErrMsg **int8) (r0 int32) { // sqlite3.c:111128:12
- var _rc int32 // sqlite3.c:111135:7
- _ = _rc
- var _zLeftover *int8 // sqlite3.c:111136:14
- _ = _zLeftover
- var _pStmt unsafe.Pointer // sqlite3.c:111137:16
- _ = _pStmt
- var _azCols **int8 // sqlite3.c:111138:8
- _ = _azCols
- var _callbackIsInit int32 // sqlite3.c:111139:7
- _ = _callbackIsInit
- var _1_nCol int32 // sqlite3.c:111147:9
- _ = _1_nCol
- var _1_azVals **int8 // sqlite3.c:111148:10
- _ = _1_azVals
- var _4_i int32 // sqlite3.c:111166:11
- _ = _4_i
- var _14_nErrMsg int32 // sqlite3.c:111228:9
- _ = _14_nErrMsg
+var _sqlite3PcacheSetCachesizeØ00__func__Ø000 [26]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PcacheSetCachesizeØ00__func__Ø000[0], str(60042), 26)
+}
+
+// Load the content of the sqlite_stat1 and sqlite_stat3/4 tables. The
+// contents of sqlite_stat1 are used to populate the Index.aiRowEst[]
+// arrays. The contents of sqlite_stat3/4 are used to populate the
+// Index.aSample[] arrays.
+//
+// If the sqlite_stat1 table is not present in the database, SQLITE_ERROR
+// is returned. In this case, even if SQLITE_ENABLE_STAT3/4 was defined
+// during compilation and the sqlite_stat3/4 table is present, no data is
+// read from it.
+//
+// If SQLITE_ENABLE_STAT3/4 was defined during compilation and the
+// sqlite_stat4 table is not present in the database, SQLITE_ERROR is
+// returned. However, in this case, data is read from the sqlite_stat1
+// table (if it is present) before returning.
+//
+// If an OOM error occurs, this function always sets db->mallocFailed.
+// This means if the caller does not care about other errors, the return
+// code may be ignored.
+func _sqlite3AnalysisLoad(tls *crt.TLS, _db *Xsqlite3, _iDb int32) (r0 int32) {
+ var _rc int32
+ var _zSql *int8
+ var _pSchema *XSchema
+ var _i *XHashElem
+ var _1_pTab *XTable
+ var _2_pIdx, _6_pIdx *XIndex
+ var _sInfo XanalysisInfo
_rc = i32(0)
- _pStmt = nil
- _azCols = nil
- if _sqlite3SafetyCheckOk(tls, _db) != 0 {
- goto _0
- }
- return _sqlite3MisuseError(tls, i32(111141))
-
-_0:
- if _zSql != nil {
- goto _1
- }
-
- _zSql = str(196)
-_1:
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
- _sqlite3Error(tls, _db, i32(0))
-_2:
- if _rc != i32(0) || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == 0 {
- goto _3
- }
-
- _1_azVals = nil
- _pStmt = nil
- _rc = Xsqlite3_prepare_v2(tls, _db, _zSql, i32(-1), &_pStmt, &_zLeftover)
+ _pSchema = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4)
func() {
- if _rc != i32(0) && _pStmt != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(111152), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_execØ00__func__Ø000))), unsafe.Pointer(str(62212)))
+ if _iDb < i32(0) || _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
- if _rc == i32(0) {
- goto _8
+ func() {
+ if (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X1) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98772), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(60068)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98775), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(8 /* X2 */))).X2)
+_7:
+ if _i == nil {
+ goto _10
}
-
- goto _2
-
-_8:
- if _pStmt != nil {
- goto _9
+ _1_pTab = (*XTable)(_i.X2)
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(36 /* X9 */)))
+ *p = (*p) & uint32(i32(-17))
+ sink5 = *p
}
-
- _zSql = _zLeftover
- goto _2
-
-_9:
- _callbackIsInit = i32(0)
- _1_nCol = Xsqlite3_column_count(tls, _pStmt)
+ _i = (*XHashElem)(_i.X0)
+ goto _7
_10:
- _rc = Xsqlite3_step(tls, _pStmt)
- if _xCallback == nil || i32(100) != _rc && (i32(101) != _rc || _callbackIsInit != 0 || ((_db.X6)&i32(256)) == 0) {
- goto _16
- }
-
- if _callbackIsInit != 0 {
- goto _17
+ _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(24 /* X3 */))).X2)
+_11:
+ if _i == nil {
+ goto _14
}
-
- _azCols = (**int8)(_sqlite3DbMallocRaw(tls, _db, uint64(uint32((i32(2)*_1_nCol)+i32(1))*u32(4))))
- if _azCols != nil {
- goto _18
+ _2_pIdx = (*XIndex)(_i.X2)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx))+uintptr(55 /* X16 */))), int8(i32(0)), 128, 7)
+ _i = (*XHashElem)(_i.X0)
+ goto _11
+_14:
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sInfo)) + uintptr(0 /* X0 */))))) = _db
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sInfo)) + uintptr(4 /* X1 */))) = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ if _sqlite3FindTable(tls, _db, str(60088), _sInfo.X1) == nil {
+ goto _15
}
-
- goto _exec_out
-
-_18:
- _4_i = i32(0)
-_19:
- if _4_i >= _1_nCol {
- goto _22
+ _zSql = _sqlite3MPrintf(tls, _db, str(60101), unsafe.Pointer(_sInfo.X1))
+ if _zSql == nil {
+ _rc = _sqlite3NomemError(tls, i32(98796))
+ goto _17
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azCols)) + 4*uintptr(_4_i))) = Xsqlite3_column_name(tls, _pStmt, _4_i)
+ _rc = Xsqlite3_exec(tls, _db, _zSql, _analysisLoader, (unsafe.Pointer)(&_sInfo), nil)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zSql))
+_17:
+_15:
func() {
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azCols)) + 4*uintptr(_4_i)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(111182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_execØ00__func__Ø000))), unsafe.Pointer(str(62240)))
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98804), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
- _4_i += 1
- goto _19
-
-_22:
- _callbackIsInit = i32(1)
-_17:
- if _rc != i32(100) {
- goto _25
- }
-
- _1_azVals = (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azCols)) + 4*uintptr(_1_nCol)))
- _4_i = i32(0)
-_26:
- if _4_i >= _1_nCol {
- goto _29
- }
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_azVals)) + 4*uintptr(_4_i))) = (*int8)(unsafe.Pointer(Xsqlite3_column_text(tls, _pStmt, _4_i)))
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_azVals)) + 4*uintptr(_4_i)))) != nil || Xsqlite3_column_type(tls, _pStmt, _4_i) == i32(5) {
- goto _31
- }
-
- _sqlite3OomFault(tls, _db)
- goto _exec_out
-
-_31:
- _4_i += 1
- goto _26
-
-_29:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_azVals)) + 4*uintptr(_4_i))) = nil
-_25:
- if _xCallback(tls, _pArg, _1_nCol, _1_azVals, _azCols) == 0 {
- goto _32
- }
-
- _rc = i32(4)
- _sqlite3VdbeFinalize(tls, (*TVdbe)(_pStmt))
- _pStmt = nil
- _sqlite3Error(tls, _db, i32(4))
- goto _exec_out
-
-_32:
-_16:
- if _rc == i32(100) {
- goto _33
- }
-
- _rc = _sqlite3VdbeFinalize(tls, (*TVdbe)(_pStmt))
- _pStmt = nil
- _zSql = _zLeftover
-_34:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))))))) & i32(1)) == 0 {
- goto _35
- }
-
- *(*uintptr)(unsafe.Pointer(&_zSql)) += uintptr(1)
- goto _34
-
-_35:
- goto _11
-
-_33:
- goto _10
-
-_11:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_azCols))
- _azCols = nil
- goto _2
-
-_3:
-_exec_out:
- if _pStmt == nil {
- goto _36
+ _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(24 /* X3 */))).X2)
+_20:
+ if _i == nil {
+ goto _23
}
-
- _sqlite3VdbeFinalize(tls, (*TVdbe)(_pStmt))
-_36:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_azCols))
- _rc = _sqlite3ApiExit(tls, _db, _rc)
- if _rc == i32(0) || _pzErrMsg == nil {
- goto _38
+ _6_pIdx = (*XIndex)(_i.X2)
+ if ((uint32((_6_pIdx.X16)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) == 0 {
+ _sqlite3DefaultRowEst(tls, _6_pIdx)
}
-
- _14_nErrMsg = i32(1) + _sqlite3Strlen30(tls, Xsqlite3_errmsg(tls, _db))
- *_pzErrMsg = (*int8)(_sqlite3Malloc(tls, uint64(_14_nErrMsg)))
- if (*_pzErrMsg) == nil {
- goto _39
+ _i = (*XHashElem)(_i.X0)
+ goto _20
+_23:
+ if _rc == i32(7) {
+ _sqlite3OomFault(tls, _db)
}
+ return _rc
- crt.Xmemcpy(tls, (unsafe.Pointer)(*_pzErrMsg), (unsafe.Pointer)(Xsqlite3_errmsg(tls, _db)), uint32(_14_nErrMsg))
- goto _40
+ _ = _sInfo
+ panic(0)
+}
-_39:
- _rc = _sqlite3NomemError(tls, i32(111233))
- _sqlite3Error(tls, _db, i32(7))
-_40:
- goto _41
+var _sqlite3AnalysisLoadØ00__func__Ø000 [20]int8
-_38:
- if _pzErrMsg == nil {
- goto _42
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3AnalysisLoadØ00__func__Ø000[0], str(60142), 20)
+}
- *_pzErrMsg = nil
-_42:
-_41:
+// Locate the in-memory structure that describes a particular database
+// table given the name of that table and (optionally) the name of the
+// database containing the table. Return NULL if not found.
+//
+// If zDatabase is 0, all databases are searched for the table and the
+// first matching table is returned. (No checking for duplicate table
+// names is done.) The search order is TEMP first, then MAIN, then any
+// auxiliary databases added using the ATTACH command.
+//
+// See also sqlite3LocateTable().
+func _sqlite3FindTable(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _zDatabase *int8) (r0 *XTable) {
+ var _i, _2_j int32
+ var _p *XTable
+ _p = nil
func() {
- if (_rc & (_db.X11)) != _rc {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(111240), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_execØ00__func__Ø000))), unsafe.Pointer(str(52284)))
+ if _zDatabase == nil && _sqlite3BtreeHoldsAllMutexes(tls, _db) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99999), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindTableØ00__func__Ø000))), unsafe.Pointer(str(60162)))
crt.X__builtin_abort(tls)
}
}()
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
- return _rc
-}
-
-func Xsqlite3_prepare_v2(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) { // sqlite3.c:116417:12
- var _rc int32 // sqlite3.c:116424:7
- _ = _rc
- _rc = _sqlite3LockAndPrepare(tls, _db, _zSql, _nBytes, i32(1), nil, _ppStmt, _pzTail)
+_3:
+ _i = i32(0)
+_5:
+ if _i >= (_db.X5) {
+ goto _8
+ }
+ _2_j = func() int32 {
+ if _i < i32(2) {
+ return (_i ^ i32(1))
+ }
+ return _i
+ }()
+ if _zDatabase != nil && _sqlite3StrICmp(tls, _zDatabase, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_2_j))).X0) != i32(0) {
+ goto _12
+ }
func() {
- if _rc != i32(0) && _ppStmt != nil && *_ppStmt != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116426), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_prepare_v2Ø00__func__Ø000))), unsafe.Pointer(str(52072)))
+ if _sqlite3SchemaMutexHeld(tls, _db, _2_j, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindTableØ00__func__Ø000))), unsafe.Pointer(str(59967)))
crt.X__builtin_abort(tls)
}
}()
- return _rc
-}
-
-var _sqlite3_prepare_v2Ø00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3_prepare_v2Ø00__func__Ø000[0], str(62256), 19)
-}
-
-var _sqlite3_execØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3_execØ00__func__Ø000[0], str(62276), 13)
-}
-
-func Xsqlite3_step(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:76747:12
- var _rc int32 // sqlite3.c:76748:7
- _ = _rc
- var _rc2 int32 // sqlite3.c:76749:7
- _ = _rc2
- var _v *TVdbe // sqlite3.c:76750:8
- _ = _v
- var _cnt int32 // sqlite3.c:76751:7
- _ = _cnt
- var _db *Xsqlite3 // sqlite3.c:76752:11
- _ = _db
- var _2_savedPc int32 // sqlite3.c:76762:9
- _ = _2_savedPc
- var _3_zErr *int8 // sqlite3.c:76778:16
- _ = _3_zErr
- _rc = i32(0)
- _rc2 = i32(0)
- _v = (*TVdbe)(_pStmt)
- _cnt = i32(0)
- if _vdbeSafetyNotNull(tls, _v) == 0 {
- goto _0
+ _p = (*XTable)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_2_j))).X4)+uintptr(8 /* X2 */))), _zName))
+ if _p != nil {
+ return _p
}
- return _sqlite3MisuseError(tls, i32(76755))
-
-_0:
- _db = (*Xsqlite3)(_v.X0)
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v))+uintptr(140 /* X32 */))), int16(i32(0)), 2, 1)
-_1:
- if store1(&_rc, _sqlite3Step(tls, _v)) != i32(17) || postInc1(&_cnt, int32(1)) >= i32(50) {
- goto _2
+_12:
+ _i += 1
+ goto _5
+_8:
+ if _sqlite3StrICmp(tls, _zName, str(50026)) != i32(0) {
+ goto _4
}
-
- _2_savedPc = _v.X9
- _rc2 = store1(&_rc, _sqlite3Reprepare(tls, _v))
- if _rc == i32(0) {
+ if Xsqlite3_stricmp(tls, _zDatabase, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X0) != i32(0) {
goto _4
}
+ _zName = str(50007)
+ goto _3
+_4:
+ return nil
+}
- goto _2
+var _sqlite3FindTableØ00__func__Ø000 [17]int8
-_4:
- Xsqlite3_reset(tls, _pStmt)
- if _2_savedPc < i32(0) {
- goto _5
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FindTableØ00__func__Ø000[0], str(60210), 17)
+}
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v))+uintptr(140 /* X32 */))), int16(i32(1)), 2, 1)
-_5:
+// This callback is invoked once for each index when reading the
+// sqlite_stat1 table.
+//
+// argv[0] = name of the table
+// argv[1] = name of the index (might be NULL)
+// argv[2] = results of analysis - on integer for each column
+//
+// Entries for which argv[1]==NULL simply record the number of rows in
+// the table.
+func _analysisLoader(tls *crt.TLS, _pData unsafe.Pointer, _argc int32, _argv **int8, _NotUsed **int8) (r0 int32) {
+ var _6_nCol int32
+ var _z *int8
+ var _6_aiRowEst *uint32
+ var _pTable *XTable
+ var _pIndex *XIndex
+ var _8_fakeIdx XIndex
+ var _pInfo *XanalysisInfo
+ _pInfo = (*XanalysisInfo)(_pData)
func() {
- if int32((uint32(_v.X32)<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76767), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_stepØ00__func__Ø000))), unsafe.Pointer(str(62292)))
+ if _argc != i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98427), unsafe.Pointer((*int8)(unsafe.Pointer(&_analysisLoaderØ00__func__Ø000))), unsafe.Pointer(str(50294)))
crt.X__builtin_abort(tls)
}
}()
- goto _1
+ _ = _argc
-_2:
- if _rc2 == i32(0) {
- goto _8
+ if ((_argv == nil) || ((*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0))))) == nil)) || ((*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2))))) == nil) {
+ return i32(0)
}
-
- _3_zErr = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, (*XMem)(_db.X56))))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_v.X22))
- if (_db.X17) != 0 {
+ _pTable = _sqlite3FindTable(tls, (*Xsqlite3)(_pInfo.X0), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), _pInfo.X1)
+ if _pTable == nil {
+ return i32(0)
+ }
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1))))) == nil {
+ _pIndex = nil
+ goto _7
+ }
+ if Xsqlite3_stricmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1))))) == i32(0) {
+ _pIndex = _sqlite3PrimaryKeyIndex(tls, _pTable)
goto _9
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(104 /* X22 */))) = _sqlite3DbStrDup(tls, _db, _3_zErr)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(40 /* X10 */))) = _rc2
- goto _10
-
+ _pIndex = _sqlite3FindIndex(tls, (*Xsqlite3)(_pInfo.X0), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))), _pInfo.X1)
_9:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(104 /* X22 */))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(40 /* X10 */))) = store1(&_rc, _sqlite3NomemError(tls, i32(76785)))
+_7:
+ _z = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2))))
+ if _pIndex == nil {
+ goto _10
+ }
+ _6_aiRowEst = nil
+ _6_nCol = int32(_pIndex.X13) + i32(1)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 4, 2)
+ _decodeIntArray(tls, _z, _6_nCol, _6_aiRowEst, _pIndex.X2, _pIndex)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 128, 7)
+ if (*XExpr)(_pIndex.X9) == nil {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(44 /* X12 */))) = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X2)) + 2*uintptr(i32(0))))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(16))
+ sink5 = *p
+ }
+ }
+ goto _12
_10:
-_8:
- _rc = _sqlite3ApiExit(tls, _db, _rc)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
- return _rc
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_fakeIdx)) + uintptr(48 /* X12 */))) = _pTable.X13
+ _decodeIntArray(tls, _z, i32(1), nil, (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(44 /* X12 */))), &_8_fakeIdx)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(46 /* X13 */))) = _8_fakeIdx.X12
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(16))
+ sink5 = *p
+ }
+_12:
+ return i32(0)
+
+ _ = _8_fakeIdx
+ panic(0)
+}
+
+var _analysisLoaderØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_analysisLoaderØ00__func__Ø000[0], str(60227), 15)
}
-func _sqlite3Step(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:76617:1
- var _db *Xsqlite3 // sqlite3.c:76618:11
- _ = _db
- var _rc int32 // sqlite3.c:76619:7
- _ = _rc
+// The first argument points to a nul-terminated string containing a
+// list of space separated integers. Read the first nOut of these into
+// the array aOut[].
+func _decodeIntArray(tls *crt.TLS, _zIntArray *int8, _nOut int32, _aOut *uint32, _aLog *int16, _pIndex *XIndex) {
+ var _c, _i int32
+ var _v uint32
+ var _z *int8
+ _z = _zIntArray
func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76621), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(8472)))
+ if _z == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98365), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(44451)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X5) == uint32(i32(770837923)) {
- goto _2
- }
-
- Xsqlite3_reset(tls, (unsafe.Pointer)(_p))
+ _i = i32(0)
_2:
- _db = (*Xsqlite3)(_p.X0)
- if (_db.X17) == 0 {
- goto _3
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(7)
- return _sqlite3NomemError(tls, i32(76654))
-
-_3:
- if (_p.X9) > i32(0) || ((uint32(_p.X32)<>uint(i32(31))) == 0 {
- goto _5
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(17)
- _rc = i32(1)
- goto _end_of_step
-
-_5:
- if (_p.X9) >= i32(0) {
+ if (*_z) == 0 || _i >= _nOut {
goto _6
}
-
- if (_db.X34) != i32(0) {
+ _v = uint32(i32(0))
+_7:
+ if (store1(&_c, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))) >= i32(48)) && (_c <= i32(57)) {
+ _v = ((_v * uint32(i32(10))) + uint32(_c)) - uint32(i32(48))
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
goto _7
}
-
- *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(0)
-_7:
func() {
- if (_db.X36) <= i32(0) && int32(_db.X15) != i32(0) && ((_db.X77) != int64(i32(0)) || (_db.X78) != int64(i32(0))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76671), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62308)))
+ if _aOut != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98377), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(60242)))
crt.X__builtin_abort(tls)
}
}()
- if (_db.X43) == nil && (int32(_db.X24)&i32(2)) == i32(0) || ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 || (_p.X36) == nil {
- goto _16
- }
-
- _sqlite3OsCurrentTimeInt64(tls, (*Xsqlite3_vfs)(_db.X0), (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(120 /* X26 */))))
- goto _17
-_16:
func() {
- if (_p.X26) != int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62400)))
+ if _aLog == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98379), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(60250)))
crt.X__builtin_abort(tls)
}
}()
-_17:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(152 /* X34 */))) += 1
- if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- goto _20
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLog)) + 2*uintptr(_i))) = _sqlite3LogEst(tls, uint64(_v))
+ if int32(*_z) == i32(32) {
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(160 /* X36 */))) += 1
-_20:
- if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _21
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(156 /* X35 */))) += 1
-_21:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = i32(0)
+ _i += 1
+ goto _2
_6:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(132 /* X28 */))) = i32(0)
- if ((uint32((_p.X32)>>uint(i32(2))) << uint(i32(30))) >> uint(i32(30))) == 0 {
+ func() {
+ if _pIndex == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(98385), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(60258)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 4, 2)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 64, 6)
+_17:
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) == 0 {
+ goto _18
+ }
+ if Xsqlite3_strglob(tls, str(60268), _z) == i32(0) {
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 4, 2)
+ goto _20
+ }
+ if Xsqlite3_strglob(tls, str(60279), _z) == i32(0) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(48 /* X12 */))) = _sqlite3LogEst(tls, uint64(_sqlite3Atoi(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(3)))))))))))
goto _22
}
-
- _rc = _sqlite3VdbeList(tls, _p)
- goto _23
-
+ if Xsqlite3_strglob(tls, str(60289), _z) == i32(0) {
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 64, 6)
+ }
_22:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(164 /* X37 */))) += 1
- _rc = _sqlite3VdbeExec(tls, _p)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(164 /* X37 */))) -= 1
-_23:
- if _rc == i32(100) {
+_20:
+_24:
+ if (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(0)) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(32)) {
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
goto _24
}
-
- if (_p.X26) <= int64(i32(0)) {
- goto _25
+_27:
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) == i32(32) {
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
+ goto _27
}
+ goto _17
+_18:
+}
- _invokeProfileCallback(tls, _db, _p)
-_25:
-_24:
- if _rc != i32(101) {
- goto _26
- }
+var _decodeIntArrayØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_decodeIntArrayØ00__func__Ø000[0], str(60301), 15)
+}
+// The sqlite3_strglob() interface. Return 0 on a match (like strcmp()) and
+// non-zero if there is no match.
+func Xsqlite3_strglob(tls *crt.TLS, _zGlobPattern *int8, _zString *int8) (r0 int32) {
+ return _patternCompare(tls, (*uint8)(unsafe.Pointer(_zGlobPattern)), (*uint8)(unsafe.Pointer(_zString)), &_globInfo, uint32(i32(91)))
+}
+
+// Compare two UTF-8 strings for equality where the first string is
+// a GLOB or LIKE expression. Return values:
+//
+// SQLITE_MATCH: Match
+// SQLITE_NOMATCH: No match
+// SQLITE_NOWILDCARDMATCH: No match in spite of having * or % wildcards.
+//
+// Globbing rules:
+//
+// '*' Matches any sequence of zero or more characters.
+//
+// '?' Matches exactly one character.
+//
+// [...] Matches one character from the enclosed list of
+// characters.
+//
+// [^...] Matches one character not in the enclosed list.
+//
+// With the [...] and [^...] matching, a ']' character can be included
+// in the list by making it the first character after '[' or '^'. A
+// range of characters can be specified using '-'. Example:
+// "[a-z]" matches any single lower-case letter. To match a '-', make
+// it the last character in the list.
+//
+// Like matching rules:
+//
+// '%' Matches any sequence of zero or more characters
+//
+// *** '_' Matches any one character
+//
+// Ec Where E is the "esc" character and c is any other
+// character, including '%', '_', and esc, match exactly c.
+//
+// The comments within this routine usually assume glob matching.
+//
+// This routine is usually quick, but can be N**2 in the worst case.
+func _patternCompare(tls *crt.TLS, _zPattern *uint8, _zString *uint8, _pInfo *TcompareInfo, _matchOther uint32) (r0 int32) {
+ var _9_bMatch, _13_bMatch, _17_bMatch, _21_seen, _21_invert int32
+ var _c, _c2, _matchOne, _matchAll, _13_cx, _21_prior_c uint32
+ var _noCase uint8
+ var _zEscaped *uint8
+ _matchOne = uint32(_pInfo.X1)
+ _matchAll = uint32(_pInfo.X0)
+ _noCase = _pInfo.X3
+ _zEscaped = nil
+_0:
+ if store5(&_c, func() uint32 {
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) < i32(128) {
+ return uint32(*postInc13(&_zPattern, 1))
+ }
+ return _sqlite3Utf8Read(tls, &_zPattern)
+ }()) == uint32(i32(0)) {
+ goto _1
+ }
+ if _c != _matchAll {
+ goto _4
+ }
+_5:
+ if store5(&_c, func() uint32 {
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) < i32(128) {
+ return uint32(*postInc13(&_zPattern, 1))
+ }
+ return _sqlite3Utf8Read(tls, &_zPattern)
+ }()) != _matchAll && _c != _matchOne {
+ goto _6
+ }
+ if (_c == _matchOne) && (_sqlite3Utf8Read(tls, &_zString) == uint32(i32(0))) {
+ return i32(2)
+ }
+ goto _5
+_6:
+ if _c == uint32(i32(0)) {
+ return i32(0)
+ }
+ if _c != _matchOther {
+ goto _14
+ }
+ if int32(_pInfo.X2) != i32(0) {
+ goto _15
+ }
+ _c = _sqlite3Utf8Read(tls, &_zPattern)
+ if _c == uint32(i32(0)) {
+ return i32(2)
+ }
+ goto _17
+_15:
func() {
- if (_p.X10) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76709), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62416)))
+ if _matchOther >= uint32(i32(128)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(106217), unsafe.Pointer((*int8)(unsafe.Pointer(&_patternCompareØ00__func__Ø000))), unsafe.Pointer(str(60316)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _doWalCallbacks(tls, _db)
- if (_p.X10) == i32(0) {
- goto _29
+_20:
+ if (*_zString) == 0 {
+ goto _21
+ }
+ _9_bMatch = _patternCompare(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern))+1*uintptr(i32(-1)))), _zString, _pInfo, _matchOther)
+ if _9_bMatch != i32(1) {
+ return _9_bMatch
+ }
+ if int32(*postInc13(&_zString, 1)) < i32(192) {
+ goto _23
+ }
+_24:
+ if (int32(*_zString) & i32(192)) == i32(128) {
+ *(*uintptr)(unsafe.Pointer(&_zString)) += uintptr(1)
+ goto _24
}
+_23:
+ goto _20
+_21:
+ return i32(2)
- _rc = i32(1)
+_17:
+_14:
+ if _c > uint32(i32(128)) {
+ goto _26
+ }
+ if _noCase != 0 {
+ _13_cx = _c & uint32(^(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_c))))) & i32(32)))
+ _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_c)))))
+ goto _28
+ }
+ _13_cx = _c
+_28:
_29:
-_26:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(48 /* X10 */))) = _rc
- if i32(7) != _sqlite3ApiExit(tls, (*Xsqlite3)(_p.X0), _p.X10) {
+ if store5(&_c2, uint32(*postInc13(&_zString, 1))) == uint32(i32(0)) {
goto _30
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3NomemError(tls, i32(76718))
+ if (_c2 != _c) && (_c2 != _13_cx) {
+ goto _29
+ }
+ _13_bMatch = _patternCompare(tls, _zPattern, _zString, _pInfo, _matchOther)
+ if _13_bMatch != i32(1) {
+ return _13_bMatch
+ }
+ goto _29
_30:
-_end_of_step:
- func() {
- if _rc != i32(100) && _rc != i32(101) && _rc != i32(1) && (_rc&i32(255)) != i32(5) && _rc != i32(21) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76728), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62436)))
- crt.X__builtin_abort(tls)
+ goto _34
+_26:
+_35:
+ if store5(&_c2, func() uint32 {
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zString)) + 1*uintptr(i32(0))))) < i32(128) {
+ return uint32(*postInc13(&_zString, 1))
}
- }()
- func() {
- if ((_p.X10) == i32(100) || (_p.X10) == i32(101)) && (_p.X10) != (_p.X28) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76731), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62540)))
- crt.X__builtin_abort(tls)
+ return _sqlite3Utf8Read(tls, &_zString)
+ }()) == uint32(i32(0)) {
+ goto _36
+ }
+ if _c2 != _c {
+ goto _35
+ }
+ _17_bMatch = _patternCompare(tls, _zPattern, _zString, _pInfo, _matchOther)
+ if _17_bMatch != i32(1) {
+ return _17_bMatch
+ }
+ goto _35
+_36:
+_34:
+ return i32(2)
+
+_4:
+ if _c != _matchOther {
+ goto _41
+ }
+ if int32(_pInfo.X2) != i32(0) {
+ goto _42
+ }
+ _c = _sqlite3Utf8Read(tls, &_zPattern)
+ if _c == uint32(i32(0)) {
+ return i32(1)
+ }
+ _zEscaped = _zPattern
+ goto _44
+_42:
+ _21_prior_c = uint32(i32(0))
+ _21_seen = i32(0)
+ _21_invert = i32(0)
+ _c = _sqlite3Utf8Read(tls, &_zString)
+ if _c == uint32(i32(0)) {
+ return i32(1)
+ }
+ _c2 = _sqlite3Utf8Read(tls, &_zPattern)
+ if _c2 == uint32(i32(94)) {
+ _21_invert = i32(1)
+ _c2 = _sqlite3Utf8Read(tls, &_zPattern)
+ }
+ if _c2 != uint32(i32(93)) {
+ goto _47
+ }
+ if _c == uint32(i32(93)) {
+ _21_seen = i32(1)
+ }
+ _c2 = _sqlite3Utf8Read(tls, &_zPattern)
+_47:
+_49:
+ if _c2 == 0 || _c2 == uint32(i32(93)) {
+ goto _50
+ }
+ if _c2 != uint32(i32(45)) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) == i32(93) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) == i32(0) || _21_prior_c <= uint32(i32(0)) {
+ goto _55
+ }
+ _c2 = _sqlite3Utf8Read(tls, &_zPattern)
+ if (_c >= _21_prior_c) && (_c <= _c2) {
+ _21_seen = i32(1)
+ }
+ _21_prior_c = uint32(i32(0))
+ goto _58
+_55:
+ if _c == _c2 {
+ _21_seen = i32(1)
+ }
+ _21_prior_c = _c2
+_58:
+ _c2 = _sqlite3Utf8Read(tls, &_zPattern)
+ goto _49
+_50:
+ if (_c2 == uint32(i32(0))) || ((_21_seen ^ _21_invert) == i32(0)) {
+ return i32(1)
+ }
+ goto _0
+_44:
+_41:
+ _c2 = func() uint32 {
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zString)) + 1*uintptr(i32(0))))) < i32(128) {
+ return uint32(*postInc13(&_zString, 1))
}
+ return _sqlite3Utf8Read(tls, &_zString)
}()
- if ((uint32((_p.X32)>>uint(i32(9)))<>uint(i32(31))) == 0 || _rc == i32(100) || _rc == i32(101) {
- goto _43
+ if _c == _c2 {
+ goto _0
+ }
+ if (((_noCase != 0) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_c))))) == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_c2))))))) && (_c < uint32(i32(128)))) && (_c2 < uint32(i32(128))) {
+ goto _0
+ }
+ if ((_c == _matchOne) && (_zPattern != _zEscaped)) && (_c2 != uint32(i32(0))) {
+ goto _0
}
+ return i32(1)
- _rc = _sqlite3VdbeTransferError(tls, _p)
-_43:
- return _rc & (_db.X11)
+_1:
+ return func() int32 {
+ if int32(*_zString) == i32(0) {
+ return i32(0)
+ }
+ return i32(1)
+ }()
+}
+
+func _sqlite3Utf8Read(tls *crt.TLS, _pz **uint8) (r0 uint32) {
+ var _c uint32
+ _c = uint32(*postInc13(_pz, 1))
+ if _c < uint32(i32(192)) {
+ goto _0
+ }
+ _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Utf8Trans1)) + 1*uintptr(_c-uint32(i32(192))))))
+_1:
+ if (int32(*(*_pz)) & i32(192)) == i32(128) {
+ _c = (_c << uint(i32(6))) + uint32(i32(63)&int32(*postInc13(_pz, 1)))
+ goto _1
+ }
+ if ((_c < uint32(i32(128))) || ((_c & u32(4294965248)) == uint32(i32(55296)))) || ((_c & u32(4294967294)) == uint32(i32(65534))) {
+ _c = uint32(i32(65533))
+ }
+_0:
+ return _c
}
-var _sqlite3StepØ00__func__Ø000 [12]int8 // -
+var _patternCompareØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3StepØ00__func__Ø000[0], str(62604), 12)
+ crt.Xstrncpy(nil, &_patternCompareØ00__func__Ø000[0], str(60332), 15)
}
-func Xsqlite3_reset(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:76220:12
- var _rc int32 // sqlite3.c:76221:7
- _ = _rc
- var _2_v *TVdbe // sqlite3.c:76225:10
- _ = _2_v
- var _2_db *Xsqlite3 // sqlite3.c:76226:13
- _ = _2_db
- if _pStmt != nil {
- goto _0
- }
-
- _rc = i32(0)
- goto _1
+var _globInfo TcompareInfo
-_0:
- _2_v = (*TVdbe)(_pStmt)
- _2_db = (*Xsqlite3)(_2_v.X0)
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_2_db.X3))
- if (_2_v.X26) <= int64(i32(0)) {
- goto _2
- }
+func init() {
+ _globInfo = TcompareInfo{X0: u8(42), X1: u8(63), X2: u8(91), X3: u8(0)}
+}
- _invokeProfileCallback(tls, _2_db, _2_v)
-_2:
- _rc = _sqlite3VdbeReset(tls, _2_v)
- _sqlite3VdbeRewind(tls, _2_v)
- func() {
- if (_rc & (_2_db.X11)) != _rc {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_resetØ00__func__Ø000))), unsafe.Pointer(str(62616)))
- crt.X__builtin_abort(tls)
+// Fill the Index.aiRowEst[] array with default information - information
+// to be used when we have not run the ANALYZE command.
+//
+// aiRowEst[0] is supposed to contain the number of elements in the index.
+// Since we do not know, guess 1 million. aiRowEst[1] is an estimate of the
+// number of rows in the table that match any particular value of the
+// first column of the index. aiRowEst[2] is an estimate of the number
+// of rows that match any particular combination of the first 2 columns
+// of the index. And so forth. It must always be the case that
+// *
+// aiRowEst[N]<=aiRowEst[N-1]
+// aiRowEst[N]>=1
+//
+// Apart from that, we have little to go on besides intuition as to
+// how aiRowEst[] should be initialized. The numbers generated here
+// are based on typical values found in actual indices.
+func _sqlite3DefaultRowEst(tls *crt.TLS, _pIdx *XIndex) {
+ var _nCopy, _i int32
+ var _a *int16
+ var _aVal [5]int16
+ _aVal = [5]int16{i16(33), i16(32), i16(30), i16(28), i16(26)}
+ _a = _pIdx.X2
+ _nCopy = func() int32 {
+ if i32(5) < int32(_pIdx.X13) {
+ return i32(5)
}
+ return int32(_pIdx.X13)
}()
- _rc = _sqlite3ApiExit(tls, _2_db, _rc)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_2_db.X3))
-_1:
- return _rc
-}
-
-func _sqlite3VdbeRewind(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:73295:1
- var _i int32 // sqlite3.c:73297:7
- _ = _i
func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73299), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ if ((uint32((_pIdx.X16)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103155), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(60347)))
crt.X__builtin_abort(tls)
}
}()
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0)))) = (*XTable)(_pIdx.X3).X12
+ if (*XExpr)(_pIdx.X9) != nil {
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0))))
+ *p = int16(int32(*p) - i32(10))
+ sink18 = *p
+ }
+ }
func() {
- if (_p.X5) != uint32(i32(381479589)) && (_p.X5) != uint32(i32(1224384374)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73300), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(62644)))
+ if i32(10) != int32(_sqlite3LogEst(tls, uint64(i32(2)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103161), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(60363)))
crt.X__builtin_abort(tls)
}
}()
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0))))) < i32(33) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0)))) = int16(i32(33))
+ }
func() {
- if (_p.X27) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73304), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(42744)))
+ if i32(33) != int32(_sqlite3LogEst(tls, uint64(i32(10)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103162), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(60384)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = uint32(i32(770837923))
- _i = i32(0)
-_7:
- if _i >= (_p.X6) {
- goto _10
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a))+2*uintptr(i32(1))))), (unsafe.Pointer)(&_aVal), uint32(_nCopy)*u32(2))
+ _i = _nCopy + i32(1)
+_10:
+ if _i > int32(_pIdx.X13) {
+ goto _13
}
-
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(_i))) = int16(i32(23))
func() {
- if (*Xsqlite3)((*XMem)(unsafe.Pointer(uintptr(_p.X18)+48*uintptr(_i))).X9) != (*Xsqlite3)(_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73311), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(62700)))
+ if i32(23) != int32(_sqlite3LogEst(tls, uint64(i32(5)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103168), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(60406)))
crt.X__builtin_abort(tls)
}
}()
_i += 1
- goto _7
-
-_10:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = i32(-1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(i32(2))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X8 */))) = uint32(i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(139 /* X31 */))) = uint8(i32(255))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = i32(0)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X14 */))) = int64(i32(0))
+ goto _10
+_13:
+ func() {
+ if i32(0) != int32(_sqlite3LogEst(tls, uint64(i32(1)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103171), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(46381)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_pIdx.X15) != i32(0) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(_pIdx.X13))) = int16(i32(0))
+ }
+ _ = _aVal
}
-var _sqlite3VdbeRewindØ00__func__Ø000 [18]int8 // -
+var _sqlite3DefaultRowEstØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeRewindØ00__func__Ø000[0], str(62724), 18)
+ crt.Xstrncpy(nil, &_sqlite3DefaultRowEstØ00__func__Ø000[0], str(60427), 21)
}
-var _sqlite3_resetØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3_resetØ00__func__Ø000[0], str(62744), 14)
+// Parameter zName points to a nul-terminated buffer containing the name
+// of a database ("main", "temp" or the name of an attached db). This
+// function returns the index of the named database in db->aDb[], or
+// -1 if the named db cannot be found.
+func _sqlite3FindDbName(tls *crt.TLS, _db *Xsqlite3, _zName *int8) (r0 int32) {
+ var _i int32
+ var _1_pDb *XDb
+ _i = i32(-1)
+ if _zName == nil {
+ goto _0
+ }
+ *func() **XDb { _i = (_db.X5) - i32(1); return &_1_pDb }() = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
+_1:
+ if _i < i32(0) {
+ goto _4
+ }
+ if i32(0) == Xsqlite3_stricmp(tls, _1_pDb.X0, _zName) {
+ goto _4
+ }
+ if (_i == i32(0)) && (i32(0) == Xsqlite3_stricmp(tls, str(60448), _zName)) {
+ goto _4
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XDb { _i -= 1; return &_1_pDb }())) += uintptr(4294967280)
+ goto _1
+_4:
+_0:
+ return _i
}
-func _sqlite3VdbeList(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:73023:1
- var _nRow int32 // sqlite3.c:73026:7
- _ = _nRow
- var _nSub int32 // sqlite3.c:73027:7
- _ = _nSub
- var _apSub **XSubProgram // sqlite3.c:73028:14
- _ = _apSub
- var _pSub *XMem // sqlite3.c:73029:7
- _ = _pSub
- var _db *Xsqlite3 // sqlite3.c:73030:11
- _ = _db
- var _i int32 // sqlite3.c:73031:7
- _ = _i
- var _rc int32 // sqlite3.c:73032:7
- _ = _rc
- var _pMem *XMem // sqlite3.c:73033:7
- _ = _pMem
- var _8_zP4 *int8 // sqlite3.c:73090:10
- _ = _8_zP4
- var _8_pOp *XVdbeOp // sqlite3.c:73091:8
- _ = _8_pOp
- var _10_j int32 // sqlite3.c:73099:11
- _ = _10_j
- var _13_nByte int32 // sqlite3.c:73124:13
- _ = _13_nByte
- var _13_j int32 // sqlite3.c:73125:13
- _ = _13_j
- _nSub = i32(0)
- _apSub = nil
- _pSub = nil
- _db = (*Xsqlite3)(_p.X0)
- _rc = i32(0)
- _pMem = (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr(i32(1))))
- func() {
- if ((uint32((_p.X32)>>uint(i32(2))) << uint(i32(30))) >> uint(i32(30))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73035), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62760)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_p.X5) != uint32(i32(770837923)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73036), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62772)))
- crt.X__builtin_abort(tls)
- }
- }()
+// Check to see if zTabName is really the name of a pragma. If it is,
+// then register an eponymous virtual table for that pragma and return
+// a pointer to the Module object for the new virtual table.
+func _sqlite3PragmaVtabRegister(tls *crt.TLS, _db *Xsqlite3, _zName *int8) (r0 *XModule) {
+ var _pName *XPragmaName
func() {
- if (_p.X10) != i32(0) && (_p.X10) != i32(5) && (_p.X10) != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62800)))
+ if Xsqlite3_strnicmp(tls, _zName, str(49814), i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaVtabRegisterØ00__func__Ø000))), unsafe.Pointer(str(60453)))
crt.X__builtin_abort(tls)
}
}()
- _releaseMemArray(tls, _pMem, i32(8))
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(100 /* X21 */))))) = nil
- if (_p.X10) != _sqlite3NomemError(tls, i32(73046)) {
- goto _8
+ _pName = _pragmaLocate(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zName))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(7)))))))))
+ if _pName == nil {
+ return nil
}
-
- _sqlite3OomFault(tls, _db)
- return i32(1)
-
-_8:
- _nRow = _p.X27
- if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(1) {
- goto _9
+ if (int32(_pName.X2) & i32(48)) == i32(0) {
+ return nil
}
-
func() {
- if (_p.X6) <= i32(9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73066), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62864)))
+ if _sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zName) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115657), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaVtabRegisterØ00__func__Ø000))), unsafe.Pointer(str(60494)))
crt.X__builtin_abort(tls)
}
}()
- _pSub = (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr(i32(9))))
- if (int32(_pSub.X1) & i32(16)) == 0 {
- goto _12
- }
+ return _sqlite3VtabCreateModule(tls, _db, _zName, &_pragmaVtabModule, (unsafe.Pointer)(_pName), nil)
+}
- _nSub = int32(uint32(_pSub.X4) / u32(4))
- _apSub = (**XSubProgram)(unsafe.Pointer(_pSub.X5))
-_12:
- _i = i32(0)
-_13:
- if _i >= _nSub {
- goto _16
- }
+var _sqlite3PragmaVtabRegisterØ00__func__Ø000 [26]int8
- {
- p := &_nRow
- *p = (*p) + ((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_i)))).X1)
- sink1 = *p
- }
- _i += 1
- goto _13
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PragmaVtabRegisterØ00__func__Ø000[0], str(60534), 26)
+}
-_16:
-_9:
-_17:
- _i = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(36 /* X9 */))), int32(1))
- if ((_i < _nRow) && (int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) == i32(2))) && (int32((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_i))).X0) != i32(165)) {
- goto _17
+// Locate a pragma in the aPragmaName[] array.
+func _pragmaLocate(tls *crt.TLS, _zName *int8) (r0 *XPragmaName) {
+ var _upr, _lwr, _mid, _rc int32
+ _mid = i32(0)
+ _lwr = i32(0)
+ _upr = i32(66)
+_0:
+ if _lwr > _upr {
+ goto _1
}
-
- if _i < _nRow {
- goto _20
+ _mid = (_lwr + _upr) / i32(2)
+ _rc = Xsqlite3_stricmp(tls, _zName, (*XPragmaName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPragmaName))+12*uintptr(_mid))).X0)
+ if _rc == i32(0) {
+ goto _1
+ }
+ if _rc < i32(0) {
+ _upr = _mid - i32(1)
+ goto _4
}
+ _lwr = _mid + i32(1)
+_4:
+ goto _0
+_1:
+ return func() *XPragmaName {
+ if _lwr > _upr {
+ return nil
+ }
+ return (*XPragmaName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPragmaName)) + 12*uintptr(_mid)))
+ }()
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
- _rc = i32(101)
- goto _21
+var _aPragmaName [67]XPragmaName
-_20:
- if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) == 0 {
- goto _22
- }
+func init() {
+ _aPragmaName = [67]XPragmaName{XPragmaName{X0: str(60560), X1: u8(0), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(8)}, XPragmaName{X0: str(60575), X1: u8(1), X2: u8(149), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60587), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1048576)}, XPragmaName{X0: str(60603), X1: u8(3), X2: u8(16), X3: u8(46), X4: u8(1), X5: u32(0)}, XPragmaName{X0: str(60616), X1: u8(4), X2: u8(149), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60627), X1: u8(5), X2: u8(148), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60639), X1: u8(6), X2: u8(2), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60659), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(536870912)}, XPragmaName{X0: str(60675), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(16)}, XPragmaName{X0: str(60696), X1: u8(7), X2: u8(16), X3: u8(29), X4: u8(2), X5: u32(0)}, XPragmaName{X0: str(60711), X1: u8(8), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60727), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(128)}, XPragmaName{X0: str(60741), X1: u8(0), X2: u8(24), X3: u8(0), X4: u8(0), X5: u32(15)}, XPragmaName{X0: str(60754), X1: u8(10), X2: u8(17), X3: u8(26), X4: u8(3), X5: u32(0)}, XPragmaName{X0: str(60768), X1: u8(11), X2: u8(149), X3: u8(0), X4: u8(1), X5: u32(0)}, XPragmaName{X0: str(60787), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(33554432)}, XPragmaName{X0: str(60806), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(256)}, XPragmaName{X0: str(60829), X1: u8(12), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60838), X1: u8(13), X2: u8(1), X3: u8(39), X4: u8(4), X5: u32(0)}, XPragmaName{X0: str(60856), X1: u8(14), X2: u8(97), X3: u8(31), X4: u8(8), X5: u32(0)}, XPragmaName{X0: str(60873), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(524288)}, XPragmaName{X0: str(60886), X1: u8(0), X2: u8(24), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60901), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(4)}, XPragmaName{X0: str(60919), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(8)}, XPragmaName{X0: str(60929), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(8192)}, XPragmaName{X0: str(60954), X1: u8(15), X2: u8(3), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(60973), X1: u8(16), X2: u8(97), X3: u8(12), X4: u8(3), X5: u32(0)}, XPragmaName{X0: str(60984), X1: u8(17), X2: u8(97), X3: u8(21), X4: u8(5), X5: u32(0)}, XPragmaName{X0: str(60995), X1: u8(16), X2: u8(97), X3: u8(15), X4: u8(6), X5: u32(1)}, XPragmaName{X0: str(61007), X1: u8(18), X2: u8(1), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61023), X1: u8(19), X2: u8(145), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61036), X1: u8(20), X2: u8(144), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61055), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(32768)}, XPragmaName{X0: str(61074), X1: u8(41), X2: u8(16), X3: u8(47), X4: u8(2), X5: u32(0)}, XPragmaName{X0: str(61086), X1: u8(22), X2: u8(144), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61099), X1: u8(23), X2: u8(145), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61114), X1: u8(24), X2: u8(0), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61124), X1: u8(25), X2: u8(33), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61133), X1: u8(23), X2: u8(145), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61144), X1: u8(26), X2: u8(148), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61154), X1: u8(42), X2: u8(0), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61167), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(67108864)}, XPragmaName{X0: str(61178), X1: u8(18), X2: u8(1), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61190), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(16384)}, XPragmaName{X0: str(61207), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(262144)}, XPragmaName{X0: str(61226), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(131072)}, XPragmaName{X0: str(61252), X1: u8(0), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1)}, XPragmaName{X0: str(61267), X1: u8(27), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61281), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(64)}, XPragmaName{X0: str(61300), X1: u8(28), X2: u8(2), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61314), X1: u8(29), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61330), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(512)}, XPragmaName{X0: str(61340), X1: u8(43), X2: u8(145), X3: u8(7), X4: u8(5), X5: u32(0)}, XPragmaName{X0: str(61346), X1: u8(30), X2: u8(149), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61358), X1: u8(31), X2: u8(97), X3: u8(1), X4: u8(6), X5: u32(0)}, XPragmaName{X0: str(61369), X1: u8(32), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61380), X1: u8(33), X2: u8(4), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61401), X1: u8(34), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61409), X1: u8(0), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(6)}, XPragmaName{X0: str(61422), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(4096)}, XPragmaName{X0: str(61438), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1537)}, XPragmaName{X0: str(61449), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(134217728)}, XPragmaName{X0: str(61458), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1024)}, XPragmaName{X0: str(61471), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1)}, XPragmaName{X0: str(61482), X1: u8(35), X2: u8(0), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(61501), X1: u8(36), X2: u8(1), X3: u8(43), X4: u8(3), X5: u32(0)}, XPragmaName{X0: str(61516), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(67584)}}
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(9)
- _rc = i32(1)
- _sqlite3VdbeError(tls, _p, _sqlite3ErrStr(tls, _p.X10))
- goto _23
+var _pragmaVtabModule Xsqlite3_module
-_22:
- if _i >= (_p.X27) {
- goto _24
- }
+func init() {
+ _pragmaVtabModule = Xsqlite3_module{X0: i32(0), X1: nil, X2: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
+ }{_pragmaVtabConnect})), X3: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab, *Xsqlite3_index_info) int32
+ }{_pragmaVtabBestIndex})), X4: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab) int32
+ }{_pragmaVtabDisconnect})), X5: nil, X6: *(*func(*crt.TLS, unsafe.Pointer, *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab, **Xsqlite3_file) int32
+ }{_pragmaVtabOpen})), X7: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_file) int32
+ }{_pragmaVtabClose})), X8: *(*func(*crt.TLS, unsafe.Pointer, int32, *int8, int32, *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_file, int32, *int8, int32, **XMem) int32
+ }{_pragmaVtabFilter})), X9: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_file) int32
+ }{_pragmaVtabNext})), X10: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_file) int32
+ }{_pragmaVtabEof})), X11: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_file, *Xsqlite3_context, int32) int32
+ }{_pragmaVtabColumn})), X12: *(*func(*crt.TLS, unsafe.Pointer, *int64) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_file, *int64) int32
+ }{_pragmaVtabRowid})), X13: nil, X14: nil, X15: nil, X16: nil, X17: nil, X18: nil, X19: nil, X20: nil, X21: nil, X22: nil}
+}
- _8_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_i)))
- goto _25
+// Pragma virtual table module xConnect method.
+func _pragmaVtabConnect(tls *crt.TLS, _db *Xsqlite3, _pAux unsafe.Pointer, _argc int32, _argv **int8, _ppVtab **Xsqlite3_vtab, _pzErr **int8) (r0 int32) {
+ var _rc, _i, _j int32
+ var _cSep int8
+ var _acc XStrAccum
+ var _zBuf [200]int8
+ var _pPragma *XPragmaName
+ var _pTab *XPragmaVtab
+ _pPragma = (*XPragmaName)(_pAux)
+ _pTab = nil
+ _cSep = i8(40)
-_24:
- {
- p := &_i
- *p = (*p) - (_p.X27)
- sink1 = *p
+ _sqlite3StrAccumInit(tls, &_acc, nil, (*int8)(unsafe.Pointer(&_zBuf)), int32(u32(200)), i32(0))
+ _sqlite3StrAccumAppendAll(tls, &_acc, str(61532))
+ *func() *int32 { _i = i32(0); return &_j }() = int32(_pPragma.X3)
+_0:
+ if _i >= int32(_pPragma.X4) {
+ goto _3
}
- _10_j = i32(0)
-_26:
- if _i < ((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_10_j)))).X1) {
- goto _29
+ _sqlite3XPrintf(tls, &_acc, str(61547), int32(_cSep), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pragCName)) + 4*uintptr(_j)))))
+ _cSep = int8(i32(44))
+ *func() *int32 { _i += 1; return &_j }() += 1
+ goto _0
+_3:
+ if _i == i32(0) {
+ _sqlite3XPrintf(tls, &_acc, str(61554), unsafe.Pointer(_pPragma.X0))
+ _cSep = int8(i32(44))
+ _i += 1
}
-
- {
- p := &_i
- *p = (*p) - ((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_10_j)))).X1)
- sink1 = *p
+ _j = i32(0)
+ if (int32(_pPragma.X2) & i32(32)) != 0 {
+ _sqlite3StrAccumAppendAll(tls, &_acc, str(61560))
+ _j += 1
}
- _10_j += 1
- goto _26
-
-_29:
- _8_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_10_j)))).X0) + 24*uintptr(_i)))
-_25:
- if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(1) {
- goto _30
+ if (int32(_pPragma.X2) & i32(192)) != 0 {
+ _sqlite3StrAccumAppendAll(tls, &_acc, str(61572))
+ _j += 1
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_i)
- *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(2562))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _sqlite3OpcodeName(tls, int32(_8_pOp.X0))
+ _sqlite3StrAccumAppend(tls, &_acc, str(37898), i32(1))
+ _sqlite3StrAccumFinish(tls, &_acc)
func() {
- if (_pMem.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73113), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62876)))
+ if crt.Xstrlen(tls, (*int8)(unsafe.Pointer(&_zBuf))) >= u32(199) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115419), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabConnectØ00__func__Ø000))), unsafe.Pointer(str(61587)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _sqlite3Strlen30(tls, _pMem.X5)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
- *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- if int32(_8_pOp.X1) != i32(-13) {
- goto _33
+ _rc = Xsqlite3_declare_vtab(tls, _db, (*int8)(unsafe.Pointer(&_zBuf)))
+ if _rc != i32(0) {
+ goto _9
}
-
- _13_nByte = int32(uint32(_nSub+i32(1)) * u32(4))
- _13_j = i32(0)
-_34:
- if _13_j >= _nSub {
- goto _37
+ _pTab = (*XPragmaVtab)(Xsqlite3_malloc(tls, int32(u32(24))))
+ if _pTab == nil {
+ _rc = i32(7)
+ goto _11
}
+ crt.Xmemset(tls, (unsafe.Pointer)(_pTab), i32(0), u32(24))
+ *(**XPragmaName)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(16 /* X2 */))))) = _pPragma
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(12 /* X1 */))))) = _db
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(21 /* X4 */))) = uint8(_i)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(20 /* X3 */))) = uint8(_j)
+_11:
+ goto _12
+_9:
+ *_pzErr = Xsqlite3_mprintf(tls, str(24576), unsafe.Pointer(Xsqlite3_errmsg(tls, _db)))
+_12:
+ *_ppVtab = (*Xsqlite3_vtab)(unsafe.Pointer(_pTab))
+ return _rc
- if (*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_13_j)))) != (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pOp)) + uintptr(16 /* X6 */)))))) {
- goto _38
- }
+ _ = _acc
+ _ = _zBuf
+ panic(0)
+}
- goto _37
+// Append the complete text of zero-terminated string z[] to the p string.
+func _sqlite3StrAccumAppendAll(tls *crt.TLS, _p *XStrAccum, _z *int8) {
+ _sqlite3StrAccumAppend(tls, _p, _z, _sqlite3Strlen30(tls, _z))
+}
-_38:
- _13_j += 1
- goto _34
+var _pragCName [49]*int8
-_37:
- if _13_j != _nSub || i32(0) != _sqlite3VdbeMemGrow(tls, _pSub, _13_nByte, bool2int(_nSub != i32(0))) {
- goto _40
- }
+func init() {
+ _pragCName = [49]*int8{str(60616), str(61617), str(61621), str(61626), str(61631), str(61639), str(61650), str(61653), str(61657), str(61661), str(61666), str(61671), str(61676), str(61617), str(61621), str(61676), str(61617), str(61621), str(61682), str(61687), str(61692), str(61696), str(61621), str(61700), str(61707), str(61714), str(61696), str(61621), str(61722), str(61696), str(61621), str(61727), str(61696), str(61730), str(26370), str(61736), str(61739), str(61749), str(61759), str(61730), str(27227), str(61765), str(61772), str(61777), str(61782), str(61786), str(61799), str(61807), str(61816)}
+}
- _apSub = (**XSubProgram)(unsafe.Pointer(_pSub.X5))
- *(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(postInc1(&_nSub, int32(1))))) = (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pOp)) + uintptr(16 /* X6 */))))))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(16))
- sink12 = *p
+var _pragmaVtabConnectØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pragmaVtabConnectØ00__func__Ø000[0], str(61823), 18)
+}
+
+// Figure out the best index to use to search a pragma virtual table.
+//
+// There are not really any index choices. But we want to encourage the
+// query planner to give == constraints on as many hidden parameters as
+// possible, and especially on the first hidden parameter. So return a
+// high cost if hidden parameters are unconstrained.
+func _pragmaVtabBestIndex(tls *crt.TLS, _tab *Xsqlite3_vtab, _pIdxInfo *Xsqlite3_index_info) (r0 int32) {
+ var _i, _j int32
+ var _seen [2]int32
+ var _pTab *XPragmaVtab
+ var _pConstraint *Tsqlite3_index_constraint
+ _pTab = (*XPragmaVtab)(unsafe.Pointer(_tab))
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = float64(1)
+ if int32(_pTab.X3) == i32(0) {
+ return i32(0)
}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(12 /* X4 */))) = int32(uint32(_nSub) * u32(4))
-_40:
-_33:
-_30:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_8_pOp.X3)
- *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_8_pOp.X4)
- *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_8_pOp.X5)
- *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- if _sqlite3VdbeMemClearAndResize(tls, _pMem, i32(100)) == 0 {
- goto _41
+ _pConstraint = (*Tsqlite3_index_constraint)(_pIdxInfo.X1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(0)))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(1)))) = i32(0)
+ _i = i32(0)
+_1:
+ if _i >= (_pIdxInfo.X0) {
+ goto _4
}
-
+ if int32(_pConstraint.X2) == i32(0) {
+ goto _2
+ }
+ if int32(_pConstraint.X1) != i32(2) {
+ goto _2
+ }
+ if (_pConstraint.X0) < int32(_pTab.X4) {
+ goto _2
+ }
+ _j = (_pConstraint.X0) - int32(_pTab.X4)
func() {
- if ((*Xsqlite3)(_p.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73151), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62888)))
+ if _j >= i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115472), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabBestIndexØ00__func__Ø000))), unsafe.Pointer(str(61841)))
crt.X__builtin_abort(tls)
}
}()
- return i32(1)
-
-_41:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(514))
- _8_zP4 = _displayP4(tls, _8_pOp, _pMem.X5, _pMem.X7)
- if _8_zP4 == (_pMem.X5) {
- goto _44
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(_j))) = _i + i32(1)
+_2:
+ *(*uintptr)(unsafe.Pointer(func() **Tsqlite3_index_constraint { _i += 1; return &_pConstraint }())) += uintptr(12)
+ goto _1
+_4:
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(0))))) == i32(0) {
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = 2.147483647e+09
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(44 /* X10 */))) = int64(i32(2147483647))
+ return i32(0)
+ }
+ _j = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(0))))) - i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(0 /* X0 */))) = i32(1)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(1))
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(1))))) == i32(0) {
+ return i32(0)
}
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = float64(20)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(44 /* X10 */))) = int64(i32(20))
+ _j = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(1))))) - i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(0 /* X0 */))) = i32(2)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(1))
+ return i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = i32(0)
- _sqlite3VdbeMemSetStr(tls, _pMem, _8_zP4, i32(-1), uint8(i32(1)), nil)
- goto _45
+ _ = _seen
+ panic(0)
+}
-_44:
- func() {
- if (_pMem.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62876)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _sqlite3Strlen30(tls, _pMem.X5)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
-_45:
- *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(1) {
- goto _48
+var _pragmaVtabBestIndexØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_pragmaVtabBestIndexØ00__func__Ø000[0], str(61847), 20)
+}
+
+// Pragma virtual table module xDisconnect method.
+func _pragmaVtabDisconnect(tls *crt.TLS, _pVtab *Xsqlite3_vtab) (r0 int32) {
+ var _pTab *XPragmaVtab
+ _pTab = (*XPragmaVtab)(unsafe.Pointer(_pVtab))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pTab))
+ return i32(0)
+}
+
+// Create a new cursor for the pragma virtual table
+func _pragmaVtabOpen(tls *crt.TLS, _pVtab *Xsqlite3_vtab, _ppCursor **Xsqlite3_file) (r0 int32) {
+ var _pCsr *XPragmaVtabCursor
+ _pCsr = (*XPragmaVtabCursor)(Xsqlite3_malloc(tls, int32(u32(24))))
+ if _pCsr == nil {
+ return i32(7)
}
+ crt.Xmemset(tls, (unsafe.Pointer)(_pCsr), i32(0), u32(24))
+ *(**Xsqlite3_vtab)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_file)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(0 /* X0 */))))) + uintptr(0 /* X0 */))))) = _pVtab
+ *_ppCursor = (*Xsqlite3_file)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(0 /* X0 */)))
+ return i32(0)
+}
- if _sqlite3VdbeMemClearAndResize(tls, _pMem, i32(4)) == 0 {
- goto _49
+// Close a pragma virtual table cursor
+func _pragmaVtabClose(tls *crt.TLS, _cur *Xsqlite3_file) (r0 int32) {
+ var _pCsr *XPragmaVtabCursor
+ _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_cur))
+ _pragmaVtabCursorClear(tls, _pCsr)
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pCsr))
+ return i32(0)
+}
+
+// Clear all content from pragma virtual table cursor.
+func _pragmaVtabCursorClear(tls *crt.TLS, _pCsr *XPragmaVtabCursor) {
+ var _i int32
+ Xsqlite3_finalize(tls, _pCsr.X1)
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(4 /* X1 */))) = nil
+ _i = i32(0)
+_0:
+ if _i >= i32(2) {
+ goto _3
}
+ Xsqlite3_free(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_i)))))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_i))) = nil
+ _i += 1
+ goto _0
+_3:
+}
- func() {
- if ((*Xsqlite3)(_p.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73168), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62888)))
- crt.X__builtin_abort(tls)
+// Pragma virtual table module xFilter method.
+func _pragmaVtabFilter(tls *crt.TLS, _pVtabCursor *Xsqlite3_file, _idxNum int32, _idxStr *int8, _argc int32, _argv **XMem) (r0 int32) {
+ var _rc, _i, _j int32
+ var _zSql *int8
+ var _acc XStrAccum
+ var _pTab *XPragmaVtab
+ var _pCsr *XPragmaVtabCursor
+ _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
+ _pTab = (*XPragmaVtab)(unsafe.Pointer((*Xsqlite3_vtab)(_pVtabCursor.X0)))
+
+ _pragmaVtabCursorClear(tls, _pCsr)
+ _j = func() int32 {
+ if (int32((*XPragmaName)(_pTab.X2).X2) & i32(32)) != i32(0) {
+ return i32(0)
}
+ return i32(1)
}()
- return i32(1)
-
-_49:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(514))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = i32(2)
- Xsqlite3_snprintf(tls, i32(3), _pMem.X5, str(62908), int32(_8_pOp.X2))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
- *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- if _sqlite3VdbeMemClearAndResize(tls, _pMem, i32(500)) == 0 {
- goto _52
+ _i = i32(0)
+_2:
+ if _i >= _argc {
+ goto _5
}
-
func() {
- if ((*Xsqlite3)(_p.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73179), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62888)))
+ if _j >= i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115558), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabFilterØ00__func__Ø000))), unsafe.Pointer(str(61867)))
crt.X__builtin_abort(tls)
}
}()
- return i32(1)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_j))) = Xsqlite3_mprintf(tls, str(24576), unsafe.Pointer(Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(_i))))))
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_j)))) == nil {
+ return i32(7)
+ }
+ *func() *int32 { _i += 1; return &_j }() += 1
+ goto _2
+_5:
+ _sqlite3StrAccumInit(tls, &_acc, nil, nil, i32(0), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pTab.X1)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(1)))))
+ _sqlite3StrAccumAppendAll(tls, &_acc, str(61892))
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(1))))) != nil {
+ _sqlite3XPrintf(tls, &_acc, str(61900), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(1))))))
+ }
+ _sqlite3StrAccumAppendAll(tls, &_acc, (*XPragmaName)(_pTab.X2).X0)
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(0))))) != nil {
+ _sqlite3XPrintf(tls, &_acc, str(61904), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(0))))))
+ }
+ _zSql = _sqlite3StrAccumFinish(tls, &_acc)
+ if _zSql == nil {
+ return i32(7)
+ }
+ _rc = Xsqlite3_prepare_v2(tls, (*Xsqlite3)(_pTab.X1), _zSql, i32(-1), (*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(4 /* X1 */))), nil)
+ Xsqlite3_free(tls, (unsafe.Pointer)(_zSql))
+ if _rc != i32(0) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_vtab)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab))+uintptr(0 /* X0 */))))) + uintptr(8 /* X2 */))) = Xsqlite3_mprintf(tls, str(24576), unsafe.Pointer(Xsqlite3_errmsg(tls, (*Xsqlite3)(_pTab.X1))))
+ return _rc
+ }
+ return _pragmaVtabNext(tls, _pVtabCursor)
-_52:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(514))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _displayComment(tls, _8_pOp, _8_zP4, _pMem.X5, i32(500))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
-_48:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(136 /* X29 */))) = uint16(i32(8) - (i32(4) * (int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) - i32(1))))
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(100 /* X21 */))))) = (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr(i32(1))))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
- _rc = i32(100)
-_23:
-_21:
- r0 = _rc
- return
+ _ = _acc
+ panic(0)
}
-var _sqlite3VdbeListØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeListØ00__func__Ø000[0], str(62916), 16)
-}
-
-func _sqlite3VdbeExec(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:78848:1
- var _aOp *XVdbeOp // sqlite3.c:78851:6
- _ = _aOp
- var _pOp *XVdbeOp // sqlite3.c:78852:6
- _ = _pOp
- var _pOrigOp *XVdbeOp // sqlite3.c:78854:6
- _ = _pOrigOp
- var _nExtraDelete int32 // sqlite3.c:78857:7
- _ = _nExtraDelete
- var _rc int32 // sqlite3.c:78859:7
- _ = _rc
- var _db *Xsqlite3 // sqlite3.c:78860:11
- _ = _db
- var _resetSchemaOnFault uint8 // sqlite3.c:78861:6
- _ = _resetSchemaOnFault
- var _encoding uint8 // sqlite3.c:78862:6
- _ = _encoding
- var _iCompare int32 // sqlite3.c:78863:7
- _ = _iCompare
- var _nVmStep uint32 // sqlite3.c:78864:12
- _ = _nVmStep
- var _nProgressLimit uint32 // sqlite3.c:78866:12
- _ = _nProgressLimit
- var _aMem *XMem // sqlite3.c:78868:7
- _ = _aMem
- var _pIn1 *XMem // sqlite3.c:78869:7
- _ = _pIn1
- var _pIn2 *XMem // sqlite3.c:78870:7
- _ = _pIn2
- var _pIn3 *XMem // sqlite3.c:78871:7
- _ = _pIn3
- var _pOut *XMem // sqlite3.c:78872:7
- _ = _pOut
- var _2_iPrior uint32 // sqlite3.c:78895:9
- _ = _2_iPrior
- var _3_i int32 // sqlite3.c:78905:9
- _ = _3_i
- var _3_once int32 // sqlite3.c:78906:9
- _ = _3_once
- var _11_opProperty uint8 // sqlite3.c:78965:10
- _ = _11_opProperty
- var _24_pCaller *XVdbeOp // sqlite3.c:79154:10
- _ = _24_pCaller
- var _25_pcDest int32 // sqlite3.c:79180:7
- _ = _25_pcDest
- var _27_pFrame *XVdbeFrame // sqlite3.c:79236:13
- _ = _27_pFrame
- var _27_pcx int32 // sqlite3.c:79237:7
- _ = _27_pcx
- var _45_cnt int32 // sqlite3.c:79416:7
- _ = _45_cnt
- var _45_nullFlag uint16 // sqlite3.c:79417:7
- _ = _45_nullFlag
- var _49_pVar *XMem // sqlite3.c:79473:7
- _ = _49_pVar
- var _51_n int32 // sqlite3.c:79497:7
- _ = _51_n
- var _51_p1 int32 // sqlite3.c:79498:7
- _ = _51_p1
- var _51_p2 int32 // sqlite3.c:79499:7
- _ = _51_p2
- var _55_n int32 // sqlite3.c:79537:7
- _ = _55_n
- var _60_pMem *XMem // sqlite3.c:79607:7
- _ = _60_pMem
- var _60_i int32 // sqlite3.c:79608:7
- _ = _60_i
- var _66_nByte int64 // sqlite3.c:79696:7
- _ = _66_nByte
- var _73_bIntint int8 // sqlite3.c:79773:8
- _ = _73_bIntint
- var _73_flags uint16 // sqlite3.c:79774:7
- _ = _73_flags
- var _73_type1 uint16 // sqlite3.c:79775:7
- _ = _73_type1
- var _73_type2 uint16 // sqlite3.c:79776:7
- _ = _73_type2
- var _73_iA int64 // sqlite3.c:79777:7
- _ = _73_iA
- var _73_iB int64 // sqlite3.c:79778:7
- _ = _73_iB
- var _73_rA float64 // sqlite3.c:79779:10
- _ = _73_rA
- var _73_rB float64 // sqlite3.c:79780:10
- _ = _73_rB
- var _87_n int32 // sqlite3.c:79923:7
- _ = _87_n
- var _87_pCtx *Xsqlite3_context // sqlite3.c:79924:19
- _ = _87_pCtx
- var _88_i int32 // sqlite3.c:79944:7
- _ = _88_i
- var _88_pCtx *Xsqlite3_context // sqlite3.c:79945:19
- _ = _88_pCtx
- var _94_iA int64 // sqlite3.c:80026:7
- _ = _94_iA
- var _94_uA uint64 // sqlite3.c:80027:7
- _ = _94_uA
- var _94_iB int64 // sqlite3.c:80028:7
- _ = _94_iB
- var _94_op uint8 // sqlite3.c:80029:6
- _ = _94_op
- var _113_res int32 // sqlite3.c:80269:7
- _ = _113_res
- var _113_res2 int32 // sqlite3.c:80269:12
- _ = _113_res2
- var _113_affinity int8 // sqlite3.c:80270:8
- _ = _113_affinity
- var _113_flags1 uint16 // sqlite3.c:80271:7
- _ = _113_flags1
- var _113_flags3 uint16 // sqlite3.c:80272:7
- _ = _113_flags3
- var _140_n int32 // sqlite3.c:80464:7
- _ = _140_n
- var _140_i int32 // sqlite3.c:80465:7
- _ = _140_i
- var _140_p1 int32 // sqlite3.c:80466:7
- _ = _140_p1
- var _140_p2 int32 // sqlite3.c:80467:7
- _ = _140_p2
- var _140_pKeyInfo *XKeyInfo // sqlite3.c:80468:17
- _ = _140_pKeyInfo
- var _140_idx int32 // sqlite3.c:80469:7
- _ = _140_idx
- var _140_pColl *XCollSeq // sqlite3.c:80470:11
- _ = _140_pColl
- var _140_bRev int32 // sqlite3.c:80471:7
- _ = _140_bRev
- var _140_aPermute *int32 // sqlite3.c:80472:7
- _ = _140_aPermute
- var _143_k int32 // sqlite3.c:80491:9
- _ = _143_k
- var _143_mx int32 // sqlite3.c:80491:12
- _ = _143_mx
- var _151_v1 int32 // sqlite3.c:80557:7
- _ = _151_v1
- var _151_v2 int32 // sqlite3.c:80558:7
- _ = _151_v2
- var _164_iAddr uint32 // sqlite3.c:80643:7
- _ = _164_iAddr
- var _169_c int32 // sqlite3.c:80677:7
- _ = _169_c
- var _179_p2 int32 // sqlite3.c:80768:7
- _ = _179_p2
- var _179_pC *XVdbeCursor // sqlite3.c:80769:14
- _ = _179_pC
- var _179_pCrsr *XBtCursor // sqlite3.c:80770:12
- _ = _179_pCrsr
- var _179_aOffset *uint32 // sqlite3.c:80771:7
- _ = _179_aOffset
- var _179_len int32 // sqlite3.c:80772:7
- _ = _179_len
- var _179_i int32 // sqlite3.c:80773:7
- _ = _179_i
- var _179_pDest *XMem // sqlite3.c:80774:7
- _ = _179_pDest
- var _179_sMem XMem // sqlite3.c:80775:7
- _ = _179_sMem
- var _179_zData *uint8 // sqlite3.c:80776:12
- _ = _179_zData
- var _179_zHdr *uint8 // sqlite3.c:80777:12
- _ = _179_zHdr
- var _179_zEndHdr *uint8 // sqlite3.c:80778:12
- _ = _179_zEndHdr
- var _179_offset uint32 // sqlite3.c:80779:7
- _ = _179_offset
- var _179_offset64 uint64 // sqlite3.c:80780:7
- _ = _179_offset64
- var _179_avail uint32 // sqlite3.c:80781:7
- _ = _179_avail
- var _179_t uint32 // sqlite3.c:80782:7
- _ = _179_t
- var _179_pReg *XMem // sqlite3.c:80783:7
- _ = _179_pReg
- var _213_zAffinity *int8 // sqlite3.c:81022:14
- _ = _213_zAffinity
- var _215_zNewRecord *uint8 // sqlite3.c:81055:6
- _ = _215_zNewRecord
- var _215_pRec *XMem // sqlite3.c:81056:7
- _ = _215_pRec
- var _215_nData uint64 // sqlite3.c:81057:7
- _ = _215_nData
- var _215_nHdr int32 // sqlite3.c:81058:7
- _ = _215_nHdr
- var _215_nByte int64 // sqlite3.c:81059:7
- _ = _215_nByte
- var _215_nZero int64 // sqlite3.c:81060:7
- _ = _215_nZero
- var _215_nVarint int32 // sqlite3.c:81061:7
- _ = _215_nVarint
- var _215_serial_type uint32 // sqlite3.c:81062:7
- _ = _215_serial_type
- var _215_pData0 *XMem // sqlite3.c:81063:7
- _ = _215_pData0
- var _215_pLast *XMem // sqlite3.c:81064:7
- _ = _215_pLast
- var _215_nField int32 // sqlite3.c:81065:7
- _ = _215_nField
- var _215_zAffinity *int8 // sqlite3.c:81066:8
- _ = _215_zAffinity
- var _215_file_format int32 // sqlite3.c:81067:7
- _ = _215_file_format
- var _215_i int32 // sqlite3.c:81068:7
- _ = _215_i
- var _215_j int32 // sqlite3.c:81069:7
- _ = _215_j
- var _215_len uint32 // sqlite3.c:81070:7
- _ = _215_len
- var _228_nEntry int64 // sqlite3.c:81218:7
- _ = _228_nEntry
- var _228_pCrsr *XBtCursor // sqlite3.c:81219:12
- _ = _228_pCrsr
- var _229_p1 int32 // sqlite3.c:81240:7
- _ = _229_p1
- var _229_zName *int8 // sqlite3.c:81241:8
- _ = _229_zName
- var _229_nName int32 // sqlite3.c:81242:7
- _ = _229_nName
- var _229_pNew *XSavepoint // sqlite3.c:81243:13
- _ = _229_pNew
- var _229_pSavepoint *XSavepoint // sqlite3.c:81244:13
- _ = _229_pSavepoint
- var _229_pTmp *XSavepoint // sqlite3.c:81245:13
- _ = _229_pTmp
- var _229_iSavepoint int32 // sqlite3.c:81246:7
- _ = _229_iSavepoint
- var _229_ii int32 // sqlite3.c:81247:7
- _ = _229_ii
- var _240_isTransaction int32 // sqlite3.c:81332:11
- _ = _240_isTransaction
- var _244_isSchemaChange int32 // sqlite3.c:81347:13
- _ = _244_isSchemaChange
- var _256_desiredAutoCommit int32 // sqlite3.c:81419:7
- _ = _256_desiredAutoCommit
- var _256_iRollback int32 // sqlite3.c:81420:7
- _ = _256_iRollback
- var _266_pBt *XBtree // sqlite3.c:81508:9
- _ = _266_pBt
- var _266_iMeta int32 // sqlite3.c:81509:7
- _ = _266_iMeta
- var _266_iGen int32 // sqlite3.c:81510:7
- _ = _266_iGen
- var _277_iMeta int32 // sqlite3.c:81607:7
- _ = _277_iMeta
- var _277_iDb int32 // sqlite3.c:81608:7
- _ = _277_iDb
- var _277_iCookie int32 // sqlite3.c:81609:7
- _ = _277_iCookie
- var _278_pDb *XDb // sqlite3.c:81636:6
- _ = _278_pDb
- var _282_nField int32 // sqlite3.c:81730:7
- _ = _282_nField
- var _282_pKeyInfo *XKeyInfo // sqlite3.c:81731:11
- _ = _282_pKeyInfo
- var _282_p2 int32 // sqlite3.c:81732:7
- _ = _282_p2
- var _282_iDb int32 // sqlite3.c:81733:7
- _ = _282_iDb
- var _282_wrFlag int32 // sqlite3.c:81734:7
- _ = _282_wrFlag
- var _282_pX *XBtree // sqlite3.c:81735:9
- _ = _282_pX
- var _282_pCur *XVdbeCursor // sqlite3.c:81736:14
- _ = _282_pCur
- var _282_pDb *XDb // sqlite3.c:81737:6
- _ = _282_pDb
- var _291_pOrig *XVdbeCursor // sqlite3.c:81843:14
- _ = _291_pOrig
- var _291_pCx *XVdbeCursor // sqlite3.c:81844:14
- _ = _291_pCx
- var _292_pCx *XVdbeCursor // sqlite3.c:81893:14
- _ = _292_pCx
- var _292_pKeyInfo *XKeyInfo // sqlite3.c:81894:11
- _ = _292_pKeyInfo
- var _295_pgno int32 // sqlite3.c:81920:11
- _ = _295_pgno
- var _298_pCx *XVdbeCursor // sqlite3.c:81953:14
- _ = _298_pCx
- var _299_pC *XVdbeCursor // sqlite3.c:81975:14
- _ = _299_pC
- var _301_pCx *XVdbeCursor // sqlite3.c:82002:14
- _ = _301_pCx
- var _303_res int32 // sqlite3.c:82137:7
- _ = _303_res
- var _303_oc int32 // sqlite3.c:82138:7
- _ = _303_oc
- var _303_pC *XVdbeCursor // sqlite3.c:82139:14
- _ = _303_pC
- var _303_r XUnpackedRecord // sqlite3.c:82140:18
- _ = _303_r
- var _303_nField int32 // sqlite3.c:82141:7
- _ = _303_nField
- var _303_iKey int64 // sqlite3.c:82142:7
- _ = _303_iKey
- var _303_eqOnly int32 // sqlite3.c:82143:7
- _ = _303_eqOnly
- var _313_i int32 // sqlite3.c:82250:11
- _ = _313_i
- var _324_alreadyExists int32 // sqlite3.c:82362:7
- _ = _324_alreadyExists
- var _324_takeJump int32 // sqlite3.c:82363:7
- _ = _324_takeJump
- var _324_ii int32 // sqlite3.c:82364:7
- _ = _324_ii
- var _324_pC *XVdbeCursor // sqlite3.c:82365:14
- _ = _324_pC
- var _324_res int32 // sqlite3.c:82366:7
- _ = _324_res
- var _324_pFree *XUnpackedRecord // sqlite3.c:82367:18
- _ = _324_pFree
- var _324_pIdxKey *XUnpackedRecord // sqlite3.c:82368:18
- _ = _324_pIdxKey
- var _324_r XUnpackedRecord // sqlite3.c:82369:18
- _ = _324_r
- var _334_pC *XVdbeCursor // sqlite3.c:82489:14
- _ = _334_pC
- var _334_pCrsr *XBtCursor // sqlite3.c:82490:12
- _ = _334_pCrsr
- var _334_res int32 // sqlite3.c:82491:7
- _ = _334_res
- var _334_iKey uint64 // sqlite3.c:82492:7
- _ = _334_iKey
- var _340_v int64 // sqlite3.c:82569:7
- _ = _340_v
- var _340_pC *XVdbeCursor // sqlite3.c:82570:14
- _ = _340_pC
- var _340_res int32 // sqlite3.c:82571:7
- _ = _340_res
- var _340_cnt int32 // sqlite3.c:82572:7
- _ = _340_cnt
- var _340_pMem *XMem // sqlite3.c:82573:7
- _ = _340_pMem
- var _340_pFrame *XVdbeFrame // sqlite3.c:82574:13
- _ = _340_pFrame
- var _356_pData *XMem // sqlite3.c:82732:7
- _ = _356_pData
- var _356_pKey *XMem // sqlite3.c:82733:7
- _ = _356_pKey
- var _356_pC *XVdbeCursor // sqlite3.c:82734:14
- _ = _356_pC
- var _356_seekResult int32 // sqlite3.c:82735:7
- _ = _356_seekResult
- var _356_zDb *int8 // sqlite3.c:82736:14
- _ = _356_zDb
- var _356_pTab *XTable // sqlite3.c:82737:9
- _ = _356_pTab
- var _356_op int32 // sqlite3.c:82738:7
- _ = _356_op
- var _356_x XBtreePayload // sqlite3.c:82739:16
- _ = _356_x
- var _366_pC *XVdbeCursor // sqlite3.c:82853:14
- _ = _366_pC
- var _366_zDb *int8 // sqlite3.c:82854:14
- _ = _366_zDb
- var _366_pTab *XTable // sqlite3.c:82855:9
- _ = _366_pTab
- var _366_opflags int32 // sqlite3.c:82856:7
- _ = _366_opflags
- var _367_iKey int64 // sqlite3.c:82871:9
- _ = _367_iKey
- var _377_pC *XVdbeCursor // sqlite3.c:82975:14
- _ = _377_pC
- var _377_res int32 // sqlite3.c:82976:7
- _ = _377_res
- var _377_nKeyCol int32 // sqlite3.c:82977:7
- _ = _377_nKeyCol
- var _378_pC *XVdbeCursor // sqlite3.c:83005:14
- _ = _378_pC
- var _379_pC *XVdbeCursor // sqlite3.c:83047:14
- _ = _379_pC
- var _379_pCrsr *XBtCursor // sqlite3.c:83048:12
- _ = _379_pCrsr
- var _379_n uint32 // sqlite3.c:83049:7
- _ = _379_n
- var _382_pC *XVdbeCursor // sqlite3.c:83101:14
- _ = _382_pC
- var _382_v int64 // sqlite3.c:83102:7
- _ = _382_v
- var _382_pVtab *Xsqlite3_vtab // sqlite3.c:83103:16
- _ = _382_pVtab
- var _382_pModule *Xsqlite3_module // sqlite3.c:83104:24
- _ = _382_pModule
- var _388_pC *XVdbeCursor // sqlite3.c:83148:14
- _ = _388_pC
- var _390_pC *XVdbeCursor // sqlite3.c:83182:14
- _ = _390_pC
- var _390_pCrsr *XBtCursor // sqlite3.c:83183:12
- _ = _390_pCrsr
- var _390_res int32 // sqlite3.c:83184:7
- _ = _390_res
- var _394_pC *XVdbeCursor // sqlite3.c:83219:14
- _ = _394_pC
- var _394_pCrsr *XBtCursor // sqlite3.c:83220:12
- _ = _394_pCrsr
- var _394_res int32 // sqlite3.c:83221:7
- _ = _394_res
- var _394_sz int64 // sqlite3.c:83222:7
- _ = _394_sz
- var _397_pC *XVdbeCursor // sqlite3.c:83284:14
- _ = _397_pC
- var _397_pCrsr *XBtCursor // sqlite3.c:83285:12
- _ = _397_pCrsr
- var _397_res int32 // sqlite3.c:83286:7
- _ = _397_res
- var _400_pC *XVdbeCursor // sqlite3.c:83385:14
- _ = _400_pC
- var _400_res int32 // sqlite3.c:83386:7
- _ = _400_res
- var _403_pC *XVdbeCursor // sqlite3.c:83477:14
- _ = _403_pC
- var _403_x XBtreePayload // sqlite3.c:83478:16
- _ = _403_x
- var _406_pC *XVdbeCursor // sqlite3.c:83517:14
- _ = _406_pC
- var _406_pCrsr *XBtCursor // sqlite3.c:83518:12
- _ = _406_pCrsr
- var _406_res int32 // sqlite3.c:83519:7
- _ = _406_res
- var _406_r XUnpackedRecord // sqlite3.c:83520:18
- _ = _406_r
- var _408_pC *XVdbeCursor // sqlite3.c:83577:14
- _ = _408_pC
- var _408_pTabCur *XVdbeCursor // sqlite3.c:83578:14
- _ = _408_pTabCur
- var _408_rowid int64 // sqlite3.c:83579:7
- _ = _408_rowid
- var _414_pC *XVdbeCursor // sqlite3.c:83677:14
- _ = _414_pC
- var _414_res int32 // sqlite3.c:83678:7
- _ = _414_res
- var _414_r XUnpackedRecord // sqlite3.c:83679:18
- _ = _414_r
- var _417_i int32 // sqlite3.c:83701:9
- _ = _417_i
- var _420_iMoved int32 // sqlite3.c:83747:7
- _ = _420_iMoved
- var _420_iDb int32 // sqlite3.c:83748:7
- _ = _420_iDb
- var _424_nChange int32 // sqlite3.c:83797:7
- _ = _424_nChange
- var _427_pC *XVdbeCursor // sqlite3.c:83826:14
- _ = _427_pC
- var _430_pgno int32 // sqlite3.c:83868:7
- _ = _430_pgno
- var _430_flags int32 // sqlite3.c:83869:7
- _ = _430_flags
- var _430_pDb *XDb // sqlite3.c:83870:6
- _ = _430_pDb
- var _434_iDb int32 // sqlite3.c:83912:7
- _ = _434_iDb
- var _434_zMaster *int8 // sqlite3.c:83913:14
- _ = _434_zMaster
- var _434_zSql *int8 // sqlite3.c:83914:8
- _ = _434_zSql
- var _434_initData XInitData // sqlite3.c:83915:12
- _ = _434_initData
- var _445_nRoot int32 // sqlite3.c:84037:7
- _ = _445_nRoot
- var _445_aRoot *int32 // sqlite3.c:84038:7
- _ = _445_aRoot
- var _445_nErr int32 // sqlite3.c:84039:7
- _ = _445_nErr
- var _445_z *int8 // sqlite3.c:84040:8
- _ = _445_z
- var _445_pnErr *XMem // sqlite3.c:84041:7
- _ = _445_pnErr
- var _451_val int64 // sqlite3.c:84101:7
- _ = _451_val
- var _454_iSet int32 // sqlite3.c:84143:7
- _ = _454_iSet
- var _454_exists int32 // sqlite3.c:84144:7
- _ = _454_exists
- var _458_nMem int32 // sqlite3.c:84191:7
- _ = _458_nMem
- var _458_nByte int32 // sqlite3.c:84192:7
- _ = _458_nByte
- var _458_pRt *XMem // sqlite3.c:84193:7
- _ = _458_pRt
- var _458_pMem *XMem // sqlite3.c:84194:7
- _ = _458_pMem
- var _458_pEnd *XMem // sqlite3.c:84195:7
- _ = _458_pEnd
- var _458_pFrame *XVdbeFrame // sqlite3.c:84196:13
- _ = _458_pFrame
- var _458_pProgram *XSubProgram // sqlite3.c:84197:14
- _ = _458_pProgram
- var _458_t unsafe.Pointer // sqlite3.c:84198:8
- _ = _458_t
- var _465_pFrame *XVdbeFrame // sqlite3.c:84319:13
- _ = _465_pFrame
- var _465_pIn *XMem // sqlite3.c:84320:7
- _ = _465_pIn
- var _473_pFrame *XVdbeFrame // sqlite3.c:84387:13
- _ = _473_pFrame
- var _479_x int64 // sqlite3.c:84445:7
- _ = _479_x
- var _485_n int32 // sqlite3.c:84531:7
- _ = _485_n
- var _485_pCtx *Xsqlite3_context // sqlite3.c:84532:19
- _ = _485_pCtx
- var _486_i int32 // sqlite3.c:84552:7
- _ = _486_i
- var _486_pCtx *Xsqlite3_context // sqlite3.c:84553:19
- _ = _486_pCtx
- var _486_pMem *XMem // sqlite3.c:84554:7
- _ = _486_pMem
- var _486_t XMem // sqlite3.c:84555:7
- _ = _486_t
- var _493_pMem *XMem // sqlite3.c:84615:7
- _ = _493_pMem
- var _496_i int32 // sqlite3.c:84645:7
- _ = _496_i
- var _496_aRes [3]int32 // sqlite3.c:84646:7
- _ = _496_aRes
- var _496_pMem *XMem // sqlite3.c:84647:7
- _ = _496_pMem
- var _499_pBt *XBtree // sqlite3.c:84683:9
- _ = _499_pBt
- var _499_pPager *XPager // sqlite3.c:84684:9
- _ = _499_pPager
- var _499_eNew int32 // sqlite3.c:84685:7
- _ = _499_eNew
- var _499_eOld int32 // sqlite3.c:84686:7
- _ = _499_eOld
- var _499_zFilename *int8 // sqlite3.c:84688:14
- _ = _499_zFilename
- var _509_pBt *XBtree // sqlite3.c:84797:9
- _ = _509_pBt
- var _514_isWriteLock uint8 // sqlite3.c:84850:6
- _ = _514_isWriteLock
- var _515_p1 int32 // sqlite3.c:84852:9
- _ = _515_p1
- var _517_z *int8 // sqlite3.c:84859:20
- _ = _517_z
- var _518_pVTab *XVTable // sqlite3.c:84880:10
- _ = _518_pVTab
- var _519_sMem XMem // sqlite3.c:84896:7
- _ = _519_sMem
- var _519_zTab *int8 // sqlite3.c:84897:14
- _ = _519_zTab
- var _522_pCur *XVdbeCursor // sqlite3.c:84941:14
- _ = _522_pCur
- var _522_pVCur *Xsqlite3_file // sqlite3.c:84942:23
- _ = _522_pVCur
- var _522_pVtab *Xsqlite3_vtab // sqlite3.c:84943:16
- _ = _522_pVtab
- var _522_pModule *Xsqlite3_module // sqlite3.c:84944:24
- _ = _522_pModule
- var _526_nArg int32 // sqlite3.c:84997:7
- _ = _526_nArg
- var _526_iQuery int32 // sqlite3.c:84998:7
- _ = _526_iQuery
- var _526_pModule *Xsqlite3_module // sqlite3.c:84999:24
- _ = _526_pModule
- var _526_pQuery *XMem // sqlite3.c:85000:7
- _ = _526_pQuery
- var _526_pArgc *XMem // sqlite3.c:85001:7
- _ = _526_pArgc
- var _526_pVCur *Xsqlite3_file // sqlite3.c:85002:23
- _ = _526_pVCur
- var _526_pVtab *Xsqlite3_vtab // sqlite3.c:85003:16
- _ = _526_pVtab
- var _526_pCur *XVdbeCursor // sqlite3.c:85004:14
- _ = _526_pCur
- var _526_res int32 // sqlite3.c:85005:7
- _ = _526_res
- var _526_i int32 // sqlite3.c:85006:7
- _ = _526_i
- var _526_apArg **XMem // sqlite3.c:85007:7
- _ = _526_apArg
- var _528_pVtab *Xsqlite3_vtab // sqlite3.c:85050:16
- _ = _528_pVtab
- var _528_pModule *Xsqlite3_module // sqlite3.c:85051:24
- _ = _528_pModule
- var _528_pDest *XMem // sqlite3.c:85052:7
- _ = _528_pDest
- var _528_sContext Xsqlite3_context // sqlite3.c:85053:19
- _ = _528_sContext
- var _528_pCur *XVdbeCursor // sqlite3.c:85055:14
- _ = _528_pCur
- var _532_pVtab *Xsqlite3_vtab // sqlite3.c:85095:16
- _ = _532_pVtab
- var _532_pModule *Xsqlite3_module // sqlite3.c:85096:24
- _ = _532_pModule
- var _532_res int32 // sqlite3.c:85097:7
- _ = _532_res
- var _532_pCur *XVdbeCursor // sqlite3.c:85098:14
- _ = _532_pCur
- var _535_pVtab *Xsqlite3_vtab // sqlite3.c:85137:16
- _ = _535_pVtab
- var _535_pName *XMem // sqlite3.c:85138:7
- _ = _535_pName
- var _536_pVtab *Xsqlite3_vtab // sqlite3.c:85189:16
- _ = _536_pVtab
- var _536_pModule *Xsqlite3_module // sqlite3.c:85190:24
- _ = _536_pModule
- var _536_nArg int32 // sqlite3.c:85191:7
- _ = _536_nArg
- var _536_i int32 // sqlite3.c:85192:7
- _ = _536_i
- var _536_rowid int64 // sqlite3.c:85193:16
- _ = _536_rowid
- var _536_apArg **XMem // sqlite3.c:85194:7
- _ = _536_apArg
- var _536_pX *XMem // sqlite3.c:85195:7
- _ = _536_pX
- var _538_vtabOnConflict uint8 // sqlite3.c:85210:8
- _ = _538_vtabOnConflict
- var _546_newMax uint32 // sqlite3.c:85265:16
- _ = _546_newMax
- var _546_pBt *XBtree // sqlite3.c:85266:9
- _ = _546_pBt
- var _548_zTrace *int8 // sqlite3.c:85297:8
- _ = _548_zTrace
- var _548_i int32 // sqlite3.c:85298:7
- _ = _548_i
- var _550_x func(*crt.TLS, unsafe.Pointer, *int8) // sqlite3.c:85319:12
- _ = _550_x
- var _550_z *int8 // sqlite3.c:85320:12
- _ = _550_z
- var _551_z *int8 // sqlite3.c:85326:12
- _ = _551_z
- var _557_opProperty uint8 // sqlite3.c:85427:10
- _ = _557_opProperty
- _aOp = (*XVdbeOp)(_p.X17)
- _pOp = _aOp
- _nExtraDelete = i32(0)
- _rc = i32(0)
- _db = (*Xsqlite3)(_p.X0)
- _resetSchemaOnFault = u8(0)
- _encoding = _db.X14
- _iCompare = i32(0)
- _nVmStep = u32(0)
- _nProgressLimit = u32(0)
- _aMem = (*XMem)(_p.X18)
- _pIn1 = nil
- _pIn2 = nil
- _pIn3 = nil
- _pOut = nil
- func() {
- if (_p.X5) != uint32(i32(770837923)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78878), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62772)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3VdbeEnter(tls, _p)
- if (_p.X10) != i32(7) {
- goto _2
- }
+var _pragmaVtabFilterØ00__func__Ø000 [17]int8
- goto _no_mem
+func init() {
+ crt.Xstrncpy(nil, &_pragmaVtabFilterØ00__func__Ø000[0], str(61908), 17)
+}
-_2:
- func() {
- if (_p.X10) != i32(0) && ((_p.X10)&i32(255)) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78885), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62932)))
- crt.X__builtin_abort(tls)
- }
- }()
+func Xsqlite3_prepare_v2(tls *crt.TLS, _db *Xsqlite3, _zSql *int8, _nBytes int32, _ppStmt *unsafe.Pointer, _pzTail **int8) (r0 int32) {
+ var _rc int32
+ _rc = _sqlite3LockAndPrepare(tls, _db, _zSql, _nBytes, i32(1), nil, _ppStmt, _pzTail)
func() {
- if ((uint32((_p.X32)>>uint(i32(8)))<>uint(i32(31))) == 0 && int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62980)))
+ if _rc != i32(0) && _ppStmt != nil && *_ppStmt != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116426), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_prepare_v2Ø00__func__Ø000))), unsafe.Pointer(str(50464)))
crt.X__builtin_abort(tls)
}
}()
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X13 */))) = int64(i32(0))
+ return _rc
+}
+
+var _sqlite3_prepare_v2Ø00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_prepare_v2Ø00__func__Ø000[0], str(61925), 19)
+}
+
+// Advance the pragma virtual table cursor to the next row
+func _pragmaVtabNext(tls *crt.TLS, _pVtabCursor *Xsqlite3_file) (r0 int32) {
+ var _rc int32
+ var _pCsr *XPragmaVtabCursor
+ _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
+ _rc = i32(0)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(8 /* X2 */))) += 1
func() {
- if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78888), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63012)))
+ if (_pCsr.X1) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(115529), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabNextØ00__func__Ø000))), unsafe.Pointer(str(61944)))
crt.X__builtin_abort(tls)
}
}()
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(100 /* X21 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t17)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(8 /* X2 */))) = i32(0)
- if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) == 0 {
- goto _11
+ if i32(100) != Xsqlite3_step(tls, _pCsr.X1) {
+ _rc = Xsqlite3_finalize(tls, _pCsr.X1)
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(4 /* X1 */))) = nil
+ _pragmaVtabCursorClear(tls, _pCsr)
}
+ return _rc
+}
- goto _abort_due_to_interrupt
+var _pragmaVtabNextØ00__func__Ø000 [15]int8
-_11:
- if (_db.X61) == nil {
- goto _12
- }
+func init() {
+ crt.Xstrncpy(nil, &_pragmaVtabNextØ00__func__Ø000[0], str(61958), 15)
+}
- _2_iPrior = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(152 /* X35 */))))) + 4*uintptr(i32(4))))
+// This is the top-level implementation of sqlite3_step(). Call
+// sqlite3Step() to do most of the work. If a schema error occurs,
+// call sqlite3Reprepare() and try again.
+func Xsqlite3_step(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) {
+ var _rc, _rc2, _cnt, _2_savedPc int32
+ var _3_zErr *int8
+ var _db *Xsqlite3
+ var _v *TVdbe
+ _rc = i32(0)
+ _rc2 = i32(0)
+ _v = (*TVdbe)(_pStmt)
+ _cnt = i32(0)
+ if _vdbeSafetyNotNull(tls, _v) != 0 {
+ return _sqlite3MisuseError(tls, i32(76755))
+ }
+ _db = (*Xsqlite3)(_v.X0)
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_db.X3))
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v))+uintptr(140 /* X32 */))), int16(i32(0)), 2, 1)
+_1:
+ if store1(&_rc, _sqlite3Step(tls, _v)) != i32(17) || postInc1(&_cnt, int32(1)) >= i32(50) {
+ goto _2
+ }
+ _2_savedPc = _v.X9
+ _rc2 = store1(&_rc, _sqlite3Reprepare(tls, _v))
+ if _rc != i32(0) {
+ goto _2
+ }
+ Xsqlite3_reset(tls, _pStmt)
+ if _2_savedPc >= i32(0) {
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v))+uintptr(140 /* X32 */))), int16(i32(1)), 2, 1)
+ }
func() {
- if uint32(i32(0)) >= (_db.X63) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63028)))
+ if int32((uint32(_v.X32)<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76767), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_stepØ00__func__Ø000))), unsafe.Pointer(str(61973)))
crt.X__builtin_abort(tls)
}
}()
- _nProgressLimit = (_db.X63) - (_2_iPrior % (_db.X63))
-_12:
- _sqlite3BeginBenignMalloc(tls)
- if (_p.X9) != i32(0) || (((*Xsqlite3)(_p.X0).X6)&i32(134218753)) == i32(0) {
- goto _16
- }
-
- _3_once = i32(1)
- _sqlite3VdbePrintSql(tls, _p)
- if (((*Xsqlite3)(_p.X0).X6) & i32(1024)) == 0 {
- goto _17
+ goto _1
+_2:
+ if _rc2 == i32(0) {
+ goto _8
}
-
- crt.Xprintf(tls, str(63052))
- _3_i = i32(0)
-_18:
- if _3_i >= (_p.X27) {
- goto _21
+ _3_zErr = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, (*XMem)(_db.X56))))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_v.X22))
+ if (_db.X17) == 0 {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(104 /* X22 */))) = _sqlite3DbStrDup(tls, _db, _3_zErr)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(40 /* X10 */))) = _rc2
+ goto _10
}
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(104 /* X22 */))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(40 /* X10 */))) = store1(&_rc, _sqlite3NomemError(tls, i32(76785)))
+_10:
+_8:
+ _rc = _sqlite3ApiExit(tls, _db, _rc)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_db.X3))
+ return _rc
- _sqlite3VdbePrintOp(tls, (*crt.XFILE)(Xstdout), _3_i, (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_3_i))))
- _3_i += 1
- goto _18
+ _ = _cnt
+ panic(0)
+}
-_21:
-_17:
- if (((*Xsqlite3)(_p.X0).X6) & i32(134217728)) == 0 {
- goto _22
+// Execute the statement pStmt, either until a row of data is ready, the
+// statement is completely executed or an error occurs.
+//
+// This routine implements the bulk of the logic behind the sqlite_step()
+// API. The only thing omitted is the automatic recompile if a
+// schema change has occurred. That detail is handled by the
+// outer sqlite3_step() wrapper procedure.
+func _sqlite3Step(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _rc int32
+ var _db *Xsqlite3
+ func() {
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76621), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(9660)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_p.X5) != uint32(i32(770837923)) {
+ Xsqlite3_reset(tls, (unsafe.Pointer)(_p))
}
-
- _3_i = i32(0)
-_23:
- if _3_i >= (_p.X27) {
- goto _26
+ _db = (*Xsqlite3)(_p.X0)
+ if (_db.X17) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(7)
+ return _sqlite3NomemError(tls, i32(76654))
}
-
- if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_3_i))).X0) != i32(165) {
- goto _27
+ if ((_p.X9) <= i32(0)) && (((uint32(_p.X32) << uint(i32(31))) >> uint(i32(31))) != 0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(17)
+ _rc = i32(1)
+ goto _end_of_step
}
-
- if _3_once == 0 {
- goto _28
+ if (_p.X9) >= i32(0) {
+ goto _6
}
-
- crt.Xprintf(tls, str(63076))
-_28:
- crt.Xprintf(tls, str(63096), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_3_i))))) + uintptr(16 /* X6 */)))))))
- _3_once = i32(0)
-_27:
- _3_i += 1
- goto _23
-
-_26:
-_22:
- if (((*Xsqlite3)(_p.X0).X6) & i32(1)) == 0 {
- goto _29
+ if (_db.X34) == i32(0) {
+ *(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */))))) = i32(0)
}
-
- crt.Xprintf(tls, str(63100))
-_29:
-_16:
- _sqlite3EndBenignMalloc(tls)
- _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(_p.X9)))
-_30:
func() {
- if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ if (_db.X36) <= i32(0) && int32(_db.X15) != i32(0) && ((_db.X77) != int64(i32(0)) || (_db.X78) != int64(i32(0))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76671), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(61987)))
crt.X__builtin_abort(tls)
}
}()
+ if ((((_db.X43) != nil) || ((int32(_db.X24) & i32(2)) != i32(0))) && (((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0)) && ((_p.X36) != nil) {
+ _sqlite3OsCurrentTimeInt64(tls, (*Xsqlite3_vfs)(_db.X0), (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(120 /* X26 */))))
+ goto _17
+ }
func() {
- if uintptr(unsafe.Pointer(_pOp)) < uintptr(unsafe.Pointer(_aOp)) || uintptr(unsafe.Pointer(_pOp)) >= uintptr(unsafe.Pointer((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_p.X27))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78932), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63116)))
+ if (_p.X26) != int64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62078)))
crt.X__builtin_abort(tls)
}
}()
- _nVmStep += 1
- if ((_db.X6) & i32(1)) == 0 {
- goto _39
+_17:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(152 /* X34 */))) += 1
+ if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(160 /* X36 */))) += 1
}
-
- _sqlite3VdbePrintOp(tls, (*crt.XFILE)(Xstdout), int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer(_aOp)))/24), _pOp)
-_39:
- _11_opProperty = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeProperty)) + 1*uintptr(_pOp.X0)))
- if (int32(_11_opProperty) & i32(2)) == i32(0) {
- goto _40
+ if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(156 /* X35 */))) += 1
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = i32(0)
+_6:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(132 /* X28 */))) = i32(0)
+ if ((uint32((_p.X32)>>uint(i32(2))) << uint(i32(30))) >> uint(i32(30))) != 0 {
+ _rc = _sqlite3VdbeList(tls, _p)
+ goto _23
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(164 /* X37 */))) += 1
+ _rc = _sqlite3VdbeExec(tls, _p)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(164 /* X37 */))) -= 1
+_23:
+ if _rc == i32(100) {
+ goto _24
+ }
+ if (_p.X26) > int64(i32(0)) {
+ _invokeProfileCallback(tls, _db, _p)
+ }
+_24:
+ if _rc != i32(101) {
+ goto _26
}
-
func() {
- if (_pOp.X3) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78967), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63148)))
+ if (_p.X10) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76709), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62094)))
crt.X__builtin_abort(tls)
}
}()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _doWalCallbacks(tls, _db)
+ if (_p.X10) != i32(0) {
+ _rc = i32(1)
+ }
+_26:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(48 /* X10 */))) = _rc
+ if i32(7) == _sqlite3ApiExit(tls, (*Xsqlite3)(_p.X0), _p.X10) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _sqlite3NomemError(tls, i32(76718))
+ }
+_end_of_step:
func() {
- if (_pOp.X3) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63160)))
+ if _rc != i32(100) && _rc != i32(101) && _rc != i32(1) && (_rc&i32(255)) != i32(5) && _rc != i32(21) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76728), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62111)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78969), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63196)))
+ if ((_p.X10) == i32(100) || (_p.X10) == i32(101)) && (_p.X10) != (_p.X28) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76731), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StepØ00__func__Ø000))), unsafe.Pointer(str(62212)))
crt.X__builtin_abort(tls)
}
}()
+ if ((((uint32((_p.X32)>>uint(i32(9))) << uint(i32(31))) >> uint(i32(31))) != 0) && (_rc != i32(100))) && (_rc != i32(101)) {
+ _rc = _sqlite3VdbeTransferError(tls, _p)
+ }
+ return _rc & (_db.X11)
+}
+
+var _sqlite3StepØ00__func__Ø000 [12]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3StepØ00__func__Ø000[0], str(62273), 12)
+}
+
+// Terminate the current execution of an SQL statement and reset it
+// back to its starting state so that it can be reused. A success code from
+// the prior execution is returned.
+//
+// This routine sets the error code and string returned by
+// sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16().
+func Xsqlite3_reset(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 int32) {
+ var _rc int32
+ var _2_db *Xsqlite3
+ var _2_v *TVdbe
+ if _pStmt == nil {
+ _rc = i32(0)
+ goto _1
+ }
+ _2_v = (*TVdbe)(_pStmt)
+ _2_db = (*Xsqlite3)(_2_v.X0)
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_2_db.X3))
+ if (_2_v.X26) > int64(i32(0)) {
+ _invokeProfileCallback(tls, _2_db, _2_v)
+ }
+ _rc = _sqlite3VdbeReset(tls, _2_v)
+ _sqlite3VdbeRewind(tls, _2_v)
func() {
- if _sqlite3VdbeCheckMemInvariants(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3)))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78970), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63224)))
+ if (_rc & (_2_db.X11)) != _rc {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_resetØ00__func__Ø000))), unsafe.Pointer(str(62285)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _49
- }
-
- _registerTrace(tls, _pOp.X3, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))))
-_49:
-_40:
- if (int32(_11_opProperty) & i32(4)) == i32(0) {
- goto _50
- }
+ _rc = _sqlite3ApiExit(tls, _2_db, _rc)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_2_db.X3))
+_1:
+ return _rc
+}
+// Rewind the VDBE back to the beginning in preparation for
+// running it.
+func _sqlite3VdbeRewind(tls *crt.TLS, _p *TVdbe) {
+ var _i int32
func() {
- if (_pOp.X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78974), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63272)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73299), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (_pOp.X4) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63284)))
+ if (_p.X5) != uint32(i32(381479589)) && (_p.X5) != uint32(i32(1224384374)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73300), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(62310)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78976), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63320)))
+ if (_p.X27) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73304), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(41716)))
crt.X__builtin_abort(tls)
}
}()
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = uint32(i32(770837923))
+ _i = i32(0)
+_7:
+ if _i >= (_p.X6) {
+ goto _10
+ }
func() {
- if _sqlite3VdbeCheckMemInvariants(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4)))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78977), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63348)))
+ if (*Xsqlite3)((*XMem)(unsafe.Pointer(uintptr(_p.X18)+48*uintptr(_i))).X9) != (*Xsqlite3)(_p.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73311), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRewindØ00__func__Ø000))), unsafe.Pointer(str(62366)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _59
- }
+ _i += 1
+ goto _7
+_10:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = i32(-1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(i32(2))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X8 */))) = uint32(i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(139 /* X31 */))) = uint8(i32(255))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = i32(0)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X14 */))) = int64(i32(0))
+}
- _registerTrace(tls, _pOp.X4, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))))
-_59:
-_50:
- if (int32(_11_opProperty) & i32(8)) == i32(0) {
- goto _60
- }
+var _sqlite3VdbeRewindØ00__func__Ø000 [18]int8
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeRewindØ00__func__Ø000[0], str(62387), 18)
+}
+
+var _sqlite3_resetØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_resetØ00__func__Ø000[0], str(62405), 14)
+}
+
+// Give a listing of the program in the virtual machine.
+//
+// The interface is the same as sqlite3VdbeExec(). But instead of
+// running the code, it invokes the callback once for each instruction.
+// This feature is used to implement "EXPLAIN".
+//
+// When p->explain==1, each instruction is listed. When
+// p->explain==2, only OP_Explain instructions are listed and these
+// are shown in a different format. p->explain==2 is used to implement
+// EXPLAIN QUERY PLAN.
+//
+// When p->explain==1, first the main program is listed, then each of
+// the trigger subprograms are listed one by one.
+func _sqlite3VdbeList(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _nRow, _nSub, _i, _rc, _10_j, _13_nByte, _13_j int32
+ var _8_zP4 *int8
+ var _db *Xsqlite3
+ var _pSub, _pMem *XMem
+ var _8_pOp *XVdbeOp
+ var _apSub **XSubProgram
+ _nSub = i32(0)
+ _apSub = nil
+ _pSub = nil
+ _db = (*Xsqlite3)(_p.X0)
+ _rc = i32(0)
+ _pMem = (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr(i32(1))))
func() {
- if (_pOp.X5) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63396)))
+ if ((uint32((_p.X32)>>uint(i32(2))) << uint(i32(30))) >> uint(i32(30))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73035), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62419)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (_pOp.X5) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78982), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63408)))
+ if (_p.X5) != uint32(i32(770837923)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73036), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62430)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78983), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63444)))
+ if (_p.X10) != i32(0) && (_p.X10) != i32(5) && (_p.X10) != i32(7) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73037), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62455)))
crt.X__builtin_abort(tls)
}
}()
+ _releaseMemArray(tls, _pMem, i32(8))
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(100 /* X21 */))))) = nil
+ if (_p.X10) == _sqlite3NomemError(tls, i32(73046)) {
+ _sqlite3OomFault(tls, _db)
+ return i32(1)
+ }
+ _nRow = _p.X27
+ if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(1) {
+ goto _9
+ }
func() {
- if _sqlite3VdbeCheckMemInvariants(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5)))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78984), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63472)))
+ if (_p.X6) <= i32(9) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73066), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62517)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _69
+ _pSub = (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr(i32(9))))
+ if (int32(_pSub.X1) & i32(16)) != 0 {
+ _nSub = int32(uint32(_pSub.X4) / u32(4))
+ _apSub = (**XSubProgram)(unsafe.Pointer(_pSub.X5))
}
-
- _registerTrace(tls, _pOp.X5, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))
-_69:
-_60:
- if (int32(_11_opProperty) & i32(16)) == i32(0) {
- goto _70
+ _i = i32(0)
+_13:
+ if _i >= _nSub {
+ goto _16
+ }
+ {
+ p := &_nRow
+ *p = (*p) + ((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_i)))).X1)
+ sink1 = *p
+ }
+ _i += 1
+ goto _13
+_16:
+_9:
+_17:
+ _i = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(36 /* X9 */))), int32(1))
+ if ((_i < _nRow) && (int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) == i32(2))) && (int32((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_i))).X0) != i32(165)) {
+ goto _17
+ }
+ if _i >= _nRow {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
+ _rc = i32(101)
+ goto _21
+ }
+ if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(9)
+ _rc = i32(1)
+ _sqlite3VdbeError(tls, _p, _sqlite3ErrStr(tls, _p.X10))
+ goto _23
+ }
+ if _i < (_p.X27) {
+ _8_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_i)))
+ goto _25
+ }
+ {
+ p := &_i
+ *p = (*p) - (_p.X27)
+ sink1 = *p
+ }
+ _10_j = i32(0)
+_26:
+ if _i < ((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_10_j)))).X1) {
+ goto _29
+ }
+ {
+ p := &_i
+ *p = (*p) - ((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_10_j)))).X1)
+ sink1 = *p
+ }
+ _10_j += 1
+ goto _26
+_29:
+ _8_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_10_j)))).X0) + 24*uintptr(_i)))
+_25:
+ if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(1) {
+ goto _30
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_i)
+ *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(2562))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = _sqlite3OpcodeName(tls, int32(_8_pOp.X0))
+ func() {
+ if (_pMem.X5) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73113), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62527)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _sqlite3Strlen30(tls, _pMem.X5)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
+ *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
+ if int32(_8_pOp.X1) != i32(-13) {
+ goto _33
+ }
+ _13_nByte = int32(uint32(_nSub+i32(1)) * u32(4))
+ _13_j = i32(0)
+_34:
+ if _13_j >= _nSub {
+ goto _37
+ }
+ if (*(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(_13_j)))) == (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pOp)) + uintptr(16 /* X6 */)))))) {
+ goto _37
+ }
+ _13_j += 1
+ goto _34
+_37:
+ if (_13_j == _nSub) && (i32(0) == _sqlite3VdbeMemGrow(tls, _pSub, _13_nByte, bool2int(_nSub != i32(0)))) {
+ _apSub = (**XSubProgram)(unsafe.Pointer(_pSub.X5))
+ *(**XSubProgram)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apSub)) + 4*uintptr(postInc1(&_nSub, int32(1))))) = (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pOp)) + uintptr(16 /* X6 */))))))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(16))
+ sink14 = *p
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(12 /* X4 */))) = int32(uint32(_nSub) * u32(4))
+ }
+_33:
+_30:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_8_pOp.X3)
+ *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_8_pOp.X4)
+ *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(_8_pOp.X5)
+ *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
+ if _sqlite3VdbeMemClearAndResize(tls, _pMem, i32(100)) != 0 {
+ func() {
+ if ((*Xsqlite3)(_p.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73151), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62538)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(1)
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(514))
+ _8_zP4 = _displayP4(tls, _8_pOp, _pMem.X5, _pMem.X7)
+ if _8_zP4 != (_pMem.X5) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = i32(0)
+ _sqlite3VdbeMemSetStr(tls, _pMem, _8_zP4, i32(-1), uint8(i32(1)), nil)
+ goto _45
}
+ func() {
+ if (_pMem.X5) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62527)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _sqlite3Strlen30(tls, _pMem.X5)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
+_45:
+ *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
+ if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(1) {
+ goto _48
+ }
+ if _sqlite3VdbeMemClearAndResize(tls, _pMem, i32(4)) != 0 {
+ func() {
+ if ((*Xsqlite3)(_p.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73168), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62538)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(1)
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(514))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = i32(2)
+ Xsqlite3_snprintf(tls, i32(3), _pMem.X5, str(62558), int32(_8_pOp.X2))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
+ *(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
+ if _sqlite3VdbeMemClearAndResize(tls, _pMem, i32(500)) != 0 {
+ func() {
+ if ((*Xsqlite3)(_p.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73179), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeListØ00__func__Ø000))), unsafe.Pointer(str(62538)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(1)
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(514))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = _displayComment(tls, _8_pOp, _8_zP4, _pMem.X5, i32(500))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(10 /* X2 */))) = uint8(i32(1))
+_48:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(136 /* X29 */))) = uint16(i32(8) - (i32(4) * (int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) - i32(1))))
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(100 /* X21 */))))) = (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr(i32(1))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
+ _rc = i32(100)
+_23:
+_21:
+ return _rc
+}
+var _sqlite3VdbeListØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeListØ00__func__Ø000[0], str(62563), 16)
+}
+
+// Execute as much of a VDBE program as we can.
+// This is the core of sqlite3_step().
+func _sqlite3VdbeExec(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _nExtraDelete, _rc, _iCompare, _3_i, _3_once, _25_pcDest, _27_pcx, _45_cnt, _51_n, _51_p1, _51_p2, _55_n, _60_i, _87_n, _88_i, _113_res, _113_res2, _140_n, _140_i, _140_p1, _140_p2, _140_idx, _140_bRev, _143_k, _143_mx, _151_v1, _151_v2, _169_c, _179_p2, _179_len, _179_i, _215_nHdr, _215_nVarint, _215_nField, _215_file_format, _215_i, _215_j, _229_p1, _229_nName, _229_iSavepoint, _229_ii, _240_isTransaction, _244_isSchemaChange, _256_desiredAutoCommit, _256_iRollback, _266_iMeta, _266_iGen, _277_iMeta, _277_iDb, _277_iCookie, _282_nField, _282_p2, _282_iDb, _282_wrFlag, _295_pgno, _303_res, _303_oc, _303_nField, _303_eqOnly, _313_i, _324_alreadyExists, _324_takeJump, _324_ii, _324_res, _334_res, _340_res, _340_cnt, _356_seekResult, _356_op, _366_opflags, _377_res, _377_nKeyCol, _390_res, _394_res, _397_res, _400_res, _406_res, _414_res, _417_i, _420_iMoved, _420_iDb, _424_nChange, _430_pgno, _430_flags, _434_iDb, _445_nRoot, _445_nErr, _454_iSet, _454_exists, _458_nMem, _458_nByte, _485_n, _486_i, _496_i, _499_eNew, _499_eOld, _515_p1, _526_nArg, _526_iQuery, _526_res, _526_i, _532_res, _536_nArg, _536_i, _548_i int32
+ var _66_nByte, _73_iA, _73_iB, _94_iA, _94_iB, _215_nByte, _215_nZero, _228_nEntry, _303_iKey, _340_v, _367_iKey, _382_v, _394_sz, _408_rowid, _451_val, _479_x, _536_rowid int64
+ var _73_bIntint, _113_affinity int8
+ var _nVmStep, _nProgressLimit, _2_iPrior, _164_iAddr, _179_offset, _179_avail, _179_t, _215_serial_type, _215_len, _379_n, _546_newMax uint32
+ var _94_uA, _179_offset64, _215_nData, _334_iKey uint64
+ var _140_aPermute, _445_aRoot *int32
+ var _213_zAffinity, _215_zAffinity, _229_zName, _356_zDb, _366_zDb, _434_zMaster, _434_zSql, _445_z, _499_zFilename, _517_z, _519_zTab, _548_zTrace, _550_z, _551_z *int8
+ var _458_t unsafe.Pointer
+ var _73_rA, _73_rB float64
+ var _45_nullFlag, _73_flags, _73_type1, _73_type2, _113_flags1, _113_flags3 uint16
+ var _resetSchemaOnFault, _encoding, _11_opProperty, _94_op, _514_isWriteLock, _538_vtabOnConflict, _557_opProperty uint8
+ var _179_zData, _179_zHdr, _179_zEndHdr, _215_zNewRecord *uint8
+ var _179_aOffset *uint32
+ var _496_aRes [3]int32
+ var _db *Xsqlite3
+ var _266_pBt, _282_pX, _499_pBt, _509_pBt, _546_pBt *XBtree
+ var _278_pDb, _282_pDb, _430_pDb *XDb
+ var _499_pPager *XPager
+ var _356_pTab, _366_pTab *XTable
+ var _528_sContext Xsqlite3_context
+ var _87_pCtx, _88_pCtx, _485_pCtx, _486_pCtx *Xsqlite3_context
+ var _179_sMem, _486_t, _519_sMem XMem
+ var _aMem, _pIn1, _pIn2, _pIn3, _pOut, _49_pVar, _60_pMem, _179_pDest, _179_pReg, _215_pRec, _215_pData0, _215_pLast, _340_pMem, _356_pData, _356_pKey, _445_pnErr, _458_pRt, _458_pMem, _458_pEnd, _465_pIn, _486_pMem, _493_pMem, _496_pMem, _526_pQuery, _526_pArgc, _528_pDest, _535_pName, _536_pX *XMem
+ var _526_apArg, _536_apArg **XMem
+ var _522_pVCur, _526_pVCur *Xsqlite3_file
+ var _179_pCrsr, _228_pCrsr, _334_pCrsr, _379_pCrsr, _390_pCrsr, _394_pCrsr, _397_pCrsr, _406_pCrsr *XBtCursor
+ var _324_pFree, _324_pIdxKey *XUnpackedRecord
+ var _303_r, _324_r, _406_r, _414_r XUnpackedRecord
+ var _140_pKeyInfo, _282_pKeyInfo, _292_pKeyInfo *XKeyInfo
+ var _356_x, _403_x XBtreePayload
+ var _27_pFrame, _340_pFrame, _458_pFrame, _465_pFrame, _473_pFrame *XVdbeFrame
+ var _aOp, _pOp, _pOrigOp, _24_pCaller *XVdbeOp
+ var _458_pProgram *XSubProgram
+ var _518_pVTab *XVTable
+ var _140_pColl *XCollSeq
+ var _382_pVtab, _522_pVtab, _526_pVtab, _528_pVtab, _532_pVtab, _535_pVtab, _536_pVtab *Xsqlite3_vtab
+ var _179_pC, _282_pCur, _291_pOrig, _291_pCx, _292_pCx, _298_pCx, _299_pC, _301_pCx, _303_pC, _324_pC, _334_pC, _340_pC, _356_pC, _366_pC, _377_pC, _378_pC, _379_pC, _382_pC, _388_pC, _390_pC, _394_pC, _397_pC, _400_pC, _403_pC, _406_pC, _408_pC, _408_pTabCur, _414_pC, _427_pC, _522_pCur, _526_pCur, _528_pCur, _532_pCur *XVdbeCursor
+ var _382_pModule, _522_pModule, _526_pModule, _528_pModule, _532_pModule, _536_pModule *Xsqlite3_module
+ var _229_pNew, _229_pSavepoint, _229_pTmp *XSavepoint
+ var _434_initData XInitData
+ var _550_x func(*crt.TLS, unsafe.Pointer, *int8)
+ _aOp = (*XVdbeOp)(_p.X17)
+ _pOp = _aOp
+ _nExtraDelete = i32(0)
+ _rc = i32(0)
+ _db = (*Xsqlite3)(_p.X0)
+ _resetSchemaOnFault = u8(0)
+ _encoding = _db.X14
+ _iCompare = i32(0)
+ _nVmStep = u32(0)
+ _nProgressLimit = u32(0)
+ _aMem = (*XMem)(_p.X18)
+ _pIn1 = nil
+ _pIn2 = nil
+ _pIn3 = nil
+ _pOut = nil
+ func() {
+ if (_p.X5) != uint32(i32(770837923)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78878), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62430)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeEnter(tls, _p)
+ if (_p.X10) == i32(7) {
+ goto _no_mem
+ }
+ func() {
+ if (_p.X10) != i32(0) && ((_p.X10)&i32(255)) != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78885), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62579)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((uint32((_p.X32)>>uint(i32(8)))<>uint(i32(31))) == 0 && int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62625)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X13 */))) = int64(i32(0))
+ func() {
+ if int32((uint32((_p.X32)>>uint(i32(2)))<>uint(i32(30))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78888), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62656)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(100 /* X21 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(8 /* X2 */))) = i32(0)
+ if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) != 0 {
+ goto _abort_due_to_interrupt
+ }
+ if (_db.X61) != nil {
+ _2_iPrior = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(152 /* X35 */))))) + 4*uintptr(i32(4))))
+ func() {
+ if uint32(i32(0)) >= (_db.X63) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62670)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nProgressLimit = (_db.X63) - (_2_iPrior % (_db.X63))
+ }
+ _sqlite3BeginBenignMalloc(tls)
+ if (_p.X9) != i32(0) || (((*Xsqlite3)(_p.X0).X6)&i32(134218753)) == i32(0) {
+ goto _16
+ }
+ _3_once = i32(1)
+ _sqlite3VdbePrintSql(tls, _p)
+ if (((*Xsqlite3)(_p.X0).X6) & i32(1024)) == 0 {
+ goto _17
+ }
+ crt.Xprintf(tls, str(62691))
+ _3_i = i32(0)
+_18:
+ if _3_i >= (_p.X27) {
+ goto _21
+ }
+ _sqlite3VdbePrintOp(tls, (*crt.XFILE)(Xstdout), _3_i, (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_3_i))))
+ _3_i += 1
+ goto _18
+_21:
+_17:
+ if (((*Xsqlite3)(_p.X0).X6) & i32(134217728)) == 0 {
+ goto _22
+ }
+ _3_i = i32(0)
+_23:
+ if _3_i >= (_p.X27) {
+ goto _26
+ }
+ if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_3_i))).X0) != i32(165) {
+ goto _27
+ }
+ if _3_once != 0 {
+ crt.Xprintf(tls, str(62714))
+ }
+ crt.Xprintf(tls, str(62732), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_3_i))))) + uintptr(16 /* X6 */)))))))
+ _3_once = i32(0)
+_27:
+ _3_i += 1
+ goto _23
+_26:
+_22:
+ if (((*Xsqlite3)(_p.X0).X6) & i32(1)) != 0 {
+ crt.Xprintf(tls, str(62736))
+ }
+_16:
+ _sqlite3EndBenignMalloc(tls)
+ _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(_p.X9)))
+_30:
+ func() {
+ if _rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(15012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if uintptr(unsafe.Pointer(_pOp)) < uintptr(unsafe.Pointer(_aOp)) || uintptr(unsafe.Pointer(_pOp)) >= uintptr(unsafe.Pointer((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(_p.X27))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78932), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62749)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nVmStep += 1
+ if ((_db.X6) & i32(1)) != 0 {
+ _sqlite3VdbePrintOp(tls, (*crt.XFILE)(Xstdout), int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer(_aOp)))/24), _pOp)
+ }
+ _11_opProperty = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeProperty)) + 1*uintptr(_pOp.X0)))
+ if (int32(_11_opProperty) & i32(2)) == i32(0) {
+ goto _40
+ }
+ func() {
+ if (_pOp.X3) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78967), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62778)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pOp.X3) > (((_p.X6) + i32(1)) - (_p.X7)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62788)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))).X1) & i32(128)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78969), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62822)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _sqlite3VdbeCheckMemInvariants(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3)))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78970), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62849)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X3, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))))
+ }
+_40:
+ if (int32(_11_opProperty) & i32(4)) == i32(0) {
+ goto _50
+ }
func() {
if (_pOp.X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78988), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78974), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62895)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78989), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62905)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeMemAboutToChange(tls, _p, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))))
-_70:
- if (int32(_11_opProperty) & i32(32)) == i32(0) {
- goto _75
+ func() {
+ if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))).X1) & i32(128)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78976), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62939)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _sqlite3VdbeCheckMemInvariants(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4)))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78977), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62966)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X4, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))))
+ }
+_50:
+ if (int32(_11_opProperty) & i32(8)) == i32(0) {
+ goto _60
}
-
func() {
if (_pOp.X5) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78993), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63396)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63012)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78982), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63022)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeMemAboutToChange(tls, _p, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))
-_75:
+ func() {
+ if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))).X1) & i32(128)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78983), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63056)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _sqlite3VdbeCheckMemInvariants(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5)))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78984), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63083)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))
+ }
+_60:
+ if (int32(_11_opProperty) & i32(16)) != i32(0) {
+ func() {
+ if (_pOp.X4) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78988), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62895)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pOp.X4) > (((_p.X6) + i32(1)) - (_p.X7)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78989), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62905)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeMemAboutToChange(tls, _p, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))))
+ }
+ if (int32(_11_opProperty) & i32(32)) != i32(0) {
+ func() {
+ if (_pOp.X5) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78993), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pOp.X5) > (((_p.X6) + i32(1)) - (_p.X7)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63022)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeMemAboutToChange(tls, _p, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))
+ }
_pOrigOp = _pOp
switch int32(_pOp.X0) {
case i32(0):
@@ -53011,13 +48171,9 @@ _81:
_jump_to_p2_and_check_for_interrupt:
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_pOp.X4)-i32(1))))
_check_for_interrupt:
- if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) == 0 {
- goto _244
+ if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) != 0 {
+ goto _abort_due_to_interrupt
}
-
- goto _abort_due_to_interrupt
-
-_244:
if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{(_db.X61)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
@@ -53025,239 +48181,199 @@ _244:
}{nil})) || _nVmStep < _nProgressLimit {
goto _246
}
-
func() {
if (_db.X63) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79076), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79076), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63129)))
crt.X__builtin_abort(tls)
}
}()
_nProgressLimit = (_nVmStep + (_db.X63)) - (_nVmStep % (_db.X63))
- if (_db.X61)(tls, _db.X62) == 0 {
- goto _249
+ if (_db.X61)(tls, _db.X62) != 0 {
+ _rc = i32(9)
+ goto _abort_due_to_error
}
-
- _rc = i32(9)
- goto _abort_due_to_error
-
-_249:
_246:
goto _250
-
_82:
func() {
if (_pOp.X3) <= i32(0) || (_pOp.X3) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79094), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79094), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63149)))
crt.X__builtin_abort(tls)
}
}()
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if bool2int((int32(_pIn1.X1)&i32(9312)) != i32(0)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79096), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79096), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63196)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemAboutToChange(tls, _p, _pIn1)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) = int64(int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24))
- if ((_db.X6) & i32(1)) == 0 {
- goto _256
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) = int64(int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24))
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X3, _pIn1)
}
-
- _registerTrace(tls, _pOp.X3, _pIn1)
-_256:
_jump_to_p2:
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_pOp.X4)-i32(1))))
goto _250
-
_83:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if int32(_pIn1.X1) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63220)))
crt.X__builtin_abort(tls)
}
}()
- _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))))
+ _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(8 /* X1 */))) = uint16(i32(128))
goto _250
-
_84:
func() {
if (_pOp.X3) <= i32(0) || (_pOp.X3) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63149)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) < i32(0) || (_pOp.X4) >= (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79135), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63636)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79135), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63241)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) < i32(0) || (_pOp.X5) >= (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79136), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63668)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79136), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63270)))
crt.X__builtin_abort(tls)
}
}()
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if (int32(_pOut.X1) & i32(9312)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79138), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79138), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63299)))
crt.X__builtin_abort(tls)
}
}()
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64((_pOp.X5) - i32(1))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64((_pOp.X5) - i32(1))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- if (_pOp.X4) == 0 {
- goto _270
+ if (_pOp.X4) != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_270:
goto _250
-
_85:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if int32(_pIn1.X1) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79156), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63612)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79156), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63220)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) < int64(i32(0)) || (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) >= int64(_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79157), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63724)))
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) < int64(i32(0)) || (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) >= int64(_p.X27) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79157), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63321)))
crt.X__builtin_abort(tls)
}
}()
- _24_pCaller = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))))
+ _24_pCaller = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))))
func() {
if int32(_24_pCaller.X0) != i32(16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63760)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63354)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_24_pCaller.X4) < i32(0) || (_24_pCaller.X4) >= (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63788)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63380)))
crt.X__builtin_abort(tls)
}
}()
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_24_pCaller.X4)-i32(1))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(8 /* X1 */))) = uint16(i32(128))
goto _250
-
_86:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if bool2int((int32(_pIn1.X1)&i32(9312)) != i32(0)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63196)))
crt.X__builtin_abort(tls)
}
}()
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- _25_pcDest = int32(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) = int64(int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24))
- if ((_db.X6) & i32(1)) == 0 {
- goto _283
+ _25_pcDest = int32(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) = int64(int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24))
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X3, _pIn1)
}
-
- _registerTrace(tls, _pOp.X3, _pIn1)
-_283:
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(_25_pcDest)))
goto _250
-
_87:
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
- if (int32(_pIn3.X1) & i32(1)) != i32(0) {
- goto _284
+ if (int32(_pIn3.X1) & i32(1)) == i32(0) {
+ goto _250
}
-
- goto _250
-
-_284:
_88:
_27_pcx = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
if (_pOp.X3) != i32(0) || (*XVdbeFrame)(_p.X38) == nil {
goto _286
}
-
_27_pFrame = (*XVdbeFrame)(_p.X38)
*(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(180 /* X38 */))))) = (*XVdbeFrame)(_27_pFrame.X1)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(188 /* X40 */))) -= 1
_sqlite3VdbeSetChanges(tls, _db, _p.X11)
_27_pcx = _sqlite3VdbeFrameRestore(tls, _27_pFrame)
- if (_pOp.X4) != i32(4) {
- goto _287
+ if (_pOp.X4) == i32(4) {
+ _27_pcx = ((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_27_pcx))).X4) - i32(1)
}
-
- _27_pcx = ((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_27_pcx))).X4) - i32(1)
-_287:
_aOp = (*XVdbeOp)(_p.X17)
_aMem = (*XMem)(_p.X18)
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(_27_pcx)))
goto _250
-
_286:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _pOp.X3
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(_pOp.X4)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = _27_pcx
func() {
if int32(_pOp.X2) > i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79263), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63828)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79263), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63417)))
crt.X__builtin_abort(tls)
}
}()
if (_p.X10) == 0 {
goto _290
}
-
if (_pOp.X2) == 0 {
goto _291
}
-
- _sqlite3VdbeError(tls, _p, str(63840), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VdbeExecØ00azTypeØ001)) + 4*uintptr(int32(_pOp.X2)-i32(1))))))
- if (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
- goto _292
+ _sqlite3VdbeError(tls, _p, str(63428), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VdbeExecØ00azTypeØ001)) + 4*uintptr(int32(_pOp.X2)-i32(1))))))
+ if (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = _sqlite3MPrintf(tls, _db, str(63449), unsafe.Pointer(_p.X22), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = _sqlite3MPrintf(tls, _db, str(63864), unsafe.Pointer(_p.X22), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
-_292:
goto _293
-
_291:
- _sqlite3VdbeError(tls, _p, str(24316), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
+ _sqlite3VdbeError(tls, _p, str(24576), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
_293:
- Xsqlite3_log(tls, _pOp.X3, str(63872), _27_pcx, unsafe.Pointer(_p.X36), unsafe.Pointer(_p.X22))
+ Xsqlite3_log(tls, _pOp.X3, str(63456), _27_pcx, unsafe.Pointer(_p.X36), unsafe.Pointer(_p.X22))
_290:
_rc = _sqlite3VdbeHalt(tls, _p)
func() {
if _rc != i32(5) && _rc != i32(0) && _rc != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79282), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79282), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63480)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(5) {
- goto _298
+ if _rc == i32(5) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(5)
+ goto _299
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(5)
- goto _299
-
-_298:
func() {
if _rc != i32(0) && ((_p.X10)&i32(255)) != i32(19) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79286), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63952)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79286), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63533)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _rc != i32(0) && (_db.X77) <= int64(i32(0)) && (_db.X78) <= int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79287), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64004)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79287), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63582)))
crt.X__builtin_abort(tls)
}
}()
@@ -53269,72 +48385,63 @@ _298:
}()
_299:
goto _vdbe_return
-
_89:
_pOut = _out2Prerelease(tls, _p, _pOp)
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_pOp.X3)
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_pOp.X3)
goto _250
-
_90:
_pOut = _out2Prerelease(tls, _p, _pOp)
func() {
- if (*(**int64)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79312), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64068)))
+ if (*(**int64)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79312), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63645)))
crt.X__builtin_abort(tls)
}
}()
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = *(*(**int64)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = *(*(**int64)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
goto _250
-
_91:
_pOut = _out2Prerelease(tls, _p, _pOp)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(8))
func() {
- if _sqlite3IsNaN(tls, *(*(**float64)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79327), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64084)))
+ if _sqlite3IsNaN(tls, *(*(**float64)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79327), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63661)))
crt.X__builtin_abort(tls)
}
}()
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = *(*(**float64)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = *(*(**float64)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
goto _250
-
_92:
func() {
- if (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79342), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64116)))
+ if (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79342), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63691)))
crt.X__builtin_abort(tls)
}
}()
_pOut = _out2Prerelease(tls, _p, _pOp)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(58))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
if int32(_encoding) == i32(1) {
goto _315
}
-
- _rc = _sqlite3VdbeMemSetStr(tls, _pOut, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), i32(-1), uint8(i32(1)), nil)
+ _rc = _sqlite3VdbeMemSetStr(tls, _pOut, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), i32(-1), uint8(i32(1)), nil)
func() {
if _rc != i32(0) && _rc != i32(18) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79350), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64132)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79350), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63704)))
crt.X__builtin_abort(tls)
}
}()
- if i32(0) == _sqlite3VdbeChangeEncoding(tls, _pOut, int32(_encoding)) {
- goto _319
+ if i32(0) != _sqlite3VdbeChangeEncoding(tls, _pOut, int32(_encoding)) {
+ goto _no_mem
}
-
- goto _no_mem
-
-_319:
func() {
if (_pOut.X7) <= i32(0) || (_pOut.X6) != (_pOut.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79352), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79352), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63739)))
crt.X__builtin_abort(tls)
}
}()
func() {
if bool2int((int32(_pOut.X1)&i32(9312)) != i32(0)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79353), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79353), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63782)))
crt.X__builtin_abort(tls)
}
}()
@@ -53342,79 +48449,67 @@ _319:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) | i32(2048))
- sink12 = *p
+ sink14 = *p
}
- if int32(_pOp.X1) != i32(-1) {
- goto _325
+ if int32(_pOp.X1) == i32(-1) {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
-_325:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-1))
- *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = _pOut.X5
+ *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = _pOut.X5
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = _pOut.X4
_315:
- if (_pOp.X3) <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
- goto _326
+ if (_pOp.X3) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
+ goto _too_big
}
-
- goto _too_big
-
-_326:
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79368), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79368), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
_93:
func() {
- if (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64116)))
+ if (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63691)))
crt.X__builtin_abort(tls)
}
}()
_pOut = _out2Prerelease(tls, _p, _pOp)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(2562))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(16 /* X5 */))) = *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(16 /* X5 */))) = *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = _pOp.X3
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(10 /* X2 */))) = _encoding
if (_pOp.X5) <= i32(0) {
goto _331
}
-
func() {
if (_pOp.X5) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79394), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79394), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63022)))
crt.X__builtin_abort(tls)
}
}()
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
func() {
if (int32(_pIn3.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63806)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) != int64(_pOp.X2) {
- goto _336
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) == int64(_pOp.X2) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(2576))
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(2576))
-_336:
_331:
goto _250
-
_94:
_pOut = _out2Prerelease(tls, _p, _pOp)
_45_cnt = (_pOp.X5) - (_pOp.X4)
func() {
if (_pOp.X5) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79420), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79420), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63022)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = store12(&_45_nullFlag, uint16(func() int32 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = store14(&_45_nullFlag, uint16(func() int32 {
if (_pOp.X3) != 0 {
return i32(257)
}
@@ -53422,82 +48517,70 @@ _94:
}()))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = i32(0)
_341:
- if _45_cnt <= i32(0) {
- goto _342
+ if _45_cnt > i32(0) {
+ *(*uintptr)(unsafe.Pointer(&_pOut)) += uintptr(48)
+ _sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
+ _sqlite3VdbeMemSetNull(tls, _pOut)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = _45_nullFlag
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = i32(0)
+ _45_cnt -= 1
+ goto _341
}
-
- *(*uintptr)(unsafe.Pointer(&_pOut)) += uintptr(48)
- _sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
- _sqlite3VdbeMemSetNull(tls, _pOut)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = _45_nullFlag
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = i32(0)
- _45_cnt -= 1
- goto _341
-
-_342:
goto _250
-
_95:
func() {
if (_pOp.X3) <= i32(0) || (_pOp.X3) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79443), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79443), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63149)))
crt.X__builtin_abort(tls)
}
}()
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-160)) | i32(1))
goto _250
-
_96:
func() {
if (_pOp.X3) > i32(1000000000) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79456), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64260)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79456), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63828)))
crt.X__builtin_abort(tls)
}
}()
_pOut = _out2Prerelease(tls, _p, _pOp)
- _sqlite3VdbeMemSetStr(tls, _pOut, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), _pOp.X3, uint8(i32(0)), nil)
+ _sqlite3VdbeMemSetStr(tls, _pOut, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), _pOp.X3, uint8(i32(0)), nil)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(10 /* X2 */))) = _encoding
goto _250
-
_97:
func() {
if (_pOp.X3) <= i32(0) || (_pOp.X3) > int32(_p.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79475), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64292)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79475), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63857)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil && (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != _sqlite3VListNumToName(tls, _p.X25, _pOp.X3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79476), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64324)))
+ if (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil && (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != _sqlite3VListNumToName(tls, _p.X25, _pOp.X3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79476), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63887)))
crt.X__builtin_abort(tls)
}
}()
_49_pVar = (*XMem)(unsafe.Pointer(uintptr(_p.X24) + 48*uintptr((_pOp.X3)-i32(1))))
- if _sqlite3VdbeMemTooBig(tls, _49_pVar) == 0 {
- goto _354
+ if _sqlite3VdbeMemTooBig(tls, _49_pVar) != 0 {
+ goto _too_big
}
-
- goto _too_big
-
-_354:
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_sqlite3VdbeMemShallowCopy(tls, _pOut, _49_pVar, i32(2048))
goto _250
-
_98:
_51_n = _pOp.X5
_51_p1 = _pOp.X3
_51_p2 = _pOp.X4
func() {
if _51_n <= i32(0) || _51_p1 <= i32(0) || _51_p2 <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79504), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64392)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79504), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63955)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_51_p1+_51_n) > _51_p2 && (_51_p2+_51_n) > _51_p1 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79505), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79505), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63975)))
crt.X__builtin_abort(tls)
}
}()
@@ -53506,326 +48589,243 @@ _98:
_362:
func() {
if uintptr(unsafe.Pointer(_pOut)) > uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(((_p.X6)+i32(1))-(_p.X7)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79510), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64436)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79510), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63996)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer(_pIn1)) > uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(((_p.X6)+i32(1))-(_p.X7)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79511), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64476)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79511), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64034)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pIn1.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79512), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64516)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79512), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64072)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
_sqlite3VdbeMemMove(tls, _pOut, _pIn1)
- if uintptr(unsafe.Pointer((*XMem)(_pOut.X11))) < uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_51_p1))))) || uintptr(unsafe.Pointer((*XMem)(_pOut.X11))) >= uintptr(unsafe.Pointer(_pOut)) {
- goto _370
- }
-
- {
- p := (**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(40 /* X11 */)))))
- *p = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 48*uintptr((_pOp.X4)-_51_p1)))
- sink18 = *p
+ if (uintptr(unsafe.Pointer((*XMem)(_pOut.X11))) >= uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_51_p1)))))) && (uintptr(unsafe.Pointer((*XMem)(_pOut.X11))) < uintptr(unsafe.Pointer(_pOut))) {
+ {
+ p := (**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(40 /* X11 */)))))
+ *p = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 48*uintptr((_pOp.X4)-_51_p1)))
+ sink20 = *p
+ }
}
-_370:
- if (int32(_pOut.X1)&i32(4096)) == i32(0) || _sqlite3VdbeMemMakeWriteable(tls, _pOut) == 0 {
- goto _372
+ if ((int32(_pOut.X1) & i32(4096)) != i32(0)) && _sqlite3VdbeMemMakeWriteable(tls, _pOut) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_372:
- if ((_db.X6) & i32(1)) == 0 {
- goto _373
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, postInc1(&_51_p2, int32(1)), _pOut)
}
-
- _registerTrace(tls, postInc1(&_51_p2, int32(1)), _pOut)
-_373:
*(*uintptr)(unsafe.Pointer(&_pIn1)) += uintptr(48)
*(*uintptr)(unsafe.Pointer(&_pOut)) += uintptr(48)
if preInc1(&_51_n, -1) != 0 {
goto _362
}
-
goto _250
-
_99:
_55_n = _pOp.X5
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
func() {
if _pOut == _pIn1 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79542), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64536)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79542), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64089)))
crt.X__builtin_abort(tls)
}
}()
_376:
_sqlite3VdbeMemShallowCopy(tls, _pOut, _pIn1, i32(4096))
- if (int32(_pOut.X1)&i32(4096)) == i32(0) || _sqlite3VdbeMemMakeWriteable(tls, _pOut) == 0 {
- goto _379
+ if ((int32(_pOut.X1) & i32(4096)) != i32(0)) && _sqlite3VdbeMemMakeWriteable(tls, _pOut) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_379:
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(40 /* X11 */))))) = nil
- if ((_db.X6) & i32(1)) == 0 {
- goto _380
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, ((_pOp.X4)+(_pOp.X5))-_55_n, _pOut)
}
-
- _registerTrace(tls, ((_pOp.X4)+(_pOp.X5))-_55_n, _pOut)
-_380:
- if postInc1(&_55_n, int32(-1)) != i32(0) {
- goto _381
+ if postInc1(&_55_n, int32(-1)) == i32(0) {
+ goto _377
}
-
- goto _377
-
-_381:
*(*uintptr)(unsafe.Pointer(&_pOut)) += uintptr(48)
*(*uintptr)(unsafe.Pointer(&_pIn1)) += uintptr(48)
goto _376
-
_377:
goto _250
-
_100:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
func() {
if _pOut == _pIn1 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79573), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64536)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79573), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64089)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemShallowCopy(tls, _pOut, _pIn1, i32(4096))
- if (*XMem)(_pOut.X11) != nil {
- goto _384
+ if (*XMem)(_pOut.X11) == nil {
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(40 /* X11 */))))) = _pIn1
}
-
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(40 /* X11 */))))) = _pIn1
-_384:
goto _250
-
_101:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if (int32(_pIn1.X1) & i32(4)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64100)))
crt.X__builtin_abort(tls)
}
}()
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
- _sqlite3VdbeMemSetInt64(tls, _pOut, *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))
+ _sqlite3VdbeMemSetInt64(tls, _pOut, *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))))
goto _250
-
_102:
func() {
if int32(_p.X29) != (_pOp.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64576)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64127)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79610), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79610), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62778)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_pOp.X3) + (_pOp.X4)) > ((((_p.X6) + i32(1)) - (_p.X7)) + i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64600)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64150)))
crt.X__builtin_abort(tls)
}
}()
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ if ((*(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
- }{(_db.X61)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(_db.X61)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
- }{nil})) || _nVmStep < _nProgressLimit || (_db.X61)(tls, _db.X62) == i32(0) {
- goto _395
- }
-
- _rc = i32(9)
- goto _abort_due_to_error
-
-_395:
- if i32(0) == store1(&_rc, _sqlite3VdbeCheckFk(tls, _p, i32(0))) {
- goto _396
+ }{nil}))) && (_nVmStep >= _nProgressLimit)) && ((_db.X61)(tls, _db.X62) != i32(0)) {
+ _rc = i32(9)
+ goto _abort_due_to_error
+ }
+ if i32(0) != store1(&_rc, _sqlite3VdbeCheckFk(tls, _p, i32(0))) {
+ func() {
+ if ((_db.X6) & i32(128)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79629), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64194)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((uint32((_p.X32)>>uint(i32(6))) << uint(i32(31))) >> uint(i32(31))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79630), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64221)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _abort_due_to_error
}
-
- func() {
- if ((_db.X6) & i32(128)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79629), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64644)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if ((uint32((_p.X32)>>uint(i32(6))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79630), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64672)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _abort_due_to_error
-
-_396:
func() {
if (_p.X12) != i32(0) && ((_db.X6)&i32(128)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64692)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64240)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3VdbeCloseStatement(tls, _p, i32(1))
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79651), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79651), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X8 */))) = ((_p.X8) + uint32(i32(2))) | uint32(i32(1))
- _60_pMem = store18((**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(100 /* X21 */))))), (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))))
+ _60_pMem = store20((**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(100 /* X21 */))))), (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))))
_60_i = i32(0)
_406:
if _60_i >= (_pOp.X4) {
goto _409
}
-
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79662), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64740)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79662), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64287)))
crt.X__builtin_abort(tls)
}
}()
- if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))).X1)&i32(4096)) == i32(0) || _sqlite3VdbeMemMakeWriteable(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i)))) == 0 {
- goto _413
+ if ((int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))).X1) & i32(4096)) != i32(0)) && _sqlite3VdbeMemMakeWriteable(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i)))) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_413:
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))).X1)&i32(4096)) != i32(0) && (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))).X1)&i32(18)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79664), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79664), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64308)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemNulTerminate(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))))
- if ((_db.X6) & i32(1)) == 0 {
- goto _417
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, (_pOp.X3)+_60_i, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))))
}
-
- _registerTrace(tls, (_pOp.X3)+_60_i, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_60_pMem))+48*uintptr(_60_i))))
-_417:
_60_i += 1
goto _406
-
_409:
- if (_db.X17) == 0 {
- goto _418
+ if (_db.X17) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_418:
- if (int32(_db.X24) & i32(4)) == 0 {
- goto _419
+ if (int32(_db.X24) & i32(4)) != 0 {
+ (_db.X41)(tls, uint32(i32(4)), _db.X42, (unsafe.Pointer)(_p), nil)
}
-
- (_db.X41)(tls, uint32(i32(4)), _db.X42, (unsafe.Pointer)(_p), nil)
-_419:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer(_aOp)))/24) + i32(1)
_rc = i32(100)
goto _vdbe_return
-
_103:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
func() {
if _pIn1 == _pOut {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64382)))
crt.X__builtin_abort(tls)
}
}()
- if ((int32(_pIn1.X1) | int32(_pIn2.X1)) & i32(1)) == 0 {
- goto _422
+ if ((int32(_pIn1.X1) | int32(_pIn2.X1)) & i32(1)) != 0 {
+ _sqlite3VdbeMemSetNull(tls, _pOut)
+ goto _250
}
-
- _sqlite3VdbeMemSetNull(tls, _pOut)
- goto _250
-
-_422:
if func() int32 {
if (int32(_pIn1.X1) & i32(16384)) != 0 {
return _sqlite3VdbeMemExpandBlob(tls, _pIn1)
}
return i32(0)
- }() == 0 && func() int32 {
+ }() != 0 || func() int32 {
if (int32(_pIn2.X1) & i32(16384)) != 0 {
return _sqlite3VdbeMemExpandBlob(tls, _pIn2)
}
return i32(0)
- }() == 0 {
- goto _428
+ }() != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_428:
- if (int32(_pIn1.X1)&i32(18)) != i32(0) || _sqlite3VdbeMemStringify(tls, _pIn1, _encoding, uint8(i32(0))) == 0 {
- goto _430
+ if ((int32(_pIn1.X1) & i32(18)) == i32(0)) && _sqlite3VdbeMemStringify(tls, _pIn1, _encoding, uint8(i32(0))) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_430:
- if (int32(_pIn2.X1)&i32(18)) != i32(0) || _sqlite3VdbeMemStringify(tls, _pIn2, _encoding, uint8(i32(0))) == 0 {
- goto _432
+ if ((int32(_pIn2.X1) & i32(18)) == i32(0)) && _sqlite3VdbeMemStringify(tls, _pIn2, _encoding, uint8(i32(0))) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_432:
_66_nByte = int64((_pIn1.X4) + (_pIn2.X4))
- if _66_nByte <= int64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
- goto _433
+ if _66_nByte > int64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
+ goto _too_big
}
-
- goto _too_big
-
-_433:
- if _sqlite3VdbeMemGrow(tls, _pOut, int32(_66_nByte)+i32(2), bool2int(_pOut == _pIn2)) == 0 {
- goto _434
+ if _sqlite3VdbeMemGrow(tls, _pOut, int32(_66_nByte)+i32(2), bool2int(_pOut == _pIn2)) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_434:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(2))
- if _pOut == _pIn2 {
- goto _435
+ if _pOut != _pIn2 {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pOut.X5), (unsafe.Pointer)(_pIn2.X5), uint32(_pIn2.X4))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pOut.X5), (unsafe.Pointer)(_pIn2.X5), uint32(_pIn2.X4))
-_435:
crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut.X5))+1*uintptr(_pIn2.X4)))), (unsafe.Pointer)(_pIn1.X5), uint32(_pIn1.X4))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut.X5)) + 1*uintptr(_66_nByte))) = int8(i32(0))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut.X5)) + 1*uintptr(_66_nByte+int64(i32(1))))) = int8(i32(0))
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) | i32(512))
- sink12 = *p
+ sink14 = *p
}
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = int32(_66_nByte)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(10 /* X2 */))) = _encoding
goto _250
-
_104:
_105:
_106:
@@ -53840,9 +48840,8 @@ _108:
if ((int32(_73_type1) & int32(_73_type2)) & i32(4)) == i32(0) {
goto _436
}
-
- _73_iA = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
- _73_iB = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */)))))
+ _73_iA = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
+ _73_iB = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */)))))
_73_bIntint = int8(i32(1))
switch int32(_pOp.X0) {
case i32(88):
@@ -53858,91 +48857,54 @@ _108:
}
_438:
- if _sqlite3AddInt64(tls, &_73_iB, _73_iA) == 0 {
- goto _443
+ if _sqlite3AddInt64(tls, &_73_iB, _73_iA) != 0 {
+ goto _fp_math
}
-
- goto _fp_math
-
-_443:
goto _444
-
_439:
- if _sqlite3SubInt64(tls, &_73_iB, _73_iA) == 0 {
- goto _445
+ if _sqlite3SubInt64(tls, &_73_iB, _73_iA) != 0 {
+ goto _fp_math
}
-
- goto _fp_math
-
-_445:
goto _444
-
_440:
- if _sqlite3MulInt64(tls, &_73_iB, _73_iA) == 0 {
- goto _446
+ if _sqlite3MulInt64(tls, &_73_iB, _73_iA) != 0 {
+ goto _fp_math
}
-
- goto _fp_math
-
-_446:
goto _444
-
_441:
- if _73_iA != int64(i32(0)) {
- goto _447
+ if _73_iA == int64(i32(0)) {
+ goto _arithmetic_result_is_null
}
-
- goto _arithmetic_result_is_null
-
-_447:
- if _73_iA != int64(i32(-1)) || _73_iB != i64(-9223372036854775808) {
- goto _449
+ if (_73_iA == int64(i32(-1))) && (_73_iB == i64(-9223372036854775808)) {
+ goto _fp_math
}
-
- goto _fp_math
-
-_449:
{
p := &_73_iB
*p = (*p) / _73_iA
sink6 = *p
}
goto _444
-
_442:
- if _73_iA != int64(i32(0)) {
- goto _450
+ if _73_iA == int64(i32(0)) {
+ goto _arithmetic_result_is_null
}
-
- goto _arithmetic_result_is_null
-
-_450:
- if _73_iA != int64(i32(-1)) {
- goto _451
+ if _73_iA == int64(i32(-1)) {
+ _73_iA = int64(i32(1))
}
-
- _73_iA = int64(i32(1))
-_451:
{
p := &_73_iB
*p = (*p) % _73_iA
sink6 = *p
}
goto _444
-
_444:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _73_iB
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _73_iB
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(4))
goto _452
-
_436:
- if (int32(_73_flags) & i32(1)) == i32(0) {
- goto _453
+ if (int32(_73_flags) & i32(1)) != i32(0) {
+ goto _arithmetic_result_is_null
}
-
- goto _arithmetic_result_is_null
-
-_453:
_73_bIntint = int8(i32(0))
_fp_math:
_73_rA = _sqlite3VdbeRealValue(tls, _pIn1)
@@ -53967,7 +48929,6 @@ _456:
sink4 = *p
}
goto _461
-
_457:
{
p := &_73_rB
@@ -53975,7 +48936,6 @@ _457:
sink4 = *p
}
goto _461
-
_458:
{
p := &_73_rB
@@ -53983,145 +48943,111 @@ _458:
sink4 = *p
}
goto _461
-
_459:
- if _73_rA != float64(0) {
- goto _462
+ if _73_rA == float64(0) {
+ goto _arithmetic_result_is_null
}
-
- goto _arithmetic_result_is_null
-
-_462:
{
p := &_73_rB
*p = (*p) / _73_rA
sink4 = *p
}
goto _461
-
_460:
_73_iA = int64(_73_rA)
_73_iB = int64(_73_rB)
- if _73_iA != int64(i32(0)) {
- goto _463
+ if _73_iA == int64(i32(0)) {
+ goto _arithmetic_result_is_null
}
-
- goto _arithmetic_result_is_null
-
-_463:
- if _73_iA != int64(i32(-1)) {
- goto _464
+ if _73_iA == int64(i32(-1)) {
+ _73_iA = int64(i32(1))
}
-
- _73_iA = int64(i32(1))
-_464:
_73_rB = float64(_73_iB % _73_iA)
goto _461
-
_461:
- if _sqlite3IsNaN(tls, _73_rB) == 0 {
- goto _465
+ if _sqlite3IsNaN(tls, _73_rB) != 0 {
+ goto _arithmetic_result_is_null
}
-
- goto _arithmetic_result_is_null
-
-_465:
- *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _73_rB
+ *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _73_rB
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(8))
- if ((int32(_73_type1)|int32(_73_type2))&i32(8)) != i32(0) || _73_bIntint != 0 {
- goto _467
+ if (((int32(_73_type1) | int32(_73_type2)) & i32(8)) == i32(0)) && (_73_bIntint == 0) {
+ _sqlite3VdbeIntegerAffinity(tls, _pOut)
}
-
- _sqlite3VdbeIntegerAffinity(tls, _pOut)
-_467:
_452:
goto _250
-
_arithmetic_result_is_null:
_sqlite3VdbeMemSetNull(tls, _pOut)
goto _250
-
_109:
func() {
if int32(_pOp.X1) != i32(-3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79874), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79874), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64393)))
crt.X__builtin_abort(tls)
}
}()
- if (_pOp.X3) == 0 {
- goto _470
+ if (_pOp.X3) != 0 {
+ _sqlite3VdbeMemSetInt64(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))), int64(i32(0)))
}
-
- _sqlite3VdbeMemSetInt64(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X3))), int64(i32(0)))
-_470:
goto _250
-
_110:
func() {
if int32(_pOp.X1) != i32(-4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64417)))
crt.X__builtin_abort(tls)
}
}()
_87_n = int32(_pOp.X2)
func() {
if (_pOp.X5) <= i32(0) || (_pOp.X5) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79928), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79928), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64441)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _87_n != i32(0) && ((_pOp.X4) <= i32(0) || ((_pOp.X4)+_87_n) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79929), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79929), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64488)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) >= (_pOp.X4) && (_pOp.X5) < ((_pOp.X4)+_87_n) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65012)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64549)))
crt.X__builtin_abort(tls)
}
}()
_87_pCtx = (*Xsqlite3_context)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(32)+(uint32(_87_n-i32(1))*u32(4)))))
- if _87_pCtx != nil {
- goto _483
+ if _87_pCtx == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_483:
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_87_pCtx)) + uintptr(0 /* X0 */))))) = nil
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_87_pCtx)) + uintptr(4 /* X1 */))))) = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_87_pCtx)) + uintptr(4 /* X1 */))))) = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_87_pCtx)) + uintptr(16 /* X4 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_87_pCtx)) + uintptr(12 /* X3 */))))) = _p
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_87_pCtx)) + uintptr(26 /* X8 */))) = uint8(_87_n)
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-16))
- *(**Xsqlite3_context)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _87_pCtx
+ *(**Xsqlite3_context)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _87_pCtx
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(72))
_111:
func() {
if int32(_pOp.X1) != i32(-16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79947), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79947), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64587)))
crt.X__builtin_abort(tls)
}
}()
- _88_pCtx = (*Xsqlite3_context)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _88_pCtx = (*Xsqlite3_context)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
if (*XMem)(_88_pCtx.X0) == _pOut {
goto _486
}
-
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_88_pCtx)) + uintptr(0 /* X0 */))))) = _pOut
_88_i = int32(_88_pCtx.X8) - i32(1)
_487:
if _88_i < i32(0) {
goto _490
}
-
*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_88_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_88_i))) = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr((_pOp.X4)+_88_i)))
_88_i -= 1
goto _487
-
_490:
_486:
_sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
@@ -54130,22 +49056,17 @@ _491:
if _88_i >= int32(_88_pCtx.X8) {
goto _494
}
-
func() {
if (int32((*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_88_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_88_i)))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(79963), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(79963), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64611)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _497
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, (_pOp.X4)+_88_i, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_88_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_88_i))))
}
-
- _registerTrace(tls, (_pOp.X4)+_88_i, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_88_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_88_i))))
-_497:
_88_i += 1
goto _491
-
_494:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(1))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_88_pCtx)) + uintptr(25 /* X7 */))) = uint8(i32(0))
@@ -54155,44 +49076,27 @@ _494:
if (_88_pCtx.X7) == 0 {
goto _498
}
-
- if (_88_pCtx.X5) == 0 {
- goto _499
+ if (_88_pCtx.X5) != 0 {
+ _sqlite3VdbeError(tls, _p, str(24576), unsafe.Pointer(Xsqlite3_value_text(tls, _pOut)))
+ _rc = _88_pCtx.X5
}
-
- _sqlite3VdbeError(tls, _p, str(24316), unsafe.Pointer(Xsqlite3_value_text(tls, _pOut)))
- _rc = _88_pCtx.X5
-_499:
_sqlite3VdbeDeleteAuxData(tls, _db, (**XAuxData)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(200 /* X43 */))))), _88_pCtx.X4, _pOp.X3)
- if _rc == 0 {
- goto _500
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_500:
_498:
if (int32(_pOut.X1) & i32(18)) == 0 {
goto _501
}
-
_sqlite3VdbeChangeEncoding(tls, _pOut, int32(_encoding))
- if _sqlite3VdbeMemTooBig(tls, _pOut) == 0 {
- goto _502
+ if _sqlite3VdbeMemTooBig(tls, _pOut) != 0 {
+ goto _too_big
}
-
- goto _too_big
-
-_502:
_501:
- if ((_db.X6) & i32(1)) == 0 {
- goto _503
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, _pOut)
}
-
- _registerTrace(tls, _pOp.X5, _pOut)
-_503:
goto _250
-
_112:
_113:
_114:
@@ -54200,166 +49104,125 @@ _115:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
- if ((int32(_pIn1.X1) | int32(_pIn2.X1)) & i32(1)) == 0 {
- goto _504
+ if ((int32(_pIn1.X1) | int32(_pIn2.X1)) & i32(1)) != 0 {
+ _sqlite3VdbeMemSetNull(tls, _pOut)
+ goto _250
}
-
- _sqlite3VdbeMemSetNull(tls, _pOut)
- goto _250
-
-_504:
_94_iA = _sqlite3VdbeIntValue(tls, _pIn2)
_94_iB = _sqlite3VdbeIntValue(tls, _pIn1)
_94_op = _pOp.X0
- if int32(_94_op) != i32(84) {
- goto _505
- }
-
- {
- p := &_94_iA
- *p = (*p) & _94_iB
- sink6 = *p
- }
- goto _506
-
-_505:
- if int32(_94_op) != i32(85) {
- goto _507
+ if int32(_94_op) == i32(84) {
+ {
+ p := &_94_iA
+ *p = (*p) & _94_iB
+ sink6 = *p
+ }
+ goto _506
}
-
- {
- p := &_94_iA
- *p = (*p) | _94_iB
- sink6 = *p
+ if int32(_94_op) == i32(85) {
+ {
+ p := &_94_iA
+ *p = (*p) | _94_iB
+ sink6 = *p
+ }
+ goto _508
}
- goto _508
-
-_507:
if _94_iB == int64(i32(0)) {
goto _509
}
-
func() {
if int32(_94_op) != i32(87) && int32(_94_op) != i32(86) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65104)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64637)))
crt.X__builtin_abort(tls)
}
}()
- if _94_iB >= int64(i32(0)) {
- goto _513
+ if _94_iB < int64(i32(0)) {
+ i32(0)
+ _94_op = uint8(i32(173) - int32(_94_op))
+ _94_iB = func() int64 {
+ if _94_iB > int64(i32(-64)) {
+ return (-_94_iB)
+ }
+ return int64(i32(64))
+ }()
}
-
- i32(0)
- _94_op = uint8(i32(173) - int32(_94_op))
- _94_iB = func() int64 {
- if _94_iB > int64(i32(-64)) {
- return (-_94_iB)
- }
- return int64(i32(64))
- }()
-_513:
- if _94_iB < int64(i32(64)) {
- goto _516
+ if _94_iB >= int64(i32(64)) {
+ _94_iA = int64(func() int32 {
+ if (_94_iA >= int64(i32(0))) || (int32(_94_op) == i32(86)) {
+ return i32(0)
+ }
+ return i32(-1)
+ }())
+ goto _520
}
-
- _94_iA = int64(func() int32 {
- if (_94_iA >= int64(i32(0))) || (int32(_94_op) == i32(86)) {
- return i32(0)
- }
- return i32(-1)
- }())
- goto _520
-
-_516:
crt.Xmemcpy(tls, (unsafe.Pointer)(&_94_uA), (unsafe.Pointer)(&_94_iA), u32(8))
- if int32(_94_op) != i32(86) {
- goto _521
- }
-
- {
- p := &_94_uA
- *p = (*p) << uint(int32(_94_iB))
- sink15 = *p
+ if int32(_94_op) == i32(86) {
+ {
+ p := &_94_uA
+ *p = (*p) << uint(int32(_94_iB))
+ sink17 = *p
+ }
+ goto _522
}
- goto _522
-
-_521:
{
p := &_94_uA
*p = (*p) >> uint(int32(_94_iB))
- sink15 = *p
- }
- if _94_iA >= int64(i32(0)) {
- goto _523
+ sink17 = *p
}
-
- {
- p := &_94_uA
- *p = (*p) | (u64(18446744073709551615) << uint(int32(int64(i32(64))-_94_iB)))
- sink15 = *p
+ if _94_iA < int64(i32(0)) {
+ {
+ p := &_94_uA
+ *p = (*p) | (u64(18446744073709551615) << uint(int32(int64(i32(64))-_94_iB)))
+ sink17 = *p
+ }
}
-_523:
_522:
crt.Xmemcpy(tls, (unsafe.Pointer)(&_94_iA), (unsafe.Pointer)(&_94_uA), u32(8))
_520:
_509:
_508:
_506:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _94_iA
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _94_iA
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(4))
goto _250
-
_116:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_sqlite3VdbeMemAboutToChange(tls, _p, _pIn1)
_sqlite3VdbeMemIntegerify(tls, _pIn1)
{
- p := (*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
+ p := (*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
*p = (*p) + int64(_pOp.X4)
sink6 = *p
}
goto _250
-
_117:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
if (int32(_pIn1.X1) & i32(4)) != i32(0) {
goto _524
}
-
_applyAffinity(tls, _pIn1, int8(i32(67)), _encoding)
if (int32(_pIn1.X1) & i32(4)) != i32(0) {
goto _525
}
-
- if (_pOp.X4) != i32(0) {
- goto _526
+ if (_pOp.X4) == i32(0) {
+ _rc = i32(20)
+ goto _abort_due_to_error
}
-
- _rc = i32(20)
- goto _abort_due_to_error
-
-_526:
goto _jump_to_p2
-
_525:
_524:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(8 /* X1 */))) = uint16((int32(_pIn1.X1) & i32(-49664)) | i32(4))
goto _250
-
_118:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
- if (int32(_pIn1.X1) & i32(4)) == 0 {
- goto _528
+ if (int32(_pIn1.X1) & i32(4)) != 0 {
+ _sqlite3VdbeMemRealify(tls, _pIn1)
}
-
- _sqlite3VdbeMemRealify(tls, _pIn1)
-_528:
goto _250
-
_119:
func() {
if (_pOp.X4) < i32(65) || (_pOp.X4) > i32(69) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80151), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80151), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64675)))
crt.X__builtin_abort(tls)
}
}()
@@ -54372,15 +49235,10 @@ _119:
return i32(0)
}()
_sqlite3VdbeMemCast(tls, _pIn1, uint8(_pOp.X4), _encoding)
- if _rc == 0 {
- goto _534
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_534:
goto _250
-
_120:
_121:
_122:
@@ -54394,156 +49252,112 @@ _125:
if ((int32(_113_flags1) | int32(_113_flags3)) & i32(1)) == 0 {
goto _535
}
-
if (int32(_pOp.X2) & i32(128)) == 0 {
goto _536
}
-
func() {
if int32(_pOp.X0) != i32(78) && int32(_pOp.X0) != i32(77) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80285), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80285), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64728)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_113_flags1) & i32(256)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80286), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65244)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80286), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64769)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pOp.X2) & i32(16)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80287), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80287), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64795)))
crt.X__builtin_abort(tls)
}
}()
- if ((int32(_113_flags1)&int32(_113_flags3))&i32(1)) == i32(0) || (int32(_113_flags3)&i32(256)) != i32(0) {
- goto _545
+ if (((int32(_113_flags1) & int32(_113_flags3)) & i32(1)) != i32(0)) && ((int32(_113_flags3) & i32(256)) == i32(0)) {
+ _113_res = i32(0)
+ goto _546
}
-
- _113_res = i32(0)
- goto _546
-
-_545:
_113_res = i32(1)
_546:
goto _547
-
_536:
if (int32(_pOp.X2) & i32(32)) == 0 {
goto _548
}
-
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_iCompare = i32(1)
_sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(1))
- if ((_db.X6) & i32(1)) == 0 {
- goto _549
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X4, _pOut)
}
-
- _registerTrace(tls, _pOp.X4, _pOut)
-_549:
goto _550
-
_548:
- if (int32(_pOp.X2) & i32(16)) == 0 {
- goto _551
+ if (int32(_pOp.X2) & i32(16)) != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_551:
_550:
goto _250
-
_547:
goto _552
-
_535:
_113_affinity = int8(int32(_pOp.X2) & i32(71))
if int32(_113_affinity) < i32(67) {
goto _553
}
-
if ((int32(_113_flags1) | int32(_113_flags3)) & i32(2)) == 0 {
goto _554
}
-
- if (int32(_113_flags1) & i32(14)) != i32(2) {
- goto _555
+ if (int32(_113_flags1) & i32(14)) == i32(2) {
+ _applyNumericAffinity(tls, _pIn1, i32(0))
+ _113_flags3 = _pIn3.X1
}
-
- _applyNumericAffinity(tls, _pIn1, i32(0))
- _113_flags3 = _pIn3.X1
-_555:
- if (int32(_113_flags3) & i32(14)) != i32(2) {
- goto _556
+ if (int32(_113_flags3) & i32(14)) == i32(2) {
+ _applyNumericAffinity(tls, _pIn3, i32(0))
}
-
- _applyNumericAffinity(tls, _pIn3, i32(0))
-_556:
_554:
if ((int32(_pIn1.X1) & int32(_pIn3.X1)) & i32(4)) == i32(0) {
goto _557
}
-
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) <= (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) {
- goto _558
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) > (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) {
+ _113_res = i32(1)
+ goto _compare_op
}
-
- _113_res = i32(1)
- goto _compare_op
-
-_558:
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) >= (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) {
- goto _559
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) < (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) {
+ _113_res = i32(-1)
+ goto _compare_op
}
-
- _113_res = i32(-1)
- goto _compare_op
-
-_559:
_113_res = i32(0)
goto _compare_op
-
_557:
goto _560
-
_553:
if int32(_113_affinity) != i32(66) {
goto _561
}
-
- if (int32(_113_flags1)&i32(2)) != i32(0) || (int32(_113_flags1)&i32(12)) == i32(0) {
- goto _563
+ if ((int32(_113_flags1) & i32(2)) == i32(0)) && ((int32(_113_flags1) & i32(12)) != i32(0)) {
+ _sqlite3VdbeMemStringify(tls, _pIn1, _encoding, uint8(i32(1)))
+ _113_flags1 = uint16((int32(_pIn1.X1) & i32(-33280)) | (int32(_113_flags1) & i32(33279)))
+ func() {
+ if _pIn1 == _pIn3 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80343), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64828)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _sqlite3VdbeMemStringify(tls, _pIn1, _encoding, uint8(i32(1)))
- _113_flags1 = uint16((int32(_pIn1.X1) & i32(-33280)) | (int32(_113_flags1) & i32(33279)))
- func() {
- if _pIn1 == _pIn3 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80343), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65308)))
- crt.X__builtin_abort(tls)
- }
- }()
-_563:
- if (int32(_113_flags3)&i32(2)) != i32(0) || (int32(_113_flags3)&i32(12)) == i32(0) {
- goto _567
+ if ((int32(_113_flags3) & i32(2)) == i32(0)) && ((int32(_113_flags3) & i32(12)) != i32(0)) {
+ _sqlite3VdbeMemStringify(tls, _pIn3, _encoding, uint8(i32(1)))
+ _113_flags3 = uint16((int32(_pIn3.X1) & i32(-33280)) | (int32(_113_flags3) & i32(33279)))
}
-
- _sqlite3VdbeMemStringify(tls, _pIn3, _encoding, uint8(i32(1)))
- _113_flags3 = uint16((int32(_pIn3.X1) & i32(-33280)) | (int32(_113_flags3) & i32(33279)))
-_567:
_561:
_560:
func() {
- if int32(_pOp.X1) != i32(-3) && (*XCollSeq)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80353), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65320)))
+ if int32(_pOp.X1) != i32(-3) && (*XCollSeq)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80353), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64839)))
crt.X__builtin_abort(tls)
}
}()
- _113_res = _sqlite3MemCompare(tls, _pIn3, _pIn1, (*XCollSeq)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
+ _113_res = _sqlite3MemCompare(tls, _pIn3, _pIn1, (*XCollSeq)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
_552:
_compare_op:
switch int32(_pOp.X0) {
@@ -54564,38 +49378,32 @@ _compare_op:
_572:
_113_res2 = bool2int(_113_res == i32(0))
goto _578
-
_573:
_113_res2 = _113_res
goto _578
-
_574:
_113_res2 = bool2int(_113_res < i32(0))
goto _578
-
_575:
_113_res2 = bool2int(_113_res <= i32(0))
goto _578
-
_576:
_113_res2 = bool2int(_113_res > i32(0))
goto _578
-
_577:
_113_res2 = bool2int(_113_res >= i32(0))
goto _578
-
_578:
func() {
if (int32(_pIn1.X1) & i32(1024)) != (int32(_113_flags1) & i32(1024)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80367), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80367), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64883)))
crt.X__builtin_abort(tls)
}
}()
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(8 /* X1 */))) = _113_flags1
func() {
if (int32(_pIn3.X1) & i32(1024)) != (int32(_113_flags3) & i32(1024)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80369), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80369), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64929)))
crt.X__builtin_abort(tls)
}
}()
@@ -54603,157 +49411,132 @@ _578:
if (int32(_pOp.X2) & i32(32)) == 0 {
goto _583
}
-
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_iCompare = _113_res
_113_res2 = bool2int(_113_res2 != i32(0))
if (int32(_pOp.X2) & i32(8)) == i32(0) {
goto _584
}
-
func() {
if int32(_pOp.X0) != i32(77) && int32(_pOp.X0) != i32(78) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80384), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65460)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80384), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64975)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _113_res2 != i32(0) && _113_res2 != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65504)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65016)))
crt.X__builtin_abort(tls)
}
}()
- if bool2int(int32(_pOp.X0) == i32(78)) != _113_res2 {
- goto _591
+ if bool2int(int32(_pOp.X0) == i32(78)) == _113_res2 {
+ goto _250
}
-
- goto _250
-
-_591:
_584:
_sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_113_res2)
- if ((_db.X6) & i32(1)) == 0 {
- goto _592
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_113_res2)
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X4, _pOut)
}
-
- _registerTrace(tls, _pOp.X4, _pOut)
-_592:
goto _593
-
_583:
- if _113_res2 == 0 {
- goto _594
+ if _113_res2 != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_594:
_593:
goto _250
-
_126:
func() {
if uintptr(unsafe.Pointer(_pOp)) <= uintptr(unsafe.Pointer(_aOp)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80414), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80414), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65035)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X0) != i32(81) && int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X0) != i32(79) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80415), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65532)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80415), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65043)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X2) & i32(32)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80416), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65580)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80416), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65090)))
crt.X__builtin_abort(tls)
}
}()
- if _iCompare == i32(0) {
- goto _602
+ if _iCompare != i32(0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_602:
goto _250
-
_127:
func() {
if int32(_pOp.X1) != i32(-12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65608)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65118)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*(**int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65636)))
+ if (*(**int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65143)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(98) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80438), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65648)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80438), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65154)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X2) & i32(1)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80439), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80439), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65180)))
crt.X__builtin_abort(tls)
}
}()
goto _250
-
_128:
- if (int32(_pOp.X2) & i32(1)) != i32(0) {
- goto _611
+ if (int32(_pOp.X2) & i32(1)) == i32(0) {
+ _140_aPermute = nil
+ goto _612
}
-
- _140_aPermute = nil
- goto _612
-
-_611:
func() {
if uintptr(unsafe.Pointer(_pOp)) <= uintptr(unsafe.Pointer(_aOp)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80477), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80477), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65035)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X0) != i32(96) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80478), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80478), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65207)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X1) != i32(-12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80479), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65736)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80479), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65238)))
crt.X__builtin_abort(tls)
}
}()
- _140_aPermute = (*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(*(**int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))))) + uintptr(16 /* X6 */))))))) + uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(4)))))))))))
+ _140_aPermute = (*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(*(**int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))))) + uintptr(16 /* X6 */))))))) + uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(4)))))))))))
func() {
if _140_aPermute == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80481), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80481), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65266)))
crt.X__builtin_abort(tls)
}
}()
_612:
_140_n = _pOp.X5
- _140_pKeyInfo = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _140_pKeyInfo = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
func() {
if _140_n <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80485), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(1368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80485), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(1358)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _140_pKeyInfo == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80486), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(46288)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80486), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(45040)))
crt.X__builtin_abort(tls)
}
}()
@@ -54762,48 +49545,41 @@ _612:
if _140_aPermute == nil {
goto _625
}
-
_143_mx = i32(0)
_143_k = i32(0)
_626:
if _143_k >= _140_n {
goto _629
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_140_aPermute)) + 4*uintptr(_143_k)))) <= _143_mx {
- goto _630
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_140_aPermute)) + 4*uintptr(_143_k)))) > _143_mx {
+ _143_mx = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_140_aPermute)) + 4*uintptr(_143_k)))
}
-
- _143_mx = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_140_aPermute)) + 4*uintptr(_143_k)))
-_630:
_143_k += 1
goto _626
-
_629:
func() {
if _140_p1 <= i32(0) || (_140_p1+_143_mx) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80493), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65776)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80493), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65278)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _140_p2 <= i32(0) || (_140_p2+_143_mx) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80494), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65820)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80494), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65320)))
crt.X__builtin_abort(tls)
}
}()
goto _637
-
_625:
func() {
if _140_p1 <= i32(0) || (_140_p1+_140_n) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65362)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _140_p2 <= i32(0) || (_140_p2+_140_n) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80497), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65908)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80497), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65403)))
crt.X__builtin_abort(tls)
}
}()
@@ -54813,7 +49589,6 @@ _644:
if _140_i >= _140_n {
goto _647
}
-
_140_idx = func() int32 {
if _140_aPermute != nil {
return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_140_aPermute)) + 4*uintptr(_140_i))))
@@ -54822,31 +49597,25 @@ _644:
}()
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_140_p1+_140_idx))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65952)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65444)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_140_p2+_140_idx))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80503), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65980)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80503), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65470)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _654
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _140_p1+_140_idx, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_140_p1+_140_idx))))
}
-
- _registerTrace(tls, _140_p1+_140_idx, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_140_p1+_140_idx))))
-_654:
- if ((_db.X6) & i32(1)) == 0 {
- goto _655
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _140_p2+_140_idx, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_140_p2+_140_idx))))
}
-
- _registerTrace(tls, _140_p2+_140_idx, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_140_p2+_140_idx))))
-_655:
func() {
if _140_i >= int32(_140_pKeyInfo.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80506), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80506), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65496)))
crt.X__builtin_abort(tls)
}
}()
@@ -54856,243 +49625,160 @@ _655:
if _iCompare == 0 {
goto _658
}
-
- if _140_bRev == 0 {
- goto _659
+ if _140_bRev != 0 {
+ _iCompare = -_iCompare
}
-
- _iCompare = -_iCompare
-_659:
goto _647
-
_658:
_140_i += 1
goto _644
-
_647:
goto _250
-
_129:
- if _iCompare >= i32(0) {
- goto _660
+ if _iCompare < i32(0) {
+ _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_pOp.X3)-i32(1))))
+ goto _661
}
-
- _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_pOp.X3)-i32(1))))
- goto _661
-
-_660:
- if _iCompare != i32(0) {
- goto _662
+ if _iCompare == i32(0) {
+ _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_pOp.X4)-i32(1))))
+ goto _663
}
-
- _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_pOp.X4)-i32(1))))
- goto _663
-
-_662:
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr((_pOp.X5)-i32(1))))
_663:
_661:
goto _250
-
_130:
_131:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
- if (int32(_pIn1.X1) & i32(1)) == 0 {
- goto _664
+ if (int32(_pIn1.X1) & i32(1)) != 0 {
+ _151_v1 = i32(2)
+ goto _665
}
-
- _151_v1 = i32(2)
- goto _665
-
-_664:
_151_v1 = bool2int(_sqlite3VdbeIntValue(tls, _pIn1) != int64(i32(0)))
_665:
_pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
- if (int32(_pIn2.X1) & i32(1)) == 0 {
- goto _666
+ if (int32(_pIn2.X1) & i32(1)) != 0 {
+ _151_v2 = i32(2)
+ goto _667
}
-
- _151_v2 = i32(2)
- goto _667
-
-_666:
_151_v2 = bool2int(_sqlite3VdbeIntValue(tls, _pIn2) != int64(i32(0)))
_667:
- if int32(_pOp.X0) != i32(71) {
- goto _668
+ if int32(_pOp.X0) == i32(71) {
+ _151_v1 = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VdbeExecØ00and_logicØ002)) + 1*uintptr((_151_v1*i32(3))+_151_v2))))
+ goto _669
}
-
- _151_v1 = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VdbeExecØ00and_logicØ002)) + 1*uintptr((_151_v1*i32(3))+_151_v2))))
- goto _669
-
-_668:
_151_v1 = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VdbeExecØ00or_logicØ003)) + 1*uintptr((_151_v1*i32(3))+_151_v2))))
_669:
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
- if _151_v1 != i32(2) {
- goto _670
+ if _151_v1 == i32(2) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(1))
+ goto _671
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(1))
- goto _671
-
-_670:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_151_v1)
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_151_v1)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(4))
_671:
goto _250
-
_132:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_sqlite3VdbeMemSetNull(tls, _pOut)
- if (int32(_pIn1.X1) & i32(1)) != i32(0) {
- goto _672
+ if (int32(_pIn1.X1) & i32(1)) == i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(bool2int(_sqlite3VdbeIntValue(tls, _pIn1) == 0))
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(bool2int(_sqlite3VdbeIntValue(tls, _pIn1) == 0))
-_672:
goto _250
-
_133:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_sqlite3VdbeMemSetNull(tls, _pOut)
- if (int32(_pIn1.X1) & i32(1)) != i32(0) {
- goto _673
+ if (int32(_pIn1.X1) & i32(1)) == i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = ^_sqlite3VdbeIntValue(tls, _pIn1)
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = ^_sqlite3VdbeIntValue(tls, _pIn1)
-_673:
goto _250
-
_134:
func() {
if int32((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(i32(0)))).X0) != i32(51) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80644), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80644), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65515)))
crt.X__builtin_abort(tls)
}
}()
if (*XVdbeFrame)(_p.X38) == nil {
goto _676
}
-
_164_iAddr = uint32(int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer((*XVdbeOp)(_p.X17)))) / 24))
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeFrame)(_p.X38).X6)) + 1*uintptr(_164_iAddr/uint32(i32(8)))))) & (i32(1) << uint(int32(_164_iAddr&uint32(i32(7)))))) == i32(0) {
- goto _677
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeFrame)(_p.X38).X6)) + 1*uintptr(_164_iAddr/uint32(i32(8)))))) & (i32(1) << uint(int32(_164_iAddr&uint32(i32(7)))))) != i32(0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_677:
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeFrame)(_p.X38).X6)) + 1*uintptr(_164_iAddr/uint32(i32(8)))))
*p = uint8(int32(*p) | (i32(1) << uint(int32(_164_iAddr&uint32(i32(7))))))
sink2 = *p
}
goto _678
-
_676:
- if ((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(i32(0)))).X3) != (_pOp.X3) {
- goto _679
+ if ((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(i32(0)))).X3) == (_pOp.X3) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_679:
_678:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(i32(0)))).X3
goto _250
-
_135:
_136:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
- if (int32(_pIn1.X1) & i32(1)) == 0 {
- goto _680
+ if (int32(_pIn1.X1) & i32(1)) != 0 {
+ _169_c = _pOp.X5
+ goto _681
}
-
- _169_c = _pOp.X5
- goto _681
-
-_680:
_169_c = bool2int(_sqlite3VdbeRealValue(tls, _pIn1) != float64(0))
- if int32(_pOp.X0) != i32(22) {
- goto _682
+ if int32(_pOp.X0) == i32(22) {
+ _169_c = bool2int(_169_c == 0)
}
-
- _169_c = bool2int(_169_c == 0)
-_682:
_681:
- if _169_c == 0 {
- goto _683
+ if _169_c != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_683:
goto _250
-
_137:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
- if (int32(_pIn1.X1) & i32(1)) == i32(0) {
- goto _684
+ if (int32(_pIn1.X1) & i32(1)) != i32(0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_684:
goto _250
-
_138:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
- if (int32(_pIn1.X1) & i32(1)) != i32(0) {
- goto _685
+ if (int32(_pIn1.X1) & i32(1)) == i32(0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_685:
goto _250
-
_139:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80733), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80733), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80734), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66092)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80734), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65574)))
crt.X__builtin_abort(tls)
}
}()
- if ((*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))).X2) == 0 {
- goto _691
+ if ((*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))).X2) != 0 {
+ _sqlite3VdbeMemSetNull(tls, (*XMem)(unsafe.Pointer(uintptr(unsafe.Pointer(_aMem))+uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(_pOp.X5)))))*uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(48))))))))))))
+ goto _jump_to_p2
}
-
- _sqlite3VdbeMemSetNull(tls, (*XMem)(unsafe.Pointer(uintptr(unsafe.Pointer(_aMem))+uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(_pOp.X5)))))*uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(48))))))))))))
- goto _jump_to_p2
-
-_691:
goto _250
-
_140:
_179_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
_179_p2 = _pOp.X4
_rc = _sqlite3VdbeCursorMoveto(tls, &_179_pC, &_179_p2)
- if _rc == 0 {
- goto _692
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_692:
func() {
if (_pOp.X5) <= i32(0) || (_pOp.X5) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64441)))
crt.X__builtin_abort(tls)
}
}()
@@ -55100,100 +49786,92 @@ _692:
_sqlite3VdbeMemAboutToChange(tls, _p, _179_pDest)
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80795), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80795), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _179_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _179_p2 >= int32(_179_pC.X18) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80797), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66124)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80797), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65601)))
crt.X__builtin_abort(tls)
}
}()
_179_aOffset = _179_pC.X21
func() {
if int32(_179_pC.X0) == i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66140)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65615)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_179_pC.X0) == i32(3) && (_179_pC.X2) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65642)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_179_pC.X0) == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65686)))
crt.X__builtin_abort(tls)
}
}()
if (_179_pC.X11) == (_p.X8) {
goto _710
}
-
if (_179_pC.X2) == 0 {
goto _711
}
-
- if int32(_179_pC.X0) != i32(3) {
- goto _712
+ if int32(_179_pC.X0) == i32(3) {
+ func() {
+ if (*(*int32)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */)))))) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80806), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65715)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _179_pReg = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(*(*int32)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */))))))))
+ func() {
+ if (int32(_179_pReg.X1) & i32(16)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65739)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_179_pReg.X1) & i32(128)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80809), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65762)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(72 /* X23 */))) = store5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC))+uintptr(76 /* X24 */))), store5(&_179_avail, uint32(_179_pReg.X4)))
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(68 /* X22 */))) = (*uint8)(unsafe.Pointer(_179_pReg.X5))
+ goto _719
}
-
- func() {
- if (*(*int32)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */)))))) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80806), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66244)))
- crt.X__builtin_abort(tls)
- }
- }()
- _179_pReg = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(*(*int32)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */))))))))
- func() {
- if (int32(_179_pReg.X1) & i32(16)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66268)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32(_179_pReg.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80809), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66292)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(72 /* X23 */))) = store5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC))+uintptr(76 /* X24 */))), store5(&_179_avail, uint32(_179_pReg.X4)))
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(68 /* X22 */))) = (*uint8)(unsafe.Pointer(_179_pReg.X5))
- goto _719
-
-_712:
_sqlite3VdbeMemSetNull(tls, _179_pDest)
goto _op_column_out
-
_719:
goto _720
-
_711:
- _179_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */))))))
+ _179_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */))))))
func() {
if int32(_179_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80818), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80818), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _179_pCrsr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80819), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80819), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65807)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3BtreeCursorIsValid(tls, _179_pCrsr) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66348)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65813)))
crt.X__builtin_abort(tls)
}
}()
@@ -55201,25 +49879,17 @@ _711:
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(68 /* X22 */))) = (*uint8)(_sqlite3BtreePayloadFetch(tls, _179_pCrsr, &_179_avail))
func() {
if _179_avail > uint32(i32(65536)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80823), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80823), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65846)))
crt.X__builtin_abort(tls)
}
}()
- if (_179_pC.X23) > _179_avail {
- goto _729
+ if (_179_pC.X23) <= _179_avail {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(76 /* X24 */))) = _179_pC.X23
+ goto _730
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(76 /* X24 */))) = _179_pC.X23
- goto _730
-
-_729:
- if (_179_pC.X23) <= uint32(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
- goto _731
+ if (_179_pC.X23) > uint32(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
+ goto _too_big
}
-
- goto _too_big
-
-_731:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(76 /* X24 */))) = _179_avail
_730:
_720:
@@ -55235,60 +49905,42 @@ _720:
if _179_avail >= _179_offset {
goto _735
}
-
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(68 /* X22 */))) = nil
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(76 /* X24 */))) = uint32(i32(0))
- if _179_offset <= uint32(i32(98307)) && _179_offset <= (_179_pC.X23) {
- goto _737
+ if (_179_offset > uint32(i32(98307))) || (_179_offset > (_179_pC.X23)) {
+ _rc = _sqlite3CorruptError(tls, i32(80856))
+ goto _abort_due_to_error
}
-
- _rc = _sqlite3CorruptError(tls, i32(80856))
- goto _abort_due_to_error
-
-_737:
goto _738
-
_735:
- if _179_offset <= uint32(i32(0)) {
- goto _739
+ if _179_offset > uint32(i32(0)) {
+ _179_zData = _179_pC.X22
+ func() {
+ if int32(_179_pC.X19) > _179_p2 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80865), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65859)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _op_column_read_header
}
-
- _179_zData = _179_pC.X22
- func() {
- if int32(_179_pC.X19) > _179_p2 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80865), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66400)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _op_column_read_header
-
-_739:
_738:
_710:
if int32(_179_pC.X19) > _179_p2 {
goto _742
}
-
if (_179_pC.X16) >= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(i32(0))))) {
goto _743
}
-
if (_179_pC.X22) != nil {
goto _744
}
-
crt.Xmemset(tls, (unsafe.Pointer)(&_179_sMem), i32(0), u32(48))
- _rc = _sqlite3VdbeMemFromBtree(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */)))))), uint32(i32(0)), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(i32(0)))), &_179_sMem)
- if _rc == i32(0) {
- goto _745
+ _rc = _sqlite3VdbeMemFromBtree(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */)))))), uint32(i32(0)), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(i32(0)))), &_179_sMem)
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_745:
_179_zData = (*uint8)(unsafe.Pointer(_179_sMem.X5))
goto _746
-
_744:
_179_zData = _179_pC.X22
_746:
@@ -55298,28 +49950,24 @@ _op_column_read_header:
_179_zHdr = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_179_zData)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_179_pC.X16)))))))
_179_zEndHdr = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_179_zData)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(i32(0)))))))))))
_747:
- if store5(&_179_t, uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_zHdr)) + 1*uintptr(i32(0)))))) >= uint32(i32(128)) {
- goto _748
- }
-
- *(*uintptr)(unsafe.Pointer(&_179_zHdr)) += uintptr(1)
- {
- p := &_179_offset64
- *p = (*p) + uint64(_sqlite3VdbeOneByteSerialTypeLen(tls, uint8(_179_t)))
- sink15 = *p
+ if store5(&_179_t, uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_zHdr)) + 1*uintptr(i32(0)))))) < uint32(i32(128)) {
+ *(*uintptr)(unsafe.Pointer(&_179_zHdr)) += uintptr(1)
+ {
+ p := &_179_offset64
+ *p = (*p) + uint64(_sqlite3VdbeOneByteSerialTypeLen(tls, uint8(_179_t)))
+ sink17 = *p
+ }
+ goto _749
}
- goto _749
-
-_748:
{
p := &_179_zHdr
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3GetVarint32(tls, _179_zHdr, &_179_t))))
- sink11 = *p
+ sink13 = *p
}
{
p := &_179_offset64
*p = (*p) + uint64(_sqlite3VdbeSerialTypeLen(tls, _179_t))
- sink15 = *p
+ sink17 = *p
}
_749:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC))+uintptr(80 /* X25 */))))) + 4*uintptr(postInc1(&_179_i, int32(1))))) = _179_t
@@ -55327,115 +49975,84 @@ _749:
if (_179_i <= _179_p2) && (uintptr(unsafe.Pointer(_179_zHdr)) < uintptr(unsafe.Pointer(_179_zEndHdr))) {
goto _747
}
-
if (uintptr(unsafe.Pointer(_179_zHdr)) < uintptr(unsafe.Pointer(_179_zEndHdr)) || uintptr(unsafe.Pointer(_179_zHdr)) <= uintptr(unsafe.Pointer(_179_zEndHdr)) && _179_offset64 == uint64(_179_pC.X23)) && _179_offset64 <= uint64(_179_pC.X23) {
goto _754
}
-
- if (_179_pC.X22) != nil {
- goto _755
+ if (_179_pC.X22) == nil {
+ _sqlite3VdbeMemRelease(tls, &_179_sMem)
}
-
- _sqlite3VdbeMemRelease(tls, &_179_sMem)
-_755:
_rc = _sqlite3CorruptError(tls, i32(80915))
goto _abort_due_to_error
-
_754:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(54 /* X19 */))) = uint16(_179_i)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(44 /* X16 */))) = uint32(int32((uintptr(unsafe.Pointer(_179_zHdr)) - uintptr(unsafe.Pointer(_179_zData))) / 1))
- if (_179_pC.X22) != nil {
- goto _756
+ if (_179_pC.X22) == nil {
+ _sqlite3VdbeMemRelease(tls, &_179_sMem)
}
-
- _sqlite3VdbeMemRelease(tls, &_179_sMem)
-_756:
goto _757
-
_743:
_179_t = uint32(i32(0))
_757:
if int32(_179_pC.X19) > _179_p2 {
goto _758
}
-
- if int32(_pOp.X1) != i32(-7) {
- goto _759
+ if int32(_pOp.X1) == i32(-7) {
+ _sqlite3VdbeMemShallowCopy(tls, _179_pDest, (*XMem)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))), i32(2048))
+ goto _760
}
-
- _sqlite3VdbeMemShallowCopy(tls, _179_pDest, (*XMem)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))), i32(2048))
- goto _760
-
-_759:
_sqlite3VdbeMemSetNull(tls, _179_pDest)
_760:
goto _op_column_out
-
_758:
goto _761
-
_742:
_179_t = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC))+uintptr(80 /* X25 */))))) + 4*uintptr(_179_p2)))
_761:
func() {
if _179_p2 >= int32(_179_pC.X19) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80946), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80946), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65878)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80947), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80947), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3VdbeCheckMemInvariants(tls, _179_pDest) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80948), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80948), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65896)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_179_pDest.X1) & i32(9312)) == i32(0) {
- goto _768
+ if (int32(_179_pDest.X1) & i32(9312)) != i32(0) {
+ _sqlite3VdbeMemSetNull(tls, _179_pDest)
}
-
- _sqlite3VdbeMemSetNull(tls, _179_pDest)
-_768:
func() {
if _179_t != (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC))+uintptr(80 /* X25 */))))) + 4*uintptr(_179_p2)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(80952), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66480)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(80952), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65933)))
crt.X__builtin_abort(tls)
}
}()
if (_179_pC.X24) < (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(_179_p2+i32(1))))) {
goto _771
}
-
_179_zData = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_179_pC.X22)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(_179_p2))))))))))
- if _179_t >= uint32(i32(12)) {
- goto _772
+ if _179_t < uint32(i32(12)) {
+ _sqlite3VdbeSerialGet(tls, _179_zData, _179_t, _179_pDest)
+ goto _773
}
-
- _sqlite3VdbeSerialGet(tls, _179_zData, _179_t, _179_pDest)
- goto _773
-
-_772:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pDest)) + uintptr(12 /* X4 */))) = store1(&_179_len, int32((_179_t-uint32(i32(12)))/uint32(i32(2))))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pDest)) + uintptr(10 /* X2 */))) = _encoding
if (_179_pDest.X7) >= (_179_len + i32(2)) {
goto _774
}
-
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pDest)) + uintptr(8 /* X1 */))) = uint16(i32(1))
- if _sqlite3VdbeMemGrow(tls, _179_pDest, _179_len+i32(2), i32(0)) == 0 {
- goto _775
+ if _sqlite3VdbeMemGrow(tls, _179_pDest, _179_len+i32(2), i32(0)) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_775:
goto _776
-
_774:
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pDest)) + uintptr(16 /* X5 */))) = _179_pDest.X6
_776:
@@ -55445,59 +50062,46 @@ _776:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pDest)) + uintptr(8 /* X1 */))) = *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VdbeExecØ00aFlagØ004)) + 2*uintptr(_179_t&uint32(i32(1)))))
_773:
goto _777
-
_771:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pDest)) + uintptr(10 /* X2 */))) = _encoding
- if ((int32(_pOp.X2)&i32(192)) == i32(0) || (_179_t < uint32(i32(12)) || (_179_t&uint32(i32(1))) != uint32(i32(0))) && (int32(_pOp.X2)&i32(128)) == i32(0)) && store1(&_179_len, int32(_sqlite3VdbeSerialTypeLen(tls, _179_t))) != i32(0) {
- goto _782
+ if (((int32(_pOp.X2) & i32(192)) != i32(0)) && (((_179_t >= uint32(i32(12))) && ((_179_t & uint32(i32(1))) == uint32(i32(0)))) || ((int32(_pOp.X2) & i32(128)) != i32(0)))) || (store1(&_179_len, int32(_sqlite3VdbeSerialTypeLen(tls, _179_t))) == i32(0)) {
+ _sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer(&_sqlite3VdbeExecØ00aZeroØ005)), _179_t, _179_pDest)
+ goto _783
}
-
- _sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer(&_sqlite3VdbeExecØ00aZeroØ005)), _179_t, _179_pDest)
- goto _783
-
-_782:
- _rc = _sqlite3VdbeMemFromBtree(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */)))))), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(_179_p2))), uint32(_179_len), _179_pDest)
- if _rc == i32(0) {
- goto _784
+ _rc = _sqlite3VdbeMemFromBtree(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pC)) + uintptr(36 /* X14 */)))))), *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_aOffset)) + 4*uintptr(_179_p2))), uint32(_179_len), _179_pDest)
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_784:
_sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer(_179_pDest.X5)), _179_t, _179_pDest)
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_179_pDest)) + uintptr(8 /* X1 */)))
*p = uint16(int32(*p) & i32(-4097))
- sink12 = *p
+ sink14 = *p
}
_783:
_777:
_op_column_out:
- if ((_db.X6) & i32(1)) == 0 {
- goto _785
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, _179_pDest)
}
-
- _registerTrace(tls, _pOp.X5, _179_pDest)
-_785:
goto _250
-
_141:
- _213_zAffinity = *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _213_zAffinity = *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
func() {
if _213_zAffinity == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81025), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66500)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81025), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65950)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81026), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81026), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62895)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_213_zAffinity)) + 1*uintptr(_pOp.X4)))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81027), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66516)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81027), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65963)))
crt.X__builtin_abort(tls)
}
}()
@@ -55505,13 +50109,13 @@ _141:
_792:
func() {
if uintptr(unsafe.Pointer(_pIn1)) > uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(_p.X18)+48*uintptr(((_p.X6)+i32(1))-(_p.X7)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81030), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81030), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65985)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pIn1.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81031), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64516)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81031), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64072)))
crt.X__builtin_abort(tls)
}
}()
@@ -55520,18 +50124,16 @@ _792:
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_213_zAffinity)) + 1*uintptr(i32(0))))) != 0 {
goto _792
}
-
goto _250
-
_142:
_215_nData = uint64(i32(0))
_215_nHdr = i32(0)
_215_nZero = int64(i32(0))
_215_nField = _pOp.X3
- _215_zAffinity = *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _215_zAffinity = *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
func() {
if _215_nField <= i32(0) || (_pOp.X4) <= i32(0) || ((_pOp.X4)+_215_nField) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81092), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81092), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66028)))
crt.X__builtin_abort(tls)
}
}()
@@ -55541,7 +50143,7 @@ _142:
_215_file_format = int32(_p.X31)
func() {
if (_pOp.X5) >= (_pOp.X3) && (_pOp.X5) < ((_pOp.X3)+(_pOp.X4)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81099), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81099), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66096)))
crt.X__builtin_abort(tls)
}
}()
@@ -55549,33 +50151,31 @@ _142:
_sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
func() {
if uintptr(unsafe.Pointer(_215_pData0)) > uintptr(unsafe.Pointer(_215_pLast)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81105), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81105), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66140)))
crt.X__builtin_abort(tls)
}
}()
if _215_zAffinity == nil {
goto _806
}
-
_215_pRec = _215_pData0
_807:
- _applyAffinity(tls, postInc18(&_215_pRec, 48), *postInc0(&_215_zAffinity, 1), _encoding)
+ _applyAffinity(tls, postInc20(&_215_pRec, 48), *postInc0(&_215_zAffinity, 1), _encoding)
func() {
if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_215_zAffinity)) + 1*uintptr(i32(0))))) != i32(0) && uintptr(unsafe.Pointer(_215_pRec)) > uintptr(unsafe.Pointer(_215_pLast)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81110), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66712)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81110), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66154)))
crt.X__builtin_abort(tls)
}
}()
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_215_zAffinity)) + 1*uintptr(i32(0))))) != 0 {
goto _807
}
-
_806:
_215_pRec = _215_pLast
_811:
func() {
if (int32(_215_pRec.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66185)))
crt.X__builtin_abort(tls)
}
}()
@@ -55583,29 +50183,22 @@ _811:
if (int32(_215_pRec.X1) & i32(16384)) == 0 {
goto _814
}
-
if _215_nData == 0 {
goto _815
}
-
- if _sqlite3VdbeMemExpandBlob(tls, _215_pRec) == 0 {
- goto _816
+ if _sqlite3VdbeMemExpandBlob(tls, _215_pRec) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_816:
goto _817
-
_815:
{
p := &_215_nZero
- *p = (*p) + int64(*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_215_pRec)) + uintptr(0 /* X0 */))))))
+ *p = (*p) + int64(*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_215_pRec)) + uintptr(0 /* X0 */))))))
sink6 = *p
}
{
p := &_215_len
- *p = (*p) - uint32(*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_215_pRec)) + uintptr(0 /* X0 */))))))
+ *p = (*p) - uint32(*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_215_pRec)) + uintptr(0 /* X0 */))))))
sink5 = *p
}
_817:
@@ -55613,7 +50206,7 @@ _814:
{
p := &_215_nData
*p = (*p) + uint64(_215_len)
- sink15 = *p
+ sink17 = *p
}
{
p := &_215_nHdr
@@ -55625,57 +50218,37 @@ _814:
}()
sink1 = *p
}
- if _215_pRec != _215_pData0 {
- goto _820
+ if _215_pRec == _215_pData0 {
+ goto _821
}
-
- goto _821
-
-_820:
*(*uintptr)(unsafe.Pointer(&_215_pRec)) += uintptr(4294967248)
goto _811
-
_821:
- if _215_nHdr > i32(126) {
- goto _822
- }
-
- {
- p := &_215_nHdr
- *p = (*p) + i32(1)
- sink1 = *p
+ if _215_nHdr <= i32(126) {
+ {
+ p := &_215_nHdr
+ *p = (*p) + i32(1)
+ sink1 = *p
+ }
+ goto _823
}
- goto _823
-
-_822:
_215_nVarint = _sqlite3VarintLen(tls, uint64(_215_nHdr))
{
p := &_215_nHdr
*p = (*p) + _215_nVarint
sink1 = *p
}
- if _215_nVarint >= _sqlite3VarintLen(tls, uint64(_215_nHdr)) {
- goto _824
+ if _215_nVarint < _sqlite3VarintLen(tls, uint64(_215_nHdr)) {
+ _215_nHdr += 1
}
-
- _215_nHdr += 1
-_824:
_823:
_215_nByte = int64(uint64(_215_nHdr) + _215_nData)
- if (_215_nByte + _215_nZero) <= int64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
- goto _825
+ if (_215_nByte + _215_nZero) > int64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
+ goto _too_big
}
-
- goto _too_big
-
-_825:
- if _sqlite3VdbeMemClearAndResize(tls, _pOut, int32(_215_nByte)) == 0 {
- goto _826
+ if _sqlite3VdbeMemClearAndResize(tls, _pOut, int32(_215_nByte)) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_826:
_215_zNewRecord = (*uint8)(unsafe.Pointer(_pOut.X5))
_215_i = int32(uint8(func() int32 {
if uint32(_215_nHdr) < u32(128) {
@@ -55686,7 +50259,7 @@ _826:
_215_j = _215_nHdr
func() {
if uintptr(unsafe.Pointer(_215_pData0)) > uintptr(unsafe.Pointer(_215_pLast)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81184), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81184), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66140)))
crt.X__builtin_abort(tls)
}
}()
@@ -55711,153 +50284,126 @@ _831:
*p = int32(uint32(*p) + _sqlite3VdbeSerialPut(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_215_zNewRecord))+1*uintptr(_215_j))), _215_pRec, _215_serial_type))
sink1 = *p
}
- if uintptr(unsafe.Pointer(preInc18(&_215_pRec, 48))) <= uintptr(unsafe.Pointer(_215_pLast)) {
+ if uintptr(unsafe.Pointer(preInc20(&_215_pRec, 48))) <= uintptr(unsafe.Pointer(_215_pLast)) {
goto _831
}
-
func() {
if _215_i != _215_nHdr {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81195), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81195), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66202)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int64(_215_j) != _215_nByte {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81196), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81196), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66210)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) <= i32(0) || (_pOp.X5) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81198), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81198), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64441)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = int32(_215_nByte)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(16))
- if _215_nZero == 0 {
- goto _841
- }
-
- *(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int32(_215_nZero)
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(16384))
- sink12 = *p
+ if _215_nZero != 0 {
+ *(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int32(_215_nZero)
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(16384))
+ sink14 = *p
+ }
}
-_841:
- if ((_db.X6) & i32(1)) == 0 {
- goto _842
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, _pOut)
}
-
- _registerTrace(tls, _pOp.X5, _pOut)
-_842:
goto _250
-
_143:
func() {
if int32((*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))).X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66784)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66219)))
crt.X__builtin_abort(tls)
}
}()
- _228_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3))))) + uintptr(36 /* X14 */))))))
+ _228_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3))))) + uintptr(36 /* X14 */))))))
func() {
if _228_pCrsr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65807)))
crt.X__builtin_abort(tls)
}
}()
_228_nEntry = int64(i32(0))
_rc = _sqlite3BtreeCount(tls, _228_pCrsr, &_228_nEntry)
- if _rc == 0 {
- goto _847
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_847:
_pOut = _out2Prerelease(tls, _p, _pOp)
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _228_nEntry
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _228_nEntry
goto _250
-
_144:
_229_p1 = _pOp.X3
- _229_zName = *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _229_zName = *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
func() {
if (*XSavepoint)(_db.X73) != nil && int32(_db.X15) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81255), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66828)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81255), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66262)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _229_p1 != i32(0) && _229_p1 != i32(1) && _229_p1 != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66868)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66301)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XSavepoint)(_db.X73) == nil && int32(_db.X23) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81257), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66936)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81257), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66368)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _checkSavepointCount(tls, _db) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66984)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66416)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
crt.X__builtin_abort(tls)
}
}()
if _229_p1 != i32(0) {
goto _862
}
-
- if (_db.X36) <= i32(0) {
- goto _863
+ if (_db.X36) > i32(0) {
+ _sqlite3VdbeError(tls, _p, str(66453))
+ _rc = i32(5)
+ goto _864
}
-
- _sqlite3VdbeError(tls, _p, str(67024))
- _rc = i32(5)
- goto _864
-
-_863:
_229_nName = _sqlite3Strlen30(tls, _229_zName)
func() {
if int32(_db.X15) != i32(0) && (_db.X64) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66504)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3VtabSavepoint(tls, _db, i32(0), (_db.X76)+(_db.X75))
- if _rc == i32(0) {
- goto _868
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_868:
_229_pNew = (*XSavepoint)(_sqlite3DbMallocRawNN(tls, _db, uint64((u32(24)+uint32(_229_nName))+uint32(i32(1)))))
if _229_pNew == nil {
goto _869
}
-
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_229_pNew)) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer((*XSavepoint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_229_pNew)) + 24*uintptr(i32(1))))))
crt.Xmemcpy(tls, (unsafe.Pointer)(_229_pNew.X0), (unsafe.Pointer)(_229_zName), uint32(_229_nName+i32(1)))
- if (_db.X15) == 0 {
- goto _870
+ if (_db.X15) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(71 /* X23 */))) = uint8(i32(1))
+ goto _871
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(71 /* X23 */))) = uint8(i32(1))
- goto _871
-
-_870:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(428 /* X75 */))) += 1
_871:
*(**XSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_229_pNew)) + uintptr(20 /* X3 */))))) = (*XSavepoint)(_db.X73)
@@ -55867,7 +50413,6 @@ _871:
_869:
_864:
goto _872
-
_862:
_229_iSavepoint = i32(0)
_229_pSavepoint = (*XSavepoint)(_db.X73)
@@ -55875,84 +50420,56 @@ _873:
if _229_pSavepoint == nil || _sqlite3StrICmp(tls, _229_pSavepoint.X0, _229_zName) == 0 {
goto _877
}
-
_229_iSavepoint += 1
_229_pSavepoint = (*XSavepoint)(_229_pSavepoint.X3)
goto _873
-
_877:
- if _229_pSavepoint != nil {
- goto _878
+ if _229_pSavepoint == nil {
+ _sqlite3VdbeError(tls, _p, str(66540), unsafe.Pointer(_229_zName))
+ _rc = i32(1)
+ goto _879
}
-
- _sqlite3VdbeError(tls, _p, str(67112), unsafe.Pointer(_229_zName))
- _rc = i32(1)
- goto _879
-
-_878:
- if (_db.X36) <= i32(0) || _229_p1 != i32(1) {
- goto _881
+ if ((_db.X36) > i32(0)) && (_229_p1 == i32(1)) {
+ _sqlite3VdbeError(tls, _p, str(66562))
+ _rc = i32(5)
+ goto _882
}
-
- _sqlite3VdbeError(tls, _p, str(67136))
- _rc = i32(5)
- goto _882
-
-_881:
_240_isTransaction = bool2int(((*XSavepoint)(_229_pSavepoint.X3) == nil) && ((_db.X23) != 0))
if _240_isTransaction == 0 || _229_p1 != i32(1) {
goto _885
}
-
- if store1(&_rc, _sqlite3VdbeCheckFk(tls, _p, i32(1))) == i32(0) {
- goto _886
+ if store1(&_rc, _sqlite3VdbeCheckFk(tls, _p, i32(1))) != i32(0) {
+ goto _vdbe_return
}
-
- goto _vdbe_return
-
-_886:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
- if _sqlite3VdbeHalt(tls, _p) != i32(5) {
- goto _887
+ if _sqlite3VdbeHalt(tls, _p) == i32(5) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = store1(&_rc, i32(5))
+ goto _vdbe_return
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = store1(&_rc, i32(5))
- goto _vdbe_return
-
-_887:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(71 /* X23 */))) = uint8(i32(0))
_rc = _p.X10
goto _888
-
_885:
_229_iSavepoint = ((_db.X75) - _229_iSavepoint) - i32(1)
if _229_p1 != i32(2) {
goto _889
}
-
_244_isSchemaChange = bool2int(((_db.X6) & i32(2)) != i32(0))
_229_ii = i32(0)
_890:
if _229_ii >= (_db.X5) {
goto _893
}
-
_rc = _sqlite3BtreeTripAllCursors(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_229_ii))).X1), i32(516), bool2int(_244_isSchemaChange == i32(0)))
- if _rc == i32(0) {
- goto _894
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_894:
_229_ii += 1
goto _890
-
_893:
goto _895
-
_889:
_244_isSchemaChange = i32(0)
_895:
@@ -55961,60 +50478,42 @@ _896:
if _229_ii >= (_db.X5) {
goto _899
}
-
_rc = _sqlite3BtreeSavepoint(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_229_ii))).X1), _229_p1, _229_iSavepoint)
- if _rc == i32(0) {
- goto _900
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_900:
_229_ii += 1
goto _896
-
_899:
- if _244_isSchemaChange == 0 {
- goto _901
+ if _244_isSchemaChange != 0 {
+ _sqlite3ExpirePreparedStatements(tls, _db)
+ _sqlite3ResetAllSchemasOfConnection(tls, _db)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */))) = (_db.X6) | i32(2)
}
-
- _sqlite3ExpirePreparedStatements(tls, _db)
- _sqlite3ResetAllSchemasOfConnection(tls, _db)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */))) = (_db.X6) | i32(2)
-_901:
_888:
_902:
- if (*XSavepoint)(_db.X73) == _229_pSavepoint {
- goto _903
+ if (*XSavepoint)(_db.X73) != _229_pSavepoint {
+ _229_pTmp = (*XSavepoint)(_db.X73)
+ *(**XSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(420 /* X73 */))))) = (*XSavepoint)(_229_pTmp.X3)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_229_pTmp))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(428 /* X75 */))) -= 1
+ goto _902
}
-
- _229_pTmp = (*XSavepoint)(_db.X73)
- *(**XSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(420 /* X73 */))))) = (*XSavepoint)(_229_pTmp.X3)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_229_pTmp))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(428 /* X75 */))) -= 1
- goto _902
-
-_903:
if _229_p1 != i32(1) {
goto _904
}
-
func() {
if _229_pSavepoint != (*XSavepoint)(_db.X73) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81387), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67192)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81387), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66616)))
crt.X__builtin_abort(tls)
}
}()
*(**XSavepoint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(420 /* X73 */))))) = (*XSavepoint)(_229_pSavepoint.X3)
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_229_pSavepoint))
- if _240_isTransaction != 0 {
- goto _907
+ if _240_isTransaction == 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(428 /* X75 */))) -= 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(428 /* X75 */))) -= 1
-_907:
goto _908
-
_904:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(436 /* X77 */))) = _229_pSavepoint.X1
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */))) = _229_pSavepoint.X2
@@ -56022,265 +50521,204 @@ _908:
if _240_isTransaction != 0 && _229_p1 != i32(2) {
goto _910
}
-
_rc = _sqlite3VtabSavepoint(tls, _db, _229_p1, _229_iSavepoint)
- if _rc == i32(0) {
- goto _911
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_911:
_910:
_882:
_879:
_872:
- if _rc == 0 {
- goto _912
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_912:
goto _250
-
_145:
_256_desiredAutoCommit = _pOp.X3
_256_iRollback = _pOp.X4
func() {
if _256_desiredAutoCommit != i32(1) && _256_desiredAutoCommit != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81424), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67220)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81424), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66643)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _256_desiredAutoCommit != i32(1) && _256_iRollback != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81425), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81425), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66688)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_db.X34) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81426), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81426), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66725)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81427), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81427), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
crt.X__builtin_abort(tls)
}
}()
if _256_desiredAutoCommit == int32(_db.X15) {
goto _923
}
-
- if _256_iRollback == 0 {
- goto _924
+ if _256_iRollback != 0 {
+ func() {
+ if _256_desiredAutoCommit != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66743)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3RollbackAll(tls, _db, i32(516))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
+ goto _927
}
-
- func() {
- if _256_desiredAutoCommit != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67328)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3RollbackAll(tls, _db, i32(516))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
- goto _927
-
-_924:
- if _256_desiredAutoCommit == 0 || (_db.X36) <= i32(0) {
- goto _929
+ if _256_desiredAutoCommit != 0 && ((_db.X36) > i32(0)) {
+ _sqlite3VdbeError(tls, _p, str(66764))
+ _rc = i32(5)
+ goto _abort_due_to_error
}
-
- _sqlite3VdbeError(tls, _p, str(67352))
- _rc = i32(5)
- goto _abort_due_to_error
-
-_929:
- if store1(&_rc, _sqlite3VdbeCheckFk(tls, _p, i32(1))) == i32(0) {
- goto _931
+ if store1(&_rc, _sqlite3VdbeCheckFk(tls, _p, i32(1))) != i32(0) {
+ goto _vdbe_return
}
-
- goto _vdbe_return
-
-_931:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(_256_desiredAutoCommit)
_927:
- if _sqlite3VdbeHalt(tls, _p) != i32(5) {
- goto _933
+ if _sqlite3VdbeHalt(tls, _p) == i32(5) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1) - _256_desiredAutoCommit)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = store1(&_rc, i32(5))
+ goto _vdbe_return
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1) - _256_desiredAutoCommit)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = store1(&_rc, i32(5))
- goto _vdbe_return
-
-_933:
func() {
if (_db.X76) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81453), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81453), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66819)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3CloseSavepoints(tls, _db)
- if (_p.X10) != i32(0) {
- goto _936
+ if (_p.X10) == i32(0) {
+ _rc = i32(101)
+ goto _937
}
-
- _rc = i32(101)
- goto _937
-
-_936:
_rc = i32(1)
_937:
goto _vdbe_return
-
_923:
_sqlite3VdbeError(tls, _p, func() *int8 {
if _256_desiredAutoCommit == 0 {
- return str(67428)
+ return str(66837)
}
return func() *int8 {
if _256_iRollback != 0 {
- return str(67476)
+ return str(66885)
}
- return str(67520)
+ return str(66928)
}()
}())
_rc = i32(1)
goto _abort_due_to_error
-
_146:
func() {
if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81512), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81512), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) && (_pOp.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81513), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67564)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81513), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66969)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81514), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81514), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66998)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_pOp.X3))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81515), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81515), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67028)))
crt.X__builtin_abort(tls)
}
}()
- if (_pOp.X4) == 0 || ((_db.X6)&i32(67108864)) == i32(0) {
- goto _954
+ if (_pOp.X4) != 0 && (((_db.X6) & i32(67108864)) != i32(0)) {
+ _rc = i32(8)
+ goto _abort_due_to_error
}
-
- _rc = i32(8)
- goto _abort_due_to_error
-
-_954:
_266_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3))).X1)
if _266_pBt == nil {
goto _955
}
-
_rc = _sqlite3BtreeBeginTrans(tls, _266_pBt, _pOp.X4)
if _rc == i32(0) {
goto _956
}
-
- if (_rc & i32(255)) != i32(5) {
- goto _957
+ if (_rc & i32(255)) == i32(5) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
+ goto _vdbe_return
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
- goto _vdbe_return
-
-_957:
goto _abort_due_to_error
-
_956:
if (_pOp.X4) == 0 || ((uint32((_p.X32)>>uint(i32(6)))<>uint(i32(31))) == 0 || int32(_db.X15) != i32(0) && (_db.X35) <= i32(1) {
goto _961
}
-
func() {
if _sqlite3BtreeIsInTrans(tls, _266_pBt) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81538), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81538), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67062)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X12) != i32(0) {
- goto _964
+ if (_p.X12) == i32(0) {
+ func() {
+ if (_db.X76) < i32(0) || (_db.X75) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81540), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67089)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(432 /* X76 */))) += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = (_db.X75) + (_db.X76)
}
-
- func() {
- if (_db.X76) < i32(0) || (_db.X75) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81540), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67692)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(432 /* X76 */))) += 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = (_db.X75) + (_db.X76)
-_964:
_rc = _sqlite3VtabSavepoint(tls, _db, i32(0), (_p.X12)-i32(1))
- if _rc != i32(0) {
- goto _968
+ if _rc == i32(0) {
+ _rc = _sqlite3BtreeBeginStmt(tls, _266_pBt, _p.X12)
}
-
- _rc = _sqlite3BtreeBeginStmt(tls, _266_pBt, _p.X12)
-_968:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))) = _db.X77
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(76 /* X16 */))) = _db.X78
_961:
_sqlite3BtreeGetMeta(tls, _266_pBt, i32(1), (*uint32)(unsafe.Pointer(&_266_iMeta)))
_266_iGen = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3))).X4).X1
goto _969
-
_955:
_266_iGen = store1(&_266_iMeta, i32(0))
_969:
func() {
if int32(_pOp.X2) != i32(0) && int32(_pOp.X1) != i32(-11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67732)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67128)))
crt.X__builtin_abort(tls)
}
}()
- if (_pOp.X2) == 0 || _266_iMeta == (_pOp.X5) && _266_iGen == (*(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) {
+ if (_pOp.X2) == 0 || _266_iMeta == (_pOp.X5) && _266_iGen == (*(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) {
goto _975
}
-
_sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p.X22))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = _sqlite3DbStrDup(tls, _db, str(61760))
- if ((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3))).X4).X0) == _266_iMeta {
- goto _976
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */))) = _sqlite3DbStrDup(tls, _db, str(59642))
+ if ((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3))).X4).X0) != _266_iMeta {
+ _sqlite3ResetOneSchema(tls, _db, _pOp.X3)
}
-
- _sqlite3ResetOneSchema(tls, _db, _pOp.X3)
-_976:
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
_rc = i32(17)
_975:
- if _rc == 0 {
- goto _977
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_977:
goto _250
-
_147:
func() {
if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
crt.X__builtin_abort(tls)
}
}()
@@ -56288,176 +50726,152 @@ _147:
_277_iCookie = _pOp.X5
func() {
if (_pOp.X5) >= i32(16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81614), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81614), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67164)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _277_iDb < i32(0) || _277_iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_277_iDb))).X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67796)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(60068)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_277_iDb))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81617), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81617), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67192)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3BtreeGetMeta(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_277_iDb))).X1), _277_iCookie, (*uint32)(unsafe.Pointer(&_277_iMeta)))
_pOut = _out2Prerelease(tls, _p, _pOp)
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_277_iMeta)
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_277_iMeta)
goto _250
-
_148:
func() {
if (_pOp.X4) >= i32(16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67222)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66998)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_pOp.X3))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67028)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81640), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81640), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
_278_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3)))
func() {
if (*XBtree)(_278_pDb.X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81642), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81642), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67265)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3SchemaMutexHeld(tls, _db, _pOp.X3, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67904)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67277)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3BtreeUpdateMeta(tls, (*XBtree)(_278_pDb.X1), _pOp.X4, uint32(_pOp.X5))
- if (_pOp.X4) != i32(1) {
- goto _1002
- }
-
- *(*int32)(unsafe.Pointer(uintptr(_278_pDb.X4) + uintptr(0 /* X0 */))) = _pOp.X5
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(2)
- sink1 = *p
+ if (_pOp.X4) == i32(1) {
+ *(*int32)(unsafe.Pointer(uintptr(_278_pDb.X4) + uintptr(0 /* X0 */))) = _pOp.X5
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(2)
+ sink1 = *p
+ }
+ goto _1003
}
- goto _1003
-
-_1002:
- if (_pOp.X4) != i32(2) {
- goto _1004
+ if (_pOp.X4) == i32(2) {
+ *(*uint8)(unsafe.Pointer(uintptr(_278_pDb.X4) + uintptr(76 /* X7 */))) = uint8(_pOp.X5)
}
-
- *(*uint8)(unsafe.Pointer(uintptr(_278_pDb.X4) + uintptr(76 /* X7 */))) = uint8(_pOp.X5)
-_1004:
_1003:
- if (_pOp.X3) != i32(1) {
- goto _1005
+ if (_pOp.X3) == i32(1) {
+ _sqlite3ExpirePreparedStatements(tls, _db)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 1, 0)
}
-
- _sqlite3ExpirePreparedStatements(tls, _db)
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 1, 0)
-_1005:
- if _rc == 0 {
- goto _1006
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1006:
goto _250
-
_149:
func() {
if int32(_pOp.X2) != i32(0) && int32(_pOp.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67944)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67316)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X1) != i32(-5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67984)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67353)))
crt.X__builtin_abort(tls)
}
}()
_282_pCur = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
- if _282_pCur == nil || (_282_pCur.X17) != uint32(_pOp.X4) {
- goto _1013
+ if (_282_pCur != nil) && ((_282_pCur.X17) == uint32(_pOp.X4)) {
+ func() {
+ if int32(_282_pCur.X1) != (_pOp.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81743), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67377)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _open_cursor_set_hints
}
-
- func() {
- if int32(_282_pCur.X1) != (_pOp.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81743), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68008)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _open_cursor_set_hints
-
-_1013:
_150:
_151:
func() {
if int32(_pOp.X0) != i32(107) && int32(_pOp.X2) != i32(0) && int32(_pOp.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81751), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81751), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67396)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81752), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81752), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X0) != i32(106) && int32(_pOp.X0) != i32(105) && int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81753), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81753), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67462)))
crt.X__builtin_abort(tls)
}
}()
- if ((uint32(_p.X32) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _1026
+ if ((uint32(_p.X32) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _rc = i32(516)
+ goto _abort_due_to_error
}
-
- _rc = i32(516)
- goto _abort_due_to_error
-
-_1026:
_282_nField = i32(0)
_282_pKeyInfo = nil
_282_p2 = _pOp.X4
_282_iDb = _pOp.X5
func() {
if _282_iDb < i32(0) || _282_iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_282_iDb))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81766), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81766), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67192)))
crt.X__builtin_abort(tls)
}
}()
@@ -56465,392 +50879,325 @@ _1026:
_282_pX = (*XBtree)(_282_pDb.X1)
func() {
if _282_pX == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81769), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81769), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67534)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pOp.X0) != i32(107) {
goto _1034
}
-
i32(0)
_282_wrFlag = i32(4) | (int32(_pOp.X2) & i32(8))
func() {
if _sqlite3SchemaMutexHeld(tls, _db, _282_iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81773), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81773), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
- if int32((*XSchema)(_282_pDb.X4).X7) >= int32(_p.X31) {
- goto _1037
+ if int32((*XSchema)(_282_pDb.X4).X7) < int32(_p.X31) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(139 /* X31 */))) = (*XSchema)(_282_pDb.X4).X7
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(139 /* X31 */))) = (*XSchema)(_282_pDb.X4).X7
-_1037:
goto _1038
-
_1034:
_282_wrFlag = i32(0)
_1038:
- if (int32(_pOp.X2) & i32(16)) == 0 {
- goto _1039
+ if (int32(_pOp.X2) & i32(16)) != 0 {
+ func() {
+ if _282_p2 <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81781), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67540)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _282_p2 > (((_p.X6) + i32(1)) - (_p.X7)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81782), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67545)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_282_p2)))
+ func() {
+ if (int32(_pIn2.X1) & i32(128)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81784), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67574)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_pIn2.X1) & i32(4)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81785), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67591)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeMemIntegerify(tls, _pIn2)
+ _282_p2 = int32(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */))))))
+ func() {
+ if _282_p2 < i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67618)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- func() {
- if _282_p2 <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81781), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68176)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _282_p2 > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81782), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68184)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_282_p2)))
- func() {
- if (int32(_pIn2.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81784), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68216)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32(_pIn2.X1) & i32(4)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81785), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68236)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3VdbeMemIntegerify(tls, _pIn2)
- _282_p2 = int32(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */))))))
- func() {
- if _282_p2 < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68264)))
- crt.X__builtin_abort(tls)
- }
- }()
-_1039:
- if int32(_pOp.X1) != i32(-5) {
- goto _1050
+ if int32(_pOp.X1) == i32(-5) {
+ _282_pKeyInfo = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ func() {
+ if int32(_282_pKeyInfo.X1) != int32(_db.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67624)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*Xsqlite3)(_282_pKeyInfo.X4) != _db {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81797), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67647)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _282_nField = int32(_282_pKeyInfo.X2) + int32(_282_pKeyInfo.X3)
+ goto _1055
}
-
- _282_pKeyInfo = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- func() {
- if int32(_282_pKeyInfo.X1) != int32(_db.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68272)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*Xsqlite3)(_282_pKeyInfo.X4) != _db {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81797), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68296)))
- crt.X__builtin_abort(tls)
- }
- }()
- _282_nField = int32(_282_pKeyInfo.X2) + int32(_282_pKeyInfo.X3)
- goto _1055
-
-_1050:
- if int32(_pOp.X1) != i32(-11) {
- goto _1056
+ if int32(_pOp.X1) == i32(-11) {
+ _282_nField = *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
}
-
- _282_nField = *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
-_1056:
_1055:
func() {
if (_pOp.X3) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81802), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81802), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67664)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _282_nField < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68328)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67675)))
crt.X__builtin_abort(tls)
}
}()
_282_pCur = _allocateCursor(tls, _p, _pOp.X3, _282_nField, _282_iDb, uint8(i32(0)))
- if _282_pCur != nil {
- goto _1061
+ if _282_pCur == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1061:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(2 /* X2 */))) = uint8(i32(1))
storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur))+uintptr(7 /* X7 */))), int8(i32(1)), 4, 2)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(48 /* X17 */))) = uint32(_282_p2)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(6 /* X6 */))) = uint8(_282_wrFlag)
- _rc = _sqlite3BtreeCursor(tls, _282_pX, _282_p2, _282_wrFlag, _282_pKeyInfo, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(36 /* X14 */)))))))
+ _rc = _sqlite3BtreeCursor(tls, _282_pX, _282_p2, _282_wrFlag, _282_pKeyInfo, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(36 /* X14 */)))))))
*(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(40 /* X15 */))))) = _282_pKeyInfo
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(4 /* X4 */))) = uint8(bool2int(int32(_pOp.X1) != i32(-5)))
_open_cursor_set_hints:
i32(0)
i32(0)
- _sqlite3BtreeCursorHintFlags(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(36 /* X14 */)))))), uint32(int32(_pOp.X2)&i32(3)))
- if _rc == 0 {
- goto _1062
+ _sqlite3BtreeCursorHintFlags(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_282_pCur)) + uintptr(36 /* X14 */)))))), uint32(int32(_pOp.X2)&i32(3)))
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1062:
goto _250
-
_152:
_291_pOrig = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X4)))
func() {
if (*XBtree)(_291_pOrig.X8) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81847), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81847), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67685)))
crt.X__builtin_abort(tls)
}
}()
_291_pCx = _allocateCursor(tls, _p, _pOp.X3, int32(_291_pOrig.X18), i32(-1), uint8(i32(0)))
- if _291_pCx != nil {
- goto _1065
+ if _291_pCx == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1065:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_291_pCx)) + uintptr(2 /* X2 */))) = uint8(i32(1))
storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_291_pCx))+uintptr(7 /* X7 */))), int8(i32(1)), 1, 0)
*(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_291_pCx)) + uintptr(40 /* X15 */))))) = (*XKeyInfo)(_291_pOrig.X15)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_291_pCx)) + uintptr(4 /* X4 */))) = _291_pOrig.X4
- _rc = _sqlite3BtreeCursor(tls, (*XBtree)(_291_pOrig.X8), i32(1), i32(4), (*XKeyInfo)(_291_pCx.X15), (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_291_pCx)) + uintptr(36 /* X14 */)))))))
+ _rc = _sqlite3BtreeCursor(tls, (*XBtree)(_291_pOrig.X8), i32(1), i32(4), (*XKeyInfo)(_291_pCx.X15), (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_291_pCx)) + uintptr(36 /* X14 */)))))))
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81860), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81860), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
goto _250
-
_153:
_154:
func() {
if (_pOp.X3) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67664)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81903), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81903), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67700)))
crt.X__builtin_abort(tls)
}
}()
_292_pCx = _allocateCursor(tls, _p, _pOp.X3, _pOp.X4, i32(-1), uint8(i32(0)))
- if _292_pCx != nil {
- goto _1072
+ if _292_pCx == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1072:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx)) + uintptr(2 /* X2 */))) = uint8(i32(1))
storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx))+uintptr(7 /* X7 */))), int8(i32(1)), 1, 0)
_rc = _sqlite3BtreeOpen(tls, (*Xsqlite3_vfs)(_db.X0), nil, _db, (**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx))+uintptr(8 /* X8 */))))), i32(5)|int32(_pOp.X2), _sqlite3VdbeExecØ00vfsFlagsØ006)
- if _rc != i32(0) {
- goto _1073
+ if _rc == i32(0) {
+ _rc = _sqlite3BtreeBeginTrans(tls, (*XBtree)(_292_pCx.X8), i32(1))
}
-
- _rc = _sqlite3BtreeBeginTrans(tls, (*XBtree)(_292_pCx.X8), i32(1))
-_1073:
if _rc != i32(0) {
goto _1074
}
-
- if store48((**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx))+uintptr(40 /* X15 */))))), store48(&_292_pKeyInfo, (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))) == nil {
+ if store50((**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx))+uintptr(40 /* X15 */))))), store50(&_292_pKeyInfo, (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))) == nil {
goto _1075
}
-
func() {
if int32(_pOp.X1) != i32(-5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81921), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67984)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81921), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67353)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3BtreeCreateTable(tls, (*XBtree)(_292_pCx.X8), &_295_pgno, i32(2)|int32(_pOp.X2))
- if _rc != i32(0) {
- goto _1078
+ if _rc == i32(0) {
+ func() {
+ if _295_pgno != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67711)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*Xsqlite3)(_292_pKeyInfo.X4) != _db {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81925), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67647)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_292_pKeyInfo.X1) != int32(_db.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67624)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3BtreeCursor(tls, (*XBtree)(_292_pCx.X8), _295_pgno, i32(4), _292_pKeyInfo, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx)) + uintptr(36 /* X14 */)))))))
}
-
- func() {
- if _295_pgno != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81924), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68368)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*Xsqlite3)(_292_pKeyInfo.X4) != _db {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81925), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68296)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_292_pKeyInfo.X1) != int32(_db.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68272)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _sqlite3BtreeCursor(tls, (*XBtree)(_292_pCx.X8), _295_pgno, i32(4), _292_pKeyInfo, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx)) + uintptr(36 /* X14 */)))))))
-_1078:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx)) + uintptr(4 /* X4 */))) = uint8(i32(0))
goto _1085
-
_1075:
- _rc = _sqlite3BtreeCursor(tls, (*XBtree)(_292_pCx.X8), i32(1), i32(4), nil, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx)) + uintptr(36 /* X14 */)))))))
+ _rc = _sqlite3BtreeCursor(tls, (*XBtree)(_292_pCx.X8), i32(1), i32(4), nil, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx)) + uintptr(36 /* X14 */)))))))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx)) + uintptr(4 /* X4 */))) = uint8(i32(1))
_1085:
_1074:
- if _rc == 0 {
- goto _1086
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1086:
storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_292_pCx))+uintptr(7 /* X7 */))), int8(bool2int(int32(_pOp.X2) != i32(8))), 4, 2)
goto _250
-
_155:
func() {
if (_pOp.X3) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81955), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81955), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67664)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81956), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81956), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67700)))
crt.X__builtin_abort(tls)
}
}()
_298_pCx = _allocateCursor(tls, _p, _pOp.X3, _pOp.X4, i32(-1), uint8(i32(1)))
- if _298_pCx != nil {
- goto _1091
+ if _298_pCx == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1091:
- *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_298_pCx)) + uintptr(40 /* X15 */))))) = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_298_pCx)) + uintptr(40 /* X15 */))))) = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
func() {
if (*Xsqlite3)((*XKeyInfo)(_298_pCx.X15).X4) != _db {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68388)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67731)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XKeyInfo)(_298_pCx.X15).X1) != int32(_db.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81961), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81961), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67753)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3VdbeSorterInit(tls, _db, _pOp.X5, _298_pCx)
- if _rc == 0 {
- goto _1096
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1096:
goto _250
-
_156:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81976), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81976), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_299_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if int32(_299_pC.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(81978), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(81978), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67781)))
crt.X__builtin_abort(tls)
}
}()
- if postInc6((*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_299_pC))+uintptr(12 /* X9 */))), int64(1)) != int64(i32(0)) {
- goto _1102
+ if postInc6((*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_299_pC))+uintptr(12 /* X9 */))), int64(1)) == int64(i32(0)) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1102:
goto _250
-
_157:
func() {
if (_pOp.X3) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82004), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82004), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67664)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82005), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68456)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82005), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67794)))
crt.X__builtin_abort(tls)
}
}()
_301_pCx = _allocateCursor(tls, _p, _pOp.X3, _pOp.X5, i32(-1), uint8(i32(3)))
- if _301_pCx != nil {
- goto _1107
+ if _301_pCx == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1107:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_301_pCx)) + uintptr(2 /* X2 */))) = uint8(i32(1))
- *(*int32)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_301_pCx)) + uintptr(36 /* X14 */))))) = _pOp.X4
+ *(*int32)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_301_pCx)) + uintptr(36 /* X14 */))))) = _pOp.X4
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_301_pCx)) + uintptr(4 /* X4 */))) = uint8(i32(1))
func() {
if int32(_pOp.X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68468)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67805)))
crt.X__builtin_abort(tls)
}
}()
goto _250
-
_158:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82021), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82021), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeFreeCursor(tls, _p, *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3))))
*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3))) = nil
goto _250
-
_159:
_160:
_161:
_162:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82145), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82145), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68480)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67816)))
crt.X__builtin_abort(tls)
}
}()
_303_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _303_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82148), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82148), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_303_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
@@ -56859,13 +51206,13 @@ _162:
i32(0)
func() {
if ((uint32((_303_pC.X7)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82153), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68492)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82153), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67827)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82154), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82154), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
@@ -56876,128 +51223,102 @@ _162:
if (_303_pC.X4) == 0 {
goto _1126
}
-
func() {
- if _sqlite3BtreeCursorHasHint(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), uint32(i32(2))) != i32(0) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82164), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68528)))
+ if _sqlite3BtreeCursorHasHint(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), uint32(i32(2))) != i32(0) && (_sqlite3Config.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82164), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67859)))
crt.X__builtin_abort(tls)
}
}()
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
- if (int32(_pIn3.X1) & i32(14)) != i32(2) {
- goto _1130
+ if (int32(_pIn3.X1) & i32(14)) == i32(2) {
+ _applyNumericAffinity(tls, _pIn3, i32(0))
}
-
- _applyNumericAffinity(tls, _pIn3, i32(0))
-_1130:
_303_iKey = _sqlite3VdbeIntValue(tls, _pIn3)
if (int32(_pIn3.X1) & i32(4)) != i32(0) {
goto _1131
}
-
- if (int32(_pIn3.X1) & i32(8)) != i32(0) {
- goto _1132
+ if (int32(_pIn3.X1) & i32(8)) == i32(0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1132:
- if (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) >= float64(_303_iKey) {
+ if (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) >= float64(_303_iKey) {
goto _1133
}
-
i32(0)
i32(0)
i32(0)
- if (_303_oc & i32(1)) != i32(1) {
- goto _1134
+ if (_303_oc & i32(1)) == i32(1) {
+ _303_oc -= 1
}
-
- _303_oc -= 1
-_1134:
goto _1135
-
_1133:
- if (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) <= float64(_303_iKey) {
+ if (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) <= float64(_303_iKey) {
goto _1136
}
-
i32(0)
i32(0)
i32(0)
- if (_303_oc & i32(1)) != i32(0) {
- goto _1137
+ if (_303_oc & i32(1)) == i32(0) {
+ _303_oc += 1
}
-
- _303_oc += 1
-_1137:
_1136:
_1135:
_1131:
- _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), nil, int64(uint64(_303_iKey)), i32(0), &_303_res)
+ _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), nil, int64(uint64(_303_iKey)), i32(0), &_303_res)
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(56 /* X20 */))) = _303_iKey
- if _rc == i32(0) {
- goto _1138
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1138:
goto _1139
-
_1126:
- if _sqlite3BtreeCursorHasHint(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), uint32(i32(2))) == 0 {
- goto _1140
+ if _sqlite3BtreeCursorHasHint(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), uint32(i32(2))) != 0 {
+ _303_eqOnly = i32(1)
+ func() {
+ if int32(_pOp.X0) != i32(26) && int32(_pOp.X0) != i32(25) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67933)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(40) && int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(39) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67982)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(1)))).X3) != ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(0)))).X3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68033)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(1)))).X4) != ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(0)))).X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68054)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(1)))).X5) != ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(0)))).X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82225), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68075)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))))) + uintptr(16 /* X6 */)))))) != (*(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(0)))))) + uintptr(16 /* X6 */)))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82226), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68096)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _303_eqOnly = i32(1)
- func() {
- if int32(_pOp.X0) != i32(26) && int32(_pOp.X0) != i32(25) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68604)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(40) && int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68656)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(1)))).X3) != ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(0)))).X3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68708)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(1)))).X4) != ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(0)))).X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68732)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(1)))).X5) != ((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(0)))).X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82225), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68756)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))))) + uintptr(16 /* X6 */)))))) != (*(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(0)))))) + uintptr(16 /* X6 */)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82226), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68780)))
- crt.X__builtin_abort(tls)
- }
- }()
-_1140:
- _303_nField = *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _303_nField = *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
func() {
if int32(_pOp.X1) != i32(-11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82230), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82230), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68121)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _303_nField <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68832)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68143)))
crt.X__builtin_abort(tls)
}
}()
@@ -57011,25 +51332,25 @@ _1140:
}())
func() {
if _303_oc == i32(27) && int32(_303_r.X3) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82243), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68844)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82243), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68152)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _303_oc == i32(25) && int32(_303_r.X3) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82244), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68880)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82244), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68186)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _303_oc == i32(26) && int32(_303_r.X3) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82245), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82245), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68220)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _303_oc == i32(24) && int32(_303_r.X3) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82246), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68952)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82246), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68254)))
crt.X__builtin_abort(tls)
}
}()
@@ -57039,145 +51360,113 @@ _1173:
if _313_i >= int32(_303_r.X2) {
goto _1176
}
-
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr(_303_r.X1)+48*uintptr(_313_i))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82250), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68288)))
crt.X__builtin_abort(tls)
}
}()
_313_i += 1
goto _1173
-
_1176:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_303_r)) + uintptr(14 /* X7 */))) = uint8(i32(0))
- _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), &_303_r, int64(i32(0)), i32(0), &_303_res)
- if _rc == i32(0) {
- goto _1179
+ _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), &_303_r, int64(i32(0)), i32(0), &_303_res)
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1179:
- if _303_eqOnly == 0 || int32(_303_r.X7) != i32(0) {
- goto _1181
+ if _303_eqOnly != 0 && (int32(_303_r.X7) == i32(0)) {
+ func() {
+ if _303_res == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68311)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _seek_not_found
}
-
- func() {
- if _303_res == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69012)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _seek_not_found
-
-_1181:
_1139:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(3 /* X3 */))) = uint8(i32(0))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
if _303_oc < i32(26) {
goto _1184
}
-
func() {
if _303_oc != i32(26) && _303_oc != i32(27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82267), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69020)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82267), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68318)))
crt.X__builtin_abort(tls)
}
}()
if _303_res >= i32(0) && (_303_res != i32(0) || _303_oc != i32(27)) {
goto _1190
}
-
_303_res = i32(0)
- _rc = _sqlite3BtreeNext(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), &_303_res)
- if _rc == i32(0) {
- goto _1191
+ _rc = _sqlite3BtreeNext(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), &_303_res)
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1191:
goto _1192
-
_1190:
_303_res = i32(0)
_1192:
goto _1193
-
_1184:
func() {
if _303_oc != i32(24) && _303_oc != i32(25) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68349)))
crt.X__builtin_abort(tls)
}
}()
if _303_res <= i32(0) && (_303_res != i32(0) || _303_oc != i32(24)) {
goto _1199
}
-
_303_res = i32(0)
- _rc = _sqlite3BtreePrevious(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), &_303_res)
- if _rc == i32(0) {
- goto _1200
+ _rc = _sqlite3BtreePrevious(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))), &_303_res)
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1200:
goto _1201
-
_1199:
- _303_res = _sqlite3BtreeEof(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))))
+ _303_res = _sqlite3BtreeEof(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_303_pC)) + uintptr(36 /* X14 */)))))))
_1201:
_1193:
_seek_not_found:
func() {
if (_pOp.X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82289), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82289), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62895)))
crt.X__builtin_abort(tls)
}
}()
- if _303_res == 0 {
- goto _1204
+ if _303_res != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1204:
- if _303_eqOnly == 0 {
- goto _1206
+ if _303_eqOnly != 0 {
+ func() {
+ if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(40) && int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(39) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82294), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67982)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uintptr)(unsafe.Pointer(&_pOp)) += uintptr(24)
}
-
- func() {
- if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(40) && int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(1)))).X0) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82294), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68656)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uintptr)(unsafe.Pointer(&_pOp)) += uintptr(24)
-_1206:
goto _250
-
_163:
_164:
_165:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82375), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82375), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X1) != i32(-11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68121)))
crt.X__builtin_abort(tls)
}
}()
_324_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _324_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82378), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82378), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
@@ -57185,70 +51474,62 @@ _165:
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
func() {
if int32(_324_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82383), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82383), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_324_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82384), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_324_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82384), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_324_pC.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68380)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) <= i32(0) {
+ if (*(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) <= i32(0) {
goto _1223
}
-
*(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_324_r)) + uintptr(0 /* X0 */))))) = (*XKeyInfo)(_324_pC.X15)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_324_r)) + uintptr(8 /* X2 */))) = uint16(*(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_324_r)) + uintptr(8 /* X2 */))) = uint16(*(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_324_r)) + uintptr(4 /* X1 */))))) = _pIn3
_324_ii = i32(0)
_1224:
if _324_ii >= int32(_324_r.X2) {
goto _1227
}
-
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr(_324_r.X1)+48*uintptr(_324_ii))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82392), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69100)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82392), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68395)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr(_324_r.X1)+48*uintptr(_324_ii))).X1)&i32(16384)) != i32(0) && ((*XMem)(unsafe.Pointer(uintptr(_324_r.X1)+48*uintptr(_324_ii))).X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82393), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69124)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82393), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68419)))
crt.X__builtin_abort(tls)
}
}()
if _324_ii == 0 {
goto _1233
}
-
- if ((_db.X6) & i32(1)) == 0 {
- goto _1234
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, (_pOp.X5)+_324_ii, (*XMem)(unsafe.Pointer(uintptr(_324_r.X1)+48*uintptr(_324_ii))))
}
-
- _registerTrace(tls, (_pOp.X5)+_324_ii, (*XMem)(unsafe.Pointer(uintptr(_324_r.X1)+48*uintptr(_324_ii))))
-_1234:
_1233:
_324_ii += 1
goto _1224
-
_1227:
_324_pIdxKey = &_324_r
_324_pFree = nil
goto _1235
-
_1223:
func() {
if (int32(_pIn3.X1) & i32(16)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82400), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69176)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82400), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68471)))
crt.X__builtin_abort(tls)
}
}()
@@ -57260,25 +51541,17 @@ _1223:
}()
func() {
if _rc != i32(0) && _rc != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82402), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(4168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82402), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(5805)))
crt.X__builtin_abort(tls)
}
}()
- if _rc == 0 {
- goto _1243
+ if _rc != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1243:
- _324_pFree = store49(&_324_pIdxKey, _sqlite3VdbeAllocUnpackedRecord(tls, (*XKeyInfo)(_324_pC.X15)))
- if _324_pIdxKey != nil {
- goto _1244
+ _324_pFree = store51(&_324_pIdxKey, _sqlite3VdbeAllocUnpackedRecord(tls, (*XKeyInfo)(_324_pC.X15)))
+ if _324_pIdxKey == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1244:
_sqlite3VdbeRecordUnpack(tls, (*XKeyInfo)(_324_pC.X15), _pIn3.X4, (unsafe.Pointer)(_pIn3.X5), _324_pIdxKey)
_1235:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_324_pIdxKey)) + uintptr(10 /* X3 */))) = int8(i32(0))
@@ -57286,40 +51559,26 @@ _1235:
if int32(_pOp.X0) != i32(28) {
goto _1245
}
-
_324_ii = i32(0)
_1246:
if _324_ii >= int32(_324_pIdxKey.X2) {
goto _1249
}
-
- if (int32((*XMem)(unsafe.Pointer(uintptr(_324_pIdxKey.X1)+48*uintptr(_324_ii))).X1) & i32(1)) == 0 {
- goto _1250
+ if (int32((*XMem)(unsafe.Pointer(uintptr(_324_pIdxKey.X1)+48*uintptr(_324_ii))).X1) & i32(1)) != 0 {
+ _324_takeJump = i32(1)
+ goto _1249
}
-
- _324_takeJump = i32(1)
- goto _1249
-
-_1250:
_324_ii += 1
goto _1246
-
_1249:
_1245:
- _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_324_pC)) + uintptr(36 /* X14 */)))))), _324_pIdxKey, int64(i32(0)), i32(0), &_324_res)
- if _324_pFree == nil {
- goto _1251
+ _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_324_pC)) + uintptr(36 /* X14 */)))))), _324_pIdxKey, int64(i32(0)), i32(0), &_324_res)
+ if _324_pFree != nil {
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_324_pFree))
}
-
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_324_pFree))
-_1251:
- if _rc == i32(0) {
- goto _1252
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1252:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_324_pC)) + uintptr(28 /* X12 */))) = _324_res
_324_alreadyExists = bool2int(_324_res == i32(0))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_324_pC)) + uintptr(2 /* X2 */))) = uint8(i32(1) - _324_alreadyExists)
@@ -57328,89 +51587,73 @@ _1252:
if int32(_pOp.X0) != i32(30) {
goto _1253
}
-
- if _324_alreadyExists == 0 {
- goto _1254
+ if _324_alreadyExists != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1254:
goto _1255
-
_1253:
- if _324_takeJump == 0 && _324_alreadyExists != 0 {
- goto _1257
+ if _324_takeJump != 0 || (_324_alreadyExists == 0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1257:
_1255:
goto _250
-
_166:
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
if (int32(_pIn3.X1) & i32(4)) != i32(0) {
goto _1258
}
-
_applyAffinity(tls, _pIn3, int8(i32(67)), _encoding)
- if (int32(_pIn3.X1) & i32(4)) != i32(0) {
- goto _1259
+ if (int32(_pIn3.X1) & i32(4)) == i32(0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1259:
_1258:
_167:
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
func() {
if (int32(_pIn3.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63806)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82503), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82503), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_334_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _334_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82505), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82505), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_334_pC)) + uintptr(5 /* X5 */))) = uint8(i32(0))
func() {
if (_334_pC.X4) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82509), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82509), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68494)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_334_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82510), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82510), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
- _334_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_334_pC)) + uintptr(36 /* X14 */))))))
+ _334_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_334_pC)) + uintptr(36 /* X14 */))))))
func() {
if _334_pCrsr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82512), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82512), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68506)))
crt.X__builtin_abort(tls)
}
}()
_334_res = i32(0)
- _334_iKey = uint64(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
+ _334_iKey = uint64(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
_rc = _sqlite3BtreeMovetoUnpacked(tls, _334_pCrsr, nil, int64(_334_iKey), i32(0), &_334_res)
func() {
if _rc != i32(0) && _334_res != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82516), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69224)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82516), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68515)))
crt.X__builtin_abort(tls)
}
}()
@@ -57422,127 +51665,102 @@ _167:
if _334_res == i32(0) {
goto _1276
}
-
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82524), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82524), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
- if (_pOp.X4) != i32(0) {
- goto _1279
+ if (_pOp.X4) == i32(0) {
+ _rc = _sqlite3CorruptError(tls, i32(82526))
+ goto _1280
}
-
- _rc = _sqlite3CorruptError(tls, i32(82526))
- goto _1280
-
-_1279:
goto _jump_to_p2
-
_1280:
_1276:
- if _rc == 0 {
- goto _1281
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1281:
goto _250
-
_168:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82544), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82544), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82545), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66092)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82545), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65574)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))).X0) == i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82546), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69248)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82546), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68539)))
crt.X__builtin_abort(tls)
}
}()
_pOut = _out2Prerelease(tls, _p, _pOp)
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = postInc6((*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))))+uintptr(12 /* X9 */))), int64(1))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = postInc6((*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))))+uintptr(12 /* X9 */))), int64(1))
goto _250
-
_169:
_340_v = int64(i32(0))
_340_res = i32(0)
_pOut = _out2Prerelease(tls, _p, _pOp)
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82579), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82579), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_340_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _340_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82581), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82581), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_340_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82582), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82582), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82583), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82583), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_340_pC.X4) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82598), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82598), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68494)))
crt.X__builtin_abort(tls)
}
}()
if ((uint32((_340_pC.X7)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) != 0 {
goto _1300
}
-
- _rc = _sqlite3BtreeLast(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))), &_340_res)
- if _rc == i32(0) {
- goto _1301
+ _rc = _sqlite3BtreeLast(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))), &_340_res)
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1301:
- if _340_res == 0 {
- goto _1302
+ if _340_res != 0 {
+ _340_v = int64(i32(1))
+ goto _1303
}
-
- _340_v = int64(i32(1))
- goto _1303
-
-_1302:
func() {
- if _sqlite3BtreeCursorIsValid(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */))))))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69292)))
+ if _sqlite3BtreeCursorIsValid(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */))))))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68581)))
crt.X__builtin_abort(tls)
}
}()
- _340_v = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))))
- if _340_v < i64(9223372036854775807) {
- goto _1306
+ _340_v = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))))
+ if _340_v >= i64(9223372036854775807) {
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC))+uintptr(7 /* X7 */))), int8(i32(1)), 2, 1)
+ goto _1307
}
-
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC))+uintptr(7 /* X7 */))), int8(i32(1)), 2, 1)
- goto _1307
-
-_1306:
_340_v += 1
_1307:
_1303:
@@ -57550,40 +51768,35 @@ _1300:
if (_pOp.X5) == 0 {
goto _1308
}
-
func() {
if (_pOp.X5) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82631), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63396)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82631), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63012)))
crt.X__builtin_abort(tls)
}
}()
if (*XVdbeFrame)(_p.X38) == nil {
goto _1311
}
-
_340_pFrame = (*XVdbeFrame)(_p.X38)
_1312:
if (*XVdbeFrame)(_340_pFrame.X1) == nil {
goto _1315
}
-
_340_pFrame = (*XVdbeFrame)(_340_pFrame.X1)
goto _1312
-
_1315:
func() {
if (_pOp.X5) > (_340_pFrame.X13) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82635), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82635), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68623)))
crt.X__builtin_abort(tls)
}
}()
_340_pMem = (*XMem)(unsafe.Pointer(uintptr(_340_pFrame.X4) + 48*uintptr(_pOp.X5)))
goto _1318
-
_1311:
func() {
if (_pOp.X5) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63022)))
crt.X__builtin_abort(tls)
}
}()
@@ -57592,46 +51805,35 @@ _1311:
_1318:
func() {
if (int32(_340_pMem.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69360)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68645)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _1323
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, _340_pMem)
}
-
- _registerTrace(tls, _pOp.X5, _340_pMem)
-_1323:
_sqlite3VdbeMemIntegerify(tls, _340_pMem)
func() {
if (int32(_340_pMem.X1) & i32(4)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82647), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82647), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68662)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */)))))) != i64(9223372036854775807) && ((uint32((_340_pC.X7)>>uint(i32(1)))<>uint(i32(31))) == 0 {
- goto _1327
+ if ((*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */)))))) == i64(9223372036854775807)) || (((uint32((_340_pC.X7)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) != 0) {
+ _rc = i32(13)
+ goto _abort_due_to_error
}
-
- _rc = i32(13)
- goto _abort_due_to_error
-
-_1327:
- if _340_v >= ((*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */)))))) + int64(i32(1))) {
- goto _1328
+ if _340_v < ((*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */)))))) + int64(i32(1))) {
+ _340_v = (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */)))))) + int64(i32(1))
}
-
- _340_v = (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */)))))) + int64(i32(1))
-_1328:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */))))) = _340_v
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pMem)) + uintptr(0 /* X0 */))))) = _340_v
_1308:
if ((uint32((_340_pC.X7)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) == 0 {
goto _1329
}
-
func() {
if (_pOp.X5) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82663), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82663), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68689)))
crt.X__builtin_abort(tls)
}
}()
@@ -57644,179 +51846,147 @@ _1332:
sink6 = *p
}
_340_v += 1
- if ((store1(&_rc, _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))), nil, int64(uint64(_340_v)), i32(0), &_340_res)) == i32(0)) && (_340_res == i32(0))) && (preInc1(&_340_cnt, 1) < i32(100)) {
+ if ((store1(&_rc, _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(36 /* X14 */)))))), nil, int64(uint64(_340_v)), i32(0), &_340_res)) == i32(0)) && (_340_res == i32(0))) && (preInc1(&_340_cnt, 1) < i32(100)) {
goto _1332
}
-
- if _rc == 0 {
- goto _1335
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1335:
- if _340_res != i32(0) {
- goto _1336
+ if _340_res == i32(0) {
+ _rc = i32(13)
+ goto _abort_due_to_error
}
-
- _rc = i32(13)
- goto _abort_due_to_error
-
-_1336:
func() {
if _340_v <= int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82678), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82678), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68700)))
crt.X__builtin_abort(tls)
}
}()
_1329:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(3 /* X3 */))) = uint8(i32(0))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_340_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _340_v
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _340_v
goto _250
-
_170:
_171:
_356_op = i32(0)
_356_pData = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82743), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82743), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_356_pData.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82744), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69424)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82744), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68704)))
crt.X__builtin_abort(tls)
}
}()
_356_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _356_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82746), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82746), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_356_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82747), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82747), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82748), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82748), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pOp.X2)&i32(64)) == 0 && (_356_pC.X4) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69444)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68722)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X1) != i32(-15) && int32(_pOp.X1) < i32(-2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82750), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82750), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68763)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _1356
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X4, _356_pData)
}
-
- _registerTrace(tls, _pOp.X4, _356_pData)
-_1356:
if int32(_pOp.X0) != i32(118) {
goto _1357
}
-
_356_pKey = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
func() {
if (int32(_356_pKey.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82755), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69536)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82755), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68811)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_356_pKey.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69560)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68833)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _1362
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, _356_pKey)
}
-
- _registerTrace(tls, _pOp.X5, _356_pKey)
-_1362:
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(4 /* X1 */))) = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pKey)) + uintptr(0 /* X0 */)))))
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(4 /* X1 */))) = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pKey)) + uintptr(0 /* X0 */)))))
goto _1363
-
_1357:
func() {
if int32(_pOp.X0) != i32(119) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82760), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69580)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82760), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68850)))
crt.X__builtin_abort(tls)
}
}()
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(4 /* X1 */))) = int64(_pOp.X5)
_1363:
- if int32(_pOp.X1) != i32(-15) || (_db.X50) == nil {
- goto _1367
+ if (int32(_pOp.X1) == i32(-15)) && ((_db.X50) != nil) {
+ func() {
+ if int32(_356_pC.X1) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68876)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _356_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_356_pC.X1))).X0
+ _356_pTab = (*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ func() {
+ if (int32(_pOp.X2)&i32(64)) == 0 && ((_356_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82768), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68887)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _356_op = func() int32 {
+ if (int32(_pOp.X2) & i32(4)) != 0 {
+ return i32(23)
+ }
+ return i32(18)
+ }()
+ goto _1375
}
-
- func() {
- if int32(_356_pC.X1) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69608)))
- crt.X__builtin_abort(tls)
- }
- }()
- _356_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_356_pC.X1))).X0
- _356_pTab = (*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- func() {
- if (int32(_pOp.X2)&i32(64)) == 0 && ((_356_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82768), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69620)))
- crt.X__builtin_abort(tls)
- }
- }()
- _356_op = func() int32 {
- if (int32(_pOp.X2) & i32(4)) != 0 {
- return i32(23)
- }
- return i32(18)
- }()
- goto _1375
-
-_1367:
_356_pTab = nil
_356_zDb = nil
_1375:
- if (int32(_pOp.X2) & i32(1)) == 0 {
- goto _1376
+ if (int32(_pOp.X2) & i32(1)) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) += 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) += 1
-_1376:
- if (int32(_pOp.X2) & i32(32)) == 0 {
- goto _1377
+ if (int32(_pOp.X2) & i32(32)) != 0 {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(28 /* X7 */))) = _356_x.X1
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(28 /* X7 */))) = _356_x.X1
-_1377:
- if (int32(_356_pData.X1) & i32(1)) == 0 {
- goto _1378
+ if (int32(_356_pData.X1) & i32(1)) != 0 {
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(12 /* X2 */))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(24 /* X5 */))) = i32(0)
+ goto _1379
}
-
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(12 /* X2 */))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(24 /* X5 */))) = i32(0)
- goto _1379
-
-_1378:
func() {
if (int32(_356_pData.X1) & i32(18)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82792), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68931)))
crt.X__builtin_abort(tls)
}
}()
@@ -57829,113 +51999,93 @@ _1379:
}
return i32(0)
}()
- if (int32(_356_pData.X1) & i32(16384)) == 0 {
- goto _1384
+ if (int32(_356_pData.X1) & i32(16384)) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(28 /* X6 */))) = *(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pData)) + uintptr(0 /* X0 */)))))
+ goto _1385
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(28 /* X6 */))) = *(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pData)) + uintptr(0 /* X0 */)))))
- goto _1385
-
-_1384:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(28 /* X6 */))) = i32(0)
_1385:
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_356_x)) + uintptr(0 /* X0 */))) = nil
- _rc = _sqlite3BtreeInsert(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pC)) + uintptr(36 /* X14 */)))))), &_356_x, int32(_pOp.X2)&i32(10), _356_seekResult)
+ _rc = _sqlite3BtreeInsert(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pC)) + uintptr(36 /* X14 */)))))), &_356_x, int32(_pOp.X2)&i32(10), _356_seekResult)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pC)) + uintptr(3 /* X3 */))) = uint8(i32(0))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_356_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
- if _rc == 0 {
- goto _1386
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1386:
- if (_db.X50) == nil || _356_op == 0 {
- goto _1388
+ if ((_db.X50) != nil) && _356_op != 0 {
+ (_db.X50)(tls, _db.X49, _356_op, _356_zDb, _356_pTab.X0, _356_x.X1)
}
-
- (_db.X50)(tls, _db.X49, _356_op, _356_zDb, _356_pTab.X0, _356_x.X1)
-_1388:
goto _250
-
_172:
_366_opflags = _pOp.X4
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82859), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82859), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_366_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _366_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82861), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82861), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_366_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82862), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82862), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82863), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82863), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_366_pC.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68965)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pOp.X1) != i32(-15) || (((*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X9)&uint32(i32(32))) != uint32(i32(0)) || int32(_pOp.X2) != i32(0) {
- goto _1402
+ if ((int32(_pOp.X1) == i32(-15)) && ((((*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X9) & uint32(i32(32))) == uint32(i32(0)))) && (int32(_pOp.X2) == i32(0)) {
+ _367_iKey = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))))
+ func() {
+ if (_366_pC.X20) != _367_iKey {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82872), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68987)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _367_iKey = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))))
- func() {
- if (_366_pC.X20) != _367_iKey {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82872), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69724)))
- crt.X__builtin_abort(tls)
- }
- }()
-_1402:
if int32(_pOp.X1) != i32(-15) || (_db.X50) == nil {
goto _1406
}
-
func() {
if int32(_366_pC.X1) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82882), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69608)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82882), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68876)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82883), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69748)))
+ if (*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82883), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69010)))
crt.X__builtin_abort(tls)
}
}()
_366_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_366_pC.X1))).X0
- _366_pTab = (*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- if (int32(_pOp.X2)&i32(2)) == i32(0) || (_366_pC.X4) == 0 {
- goto _1412
+ _366_pTab = (*XTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ if ((int32(_pOp.X2) & i32(2)) != i32(0)) && ((_366_pC.X4) != 0) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(56 /* X20 */))) = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))))
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(56 /* X20 */))) = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))))
-_1412:
goto _1413
-
_1406:
_366_zDb = nil
_366_pTab = nil
_1413:
func() {
if (int32(_pOp.X2) & i32(-7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82911), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82911), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69026)))
crt.X__builtin_abort(tls)
}
}()
@@ -57944,369 +52094,294 @@ _1413:
if (*XVdbeFrame)(_p.X38) != nil {
goto _1416
}
-
- if int32((uint32(_366_pC.X7)<>uint(i32(31))) != i32(0) || (int32(_pOp.X2)&i32(4)) != i32(0) || (int32(_366_pC.X6)&i32(8)) != i32(0) {
- goto _1419
+ if ((int32((uint32(_366_pC.X7)<>uint(i32(31))) == i32(0)) && ((int32(_pOp.X2) & i32(4)) == i32(0))) && ((int32(_366_pC.X6) & i32(8)) == i32(0)) {
+ _nExtraDelete += 1
}
-
- _nExtraDelete += 1
-_1419:
- if ((_pOp.X4) & i32(1)) == 0 {
- goto _1420
+ if ((_pOp.X4) & i32(1)) != 0 {
+ _nExtraDelete -= 1
}
-
- _nExtraDelete -= 1
-_1420:
_1416:
- _rc = _sqlite3BtreeDelete(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))), uint8(_pOp.X2))
+ _rc = _sqlite3BtreeDelete(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(36 /* X14 */)))))), uint8(_pOp.X2))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_366_pC)) + uintptr(28 /* X12 */))) = i32(0)
- if _rc == 0 {
- goto _1421
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1421:
if (_366_opflags & i32(1)) == 0 {
goto _1422
}
-
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) += 1
- if (_db.X50) == nil || ((_366_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) {
- goto _1424
+ if ((_db.X50) != nil) && (((_366_pTab.X9) & uint32(i32(32))) == uint32(i32(0))) {
+ (_db.X50)(tls, _db.X49, i32(9), _366_zDb, _366_pTab.X0, _366_pC.X20)
+ func() {
+ if int32(_366_pC.X1) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82940), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68876)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- (_db.X50)(tls, _db.X49, i32(9), _366_zDb, _366_pTab.X0, _366_pC.X20)
- func() {
- if int32(_366_pC.X1) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82940), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69608)))
- crt.X__builtin_abort(tls)
- }
- }()
-_1424:
_1422:
goto _250
-
_173:
_sqlite3VdbeSetChanges(tls, _db, _p.X11)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
goto _250
-
_174:
_377_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if int32(_377_pC.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82980), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82980), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67781)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X1) != i32(-11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(82981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(82981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68121)))
crt.X__builtin_abort(tls)
}
}()
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
- _377_nKeyCol = *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _377_nKeyCol = *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
_377_res = i32(0)
_rc = _sqlite3VdbeSorterCompare(tls, _377_pC, _pIn3, _377_nKeyCol, &_377_res)
- if _rc == 0 {
- goto _1431
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1431:
- if _377_res == 0 {
- goto _1432
+ if _377_res != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1432:
goto _250
-
_175:
_pOut = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_378_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if int32(_378_pC.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83009), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83009), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67781)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3VdbeSorterRowkey(tls, _378_pC, _pOut)
func() {
if _rc == i32(0) && (int32(_pOut.X1)&i32(16)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69820)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69081)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
- if _rc == 0 {
- goto _1441
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1441:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X5))))) + uintptr(24 /* X11 */))) = uint32(i32(0))
goto _250
-
_176:
_pOut = _out2Prerelease(tls, _p, _pOp)
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83053), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83053), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_379_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _379_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83055), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83055), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_379_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
if bool2int(int32(_379_pC.X0) == i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83057), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83057), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69123)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_379_pC.X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83058), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69880)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83058), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69139)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_379_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_379_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
- _379_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_379_pC)) + uintptr(36 /* X14 */))))))
+ _379_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_379_pC)) + uintptr(36 /* X14 */))))))
func() {
if int32(_379_pC.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83070), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83070), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68965)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3BtreeCursorIsValid(tls, _379_pCrsr) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83071), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66348)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83071), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65813)))
crt.X__builtin_abort(tls)
}
}()
_379_n = _sqlite3BtreePayloadSize(tls, _379_pCrsr)
- if _379_n <= uint32(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
- goto _1459
+ if _379_n > uint32(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0))))) {
+ goto _too_big
}
-
- goto _too_big
-
-_1459:
_rc = _sqlite3VdbeMemFromBtree(tls, _379_pCrsr, uint32(i32(0)), _379_n, _pOut)
- if _rc == 0 {
- goto _1460
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1460:
if (_pOp.X5) != 0 {
goto _1461
}
-
- if (int32(_pOut.X1)&i32(4096)) == i32(0) || _sqlite3VdbeMemMakeWriteable(tls, _pOut) == 0 {
- goto _1463
+ if ((int32(_pOut.X1) & i32(4096)) != i32(0)) && _sqlite3VdbeMemMakeWriteable(tls, _pOut) != 0 {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1463:
_1461:
- if ((_db.X6) & i32(1)) == 0 {
- goto _1464
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X4, _pOut)
}
-
- _registerTrace(tls, _pOp.X4, _pOut)
-_1464:
goto _250
-
_177:
_pOut = _out2Prerelease(tls, _p, _pOp)
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83107), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83107), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_382_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _382_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_382_pC.X0) == i32(3) && (_382_pC.X2) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83110), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66168)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83110), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65642)))
crt.X__builtin_abort(tls)
}
}()
- if (_382_pC.X2) == 0 {
- goto _1473
+ if (_382_pC.X2) != 0 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(1))
+ goto _250
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(1))
- goto _250
-
-_1473:
- if (_382_pC.X3) == 0 {
- goto _1475
+ if (_382_pC.X3) != 0 {
+ _382_v = _382_pC.X20
+ goto _1476
}
-
- _382_v = _382_pC.X20
- goto _1476
-
-_1475:
if int32(_382_pC.X0) != i32(2) {
goto _1477
}
-
func() {
- if (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83118), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69896)))
+ if (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83118), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69154)))
crt.X__builtin_abort(tls)
}
}()
- _382_pVtab = (*Xsqlite3_vtab)((*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))).X0)
+ _382_pVtab = (*Xsqlite3_vtab)((*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))).X0)
_382_pModule = (*Xsqlite3_module)(_382_pVtab.X0)
func() {
if (*(*func(*crt.TLS, *Xsqlite3_file, *int64) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int64) int32
}{(_382_pModule.X12)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83121), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69912)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83121), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69170)))
crt.X__builtin_abort(tls)
}
}()
_rc = (*(*func(*crt.TLS, *Xsqlite3_file, *int64) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int64) int32
- }{(_382_pModule.X12)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))), &_382_v)
+ }{(_382_pModule.X12)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))), &_382_v)
_sqlite3VtabImportErrmsg(tls, _p, _382_pVtab)
- if _rc == 0 {
- goto _1482
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1482:
goto _1483
-
_1477:
func() {
if int32(_382_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83127), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83127), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83128), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83128), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3VdbeCursorRestore(tls, _382_pC)
- if _rc == 0 {
- goto _1488
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1488:
- if (_382_pC.X2) == 0 {
- goto _1489
+ if (_382_pC.X2) != 0 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(1))
+ goto _250
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(1))
- goto _250
-
-_1489:
- _382_v = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))))
+ _382_v = _sqlite3BtreeIntegerKey(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_382_pC)) + uintptr(36 /* X14 */)))))))
_1483:
_1476:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _382_v
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _382_v
goto _250
-
_178:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83150), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83150), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_388_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _388_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83152), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83152), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_388_pC)) + uintptr(2 /* X2 */))) = uint8(i32(1))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_388_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
- if int32(_388_pC.X0) != i32(0) {
- goto _1495
+ if int32(_388_pC.X0) == i32(0) {
+ func() {
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_388_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83156), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3BtreeClearCursor(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_388_pC)) + uintptr(36 /* X14 */)))))))
}
-
- func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_388_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83156), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3BtreeClearCursor(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_388_pC)) + uintptr(36 /* X14 */)))))))
-_1495:
goto _250
-
_179:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83186), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83186), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_390_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _390_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83188), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83188), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_390_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83189), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83189), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
- _390_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_390_pC)) + uintptr(36 /* X14 */))))))
+ _390_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_390_pC)) + uintptr(36 /* X14 */))))))
_390_res = i32(0)
func() {
if _390_pCrsr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83192), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83192), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68506)))
crt.X__builtin_abort(tls)
}
}()
@@ -58315,144 +52390,115 @@ _179:
if (_pOp.X5) != i32(0) && _sqlite3BtreeCursorIsValidNN(tls, _390_pCrsr) != 0 {
goto _1508
}
-
_rc = _sqlite3BtreeLast(tls, _390_pCrsr, &_390_res)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_390_pC)) + uintptr(2 /* X2 */))) = uint8(_390_res)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_390_pC)) + uintptr(3 /* X3 */))) = uint8(i32(0))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_390_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
- if _rc == 0 {
- goto _1509
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1509:
if (_pOp.X4) <= i32(0) {
goto _1510
}
-
- if _390_res == 0 {
- goto _1511
+ if _390_res != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1511:
_1510:
goto _1512
-
_1508:
func() {
if (_pOp.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83208), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83208), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69186)))
crt.X__builtin_abort(tls)
}
}()
_1512:
goto _250
-
_180:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_394_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _394_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83226), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83226), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
- _394_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_394_pC)) + uintptr(36 /* X14 */))))))
+ _394_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_394_pC)) + uintptr(36 /* X14 */))))))
func() {
if _394_pCrsr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83228), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83228), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65807)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3BtreeFirst(tls, _394_pCrsr, &_394_res)
- if _rc == 0 {
- goto _1522
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1522:
if _394_res != i32(0) {
goto _1523
}
-
_394_sz = _sqlite3BtreeRowCountEst(tls, _394_pCrsr)
if func() int32 {
if _394_sz >= int64(i32(0)) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 || int32(_sqlite3LogEst(tls, uint64(_394_sz))) >= (_pOp.X5) {
- goto _1527
+ }() != 0 && (int32(_sqlite3LogEst(tls, uint64(_394_sz))) < (_pOp.X5)) {
+ _394_res = i32(1)
}
-
- _394_res = i32(1)
-_1527:
_1523:
- if _394_res == 0 {
- goto _1528
+ if _394_res != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1528:
goto _250
-
_181:
_182:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(152 /* X35 */))))) + 4*uintptr(i32(2)))) += 1
_183:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_397_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _397_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83290), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83290), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_397_pC.X0) == i32(1)) != (int32(_pOp.X0) == i32(35)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83291), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69940)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83291), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69197)))
crt.X__builtin_abort(tls)
}
}()
_397_res = i32(1)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_397_pC)) + uintptr(5 /* X5 */))) = uint8(i32(37))
- if int32(_397_pC.X0) != i32(1) {
- goto _1536
+ if int32(_397_pC.X0) == i32(1) {
+ _rc = _sqlite3VdbeSorterRewind(tls, _397_pC, &_397_res)
+ goto _1537
}
-
- _rc = _sqlite3VdbeSorterRewind(tls, _397_pC, &_397_res)
- goto _1537
-
-_1536:
func() {
if int32(_397_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83299), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83299), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
- _397_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_397_pC)) + uintptr(36 /* X14 */))))))
+ _397_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_397_pC)) + uintptr(36 /* X14 */))))))
func() {
if _397_pCrsr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83301), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66340)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83301), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65807)))
crt.X__builtin_abort(tls)
}
}()
@@ -58460,61 +52506,47 @@ _1536:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_397_pC)) + uintptr(3 /* X3 */))) = uint8(i32(0))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_397_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
_1537:
- if _rc == 0 {
- goto _1542
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1542:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_397_pC)) + uintptr(2 /* X2 */))) = uint8(_397_res)
func() {
if (_pOp.X4) <= i32(0) || (_pOp.X4) >= (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83308), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69984)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83308), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69240)))
crt.X__builtin_abort(tls)
}
}()
- if _397_res == 0 {
- goto _1546
+ if _397_res != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1546:
goto _250
-
_184:
_400_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if int32(_400_pC.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83389), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68440)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83389), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67781)))
crt.X__builtin_abort(tls)
}
}()
_400_res = i32(0)
_rc = _sqlite3VdbeSorterNext(tls, _db, _400_pC, &_400_res)
goto _next_tail
-
_185:
_186:
- if (*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))) != nil {
- goto _1549
+ if (*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))) == nil {
+ goto _250
}
-
- goto _250
-
-_1549:
_187:
_188:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83399), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83399), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X2) >= i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83400), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70012)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83400), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69268)))
crt.X__builtin_abort(tls)
}
}()
@@ -58522,25 +52554,25 @@ _188:
_400_res = _pOp.X5
func() {
if _400_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83403), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83403), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_400_pC.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68965)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_400_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83405), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83405), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _400_res != i32(0) && (_400_res != i32(1) || int32(_400_pC.X4) != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83406), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70044)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83406), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69299)))
crt.X__builtin_abort(tls)
}
}()
@@ -58549,10 +52581,10 @@ _188:
f func(*crt.TLS, *XBtCursor, *int32) int32
}{(*(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32) int32
- }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XBtCursor, *int32) int32
}{_sqlite3BtreeNext})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83408), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83408), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69336)))
crt.X__builtin_abort(tls)
}
}()
@@ -58561,10 +52593,10 @@ _188:
f func(*crt.TLS, *XBtCursor, *int32) int32
}{(*(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32) int32
- }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XBtCursor, *int32) int32
}{_sqlite3BtreePrevious})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83409), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83409), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69395)))
crt.X__builtin_abort(tls)
}
}()
@@ -58573,10 +52605,10 @@ _188:
f func(*crt.TLS, *XBtCursor, *int32) int32
}{(*(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32) int32
- }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XBtCursor, *int32) int32
}{_sqlite3BtreeNext})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83410), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70208)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83410), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69458)))
crt.X__builtin_abort(tls)
}
}()
@@ -58585,92 +52617,80 @@ _188:
f func(*crt.TLS, *XBtCursor, *int32) int32
}{(*(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32) int32
- }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, *XBtCursor, *int32) int32
}{_sqlite3BtreePrevious})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69523)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X0) == i32(7) && int32(_pOp.X0) == i32(5) && int32(_400_pC.X5) != i32(27) && int32(_400_pC.X5) != i32(26) && int32(_400_pC.X5) != i32(37) && int32(_400_pC.X5) != i32(30) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83415), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70348)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83415), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69592)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X0) == i32(6) && int32(_pOp.X0) == i32(4) && int32(_400_pC.X5) != i32(24) && int32(_400_pC.X5) != i32(25) && int32(_400_pC.X5) != i32(33) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83418), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70500)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83418), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69742)))
crt.X__builtin_abort(tls)
}
}()
_rc = (*(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32) int32
- }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_400_pC)) + uintptr(36 /* X14 */)))))), &_400_res)
+ }{(*(*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))})))(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_400_pC)) + uintptr(36 /* X14 */)))))), &_400_res)
_next_tail:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_400_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
- if _rc == 0 {
- goto _1590
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1590:
- if _400_res != i32(0) {
- goto _1591
+ if _400_res == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_400_pC)) + uintptr(2 /* X2 */))) = uint8(i32(0))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(152 /* X35 */))))) + 4*uintptr(_pOp.X2))) += 1
+ goto _jump_to_p2_and_check_for_interrupt
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_400_pC)) + uintptr(2 /* X2 */))) = uint8(i32(0))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(152 /* X35 */))))) + 4*uintptr(_pOp.X2))) += 1
- goto _jump_to_p2_and_check_for_interrupt
-
-_1591:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_400_pC)) + uintptr(2 /* X2 */))) = uint8(i32(1))
goto _check_for_interrupt
-
_189:
_190:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83480), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83480), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_403_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _403_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83482), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83482), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_403_pC.X0) == i32(1)) != (int32(_pOp.X0) == i32(127)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83483), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70624)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83483), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69866)))
crt.X__builtin_abort(tls)
}
}()
_pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
func() {
if (int32(_pIn2.X1) & i32(16)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83485), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70672)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83485), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69911)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pOp.X2) & i32(1)) == 0 {
- goto _1602
+ if (int32(_pOp.X2) & i32(1)) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) += 1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) += 1
-_1602:
func() {
if int32(_403_pC.X0) != i32(0) && int32(_pOp.X0) != i32(127) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83487), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83487), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69934)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_403_pC.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83488), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83488), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68380)))
crt.X__builtin_abort(tls)
}
}()
@@ -58680,26 +52700,18 @@ _1602:
}
return i32(0)
}()
- if _rc == 0 {
- goto _1610
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1610:
- if int32(_pOp.X0) != i32(127) {
- goto _1611
+ if int32(_pOp.X0) == i32(127) {
+ _rc = _sqlite3VdbeSorterWrite(tls, _403_pC, _pIn2)
+ goto _1612
}
-
- _rc = _sqlite3VdbeSorterWrite(tls, _403_pC, _pIn2)
- goto _1612
-
-_1611:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_403_x)) + uintptr(4 /* X1 */))) = int64(_pIn2.X4)
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_403_x)) + uintptr(0 /* X0 */))) = (unsafe.Pointer)(_pIn2.X5)
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_403_x)) + uintptr(16 /* X3 */))))) = (*XMem)(unsafe.Pointer(uintptr(unsafe.Pointer(_aMem)) + uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(_pOp.X5)))))*uintptr(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr(48)))))))))))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_403_x)) + uintptr(20 /* X4 */))) = uint16(*(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- _rc = _sqlite3BtreeInsert(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_403_pC)) + uintptr(36 /* X14 */)))))), &_403_x, int32(_pOp.X2)&i32(10), func() int32 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_403_x)) + uintptr(20 /* X4 */))) = uint16(*(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _rc = _sqlite3BtreeInsert(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_403_pC)) + uintptr(36 /* X14 */)))))), &_403_x, int32(_pOp.X2)&i32(10), func() int32 {
if (int32(_pOp.X2) & i32(16)) != 0 {
return (_403_pC.X12)
}
@@ -58707,63 +52719,58 @@ _1611:
}())
func() {
if int32(_403_pC.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68965)))
crt.X__builtin_abort(tls)
}
}()
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_403_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
_1612:
- if _rc == 0 {
- goto _1617
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1617:
goto _250
-
_191:
func() {
if (_pOp.X5) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83522), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63396)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83522), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63012)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) <= i32(0) || ((_pOp.X4)+(_pOp.X5)) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83523), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83523), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69994)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83524), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83524), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_406_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _406_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83526), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83526), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_406_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83527), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83527), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
- _406_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_406_pC)) + uintptr(36 /* X14 */))))))
+ _406_pCrsr = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_406_pC)) + uintptr(36 /* X14 */))))))
func() {
if _406_pCrsr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83529), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83529), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68506)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83530), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68468)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83530), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67805)))
crt.X__builtin_abort(tls)
}
}()
@@ -58772,78 +52779,68 @@ _191:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_406_r)) + uintptr(10 /* X3 */))) = int8(i32(0))
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_406_r)) + uintptr(4 /* X1 */))))) = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_rc = _sqlite3BtreeMovetoUnpacked(tls, _406_pCrsr, &_406_r, int64(i32(0)), i32(0), &_406_res)
- if _rc == 0 {
- goto _1634
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1634:
if _406_res != i32(0) {
goto _1635
}
-
_rc = _sqlite3BtreeDelete(tls, _406_pCrsr, uint8(i32(4)))
- if _rc == 0 {
- goto _1636
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1636:
_1635:
func() {
if int32(_406_pC.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83541), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83541), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68965)))
crt.X__builtin_abort(tls)
}
}()
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_406_pC)) + uintptr(24 /* X11 */))) = uint32(i32(0))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_406_pC)) + uintptr(28 /* X12 */))) = i32(0)
goto _250
-
_192:
_193:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83581), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83581), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_408_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _408_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83583), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83583), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_408_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83584), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83584), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83585), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83585), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_408_pC.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83586), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83586), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68380)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_408_pC.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68965)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_408_pC.X2) != 0 && int32(_pOp.X0) != i32(131) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83588), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83588), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70051)))
crt.X__builtin_abort(tls)
}
}()
@@ -58851,169 +52848,150 @@ _193:
if func() int32 {
if _rc != i32(0) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _1657
+ }() != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1657:
if (_408_pC.X2) != 0 {
goto _1658
}
-
_408_rowid = int64(i32(0))
- _rc = _sqlite3VdbeIdxRowid(tls, _db, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pC)) + uintptr(36 /* X14 */)))))), &_408_rowid)
- if _rc == i32(0) {
- goto _1659
+ _rc = _sqlite3VdbeIdxRowid(tls, _db, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pC)) + uintptr(36 /* X14 */)))))), &_408_rowid)
+ if _rc != i32(0) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1659:
- if int32(_pOp.X0) != i32(130) {
- goto _1660
+ if int32(_pOp.X0) == i32(130) {
+ func() {
+ if (_pOp.X5) < i32(0) || (_pOp.X5) >= (_p.X7) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83606), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70092)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _408_pTabCur = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X5)))
+ func() {
+ if _408_pTabCur == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83608), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70125)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_408_pTabCur.X0) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70136)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83610), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70169)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_408_pTabCur.X4) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70192)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(2 /* X2 */))) = uint8(i32(0))
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(56 /* X20 */))) = _408_rowid
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(3 /* X3 */))) = uint8(i32(1))
+ func() {
+ if int32(_pOp.X1) != i32(-12) && (*(**int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70209)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(20 /* X10 */))) = *(**int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ *(**XVdbeCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(32 /* X13 */))))) = _408_pC
+ goto _1675
}
-
- func() {
- if (_pOp.X5) < i32(0) || (_pOp.X5) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83606), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70860)))
- crt.X__builtin_abort(tls)
- }
- }()
- _408_pTabCur = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X5)))
- func() {
- if _408_pTabCur == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83608), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70896)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_408_pTabCur.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70908)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83610), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70944)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_408_pTabCur.X4) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70968)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(2 /* X2 */))) = uint8(i32(0))
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(56 /* X20 */))) = _408_rowid
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(3 /* X3 */))) = uint8(i32(1))
- func() {
- if int32(_pOp.X1) != i32(-12) && (*(**int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70988)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(20 /* X10 */))) = *(**int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
- *(**XVdbeCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_408_pTabCur)) + uintptr(32 /* X13 */))))) = _408_pC
- goto _1675
-
-_1660:
_pOut = _out2Prerelease(tls, _p, _pOp)
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _408_rowid
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _408_rowid
_1675:
goto _1676
-
_1658:
func() {
if int32(_pOp.X0) != i32(131) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83623), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71032)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83623), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70251)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemSetNull(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))))
_1676:
goto _250
-
_194:
_195:
_196:
_197:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83681), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83681), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_414_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _414_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((uint32((_414_pC.X7)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83684), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68492)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83684), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67827)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_414_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83685), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83685), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_414_pC)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83686), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68508)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_414_pC)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83686), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67841)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_414_pC.X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83687), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(69700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83687), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68965)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X2) != i32(0) && int32(_pOp.X2) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83688), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71060)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83688), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70276)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pOp.X1) != i32(-11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83689), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83689), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68121)))
crt.X__builtin_abort(tls)
}
}()
*(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_414_r)) + uintptr(0 /* X0 */))))) = (*XKeyInfo)(_414_pC.X15)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_414_r)) + uintptr(8 /* X2 */))) = uint16(*(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- if int32(_pOp.X0) >= i32(40) {
- goto _1697
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_414_r)) + uintptr(8 /* X2 */))) = uint16(*(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ if int32(_pOp.X0) < i32(40) {
+ func() {
+ if int32(_pOp.X0) != i32(38) && int32(_pOp.X0) != i32(39) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83693), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70301)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_414_r)) + uintptr(10 /* X3 */))) = int8(i32(-1))
+ goto _1701
}
-
- func() {
- if int32(_pOp.X0) != i32(38) && int32(_pOp.X0) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83693), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71088)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_414_r)) + uintptr(10 /* X3 */))) = int8(i32(-1))
- goto _1701
-
-_1697:
func() {
if int32(_pOp.X0) != i32(41) && int32(_pOp.X0) != i32(40) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83696), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83696), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70348)))
crt.X__builtin_abort(tls)
}
}()
@@ -59025,126 +53003,99 @@ _1705:
if _417_i >= int32(_414_r.X2) {
goto _1708
}
-
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr(_414_r.X1)+48*uintptr(_417_i))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68288)))
crt.X__builtin_abort(tls)
}
}()
_417_i += 1
goto _1705
-
_1708:
_414_res = i32(0)
_rc = _sqlite3VdbeIdxKeyCompare(tls, _db, _414_pC, &_414_r, &_414_res)
i32(0)
- if (int32(_pOp.X0) & i32(1)) != i32(0) {
- goto _1711
+ if (int32(_pOp.X0) & i32(1)) == i32(0) {
+ func() {
+ if int32(_pOp.X0) != i32(38) && int32(_pOp.X0) != i32(40) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83707), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70395)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _414_res = -_414_res
+ goto _1715
}
-
- func() {
- if int32(_pOp.X0) != i32(38) && int32(_pOp.X0) != i32(40) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83707), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71184)))
- crt.X__builtin_abort(tls)
- }
- }()
- _414_res = -_414_res
- goto _1715
-
-_1711:
func() {
if int32(_pOp.X0) != i32(41) && int32(_pOp.X0) != i32(39) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83710), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71232)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83710), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70442)))
crt.X__builtin_abort(tls)
}
}()
_414_res += 1
_1715:
- if _rc == 0 {
- goto _1719
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1719:
- if _414_res <= i32(0) {
- goto _1720
+ if _414_res > i32(0) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1720:
goto _250
-
_198:
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83750), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83750), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) <= i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83751), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71280)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83751), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70489)))
crt.X__builtin_abort(tls)
}
}()
_pOut = _out2Prerelease(tls, _p, _pOp)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(1))
- if (_db.X35) <= ((_db.X38) + i32(1)) {
- goto _1725
+ if (_db.X35) > ((_db.X38) + i32(1)) {
+ _rc = i32(6)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(i32(2))
+ goto _abort_due_to_error
}
-
- _rc = i32(6)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(i32(2))
- goto _abort_due_to_error
-
-_1725:
_420_iDb = _pOp.X5
func() {
if ((_p.X33) & (u32(1) << uint(_420_iDb))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83760), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83760), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67192)))
crt.X__builtin_abort(tls)
}
}()
_420_iMoved = i32(0)
_rc = _sqlite3BtreeDropTable(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_420_iDb))).X1), _pOp.X3, &_420_iMoved)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_420_iMoved)
- if _rc == 0 {
- goto _1729
- }
-
- goto _abort_due_to_error
-
-_1729:
- if _420_iMoved == i32(0) {
- goto _1730
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_420_iMoved)
+ if _rc != 0 {
+ goto _abort_due_to_error
+ }
+ if _420_iMoved != i32(0) {
+ _sqlite3RootPageMoved(tls, _db, _420_iDb, _420_iMoved, _pOp.X3)
+ func() {
+ if int32(_resetSchemaOnFault) != i32(0) && int32(_resetSchemaOnFault) != (_420_iDb+i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83770), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70499)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _resetSchemaOnFault = uint8(_420_iDb + i32(1))
}
-
- _sqlite3RootPageMoved(tls, _db, _420_iDb, _420_iMoved, _pOp.X3)
- func() {
- if int32(_resetSchemaOnFault) != i32(0) && int32(_resetSchemaOnFault) != (_420_iDb+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83770), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71292)))
- crt.X__builtin_abort(tls)
- }
- }()
- _resetSchemaOnFault = uint8(_420_iDb + i32(1))
-_1730:
goto _250
-
_199:
_424_nChange = i32(0)
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_pOp.X4))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70550)))
crt.X__builtin_abort(tls)
}
}()
@@ -59157,337 +53108,273 @@ _199:
if (_pOp.X5) == 0 {
goto _1740
}
-
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */)))
*p = (*p) + _424_nChange
sink1 = *p
}
- if (_pOp.X5) <= i32(0) {
- goto _1741
- }
-
- func() {
- if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63444)))
- crt.X__builtin_abort(tls)
+ if (_pOp.X5) > i32(0) {
+ func() {
+ if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))).X1) & i32(128)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63056)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeMemAboutToChange(tls, _p, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))
+ {
+ p := (*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))) + uintptr(0 /* X0 */)))))
+ *p = (*p) + int64(_424_nChange)
+ sink6 = *p
}
- }()
- _sqlite3VdbeMemAboutToChange(tls, _p, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))
- {
- p := (*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))))) + uintptr(0 /* X0 */)))))
- *p = (*p) + int64(_424_nChange)
- sink6 = *p
}
-_1741:
_1740:
- if _rc == 0 {
- goto _1744
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1744:
goto _250
-
_200:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83828), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83828), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65541)))
crt.X__builtin_abort(tls)
}
}()
_427_pC = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if _427_pC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83830), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83830), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65595)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_427_pC.X0) != i32(1) {
- goto _1750
+ if int32(_427_pC.X0) == i32(1) {
+ _sqlite3VdbeSorterReset(tls, _db, (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_427_pC)) + uintptr(36 /* X14 */)))))))
+ goto _1751
}
-
- _sqlite3VdbeSorterReset(tls, _db, (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_427_pC)) + uintptr(36 /* X14 */)))))))
- goto _1751
-
-_1750:
func() {
if int32(_427_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83834), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83834), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((uint32(_427_pC.X7) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83835), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83835), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70584)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _sqlite3BtreeClearTableOfCursor(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_427_pC)) + uintptr(36 /* X14 */)))))))
- if _rc == 0 {
- goto _1756
+ _rc = _sqlite3BtreeClearTableOfCursor(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_427_pC)) + uintptr(36 /* X14 */)))))))
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1756:
_1751:
goto _250
-
_201:
_202:
_pOut = _out2Prerelease(tls, _p, _pOp)
_430_pgno = i32(0)
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83874), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83874), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66998)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_pOp.X3))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83875), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83875), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67028)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83876), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83876), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
_430_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3)))
func() {
if (*XBtree)(_430_pDb.X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83878), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83878), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67265)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pOp.X0) != i32(137) {
- goto _1766
+ if int32(_pOp.X0) == i32(137) {
+ _430_flags = i32(1)
+ goto _1767
}
-
- _430_flags = i32(1)
- goto _1767
-
-_1766:
_430_flags = i32(2)
_1767:
_rc = _sqlite3BtreeCreateTable(tls, (*XBtree)(_430_pDb.X1), &_430_pgno, _430_flags)
- if _rc == 0 {
- goto _1768
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1768:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_430_pgno)
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_430_pgno)
goto _250
-
_203:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(74 /* X26 */))) += 1
- _rc = Xsqlite3_exec(tls, _db, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), nil, nil, nil)
+ _rc = Xsqlite3_exec(tls, _db, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), nil, nil, nil)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(74 /* X26 */))) -= 1
- if _rc == 0 {
- goto _1769
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1769:
goto _250
-
_204:
_434_iDb = i32(0)
_1770:
if _434_iDb >= (_db.X5) {
goto _1773
}
-
func() {
if _434_iDb != i32(1) && _sqlite3BtreeHoldsMutex(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_434_iDb))).X1)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(51544)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(49956)))
crt.X__builtin_abort(tls)
}
}()
_434_iDb += 1
goto _1770
-
_1773:
_434_iDb = _pOp.X3
func() {
if _434_iDb < i32(0) || _434_iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83928), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83928), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_434_iDb))).X4).X9) & i32(1)) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83929), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71396)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83929), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70600)))
crt.X__builtin_abort(tls)
}
}()
- _434_zMaster = str(51616)
+ _434_zMaster = str(50026)
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_434_initData)) + uintptr(0 /* X0 */))))) = _db
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_434_initData)) + uintptr(8 /* X2 */))) = _pOp.X3
*(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_434_initData)) + uintptr(4 /* X1 */))) = (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(104 /* X22 */)))
- _434_zSql = _sqlite3MPrintf(tls, _db, str(71436), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_434_iDb))).X0), unsafe.Pointer(_434_zMaster), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
- if _434_zSql != nil {
- goto _1782
+ _434_zSql = _sqlite3MPrintf(tls, _db, str(70640), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_434_iDb))).X0), unsafe.Pointer(_434_zMaster), unsafe.Pointer(*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
+ if _434_zSql == nil {
+ _rc = _sqlite3NomemError(tls, i32(83939))
+ goto _1783
}
-
- _rc = _sqlite3NomemError(tls, i32(83939))
- goto _1783
-
-_1782:
func() {
- if int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83941), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(51476)))
+ if int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83941), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(49896)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(1))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_434_initData)) + uintptr(12 /* X3 */))) = i32(0)
func() {
if (_db.X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83944), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(23588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83944), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(23869)))
crt.X__builtin_abort(tls)
}
}()
_rc = Xsqlite3_exec(tls, _db, _434_zSql, _sqlite3InitCallback, (unsafe.Pointer)(&_434_initData), nil)
- if _rc != i32(0) {
- goto _1788
+ if _rc == i32(0) {
+ _rc = _434_initData.X3
}
-
- _rc = _434_initData.X3
-_1788:
_sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_434_zSql))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(5 /* X2 */))) = uint8(i32(0))
_1783:
if _rc == 0 {
goto _1789
}
-
_sqlite3ResetAllSchemasOfConnection(tls, _db)
- if _rc != i32(7) {
- goto _1790
+ if _rc == i32(7) {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1790:
goto _abort_due_to_error
-
_1789:
goto _250
-
_205:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(83969), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(83969), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66998)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3AnalysisLoad(tls, _db, _pOp.X3)
- if _rc == 0 {
- goto _1794
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1794:
goto _250
-
_206:
- _sqlite3UnlinkAndDeleteTable(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _sqlite3UnlinkAndDeleteTable(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
goto _250
-
_207:
- _sqlite3UnlinkAndDeleteIndex(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _sqlite3UnlinkAndDeleteIndex(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
goto _250
-
_208:
- _sqlite3UnlinkAndDeleteTrigger(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _sqlite3UnlinkAndDeleteTrigger(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
goto _250
-
_209:
func() {
if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84043), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84043), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
crt.X__builtin_abort(tls)
}
}()
_445_nRoot = _pOp.X4
- _445_aRoot = *(**int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _445_aRoot = *(**int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
func() {
if _445_nRoot <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71500)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70704)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_445_aRoot)) + 4*uintptr(_445_nRoot)))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84047), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71508)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84047), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70712)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) <= i32(0) || (_pOp.X5) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84048), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84048), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64441)))
crt.X__builtin_abort(tls)
}
}()
_445_pnErr = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
func() {
if (int32(_445_pnErr.X1) & i32(4)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84050), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84050), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70728)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_445_pnErr.X1) & i32(18)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71552)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84051), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70756)))
crt.X__builtin_abort(tls)
}
}()
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if int32(_pOp.X2) >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84053), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71592)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84053), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70795)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(int32(_pOp.X2)))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84054), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71608)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84054), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70811)))
crt.X__builtin_abort(tls)
}
}()
- _445_z = _sqlite3BtreeIntegrityCheck(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_pOp.X2))).X1), _445_aRoot, _445_nRoot, int32(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_445_pnErr)) + uintptr(0 /* X0 */))))))+i32(1), &_445_nErr)
+ _445_z = _sqlite3BtreeIntegrityCheck(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_pOp.X2))).X1), _445_aRoot, _445_nRoot, int32(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_445_pnErr)) + uintptr(0 /* X0 */))))))+i32(1), &_445_nErr)
_sqlite3VdbeMemSetNull(tls, _pIn1)
- if _445_nErr != i32(0) {
- goto _1812
+ if _445_nErr == i32(0) {
+ func() {
+ if _445_z != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70845)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _1815
}
-
- func() {
- if _445_z != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71644)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _1815
-
-_1812:
- if _445_z != nil {
- goto _1816
+ if _445_z == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1816:
{
- p := (*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_445_pnErr)) + uintptr(0 /* X0 */)))))
+ p := (*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_445_pnErr)) + uintptr(0 /* X0 */)))))
*p = (*p) - int64(_445_nErr-i32(1))
sink6 = *p
}
@@ -59495,171 +53382,126 @@ _1816:
_1815:
_sqlite3VdbeChangeEncoding(tls, _pIn1, int32(_encoding))
goto _250
-
_210:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
func() {
if (int32(_pIn2.X1) & i32(4)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84083), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84083), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67591)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_pIn1.X1) & i32(32)) != i32(0) {
goto _1820
}
-
_sqlite3VdbeMemSetRowSet(tls, _pIn1)
- if (int32(_pIn1.X1) & i32(32)) != i32(0) {
- goto _1821
+ if (int32(_pIn1.X1) & i32(32)) == i32(0) {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1821:
_1820:
- _sqlite3RowSetInsert(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */))))))
+ _sqlite3RowSetInsert(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */))))))
goto _250
-
_211:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
- if (int32(_pIn1.X1)&i32(32)) != i32(0) && _sqlite3RowSetNext(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), &_451_val) != i32(0) {
- goto _1823
+ if ((int32(_pIn1.X1) & i32(32)) == i32(0)) || (_sqlite3RowSetNext(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), &_451_val) == i32(0)) {
+ _sqlite3VdbeMemSetNull(tls, _pIn1)
+ goto _jump_to_p2_and_check_for_interrupt
}
-
- _sqlite3VdbeMemSetNull(tls, _pIn1)
- goto _jump_to_p2_and_check_for_interrupt
-
-_1823:
_sqlite3VdbeMemSetInt64(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X5))), _451_val)
goto _check_for_interrupt
-
_212:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
- _454_iSet = *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _454_iSet = *(*int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
func() {
if (int32(_pIn3.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71652)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70850)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_pIn1.X1) & i32(32)) != i32(0) {
goto _1827
}
-
_sqlite3VdbeMemSetRowSet(tls, _pIn1)
- if (int32(_pIn1.X1) & i32(32)) != i32(0) {
- goto _1828
+ if (int32(_pIn1.X1) & i32(32)) == i32(0) {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1828:
_1827:
func() {
if int32(_pOp.X1) != i32(-11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(68121)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _454_iSet != i32(-1) && _454_iSet < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71672)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70870)))
crt.X__builtin_abort(tls)
}
}()
if _454_iSet == 0 {
goto _1834
}
-
- _454_exists = _sqlite3RowSetTest(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), _454_iSet, *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
- if _454_exists == 0 {
- goto _1835
+ _454_exists = _sqlite3RowSetTest(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), _454_iSet, *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
+ if _454_exists != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1835:
_1834:
- if _454_iSet < i32(0) {
- goto _1836
+ if _454_iSet >= i32(0) {
+ _sqlite3RowSetInsert(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
}
-
- _sqlite3RowSetInsert(tls, (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))), *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
-_1836:
goto _250
-
_213:
- _458_pProgram = (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _458_pProgram = (*XSubProgram)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
_458_pRt = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
func() {
if (_458_pProgram.X1) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84202), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71692)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84202), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70890)))
crt.X__builtin_abort(tls)
}
}()
if (_pOp.X2) == 0 {
goto _1839
}
-
_458_t = _458_pProgram.X5
_458_pFrame = (*XVdbeFrame)(_p.X38)
_1840:
if _458_pFrame == nil || (_458_pFrame.X7) == _458_t {
goto _1844
}
-
_458_pFrame = (*XVdbeFrame)(_458_pFrame.X1)
goto _1840
-
_1844:
- if _458_pFrame == nil {
- goto _1845
+ if _458_pFrame != nil {
+ goto _250
}
-
- goto _250
-
-_1845:
_1839:
- if (_p.X40) < (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(10))))) {
- goto _1846
+ if (_p.X40) >= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(10))))) {
+ _rc = i32(1)
+ _sqlite3VdbeError(tls, _p, str(70906))
+ goto _abort_due_to_error
}
-
- _rc = i32(1)
- _sqlite3VdbeError(tls, _p, str(71708))
- goto _abort_due_to_error
-
-_1846:
if (int32(_458_pRt.X1) & i32(64)) != i32(0) {
goto _1847
}
-
_458_nMem = (_458_pProgram.X2) + (_458_pProgram.X3)
func() {
if _458_nMem <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71748)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70943)))
crt.X__builtin_abort(tls)
}
}()
- if (_458_pProgram.X3) != i32(0) {
- goto _1850
+ if (_458_pProgram.X3) == i32(0) {
+ _458_nMem += 1
}
-
- _458_nMem += 1
-_1850:
_458_nByte = int32(((u32(80) + (uint32(_458_nMem) * u32(48))) + (uint32(_458_pProgram.X3) * u32(4))) + uint32(((_458_pProgram.X1)+i32(7))/i32(8)))
_458_pFrame = (*XVdbeFrame)(_sqlite3DbMallocZero(tls, _db, uint64(_458_nByte)))
- if _458_pFrame != nil {
- goto _1851
+ if _458_pFrame == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1851:
_sqlite3VdbeMemRelease(tls, _458_pRt)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pRt)) + uintptr(8 /* X1 */))) = uint16(i32(64))
- *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pRt)) + uintptr(0 /* X0 */))))))) = _458_pFrame
+ *(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pRt)) + uintptr(0 /* X0 */))))))) = _458_pFrame
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pFrame)) + uintptr(0 /* X0 */))))) = _p
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pFrame)) + uintptr(60 /* X14 */))) = _458_nMem
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pFrame)) + uintptr(64 /* X15 */))) = _458_pProgram.X3
@@ -59677,32 +53519,29 @@ _1852:
if _458_pMem == _458_pEnd {
goto _1855
}
-
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(128))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pMem)) + uintptr(32 /* X9 */))))) = _db
*(*uintptr)(unsafe.Pointer(&_458_pMem)) += uintptr(48)
goto _1852
-
_1855:
goto _1856
-
_1847:
- _458_pFrame = (*XVdbeFrame)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pRt)) + uintptr(0 /* X0 */))))))
+ _458_pFrame = (*XVdbeFrame)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pRt)) + uintptr(0 /* X0 */))))))
func() {
if ((_458_pProgram.X2)+(_458_pProgram.X3)) != (_458_pFrame.X14) && ((_458_pProgram.X3) != i32(0) || ((_458_pProgram.X2)+i32(1)) != (_458_pFrame.X14)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84274), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84274), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(70950)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_458_pProgram.X3) != (_458_pFrame.X15) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71868)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71061)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer(_aOp)))/24) != (_458_pFrame.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84277), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71904)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84277), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71095)))
crt.X__builtin_abort(tls)
}
}()
@@ -59714,7 +53553,7 @@ _1856:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pFrame)) + uintptr(72 /* X17 */))) = (*Xsqlite3)(_p.X0).X29
func() {
if (*XAuxData)(_458_pFrame.X9) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84285), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71936)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84285), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71124)))
crt.X__builtin_abort(tls)
}
}()
@@ -59722,49 +53561,39 @@ _1856:
*(**XAuxData)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(200 /* X43 */))))) = nil
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) = i32(0)
*(**XVdbeFrame)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(180 /* X38 */))))) = _458_pFrame
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(88 /* X18 */))))) = store18(&_aMem, (*XMem)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pFrame))+1*uintptr(u32(80)))))))
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(88 /* X18 */))))) = store20(&_aMem, (*XMem)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pFrame))+1*uintptr(u32(80)))))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = _458_pFrame.X14
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = int32(uint16(_458_pFrame.X15))
*(***XVdbeCursor)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(108 /* X23 */))))) = (**XVdbeCursor)(unsafe.Pointer((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_p.X6)))))
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_458_pFrame)) + uintptr(24 /* X6 */))) = (*uint8)(unsafe.Pointer((**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_458_pProgram.X3)))))
crt.Xmemset(tls, (unsafe.Pointer)(_458_pFrame.X6), i32(0), uint32(((_458_pProgram.X1)+i32(7))/i32(8)))
- *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(84 /* X17 */))))) = store38(&_aOp, (*XVdbeOp)(_458_pProgram.X0))
+ *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(84 /* X17 */))))) = store40(&_aOp, (*XVdbeOp)(_458_pProgram.X0))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(128 /* X27 */))) = _458_pProgram.X1
_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp)) + 24*uintptr(i32(-1))))
goto _250
-
_214:
_pOut = _out2Prerelease(tls, _p, _pOp)
_465_pFrame = (*XVdbeFrame)(_p.X38)
_465_pIn = (*XMem)(unsafe.Pointer(uintptr(_465_pFrame.X4) + 48*uintptr((_pOp.X3)+((*XVdbeOp)(unsafe.Pointer(uintptr(_465_pFrame.X2)+24*uintptr(_465_pFrame.X11))).X3))))
_sqlite3VdbeMemShallowCopy(tls, _pOut, _465_pIn, i32(4096))
goto _250
-
_215:
- if ((_db.X6) & i32(33554432)) == 0 {
- goto _1867
- }
-
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */)))
- *p = (*p) + int64(_pOp.X4)
- sink6 = *p
- }
- goto _1868
-
-_1867:
- if (_pOp.X3) == 0 {
- goto _1869
+ if ((_db.X6) & i32(33554432)) != 0 {
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */)))
+ *p = (*p) + int64(_pOp.X4)
+ sink6 = *p
+ }
+ goto _1868
}
-
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(436 /* X77 */)))
- *p = (*p) + int64(_pOp.X4)
- sink6 = *p
+ if (_pOp.X3) != 0 {
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(436 /* X77 */)))
+ *p = (*p) + int64(_pOp.X4)
+ sink6 = *p
+ }
+ goto _1870
}
- goto _1870
-
-_1869:
{
p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X14 */)))
*p = (*p) + int64(_pOp.X4)
@@ -59773,238 +53602,187 @@ _1869:
_1870:
_1868:
goto _250
-
_216:
if (_pOp.X3) == 0 {
goto _1871
}
-
- if (_db.X77) != int64(i32(0)) || (_db.X78) != int64(i32(0)) {
- goto _1873
+ if ((_db.X77) == int64(i32(0))) && ((_db.X78) == int64(i32(0))) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1873:
goto _1874
-
_1871:
- if (_p.X14) != int64(i32(0)) || (_db.X78) != int64(i32(0)) {
- goto _1876
+ if ((_p.X14) == int64(i32(0))) && ((_db.X78) == int64(i32(0))) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1876:
_1874:
goto _250
-
_217:
if (*XVdbeFrame)(_p.X38) == nil {
goto _1877
}
-
_473_pFrame = (*XVdbeFrame)(_p.X38)
_1878:
if (*XVdbeFrame)(_473_pFrame.X1) == nil {
goto _1881
}
-
_473_pFrame = (*XVdbeFrame)(_473_pFrame.X1)
goto _1878
-
_1881:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr(_473_pFrame.X4) + 48*uintptr(_pOp.X3)))
goto _1882
-
_1877:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_1882:
func() {
if (int32(_pIn1.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84394), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64516)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84394), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64072)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemIntegerify(tls, _pIn1)
_pIn2 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X4)))
_sqlite3VdbeMemIntegerify(tls, _pIn2)
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) >= (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */)))))) {
- goto _1885
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) < (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */)))))) {
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */)))))
}
-
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn2)) + uintptr(0 /* X0 */)))))
-_1885:
goto _250
-
_218:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if (int32(_pIn1.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71144)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) <= int64(i32(0)) {
- goto _1888
- }
-
- {
- p := (*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
- *p = (*p) - int64(_pOp.X5)
- sink6 = *p
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) > int64(i32(0)) {
+ {
+ p := (*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
+ *p = (*p) - int64(_pOp.X5)
+ sink6 = *p
+ }
+ goto _jump_to_p2
}
- goto _jump_to_p2
-
-_1888:
goto _250
-
_219:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
_pIn3 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
_pOut = _out2Prerelease(tls, _p, _pOp)
func() {
if (int32(_pIn1.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84449), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84449), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71164)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pIn3.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84450), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84450), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63806)))
crt.X__builtin_abort(tls)
}
}()
- _479_x = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
- if _479_x > int64(i32(0)) && _sqlite3AddInt64(tls, &_479_x, func() int64 {
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) > int64(i32(0)) {
- return (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
+ _479_x = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))
+ if (_479_x <= int64(i32(0))) || _sqlite3AddInt64(tls, &_479_x, func() int64 {
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */)))))) > int64(i32(0)) {
+ return (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn3)) + uintptr(0 /* X0 */))))))
}
return int64(i32(0))
- }()) == 0 {
- goto _1896
+ }()) != 0 {
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(i32(-1))
+ goto _1897
}
-
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(i32(-1))
- goto _1897
-
-_1896:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _479_x
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _479_x
_1897:
goto _250
-
_220:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if (int32(_pIn1.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84477), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84477), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71144)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) == 0 {
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) == 0 {
goto _1900
}
-
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) <= int64(i32(0)) {
- goto _1901
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) > int64(i32(0)) {
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) -= 1
}
-
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) -= 1
-_1901:
goto _jump_to_p2
-
_1900:
goto _250
-
_221:
_pIn1 = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if (int32(_pIn1.X1) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84494), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84494), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71144)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) <= i64(-9223372036854775808) {
- goto _1904
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) > i64(-9223372036854775808) {
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) -= 1
}
-
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */))))) -= 1
-_1904:
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) != int64(i32(0)) {
- goto _1905
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn1)) + uintptr(0 /* X0 */)))))) == int64(i32(0)) {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_1905:
goto _250
-
_222:
func() {
if int32(_pOp.X1) != i32(-4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84534), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84534), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64417)))
crt.X__builtin_abort(tls)
}
}()
_485_n = int32(_pOp.X2)
func() {
if (_pOp.X5) <= i32(0) || (_pOp.X5) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64441)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _485_n != i32(0) && ((_pOp.X4) <= i32(0) || ((_pOp.X4)+_485_n) > ((((_p.X6)+i32(1))-(_p.X7))+i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64488)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) >= (_pOp.X4) && (_pOp.X5) < ((_pOp.X4)+_485_n) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84538), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65012)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84538), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64549)))
crt.X__builtin_abort(tls)
}
}()
_485_pCtx = (*Xsqlite3_context)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(32)+(uint32(_485_n-i32(1))*u32(4)))))
- if _485_pCtx != nil {
- goto _1918
+ if _485_pCtx == nil {
+ goto _no_mem
}
-
- goto _no_mem
-
-_1918:
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_485_pCtx)) + uintptr(8 /* X2 */))))) = nil
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_485_pCtx)) + uintptr(4 /* X1 */))))) = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_485_pCtx)) + uintptr(4 /* X1 */))))) = (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_485_pCtx)) + uintptr(16 /* X4 */))) = int32((uintptr(unsafe.Pointer(_pOp)) - uintptr(unsafe.Pointer(_aOp))) / 24)
*(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_485_pCtx)) + uintptr(12 /* X3 */))))) = _p
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_485_pCtx)) + uintptr(26 /* X8 */))) = uint8(_485_n)
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-16))
- *(**Xsqlite3_context)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _485_pCtx
+ *(**Xsqlite3_context)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _485_pCtx
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(151))
_223:
func() {
if int32(_pOp.X1) != i32(-16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84557), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84557), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64587)))
crt.X__builtin_abort(tls)
}
}()
- _486_pCtx = (*Xsqlite3_context)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _486_pCtx = (*Xsqlite3_context)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
_486_pMem = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
if (*XMem)(_486_pCtx.X2) == _486_pMem {
goto _1921
}
-
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_486_pCtx)) + uintptr(8 /* X2 */))))) = _486_pMem
_486_i = int32(_486_pCtx.X8) - i32(1)
_1922:
if _486_i < i32(0) {
goto _1925
}
-
*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_486_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_486_i))) = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr((_pOp.X4)+_486_i)))
_486_i -= 1
goto _1922
-
_1925:
_1921:
_486_i = i32(0)
@@ -60012,22 +53790,17 @@ _1926:
if _486_i >= int32(_486_pCtx.X8) {
goto _1929
}
-
func() {
if (int32((*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_486_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_486_i)))).X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(65076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84572), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64611)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _1932
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, (_pOp.X4)+_486_i, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_486_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_486_i))))
}
-
- _registerTrace(tls, (_pOp.X4)+_486_i, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_486_pCtx))+uintptr(28 /* X9 */))))) + 4*uintptr(_486_i))))
-_1932:
_486_i += 1
goto _1926
-
_1929:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_486_pMem)) + uintptr(12 /* X4 */))) += 1
_sqlite3VdbeMemInit(tls, &_486_t, _db, uint16(i32(1)))
@@ -60040,28 +53813,19 @@ _1929:
if (_486_pCtx.X7) == 0 {
goto _1933
}
-
- if (_486_pCtx.X5) == 0 {
- goto _1934
+ if (_486_pCtx.X5) != 0 {
+ _sqlite3VdbeError(tls, _p, str(24576), unsafe.Pointer(Xsqlite3_value_text(tls, &_486_t)))
+ _rc = _486_pCtx.X5
}
-
- _sqlite3VdbeError(tls, _p, str(24316), unsafe.Pointer(Xsqlite3_value_text(tls, &_486_t)))
- _rc = _486_pCtx.X5
-_1934:
_sqlite3VdbeMemRelease(tls, &_486_t)
- if _rc == 0 {
- goto _1935
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1935:
goto _1936
-
_1933:
func() {
if int32(_486_t.X1) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72000)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71186)))
crt.X__builtin_abort(tls)
}
}()
@@ -60069,60 +53833,46 @@ _1936:
if (_486_pCtx.X6) == 0 {
goto _1939
}
-
func() {
if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X0) != i32(68) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84594), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72020)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84594), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71204)))
crt.X__builtin_abort(tls)
}
}()
_486_i = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(-1)))).X3
- if _486_i == 0 {
- goto _1942
+ if _486_i != 0 {
+ _sqlite3VdbeMemSetInt64(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_486_i))), int64(i32(1)))
}
-
- _sqlite3VdbeMemSetInt64(tls, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_486_i))), int64(i32(1)))
-_1942:
_1939:
goto _250
-
_224:
func() {
if (_pOp.X3) <= i32(0) || (_pOp.X3) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63149)))
crt.X__builtin_abort(tls)
}
}()
_493_pMem = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if (int32(_493_pMem.X1) & i32(-8194)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72048)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71231)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _sqlite3VdbeMemFinalize(tls, _493_pMem, (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
- if _rc == 0 {
- goto _1948
+ _rc = _sqlite3VdbeMemFinalize(tls, _493_pMem, (*XFuncDef)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))))
+ if _rc != 0 {
+ _sqlite3VdbeError(tls, _p, str(24576), unsafe.Pointer(Xsqlite3_value_text(tls, _493_pMem)))
+ goto _abort_due_to_error
}
-
- _sqlite3VdbeError(tls, _p, str(24316), unsafe.Pointer(Xsqlite3_value_text(tls, _493_pMem)))
- goto _abort_due_to_error
-
-_1948:
_sqlite3VdbeChangeEncoding(tls, _493_pMem, int32(_encoding))
- if _sqlite3VdbeMemTooBig(tls, _493_pMem) == 0 {
- goto _1949
+ if _sqlite3VdbeMemTooBig(tls, _493_pMem) != 0 {
+ goto _too_big
}
-
- goto _too_big
-
-_1949:
goto _250
-
_225:
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
@@ -60130,7 +53880,7 @@ _225:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_496_aRes)) + 4*uintptr(i32(1)))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_496_aRes))+4*uintptr(i32(2)))), i32(-1))
func() {
if (_pOp.X4) != i32(0) && (_pOp.X4) != i32(1) && (_pOp.X4) != i32(2) && (_pOp.X4) != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84652), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72088)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84652), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71270)))
crt.X__builtin_abort(tls)
}
}()
@@ -60138,14 +53888,9 @@ _225:
if _rc == 0 {
goto _1957
}
-
- if _rc == i32(5) {
- goto _1958
+ if _rc != i32(5) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1958:
_rc = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_496_aRes)) + 4*uintptr(i32(0)))) = i32(1)
_1957:
@@ -60154,168 +53899,127 @@ _1959:
if _496_i >= i32(3) {
goto _1962
}
-
_sqlite3VdbeMemSetInt64(tls, _496_pMem, int64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_496_aRes)) + 4*uintptr(_496_i)))))
*(*uintptr)(unsafe.Pointer(func() **XMem { _496_i += 1; return &_496_pMem }())) += uintptr(48)
goto _1959
-
_1962:
goto _250
-
_226:
_pOut = _out2Prerelease(tls, _p, _pOp)
_499_eNew = _pOp.X5
func() {
if _499_eNew != i32(0) && _499_eNew != i32(3) && _499_eNew != i32(1) && _499_eNew != i32(2) && _499_eNew != i32(4) && _499_eNew != i32(5) && _499_eNew != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84693), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84693), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71417)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66998)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84702), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84702), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
_499_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3))).X1)
_499_pPager = _sqlite3BtreePager(tls, _499_pBt)
_499_eOld = _sqlite3PagerGetJournalMode(tls, _499_pPager)
- if _499_eNew != i32(-1) {
- goto _1976
+ if _499_eNew == i32(-1) {
+ _499_eNew = _499_eOld
}
-
- _499_eNew = _499_eOld
-_1976:
- if _sqlite3PagerOkToChangeJournalMode(tls, _499_pPager) != 0 {
- goto _1977
+ if _sqlite3PagerOkToChangeJournalMode(tls, _499_pPager) == 0 {
+ _499_eNew = _499_eOld
}
-
- _499_eNew = _499_eOld
-_1977:
_499_zFilename = _sqlite3PagerFilename(tls, _499_pPager, i32(1))
- if _499_eNew != i32(5) || _sqlite3Strlen30(tls, _499_zFilename) != i32(0) && _sqlite3PagerWalSupported(tls, _499_pPager) != 0 {
- goto _1980
+ if (_499_eNew == i32(5)) && ((_sqlite3Strlen30(tls, _499_zFilename) == i32(0)) || (_sqlite3PagerWalSupported(tls, _499_pPager) == 0)) {
+ _499_eNew = _499_eOld
}
-
- _499_eNew = _499_eOld
-_1980:
if _499_eNew == _499_eOld || _499_eOld != i32(5) && _499_eNew != i32(5) {
goto _1983
}
-
- if (_db.X15) != 0 && (_db.X35) <= i32(1) {
- goto _1985
+ if ((_db.X15) == 0) || ((_db.X35) > i32(1)) {
+ _rc = i32(1)
+ _sqlite3VdbeError(tls, _p, str(71648), unsafe.Pointer(func() *int8 {
+ if _499_eNew == i32(5) {
+ return str(71700)
+ }
+ return str(71705)
+ }()))
+ goto _abort_due_to_error
}
-
- _rc = i32(1)
- _sqlite3VdbeError(tls, _p, str(72468), unsafe.Pointer(func() *int8 {
- if _499_eNew == i32(5) {
- return str(72520)
- }
- return str(72528)
- }()))
- goto _abort_due_to_error
-
-_1985:
if _499_eOld != i32(5) {
goto _1989
}
-
_rc = _sqlite3PagerCloseWal(tls, _499_pPager, _db)
- if _rc != i32(0) {
- goto _1990
+ if _rc == i32(0) {
+ _sqlite3PagerSetJournalMode(tls, _499_pPager, _499_eNew)
}
-
- _sqlite3PagerSetJournalMode(tls, _499_pPager, _499_eNew)
-_1990:
goto _1991
-
_1989:
- if _499_eOld != i32(4) {
- goto _1992
+ if _499_eOld == i32(4) {
+ _sqlite3PagerSetJournalMode(tls, _499_pPager, i32(2))
}
-
- _sqlite3PagerSetJournalMode(tls, _499_pPager, i32(2))
-_1992:
_1991:
func() {
if _sqlite3BtreeIsInTrans(tls, _499_pBt) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84754), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72536)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84754), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71712)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(0) {
- goto _1995
+ if _rc == i32(0) {
+ _rc = _sqlite3BtreeSetVersion(tls, _499_pBt, func() int32 {
+ if _499_eNew == i32(5) {
+ return i32(2)
+ }
+ return i32(1)
+ }())
}
-
- _rc = _sqlite3BtreeSetVersion(tls, _499_pBt, func() int32 {
- if _499_eNew == i32(5) {
- return i32(2)
- }
- return i32(1)
- }())
-_1995:
_1983:
- if _rc == 0 {
- goto _1998
+ if _rc != 0 {
+ _499_eNew = _499_eOld
}
-
- _499_eNew = _499_eOld
-_1998:
_499_eNew = _sqlite3PagerSetJournalMode(tls, _499_pPager, _499_eNew)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(2562))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(16 /* X5 */))) = _sqlite3JournalModename(tls, _499_eNew)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = _sqlite3Strlen30(tls, _pOut.X5)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(10 /* X2 */))) = uint8(i32(1))
_sqlite3VdbeChangeEncoding(tls, _pOut, int32(_encoding))
- if _rc == 0 {
- goto _1999
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_1999:
goto _250
-
_227:
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84782), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84782), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3RunVacuum(tls, (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(104 /* X22 */))), _db, _pOp.X3)
- if _rc == 0 {
- goto _2002
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2002:
goto _250
-
_228:
func() {
if (_pOp.X3) < i32(0) || (_pOp.X3) >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84799), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66998)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_pOp.X3))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84800), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67028)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
@@ -60324,55 +54028,42 @@ _228:
if _rc == 0 {
goto _2010
}
-
- if _rc == i32(101) {
- goto _2011
+ if _rc != i32(101) {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2011:
_rc = i32(0)
goto _jump_to_p2
-
_2010:
goto _250
-
_229:
- if (_pOp.X3) != 0 {
- goto _2012
+ if (_pOp.X3) == 0 {
+ _sqlite3ExpirePreparedStatements(tls, _db)
+ goto _2013
}
-
- _sqlite3ExpirePreparedStatements(tls, _db)
- goto _2013
-
-_2012:
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 1, 0)
_2013:
goto _250
-
_230:
_514_isWriteLock = uint8(_pOp.X5)
if _514_isWriteLock == 0 && i32(0) != ((_db.X6)&i32(16384)) {
goto _2015
}
-
_515_p1 = _pOp.X3
func() {
if _515_p1 < i32(0) || _515_p1 >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71742)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((_p.X33) & (u32(1) << uint(_515_p1))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84854), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72588)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84854), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71762)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_514_isWriteLock) != i32(0) && int32(_514_isWriteLock) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84855), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72620)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84855), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71791)))
crt.X__builtin_abort(tls)
}
}()
@@ -60380,149 +54071,110 @@ _230:
if _rc == 0 {
goto _2024
}
-
- if (_rc & i32(255)) != i32(6) {
- goto _2025
+ if (_rc & i32(255)) == i32(6) {
+ _517_z = *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
+ _sqlite3VdbeError(tls, _p, str(71824), unsafe.Pointer(_517_z))
}
-
- _517_z = *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))
- _sqlite3VdbeError(tls, _p, str(72656), unsafe.Pointer(_517_z))
-_2025:
goto _abort_due_to_error
-
_2024:
_2015:
goto _250
-
_231:
- _518_pVTab = (*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _518_pVTab = (*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
_rc = _sqlite3VtabBegin(tls, _db, _518_pVTab)
- if _518_pVTab == nil {
- goto _2026
+ if _518_pVTab != nil {
+ _sqlite3VtabImportErrmsg(tls, _p, (*Xsqlite3_vtab)(_518_pVTab.X2))
}
-
- _sqlite3VtabImportErrmsg(tls, _p, (*Xsqlite3_vtab)(_518_pVTab.X2))
-_2026:
- if _rc == 0 {
- goto _2027
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2027:
goto _250
-
_232:
crt.Xmemset(tls, (unsafe.Pointer)(&_519_sMem), i32(0), u32(48))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_519_sMem)) + uintptr(32 /* X9 */))))) = _db
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))).X1) & i32(2)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84903), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72688)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84903), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71853)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))).X1) & i32(2048)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84904), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72724)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84904), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71888)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3VdbeMemCopy(tls, &_519_sMem, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOp.X4))))
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
_519_zTab = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, &_519_sMem)))
func() {
if _519_zTab == nil && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84908), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84908), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71926)))
crt.X__builtin_abort(tls)
}
}()
- if _519_zTab == nil {
- goto _2037
+ if _519_zTab != nil {
+ _rc = _sqlite3VtabCallCreate(tls, _db, _pOp.X3, _519_zTab, (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(104 /* X22 */))))
}
-
- _rc = _sqlite3VtabCallCreate(tls, _db, _pOp.X3, _519_zTab, (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(104 /* X22 */))))
-_2037:
_sqlite3VdbeMemRelease(tls, &_519_sMem)
- if _rc == 0 {
- goto _2038
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2038:
goto _250
-
_233:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(168 /* X38 */))) += 1
- _rc = _sqlite3VtabCallDestroy(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ _rc = _sqlite3VtabCallDestroy(tls, _db, _pOp.X3, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(168 /* X38 */))) -= 1
- if _rc == 0 {
- goto _2039
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2039:
goto _250
-
_234:
func() {
if ((uint32((_p.X32)>>uint(i32(8))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84946), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84946), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(66440)))
crt.X__builtin_abort(tls)
}
}()
_522_pCur = nil
_522_pVCur = nil
- _522_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
- if _522_pVtab != nil && func() int32 {
+ _522_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
+ if (_522_pVtab == nil) || func() int32 {
if (*Xsqlite3_module)(_522_pVtab.X0) == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84950), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84950), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _2045
+ }() != 0 {
+ _rc = i32(6)
+ goto _abort_due_to_error
}
-
- _rc = i32(6)
- goto _abort_due_to_error
-
-_2045:
_522_pModule = (*Xsqlite3_module)(_522_pVtab.X0)
_rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, **Xsqlite3_file) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *unsafe.Pointer) int32
}{(_522_pModule.X6)})))(tls, _522_pVtab, &_522_pVCur)
_sqlite3VtabImportErrmsg(tls, _p, _522_pVtab)
- if _rc == 0 {
- goto _2046
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2046:
*(**Xsqlite3_vtab)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_522_pVCur)) + uintptr(0 /* X0 */))))) = _522_pVtab
_522_pCur = _allocateCursor(tls, _p, _pOp.X3, i32(0), i32(-1), uint8(i32(2)))
- if _522_pCur == nil {
- goto _2047
+ if _522_pCur != nil {
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_522_pCur)) + uintptr(36 /* X14 */))))))) = _522_pVCur
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_522_pVtab)) + uintptr(4 /* X1 */))) += 1
+ goto _2048
}
-
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_522_pCur)) + uintptr(36 /* X14 */))))))) = _522_pVCur
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_522_pVtab)) + uintptr(4 /* X1 */))) += 1
- goto _2048
-
-_2047:
func() {
if (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(84968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(49304)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(84968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(47848)))
crt.X__builtin_abort(tls)
}
}()
@@ -60530,43 +54182,38 @@ _2047:
f func(*crt.TLS, unsafe.Pointer) int32
}{(_522_pModule.X7)})))(tls, _522_pVCur)
goto _no_mem
-
_2048:
goto _250
-
_235:
_526_pQuery = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
_526_pArgc = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pQuery)) + 48*uintptr(i32(1))))
_526_pCur = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if (int32(_526_pQuery.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72792)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71951)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _2053
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, _526_pQuery)
}
-
- _registerTrace(tls, _pOp.X5, _526_pQuery)
-_2053:
func() {
if int32(_526_pCur.X0) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85014), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72812)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85014), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71970)))
crt.X__builtin_abort(tls)
}
}()
- _526_pVCur = (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pCur)) + uintptr(36 /* X14 */))))))
+ _526_pVCur = (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pCur)) + uintptr(36 /* X14 */))))))
_526_pVtab = (*Xsqlite3_vtab)(_526_pVCur.X0)
_526_pModule = (*Xsqlite3_module)(_526_pVtab.X0)
func() {
if (int32(_526_pQuery.X1)&i32(4)) == i32(0) || int32(_526_pArgc.X1) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85020), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72844)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85020), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71999)))
crt.X__builtin_abort(tls)
}
}()
- _526_nArg = int32(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pArgc)) + uintptr(0 /* X0 */))))))
- _526_iQuery = int32(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pQuery)) + uintptr(0 /* X0 */))))))
+ _526_nArg = int32(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pArgc)) + uintptr(0 /* X0 */))))))
+ _526_iQuery = int32(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pQuery)) + uintptr(0 /* X0 */))))))
_526_res = i32(0)
_526_apArg = (**XMem)(unsafe.Pointer(_p.X19))
_526_i = i32(0)
@@ -60574,67 +54221,52 @@ _2059:
if _526_i >= _526_nArg {
goto _2062
}
-
*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_apArg)) + 4*uintptr(_526_i))) = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pArgc)) + 48*uintptr(_526_i+i32(1))))
_526_i += 1
goto _2059
-
_2062:
_rc = (*(*func(*crt.TLS, *Xsqlite3_file, int32, *int8, int32, **XMem) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, int32, *int8, int32, *unsafe.Pointer) int32
- }{(_526_pModule.X8)})))(tls, _526_pVCur, _526_iQuery, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), _526_nArg, _526_apArg)
+ }{(_526_pModule.X8)})))(tls, _526_pVCur, _526_iQuery, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), _526_nArg, _526_apArg)
_sqlite3VtabImportErrmsg(tls, _p, _526_pVtab)
- if _rc == 0 {
- goto _2063
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2063:
_526_res = (*(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{(_526_pModule.X10)})))(tls, _526_pVCur)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_526_pCur)) + uintptr(2 /* X2 */))) = uint8(i32(0))
- if _526_res == 0 {
- goto _2064
+ if _526_res != 0 {
+ goto _jump_to_p2
}
-
- goto _jump_to_p2
-
-_2064:
goto _250
-
_236:
_528_pCur = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if int32(_528_pCur.X0) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72812)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71970)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X5) <= i32(0) || (_pOp.X5) > (((_p.X6)+i32(1))-(_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85057), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85057), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(64441)))
crt.X__builtin_abort(tls)
}
}()
_528_pDest = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
_sqlite3VdbeMemAboutToChange(tls, _p, _528_pDest)
- if (_528_pCur.X2) == 0 {
- goto _2070
+ if (_528_pCur.X2) != 0 {
+ _sqlite3VdbeMemSetNull(tls, _528_pDest)
+ goto _250
}
-
- _sqlite3VdbeMemSetNull(tls, _528_pDest)
- goto _250
-
-_2070:
- _528_pVtab = (*Xsqlite3_vtab)((*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_528_pCur)) + uintptr(36 /* X14 */)))))).X0)
+ _528_pVtab = (*Xsqlite3_vtab)((*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_528_pCur)) + uintptr(36 /* X14 */)))))).X0)
_528_pModule = (*Xsqlite3_module)(_528_pVtab.X0)
func() {
if (*(*func(*crt.TLS, *Xsqlite3_file, *Xsqlite3_context, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) int32
}{(_528_pModule.X11)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85066), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85066), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72051)))
crt.X__builtin_abort(tls)
}
}()
@@ -60643,179 +54275,135 @@ _2070:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_528_pDest)) + uintptr(8 /* X1 */))) = uint16((int32(_528_pDest.X1) & i32(-49664)) | i32(1))
_rc = (*(*func(*crt.TLS, *Xsqlite3_file, *Xsqlite3_context, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) int32
- }{(_528_pModule.X11)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_528_pCur)) + uintptr(36 /* X14 */)))))), &_528_sContext, _pOp.X4)
+ }{(_528_pModule.X11)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_528_pCur)) + uintptr(36 /* X14 */)))))), &_528_sContext, _pOp.X4)
_sqlite3VtabImportErrmsg(tls, _p, _528_pVtab)
- if (_528_sContext.X5) == 0 {
- goto _2073
+ if (_528_sContext.X5) != 0 {
+ _rc = _528_sContext.X5
}
-
- _rc = _528_sContext.X5
-_2073:
_sqlite3VdbeChangeEncoding(tls, _528_pDest, int32(_encoding))
- if ((_db.X6) & i32(1)) == 0 {
- goto _2074
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X5, _528_pDest)
}
-
- _registerTrace(tls, _pOp.X5, _528_pDest)
-_2074:
- if _sqlite3VdbeMemTooBig(tls, _528_pDest) == 0 {
- goto _2075
+ if _sqlite3VdbeMemTooBig(tls, _528_pDest) != 0 {
+ goto _too_big
}
-
- goto _too_big
-
-_2075:
- if _rc == 0 {
- goto _2076
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2076:
goto _250
-
_237:
_532_res = i32(0)
_532_pCur = *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_pOp.X3)))
func() {
if int32(_532_pCur.X0) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85102), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72812)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85102), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(71970)))
crt.X__builtin_abort(tls)
}
}()
- if (_532_pCur.X2) == 0 {
- goto _2079
+ if (_532_pCur.X2) != 0 {
+ goto _250
}
-
- goto _250
-
-_2079:
- _532_pVtab = (*Xsqlite3_vtab)((*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_532_pCur)) + uintptr(36 /* X14 */)))))).X0)
+ _532_pVtab = (*Xsqlite3_vtab)((*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_532_pCur)) + uintptr(36 /* X14 */)))))).X0)
_532_pModule = (*Xsqlite3_module)(_532_pVtab.X0)
func() {
if (*(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
}{(_532_pModule.X9)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85108), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85108), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72068)))
crt.X__builtin_abort(tls)
}
}()
_rc = (*(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
- }{(_532_pModule.X9)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_532_pCur)) + uintptr(36 /* X14 */)))))))
+ }{(_532_pModule.X9)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_532_pCur)) + uintptr(36 /* X14 */)))))))
_sqlite3VtabImportErrmsg(tls, _p, _532_pVtab)
- if _rc == 0 {
- goto _2082
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2082:
_532_res = (*(*func(*crt.TLS, *Xsqlite3_file) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) int32
- }{(_532_pModule.X10)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_532_pCur)) + uintptr(36 /* X14 */)))))))
- if _532_res != 0 {
- goto _2083
+ }{(_532_pModule.X10)})))(tls, (*Xsqlite3_file)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_532_pCur)) + uintptr(36 /* X14 */)))))))
+ if _532_res == 0 {
+ goto _jump_to_p2_and_check_for_interrupt
}
-
- goto _jump_to_p2_and_check_for_interrupt
-
-_2083:
goto _check_for_interrupt
-
_238:
- _535_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
+ _535_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
_535_pName = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X3)))
func() {
if (*(*func(*crt.TLS, *Xsqlite3_vtab, *int8) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int8) int32
}{((*Xsqlite3_module)(_535_pVtab.X0).X19)}))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85142), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72932)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85142), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72083)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_535_pName.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72956)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72107)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85144), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85144), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(1)) == 0 {
- goto _2090
+ if ((_db.X6) & i32(1)) != 0 {
+ _registerTrace(tls, _pOp.X3, _535_pName)
}
-
- _registerTrace(tls, _pOp.X3, _535_pName)
-_2090:
func() {
if (int32(_535_pName.X1) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72125)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3VdbeChangeEncoding(tls, _535_pName, i32(1))
- if _rc == 0 {
- goto _2093
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2093:
_rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, *int8) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int8) int32
}{((*Xsqlite3_module)(_535_pVtab.X0).X19)})))(tls, _535_pVtab, _535_pName.X5)
_sqlite3VtabImportErrmsg(tls, _p, _535_pVtab)
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 1, 0)
- if _rc == 0 {
- goto _2094
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 1, 0)
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2094:
goto _250
-
_239:
func() {
if (_pOp.X4) != i32(1) && int32(_pOp.X2) != i32(3) && int32(_pOp.X2) != i32(1) && int32(_pOp.X2) != i32(2) && int32(_pOp.X2) != i32(4) && int32(_pOp.X2) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73000)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72148)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((uint32((_p.X32)>>uint(i32(7)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(67250)))
crt.X__builtin_abort(tls)
}
}()
- _536_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
- if _536_pVtab != nil && func() int32 {
+ _536_pVtab = (*Xsqlite3_vtab)((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X2)
+ if (_536_pVtab == nil) || func() int32 {
if (*Xsqlite3_module)(_536_pVtab.X0) == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85202), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85202), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _2107
+ }() != 0 {
+ _rc = i32(6)
+ goto _abort_due_to_error
}
-
- _rc = i32(6)
- goto _abort_due_to_error
-
-_2107:
_536_pModule = (*Xsqlite3_module)(_536_pVtab.X0)
_536_nArg = _pOp.X4
func() {
if int32(_pOp.X1) != i32(-8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85208), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73124)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85208), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72269)))
crt.X__builtin_abort(tls)
}
}()
@@ -60826,14 +54414,13 @@ _2107:
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85209), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85209), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
goto _2112
}
-
_538_vtabOnConflict = _db.X22
_536_apArg = (**XMem)(unsafe.Pointer(_p.X19))
_536_pX = (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem)) + 48*uintptr(_pOp.X5)))
@@ -60842,10 +54429,9 @@ _2113:
if _536_i >= _536_nArg {
goto _2116
}
-
func() {
if (int32(_536_pX.X1) & i32(128)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85214), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85214), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72290)))
crt.X__builtin_abort(tls)
}
}()
@@ -60854,7 +54440,6 @@ _2113:
*(*uintptr)(unsafe.Pointer(&_536_pX)) += uintptr(48)
_536_i += 1
goto _2113
-
_2116:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(70 /* X22 */))) = uint8(_pOp.X2)
_rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32)(unsafe.Pointer(&struct {
@@ -60862,30 +54447,22 @@ _2116:
}{(_536_pModule.X13)})))(tls, _536_pVtab, _536_nArg, _536_apArg, &_536_rowid)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(70 /* X22 */))) = _538_vtabOnConflict
_sqlite3VtabImportErrmsg(tls, _p, _536_pVtab)
- if _rc != i32(0) || (_pOp.X3) == 0 {
- goto _2120
+ if (_rc == i32(0)) && (_pOp.X3) != 0 {
+ func() {
+ if _536_nArg <= i32(1) || (*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_536_apArg)) + 4*uintptr(i32(0))))) == nil || (int32((*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_536_apArg)) + 4*uintptr(i32(0))))).X1)&i32(1)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72305)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(28 /* X7 */))) = _536_rowid
}
-
- func() {
- if _536_nArg <= i32(1) || (*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_536_apArg)) + 4*uintptr(i32(0))))) == nil || (int32((*(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_536_apArg)) + 4*uintptr(i32(0))))).X1)&i32(1)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85224), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73164)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(28 /* X7 */))) = _536_rowid
-_2120:
- if (_rc&i32(255)) != i32(19) || ((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X4) == 0 {
+ if (_rc&i32(255)) != i32(19) || ((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))).X4) == 0 {
goto _2126
}
-
- if int32(_pOp.X2) != i32(4) {
- goto _2127
+ if int32(_pOp.X2) == i32(4) {
+ _rc = i32(0)
+ goto _2128
}
-
- _rc = i32(0)
- goto _2128
-
-_2127:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(138 /* X30 */))) = uint8(func() int32 {
if int32(_pOp.X2) == i32(5) {
return i32(2)
@@ -60894,25 +54471,18 @@ _2127:
}())
_2128:
goto _2131
-
_2126:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))) += 1
_2131:
- if _rc == 0 {
- goto _2132
+ if _rc != 0 {
+ goto _abort_due_to_error
}
-
- goto _abort_due_to_error
-
-_2132:
_2112:
goto _250
-
_240:
_pOut = _out2Prerelease(tls, _p, _pOp)
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_sqlite3BtreeLastPage(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_pOp.X3))).X1)))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_sqlite3BtreeLastPage(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_pOp.X3))).X1)))
goto _250
-
_241:
_pOut = _out2Prerelease(tls, _p, _pOp)
_546_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_pOp.X3))).X1)
@@ -60920,188 +54490,140 @@ _241:
if (_pOp.X5) == 0 {
goto _2133
}
-
_546_newMax = _sqlite3BtreeLastPage(tls, _546_pBt)
- if _546_newMax >= uint32(_pOp.X5) {
- goto _2134
+ if _546_newMax < uint32(_pOp.X5) {
+ _546_newMax = uint32(_pOp.X5)
}
-
- _546_newMax = uint32(_pOp.X5)
-_2134:
_2133:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_sqlite3BtreeMaxPageCount(tls, _546_pBt, int32(_546_newMax)))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = int64(_sqlite3BtreeMaxPageCount(tls, _546_pBt, int32(_546_newMax)))
goto _250
-
_242:
func() {
- if (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil && crt.Xstrncmp(tls, *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), str(73216), uint32(i32(3))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85309), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73220)))
+ if (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil && crt.Xstrncmp(tls, *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))), str(72354), uint32(i32(3))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85309), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72358)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pOp != (*XVdbeOp)(_p.X17) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85310), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85310), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72409)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_db.X24)&i32(129)) == i32(0) || ((uint32((_p.X32)>>uint(i32(1)))<>uint(i32(31))) != 0 || store0(&_548_zTrace, func() *int8 {
- if (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
- return (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ if (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
+ return (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
}
return (_p.X36)
}()) == nil {
goto _2144
}
-
- if (int32(_db.X24) & i32(128)) == 0 {
- goto _2145
+ if (int32(_db.X24) & i32(128)) != 0 {
+ _550_x = *(*func(*crt.TLS, unsafe.Pointer, *int8))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, uint32, unsafe.Pointer, unsafe.Pointer, unsafe.Pointer) int32
+ }{(_db.X41)}))
+ _550_z = _sqlite3VdbeExpandSql(tls, _p, _548_zTrace)
+ _550_x(tls, _db.X42, _550_z)
+ Xsqlite3_free(tls, (unsafe.Pointer)(_550_z))
+ goto _2146
+ }
+ if (_db.X37) > i32(1) {
+ _551_z = _sqlite3MPrintf(tls, _db, str(72421), unsafe.Pointer(_548_zTrace))
+ (_db.X41)(tls, uint32(i32(1)), _db.X42, (unsafe.Pointer)(_p), (unsafe.Pointer)(_551_z))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_551_z))
+ goto _2148
}
-
- _550_x = *(*func(*crt.TLS, unsafe.Pointer, *int8))(unsafe.Pointer(&struct {
- f func(*crt.TLS, uint32, unsafe.Pointer, unsafe.Pointer, unsafe.Pointer) int32
- }{(_db.X41)}))
- _550_z = _sqlite3VdbeExpandSql(tls, _p, _548_zTrace)
- _550_x(tls, _db.X42, _550_z)
- Xsqlite3_free(tls, (unsafe.Pointer)(_550_z))
- goto _2146
-
-_2145:
- if (_db.X37) <= i32(1) {
- goto _2147
- }
-
- _551_z = _sqlite3MPrintf(tls, _db, str(73284), unsafe.Pointer(_548_zTrace))
- (_db.X41)(tls, uint32(i32(1)), _db.X42, (unsafe.Pointer)(_p), (unsafe.Pointer)(_551_z))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_551_z))
- goto _2148
-
-_2147:
(_db.X41)(tls, uint32(i32(1)), _db.X42, (unsafe.Pointer)(_p), (unsafe.Pointer)(_548_zTrace))
_2148:
_2146:
_2144:
- if ((_db.X6)&i32(512)) == i32(0) || store0(&_548_zTrace, func() *int8 {
- if (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
- return (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ if (((_db.X6) & i32(512)) != i32(0)) && (store0(&_548_zTrace, func() *int8 {
+ if (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */)))))) != nil {
+ return (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
}
return (_p.X36)
- }()) == nil {
- goto _2152
+ }()) != nil) {
+ _sqlite3DebugPrintf(tls, str(72427), unsafe.Pointer(_548_zTrace))
}
-
- _sqlite3DebugPrintf(tls, str(73292), unsafe.Pointer(_548_zTrace))
-_2152:
func() {
if (_pOp.X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85351), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(63272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85351), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(62895)))
crt.X__builtin_abort(tls)
}
}()
if (_pOp.X3) < (_sqlite3Config.X39) {
goto _2155
}
-
_548_i = i32(1)
_2156:
if _548_i >= (_p.X27) {
goto _2159
}
-
- if int32((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_548_i))).X0) != i32(20) {
- goto _2160
+ if int32((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_548_i))).X0) == i32(20) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_548_i))))) + uintptr(4 /* X3 */))) = i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr(_548_i))))) + uintptr(4 /* X3 */))) = i32(0)
-_2160:
_548_i += 1
goto _2156
-
_2159:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = i32(0)
_2155:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) += 1
goto _jump_to_p2
-
_243:
func() {
if int32(_pOp.X0) != i32(164) && int32(_pOp.X0) != i32(165) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85397), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85397), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72442)))
crt.X__builtin_abort(tls)
}
}()
goto _250
-
_250:
func() {
if uintptr(unsafe.Pointer(_pOp)) < uintptr(unsafe.Pointer((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr(i32(-1)))))) || uintptr(unsafe.Pointer(_pOp)) >= uintptr(unsafe.Pointer((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOp))+24*uintptr((_p.X27)-i32(1)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85423), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85423), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72490)))
crt.X__builtin_abort(tls)
}
}()
if ((_db.X6) & i32(1)) == 0 {
goto _2167
}
-
_557_opProperty = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeProperty)) + 1*uintptr(_pOrigOp.X0)))
- if _rc == i32(0) {
- goto _2168
+ if _rc != i32(0) {
+ crt.Xprintf(tls, str(72526), _rc)
}
-
- crt.Xprintf(tls, str(73392), _rc)
-_2168:
- if (int32(_557_opProperty) & i32(16)) == 0 {
- goto _2169
+ if (int32(_557_opProperty) & i32(16)) != 0 {
+ _registerTrace(tls, _pOrigOp.X4, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOrigOp.X4))))
}
-
- _registerTrace(tls, _pOrigOp.X4, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOrigOp.X4))))
-_2169:
- if (int32(_557_opProperty) & i32(32)) == 0 {
- goto _2170
+ if (int32(_557_opProperty) & i32(32)) != 0 {
+ _registerTrace(tls, _pOrigOp.X5, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOrigOp.X5))))
}
-
- _registerTrace(tls, _pOrigOp.X5, (*XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aMem))+48*uintptr(_pOrigOp.X5))))
-_2170:
_2167:
*(*uintptr)(unsafe.Pointer(&_pOp)) += uintptr(24)
goto _30
-
_abort_due_to_error:
- if (_db.X17) == 0 {
- goto _2171
+ if (_db.X17) != 0 {
+ _rc = _sqlite3NomemError(tls, i32(85444))
}
-
- _rc = _sqlite3NomemError(tls, i32(85444))
-_2171:
func() {
if _rc == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85445), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73400)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85445), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72533)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X22) != nil || _rc == i32(3082) {
- goto _2175
+ if ((_p.X22) == nil) && (_rc != i32(3082)) {
+ _sqlite3VdbeError(tls, _p, str(24576), unsafe.Pointer(_sqlite3ErrStr(tls, _rc)))
}
-
- _sqlite3VdbeError(tls, _p, str(24316), unsafe.Pointer(_sqlite3ErrStr(tls, _rc)))
-_2175:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
_sqlite3SystemError(tls, _db, _rc)
- Xsqlite3_log(tls, _rc, str(73404), int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer(_aOp)))/24), unsafe.Pointer(_p.X36), unsafe.Pointer(_p.X22))
+ Xsqlite3_log(tls, _rc, str(72536), int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer(_aOp)))/24), unsafe.Pointer(_p.X36), unsafe.Pointer(_p.X22))
_sqlite3VdbeHalt(tls, _p)
- if _rc != i32(3082) {
- goto _2176
+ if _rc == i32(3082) {
+ _sqlite3OomFault(tls, _db)
}
-
- _sqlite3OomFault(tls, _db)
-_2176:
_rc = i32(1)
- if int32(_resetSchemaOnFault) <= i32(0) {
- goto _2177
+ if int32(_resetSchemaOnFault) > i32(0) {
+ _sqlite3ResetOneSchema(tls, _db, int32(_resetSchemaOnFault)-i32(1))
}
-
- _sqlite3ResetOneSchema(tls, _db, int32(_resetSchemaOnFault)-i32(1))
-_2177:
_vdbe_return:
{
p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[5]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(152 /* X35 */))))) + 4*uintptr(i32(4))))
@@ -61110,28 +54632,26 @@ _vdbe_return:
}
_sqlite3VdbeLeave(tls, _p)
func() {
- if _rc == i32(0) && _nExtraDelete != i32(0) && Xsqlite3_strlike(tls, str(73436), _p.X36, uint32(i32(0))) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85468), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73444)))
+ if _rc == i32(0) && _nExtraDelete != i32(0) && Xsqlite3_strlike(tls, str(72568), _p.X36, uint32(i32(0))) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85468), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72576)))
crt.X__builtin_abort(tls)
}
}()
return _rc
_too_big:
- _sqlite3VdbeError(tls, _p, str(5236))
+ _sqlite3VdbeError(tls, _p, str(6810))
_rc = i32(18)
goto _abort_due_to_error
-
_no_mem:
_sqlite3OomFault(tls, _db)
- _sqlite3VdbeError(tls, _p, str(61516))
+ _sqlite3VdbeError(tls, _p, str(59419))
_rc = _sqlite3NomemError(tls, i32(85486))
goto _abort_due_to_error
-
_abort_due_to_interrupt:
func() {
if (*(*int32)(unsafe.Pointer((*t9)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(244 /* X57 */)))))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(85493), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(73520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(85493), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExecØ00__func__Ø000))), unsafe.Pointer(str(72652)))
crt.X__builtin_abort(tls)
}
}()
@@ -61142,205 +54662,157 @@ _abort_due_to_interrupt:
return i32(9)
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = _rc
- _sqlite3VdbeError(tls, _p, str(24316), unsafe.Pointer(_sqlite3ErrStr(tls, _rc)))
+ _sqlite3VdbeError(tls, _p, str(24576), unsafe.Pointer(_sqlite3ErrStr(tls, _rc)))
goto _abort_due_to_error
+ _ = _94_uA
+ _ = _179_sMem
+ _ = _303_r
+ _ = _324_r
+ _ = _340_cnt
+ _ = _356_x
+ _ = _403_x
+ _ = _406_r
+ _ = _414_r
+ _ = _434_initData
+ _ = _486_t
+ _ = _496_aRes
+ _ = _519_sMem
+ _ = _528_sContext
+ panic(0)
}
-var _sqlite3VdbeExecØ00__func__Ø000 [16]int8 // -
+var _sqlite3VdbeExecØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeExecØ00__func__Ø000[0], str(73544), 16)
+ crt.Xstrncpy(nil, &_sqlite3VdbeExecØ00__func__Ø000[0], str(72673), 16)
}
-func _sqlite3VdbePrintSql(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:73203:1
- var _z *int8 // sqlite3.c:73204:14
- _ = _z
- var _2_pOp *XVdbeOp // sqlite3.c:73208:18
- _ = _2_pOp
+// Print the SQL that was used to generate a VDBE program.
+func _sqlite3VdbePrintSql(tls *crt.TLS, _p *TVdbe) {
+ var _z *int8
+ var _2_pOp *XVdbeOp
_z = nil
- if (_p.X36) == nil {
- goto _0
+ if (_p.X36) != nil {
+ _z = _p.X36
+ goto _1
}
-
- _z = _p.X36
- goto _1
-
-_0:
if (_p.X27) < i32(1) {
goto _2
}
-
_2_pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(i32(0))))
- if int32(_2_pOp.X0) != i32(51) || (*(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pOp)) + uintptr(16 /* X6 */)))))) == nil {
+ if int32(_2_pOp.X0) != i32(51) || (*(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pOp)) + uintptr(16 /* X6 */)))))) == nil {
goto _4
}
-
- _z = *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pOp)) + uintptr(16 /* X6 */)))))
+ _z = *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pOp)) + uintptr(16 /* X6 */)))))
_5:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z))))) & i32(1)) == 0 {
- goto _6
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z))))) & i32(1)) != 0 {
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
+ goto _5
}
-
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
- goto _5
-
-_6:
_4:
_2:
_1:
- if _z == nil {
- goto _7
+ if _z != nil {
+ crt.Xprintf(tls, str(72689), unsafe.Pointer(_z))
}
-
- crt.Xprintf(tls, str(73560), unsafe.Pointer(_z))
-_7:
}
-func _registerTrace(tls *crt.TLS, _iReg int32, _p *XMem) { // sqlite3.c:78686:1
- crt.Xprintf(tls, str(73572), _iReg)
+func _registerTrace(tls *crt.TLS, _iReg int32, _p *XMem) {
+ crt.Xprintf(tls, str(72700), _iReg)
_memTracePrint(tls, _p)
- crt.Xprintf(tls, str(38408))
+ crt.Xprintf(tls, str(37700))
_sqlite3VdbeCheckMemInvariants(tls, _p)
}
-func _memTracePrint(tls *crt.TLS, _p *XMem) { // sqlite3.c:78664:1
- var _7_zBuf [200]int8 // sqlite3.c:78680:10
- _ = _7_zBuf
- if (int32(_p.X1) & i32(128)) == 0 {
- goto _0
+// Print the value of a register for tracing purposes:
+func _memTracePrint(tls *crt.TLS, _p *XMem) {
+ var _7_zBuf [200]int8
+ if (int32(_p.X1) & i32(128)) != 0 {
+ crt.Xprintf(tls, str(72711))
+ goto _1
}
-
- crt.Xprintf(tls, str(73584))
- goto _1
-
-_0:
- if (int32(_p.X1) & i32(1)) == 0 {
- goto _2
+ if (int32(_p.X1) & i32(1)) != 0 {
+ crt.Xprintf(tls, str(72722))
+ goto _3
}
-
- crt.Xprintf(tls, str(73596))
- goto _3
-
-_2:
- if (int32(_p.X1) & i32(6)) != i32(6) {
- goto _4
+ if (int32(_p.X1) & i32(6)) == i32(6) {
+ crt.Xprintf(tls, str(72728), *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
+ goto _5
}
-
- crt.Xprintf(tls, str(73604), *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
- goto _5
-
-_4:
- if (int32(_p.X1) & i32(4)) == 0 {
- goto _6
+ if (int32(_p.X1) & i32(4)) != 0 {
+ crt.Xprintf(tls, str(72737), *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
+ goto _7
}
-
- crt.Xprintf(tls, str(73616), *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
- goto _7
-
-_6:
- if (int32(_p.X1) & i32(8)) == 0 {
- goto _8
+ if (int32(_p.X1) & i32(8)) != 0 {
+ crt.Xprintf(tls, str(72745), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
+ goto _9
}
-
- crt.Xprintf(tls, str(73624), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
- goto _9
-
-_8:
- if (int32(_p.X1) & i32(32)) == 0 {
- goto _10
+ if (int32(_p.X1) & i32(32)) != 0 {
+ crt.Xprintf(tls, str(72751))
+ goto _11
}
-
- crt.Xprintf(tls, str(73632))
- goto _11
-
-_10:
_sqlite3VdbeMemPrettyPrint(tls, _p, (*int8)(unsafe.Pointer(&_7_zBuf)))
- crt.Xprintf(tls, str(48404), unsafe.Pointer((*int8)(unsafe.Pointer(&_7_zBuf))))
+ crt.Xprintf(tls, str(47037), unsafe.Pointer((*int8)(unsafe.Pointer(&_7_zBuf))))
_11:
_9:
_7:
_5:
_3:
_1:
- if (int32(_p.X1) & i32(32768)) == 0 {
- goto _12
+ if (int32(_p.X1) & i32(32768)) != 0 {
+ crt.Xprintf(tls, str(72761), int32(_p.X3))
}
-
- crt.Xprintf(tls, str(73644), int32(_p.X3))
-_12:
+ _ = _7_zBuf
}
-func _sqlite3VdbeMemPrettyPrint(tls *crt.TLS, _pMem *XMem, _zBuf *int8) { // sqlite3.c:78586:1
- var _zCsr *int8 // sqlite3.c:78587:8
- _ = _zCsr
- var _f int32 // sqlite3.c:78588:7
- _ = _f
- var _1_i int32 // sqlite3.c:78593:9
- _ = _1_i
- var _1_c int8 // sqlite3.c:78594:10
- _ = _1_c
- var _7_z int8 // sqlite3.c:78615:12
- _ = _7_z
- var _9_j int32 // sqlite3.c:78626:9
- _ = _9_j
- var _9_k int32 // sqlite3.c:78626:12
- _ = _9_k
- var _14_c uint8 // sqlite3.c:78645:10
- _ = _14_c
+// Write a nice string representation of the contents of cell pMem
+// into buffer zBuf, length nBuf.
+func _sqlite3VdbeMemPrettyPrint(tls *crt.TLS, _pMem *XMem, _zBuf *int8) {
+ var _f, _1_i, _9_j, _9_k int32
+ var _1_c, _7_z int8
+ var _zCsr *int8
+ var _14_c uint8
_zCsr = _zBuf
_f = int32(_pMem.X1)
if (_f & i32(16)) == 0 {
goto _0
}
-
- if (_f & i32(1024)) == 0 {
- goto _1
+ if (_f & i32(1024)) != 0 {
+ _1_c = int8(i32(122))
+ func() {
+ if (_f & i32(6144)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(72777)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _4
}
-
- _1_c = int8(i32(122))
- func() {
- if (_f & i32(6144)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(73660)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _4
-
-_1:
- if (_f & i32(2048)) == 0 {
- goto _5
+ if (_f & i32(2048)) != 0 {
+ _1_c = int8(i32(116))
+ func() {
+ if (_f & i32(5120)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78600), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(72809)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _8
}
-
- _1_c = int8(i32(116))
- func() {
- if (_f & i32(5120)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78600), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(73692)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _8
-
-_5:
- if (_f & i32(4096)) == 0 {
- goto _9
+ if (_f & i32(4096)) != 0 {
+ _1_c = int8(i32(101))
+ func() {
+ if (_f & i32(3072)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78603), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(72838)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _12
}
-
- _1_c = int8(i32(101))
- func() {
- if (_f & i32(3072)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78603), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(73724)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _12
-
-_9:
_1_c = int8(i32(115))
_12:
_8:
_4:
*postInc0(&_zCsr, 1) = _1_c
- Xsqlite3_snprintf(tls, i32(100), _zCsr, str(73756), _pMem.X4)
+ Xsqlite3_snprintf(tls, i32(100), _zCsr, str(72868), _pMem.X4)
{
p := &_zCsr
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _zCsr))))
@@ -61351,8 +54823,7 @@ _13:
if _1_i >= i32(16) || _1_i >= (_pMem.X4) {
goto _17
}
-
- Xsqlite3_snprintf(tls, i32(100), _zCsr, str(73760), int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_1_i))))&i32(255))
+ Xsqlite3_snprintf(tls, i32(100), _zCsr, str(72872), int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_1_i))))&i32(255))
{
p := &_zCsr
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _zCsr))))
@@ -61360,98 +54831,74 @@ _13:
}
_1_i += 1
goto _13
-
_17:
_1_i = i32(0)
_18:
if _1_i >= i32(16) || _1_i >= (_pMem.X4) {
goto _22
}
-
_7_z = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_1_i)))
- if int32(_7_z) >= i32(32) && int32(_7_z) <= i32(126) {
- goto _24
+ if (int32(_7_z) < i32(32)) || (int32(_7_z) > i32(126)) {
+ *postInc0(&_zCsr, 1) = int8(i32(46))
+ goto _25
}
-
- *postInc0(&_zCsr, 1) = int8(i32(46))
- goto _25
-
-_24:
*postInc0(&_zCsr, 1) = _7_z
_25:
_1_i += 1
goto _18
-
_22:
*postInc0(&_zCsr, 1) = int8(i32(93))
- if (_f & i32(16384)) == 0 {
- goto _26
- }
-
- Xsqlite3_snprintf(tls, i32(100), _zCsr, str(73768), *(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
- {
- p := &_zCsr
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _zCsr))))
- sink0 = *p
+ if (_f & i32(16384)) != 0 {
+ Xsqlite3_snprintf(tls, i32(100), _zCsr, str(72877), *(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ {
+ p := &_zCsr
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _zCsr))))
+ sink0 = *p
+ }
}
-_26:
*_zCsr = int8(i32(0))
goto _27
-
_0:
if (_f & i32(2)) == 0 {
goto _28
}
-
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(0)))) = int8(i32(32))
- if (_f & i32(1024)) == 0 {
- goto _29
+ if (_f & i32(1024)) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(1)))) = int8(i32(122))
+ func() {
+ if (_f & i32(6144)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78630), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(72777)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _32
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(1)))) = int8(i32(122))
- func() {
- if (_f & i32(6144)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78630), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(73660)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _32
-
-_29:
- if (_f & i32(2048)) == 0 {
- goto _33
+ if (_f & i32(2048)) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(1)))) = int8(i32(116))
+ func() {
+ if (_f & i32(5120)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78633), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(72809)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _36
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(1)))) = int8(i32(116))
- func() {
- if (_f & i32(5120)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78633), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(73692)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _36
-
-_33:
- if (_f & i32(4096)) == 0 {
- goto _37
+ if (_f & i32(4096)) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(1)))) = int8(i32(101))
+ func() {
+ if (_f & i32(3072)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78636), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(72838)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _40
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(1)))) = int8(i32(101))
- func() {
- if (_f & i32(3072)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78636), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemPrettyPrintØ00__func__Ø000))), unsafe.Pointer(str(73724)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _40
-
-_37:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(i32(1)))) = int8(i32(115))
_40:
_36:
_32:
_9_k = i32(2)
- Xsqlite3_snprintf(tls, i32(100), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf))+1*uintptr(_9_k))), str(38644), _pMem.X4)
+ Xsqlite3_snprintf(tls, i32(100), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf))+1*uintptr(_9_k))), str(37915), _pMem.X4)
{
p := &_9_k
*p = (*p) + _sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf))+1*uintptr(_9_k))))
@@ -61463,21 +54910,15 @@ _41:
if _9_j >= i32(15) || _9_j >= (_pMem.X4) {
goto _45
}
-
_14_c = uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_9_j))))
- if int32(_14_c) < i32(32) || int32(_14_c) >= i32(127) {
- goto _47
+ if (int32(_14_c) >= i32(32)) && (int32(_14_c) < i32(127)) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(postInc1(&_9_k, int32(1))))) = int8(_14_c)
+ goto _48
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(postInc1(&_9_k, int32(1))))) = int8(_14_c)
- goto _48
-
-_47:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(postInc1(&_9_k, int32(1))))) = int8(i32(46))
_48:
_9_j += 1
goto _41
-
_45:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf)) + 1*uintptr(postInc1(&_9_k, int32(1))))) = int8(i32(93))
Xsqlite3_snprintf(tls, i32(100), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zBuf))+1*uintptr(_9_k))), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3VdbeMemPrettyPrintØ00encnamesØ001)) + 4*uintptr(_pMem.X2))))
@@ -61491,116 +54932,110 @@ _28:
_27:
}
-var _sqlite3VdbeMemPrettyPrintØ00__func__Ø000 [26]int8 // -
+var _sqlite3VdbeMemPrettyPrintØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemPrettyPrintØ00__func__Ø000[0], str(73776), 26)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemPrettyPrintØ00__func__Ø000[0], str(72882), 26)
}
-var _sqlite3VdbeMemPrettyPrintØ00encnamesØ001 [4]*int8 // sqlite3.c:78590:21
+var _sqlite3VdbeMemPrettyPrintØ00encnamesØ001 [4]*int8
func init() {
- _sqlite3VdbeMemPrettyPrintØ00encnamesØ001 = [4]*int8{str(73804), str(73808), str(73812), str(73820)}
+ _sqlite3VdbeMemPrettyPrintØ00encnamesØ001 = [4]*int8{str(72908), str(72912), str(72916), str(72923)}
}
-func _sqlite3VdbeMemAboutToChange(tls *crt.TLS, _pVdbe *TVdbe, _pMem *XMem) { // sqlite3.c:70470:1
- var _i int32 // sqlite3.c:70471:7
- _ = _i
- var _pX *XMem // sqlite3.c:70472:7
- _ = _pX
+// This routine prepares a memory cell for modification by breaking
+// its link to a shallow copy and by marking any current shallow
+// copies of this cell as invalid.
+//
+// This is used for testing and debugging only - to make sure shallow
+// copies are not misused.
+func _sqlite3VdbeMemAboutToChange(tls *crt.TLS, _pVdbe *TVdbe, _pMem *XMem) {
+ var _i int32
+ var _pX *XMem
*func() **XMem { _i = i32(0); return &_pX }() = (*XMem)(_pVdbe.X18)
_0:
if _i >= (_pVdbe.X6) {
goto _3
}
-
- if (*XMem)(_pX.X11) != _pMem {
- goto _4
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(128))
- sink12 = *p
+ if (*XMem)(_pX.X11) == _pMem {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(128))
+ sink14 = *p
+ }
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(40 /* X11 */))))) = nil
}
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(40 /* X11 */))))) = nil
-_4:
*(*uintptr)(unsafe.Pointer(func() **XMem { _i += 1; return &_pX }())) += uintptr(48)
goto _0
-
_3:
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(40 /* X11 */))))) = nil
}
-var _sqlite3VdbeExecØ00azTypeØ001 [4]*int8 // sqlite3.c:79266:25
+var _sqlite3VdbeExecØ00azTypeØ001 [4]*int8
func init() {
- _sqlite3VdbeExecØ00azTypeØ001 = [4]*int8{str(73828), str(25496), str(25504), str(73840)}
+ _sqlite3VdbeExecØ00azTypeØ001 = [4]*int8{str(72930), str(25590), str(25597), str(72939)}
}
-func _out2Prerelease(tls *crt.TLS, _p *TVdbe, _pOp *XVdbeOp) (r0 *XMem) { // sqlite3.c:78829:1
- var _pOut *XMem // sqlite3.c:78830:7
- _ = _pOut
+func _out2Prerelease(tls *crt.TLS, _p *TVdbe, _pOp *XVdbeOp) (r0 *XMem) {
+ var _pOut *XMem
func() {
if (_pOp.X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78831), unsafe.Pointer((*int8)(unsafe.Pointer(&_out2PrereleaseØ00__func__Ø000))), unsafe.Pointer(str(63272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78831), unsafe.Pointer((*int8)(unsafe.Pointer(&_out2PrereleaseØ00__func__Ø000))), unsafe.Pointer(str(62895)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pOp.X4) > (((_p.X6) + i32(1)) - (_p.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78832), unsafe.Pointer((*int8)(unsafe.Pointer(&_out2PrereleaseØ00__func__Ø000))), unsafe.Pointer(str(63284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78832), unsafe.Pointer((*int8)(unsafe.Pointer(&_out2PrereleaseØ00__func__Ø000))), unsafe.Pointer(str(62905)))
crt.X__builtin_abort(tls)
}
}()
_pOut = (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr(_pOp.X4)))
_sqlite3VdbeMemAboutToChange(tls, _p, _pOut)
- if (int32(_pOut.X1) & i32(9312)) == i32(0) {
- goto _4
+ if (int32(_pOut.X1) & i32(9312)) != i32(0) {
+ return _out2PrereleaseWithClear(tls, _pOut)
}
- return _out2PrereleaseWithClear(tls, _pOut)
-
-_4:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
return _pOut
}
-var _out2PrereleaseØ00__func__Ø000 [15]int8 // -
+var _out2PrereleaseØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_out2PrereleaseØ00__func__Ø000[0], str(73852), 15)
+ crt.Xstrncpy(nil, &_out2PrereleaseØ00__func__Ø000[0], str(72951), 15)
}
-func _out2PrereleaseWithClear(tls *crt.TLS, _pOut *XMem) (r0 *XMem) { // sqlite3.c:78824:1
+// Return the register of pOp->p2 after first preparing it to be
+// overwritten with an integer value.
+func _out2PrereleaseWithClear(tls *crt.TLS, _pOut *XMem) (r0 *XMem) {
_sqlite3VdbeMemSetNull(tls, _pOut)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16(i32(4))
return _pOut
}
-func _sqlite3VdbeMemTooBig(tls *crt.TLS, _p *XMem) (r0 int32) { // sqlite3.c:70449:1
- var _1_n int32 // sqlite3.c:70452:9
- _ = _1_n
+// Return true if the Mem object contains a TEXT or BLOB that is
+// too large - whose size exceeds SQLITE_MAX_LENGTH.
+func _sqlite3VdbeMemTooBig(tls *crt.TLS, _p *XMem) (r0 int32) {
+ var _1_n int32
func() {
if (*Xsqlite3)(_p.X9) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70450), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTooBigØ00__func__Ø000))), unsafe.Pointer(str(23376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70450), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemTooBigØ00__func__Ø000))), unsafe.Pointer(str(23676)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_p.X1) & i32(18)) == 0 {
goto _2
}
-
_1_n = _p.X4
- if (int32(_p.X1) & i32(16384)) == 0 {
- goto _3
- }
-
- {
- p := &_1_n
- *p = (*p) + (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
- sink1 = *p
+ if (int32(_p.X1) & i32(16384)) != 0 {
+ {
+ p := &_1_n
+ *p = (*p) + (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))))
+ sink1 = *p
+ }
}
-_3:
/* X31 */
return bool2int(_1_n > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_p.X9)+uintptr(92))))) + 4*uintptr(i32(0))))))
@@ -61608,96 +55043,97 @@ _2:
return i32(0)
}
-var _sqlite3VdbeMemTooBigØ00__func__Ø000 [21]int8 // -
+var _sqlite3VdbeMemTooBigØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemTooBigØ00__func__Ø000[0], str(73868), 21)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemTooBigØ00__func__Ø000[0], str(72966), 21)
}
-func _sqlite3VdbeMemShallowCopy(tls *crt.TLS, _pTo *XMem, _pFrom *XMem, _srcType int32) { // sqlite3.c:70495:1
+func _sqlite3VdbeMemShallowCopy(tls *crt.TLS, _pTo *XMem, _pFrom *XMem, _srcType int32) {
func() {
if (int32(_pFrom.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemShallowCopyØ00__func__Ø000))), unsafe.Pointer(str(73892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemShallowCopyØ00__func__Ø000))), unsafe.Pointer(str(72987)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)(_pTo.X9) != (*Xsqlite3)(_pFrom.X9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70497), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemShallowCopyØ00__func__Ø000))), unsafe.Pointer(str(73924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70497), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemShallowCopyØ00__func__Ø000))), unsafe.Pointer(str(73018)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pTo.X1) & i32(9312)) == i32(0) {
- goto _4
+ if (int32(_pTo.X1) & i32(9312)) != i32(0) {
+ _vdbeClrCopy(tls, _pTo, _pFrom, _srcType)
+ return
}
-
- _vdbeClrCopy(tls, _pTo, _pFrom, _srcType)
- return
-
-_4:
crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo), (unsafe.Pointer)(_pFrom), u32(20))
- if (int32(_pFrom.X1) & i32(2048)) != i32(0) {
- goto _5
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-7169))
- sink12 = *p
- }
- func() {
- if _srcType != i32(4096) && _srcType != i32(2048) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemShallowCopyØ00__func__Ø000))), unsafe.Pointer(str(73944)))
- crt.X__builtin_abort(tls)
+ if (int32(_pFrom.X1) & i32(2048)) == i32(0) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-7169))
+ sink14 = *p
+ }
+ func() {
+ if _srcType != i32(4096) && _srcType != i32(2048) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70502), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemShallowCopyØ00__func__Ø000))), unsafe.Pointer(str(73037)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | _srcType)
+ sink14 = *p
}
- }()
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | _srcType)
- sink12 = *p
}
-_5:
}
-var _sqlite3VdbeMemShallowCopyØ00__func__Ø000 [26]int8 // -
+var _sqlite3VdbeMemShallowCopyØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemShallowCopyØ00__func__Ø000[0], str(73988), 26)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemShallowCopyØ00__func__Ø000[0], str(73079), 26)
}
-func _vdbeClrCopy(tls *crt.TLS, _pTo *XMem, _pFrom *XMem, _eType int32) { // sqlite3.c:70490:1
+// Make an shallow copy of pFrom into pTo. Prior contents of
+// pTo are freed. The pFrom->z field is not duplicated. If
+// pFrom->z is used, then pTo->z points to the same thing as pFrom->z
+// and flags gets srcType (either MEM_Ephem or MEM_Static).
+func _vdbeClrCopy(tls *crt.TLS, _pTo *XMem, _pFrom *XMem, _eType int32) {
_vdbeMemClearExternAndSetNull(tls, _pTo)
func() {
if (int32(_pTo.X1) & i32(9312)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70492), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeClrCopyØ00__func__Ø000))), unsafe.Pointer(str(74016)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70492), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeClrCopyØ00__func__Ø000))), unsafe.Pointer(str(73105)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemShallowCopy(tls, _pTo, _pFrom, _eType)
}
-var _vdbeClrCopyØ00__func__Ø000 [12]int8 // -
+var _vdbeClrCopyØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeClrCopyØ00__func__Ø000[0], str(74040), 12)
+ crt.Xstrncpy(nil, &_vdbeClrCopyØ00__func__Ø000[0], str(73126), 12)
}
-func _sqlite3VdbeMemMove(tls *crt.TLS, _pTo *XMem, _pFrom *XMem) { // sqlite3.c:70534:1
+// Transfer the contents of pFrom to pTo. Any existing value in pTo is
+// freed. If pFrom contains ephemeral data, a copy is made.
+//
+// pFrom contains an SQL NULL when this routine returns.
+func _sqlite3VdbeMemMove(tls *crt.TLS, _pTo *XMem, _pFrom *XMem) {
func() {
if (*Xsqlite3)(_pFrom.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pFrom.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70535), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMoveØ00__func__Ø000))), unsafe.Pointer(str(74052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70535), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMoveØ00__func__Ø000))), unsafe.Pointer(str(73138)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)(_pTo.X9) != nil && Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pTo.X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMoveØ00__func__Ø000))), unsafe.Pointer(str(74108)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70536), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMoveØ00__func__Ø000))), unsafe.Pointer(str(73191)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*Xsqlite3)(_pFrom.X9) != nil && (*Xsqlite3)(_pTo.X9) != nil && (*Xsqlite3)(_pFrom.X9) != (*Xsqlite3)(_pTo.X9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMoveØ00__func__Ø000))), unsafe.Pointer(str(74160)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemMoveØ00__func__Ø000))), unsafe.Pointer(str(73240)))
crt.X__builtin_abort(tls)
}
}()
@@ -61707,85 +55143,77 @@ func _sqlite3VdbeMemMove(tls *crt.TLS, _pTo *XMem, _pFrom *XMem) { // sqlite3.c:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(24 /* X7 */))) = i32(0)
}
-var _sqlite3VdbeMemMoveØ00__func__Ø000 [19]int8 // -
+var _sqlite3VdbeMemMoveØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemMoveØ00__func__Ø000[0], str(74212), 19)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemMoveØ00__func__Ø000[0], str(73289), 19)
}
-func _numericType(tls *crt.TLS, _pMem *XMem) (r0 uint16) { // sqlite3.c:78571:1
- if (int32(_pMem.X1) & i32(12)) == 0 {
- goto _0
+// Return the numeric type for pMem, either MEM_Int or MEM_Real or both or
+// none.
+//
+// Unlike applyNumericAffinity(), this routine does not modify pMem->flags.
+// But it does set pMem->u.r and pMem->u.i appropriately.
+func _numericType(tls *crt.TLS, _pMem *XMem) (r0 uint16) {
+ if (int32(_pMem.X1) & i32(12)) != 0 {
+ return uint16(int32(_pMem.X1) & i32(12))
}
- return uint16(int32(_pMem.X1) & i32(12))
-
-_0:
- if (int32(_pMem.X1) & i32(18)) == 0 {
- goto _1
+ if (int32(_pMem.X1) & i32(18)) != 0 {
+ return _computeNumericType(tls, _pMem)
}
- return _computeNumericType(tls, _pMem)
-
-_1:
return uint16(i32(0))
}
-func _computeNumericType(tls *crt.TLS, _pMem *XMem) (r0 uint16) { // sqlite3.c:78552:1
+// pMem currently only holds a string type (or maybe a BLOB that we can
+// interpret as a string if we want to). Compute its corresponding
+// numeric type, if has one. Set the pMem->u.r and pMem->u.i fields
+// accordingly.
+func _computeNumericType(tls *crt.TLS, _pMem *XMem) (r0 uint16) {
func() {
if (int32(_pMem.X1) & i32(12)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78553), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeNumericTypeØ00__func__Ø000))), unsafe.Pointer(str(74232)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78553), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeNumericTypeØ00__func__Ø000))), unsafe.Pointer(str(73308)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pMem.X1) & i32(18)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78554), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeNumericTypeØ00__func__Ø000))), unsafe.Pointer(str(74272)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78554), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeNumericTypeØ00__func__Ø000))), unsafe.Pointer(str(73346)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3AtoF(tls, _pMem.X5, (*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */))))), _pMem.X4, _pMem.X2) != i32(0) {
- goto _4
+ if _sqlite3AtoF(tls, _pMem.X5, (*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */))))), _pMem.X4, _pMem.X2) == i32(0) {
+ return uint16(i32(0))
}
- return uint16(i32(0))
-
-_4:
- if _sqlite3Atoi64(tls, _pMem.X5, (*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */))))), _pMem.X4, _pMem.X2) != i32(0) {
- goto _5
+ if _sqlite3Atoi64(tls, _pMem.X5, (*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */))))), _pMem.X4, _pMem.X2) == i32(0) {
+ return uint16(i32(4))
}
- return uint16(i32(4))
-
-_5:
return uint16(i32(8))
}
-var _computeNumericTypeØ00__func__Ø000 [19]int8 // -
+var _computeNumericTypeØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_computeNumericTypeØ00__func__Ø000[0], str(74312), 19)
+ crt.Xstrncpy(nil, &_computeNumericTypeØ00__func__Ø000[0], str(73384), 19)
}
-func _sqlite3AddInt64(tls *crt.TLS, _pA *int64, _iB int64) (r0 int32) { // sqlite3.c:28934:1
- var _iA int64 // sqlite3.c:28938:7
- _ = _iA
+// Attempt to add, substract, or multiply the 64-bit signed value iB against
+// the other 64-bit signed integer at *pA and store the result in *pA.
+// Return 0 on success. Or if the operation would have resulted in an
+// overflow, leave *pA unchanged and return 1.
+func _sqlite3AddInt64(tls *crt.TLS, _pA *int64, _iB int64) (r0 int32) {
+ var _iA int64
_iA = *_pA
if _iB < int64(i32(0)) {
goto _0
}
-
- if _iA <= int64(i32(0)) || (i64(9223372036854775807)-_iA) >= _iB {
- goto _2
+ if (_iA > int64(i32(0))) && ((i64(9223372036854775807) - _iA) < _iB) {
+ return i32(1)
}
- return i32(1)
-
-_2:
goto _3
-
_0:
- if _iA >= int64(i32(0)) || (-(_iA + i64(9223372036854775807))) <= (_iB+int64(i32(1))) {
- goto _5
+ if (_iA < int64(i32(0))) && ((-(_iA + i64(9223372036854775807))) > (_iB + int64(i32(1)))) {
+ return i32(1)
}
- return i32(1)
-
-_5:
_3:
{
p := _pA
@@ -61795,17 +55223,13 @@ _3:
return i32(0)
}
-func _sqlite3SubInt64(tls *crt.TLS, _pA *int64, _iB int64) (r0 int32) { // sqlite3.c:28954:1
+func _sqlite3SubInt64(tls *crt.TLS, _pA *int64, _iB int64) (r0 int32) {
if _iB != i64(-9223372036854775808) {
goto _0
}
-
- if (*_pA) < int64(i32(0)) {
- goto _1
+ if (*_pA) >= int64(i32(0)) {
+ return i32(1)
}
- return i32(1)
-
-_1:
{
p := _pA
*p = (*p) - _iB
@@ -61817,68 +55241,43 @@ _0:
return _sqlite3AddInt64(tls, _pA, -_iB)
}
-func _sqlite3MulInt64(tls *crt.TLS, _pA *int64, _iB int64) (r0 int32) { // sqlite3.c:28969:1
- var _iA int64 // sqlite3.c:28973:7
- _ = _iA
+func _sqlite3MulInt64(tls *crt.TLS, _pA *int64, _iB int64) (r0 int32) {
+ var _iA int64
_iA = *_pA
if _iB <= int64(i32(0)) {
goto _0
}
-
- if _iA <= (i64(9223372036854775807) / _iB) {
- goto _1
+ if _iA > (i64(9223372036854775807) / _iB) {
+ return i32(1)
}
- return i32(1)
-
-_1:
- if _iA >= (i64(-9223372036854775808) / _iB) {
- goto _2
+ if _iA < (i64(-9223372036854775808) / _iB) {
+ return i32(1)
}
- return i32(1)
-
-_2:
goto _3
-
_0:
if _iB >= int64(i32(0)) {
goto _4
}
-
if _iA <= int64(i32(0)) {
goto _5
}
-
- if _iB >= (i64(-9223372036854775808) / _iA) {
- goto _6
+ if _iB < (i64(-9223372036854775808) / _iA) {
+ return i32(1)
}
- return i32(1)
-
-_6:
goto _7
-
_5:
if _iA >= int64(i32(0)) {
goto _8
}
-
- if _iB != i64(-9223372036854775808) {
- goto _9
+ if _iB == i64(-9223372036854775808) {
+ return i32(1)
}
- return i32(1)
-
-_9:
- if _iA != i64(-9223372036854775808) {
- goto _10
+ if _iA == i64(-9223372036854775808) {
+ return i32(1)
}
- return i32(1)
-
-_10:
- if (-_iA) <= (i64(9223372036854775807) / (-_iB)) {
- goto _11
+ if (-_iA) > (i64(9223372036854775807) / (-_iB)) {
+ return i32(1)
}
- return i32(1)
-
-_11:
_8:
_7:
_4:
@@ -61887,97 +55286,71 @@ _3:
return i32(0)
}
-func _sqlite3MemCompare(tls *crt.TLS, _pMem1 *XMem, _pMem2 *XMem, _pColl *XCollSeq) (r0 int32) { // sqlite3.c:75256:1
- var _f1 int32 // sqlite3.c:75257:7
- _ = _f1
- var _f2 int32 // sqlite3.c:75257:11
- _ = _f2
- var _combined_flags int32 // sqlite3.c:75258:7
- _ = _combined_flags
+// Compare the values contained by the two memory cells, returning
+// negative, zero or positive if pMem1 is less than, equal to, or greater
+// than pMem2. Sorting order is NULL's first, followed by numbers (integers
+// and reals) sorted numerically, followed by text ordered by the collating
+// sequence pColl and finally blob's ordered by memcmp().
+//
+// Two NULL values are considered equal by this function.
+func _sqlite3MemCompare(tls *crt.TLS, _pMem1 *XMem, _pMem2 *XMem, _pColl *XCollSeq) (r0 int32) {
+ var _f1, _f2, _combined_flags int32
_f1 = int32(_pMem1.X1)
_f2 = int32(_pMem2.X1)
_combined_flags = _f1 | _f2
func() {
if (_combined_flags & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75263), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(74332)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75263), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(73403)))
crt.X__builtin_abort(tls)
}
}()
- if (_combined_flags & i32(1)) == 0 {
- goto _2
+ if (_combined_flags & i32(1)) != 0 {
+ return (_f2 & i32(1)) - (_f1 & i32(1))
}
- return (_f2 & i32(1)) - (_f1 & i32(1))
-
-_2:
if (_combined_flags & i32(12)) == 0 {
goto _3
}
-
if ((_f1 & _f2) & i32(4)) == i32(0) {
goto _4
}
-
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) >= (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
- goto _5
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) < (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
+ return i32(-1)
}
- return i32(-1)
-
-_5:
- if (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) <= (*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
- goto _6
+ if (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) > (*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
+ return i32(1)
}
- return i32(1)
-
-_6:
return i32(0)
_4:
if ((_f1 & _f2) & i32(8)) == i32(0) {
goto _7
}
-
- if (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) >= (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
- goto _8
+ if (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) < (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
+ return i32(-1)
}
- return i32(-1)
-
-_8:
- if (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) <= (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
- goto _9
+ if (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0 /* X0 */)))))) > (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0 /* X0 */)))))) {
+ return i32(1)
}
- return i32(1)
-
-_9:
return i32(0)
_7:
if (_f1 & i32(4)) == i32(0) {
goto _10
}
-
- if (_f2 & i32(8)) == i32(0) {
- goto _11
+ if (_f2 & i32(8)) != i32(0) {
+ /* X0 */ /* X0 */
+ return _sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0))))), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0))))))
}
-
- /* X0 */ /* X0 */
- return _sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0))))), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0))))))
-
-_11:
return i32(-1)
_10:
if (_f1 & i32(8)) == i32(0) {
goto _13
}
-
- if (_f2 & i32(4)) == i32(0) {
- goto _14
+ if (_f2 & i32(4)) != i32(0) {
+ /* X0 */ /* X0 */
+ return -_sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0))))), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0))))))
}
-
- /* X0 */ /* X0 */
- return -_sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem2)) + uintptr(0))))), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem1)) + uintptr(0))))))
-
-_14:
return i32(-1)
_13:
@@ -61987,133 +55360,94 @@ _3:
if (_combined_flags & i32(2)) == 0 {
goto _16
}
-
- if (_f1 & i32(2)) != i32(0) {
- goto _17
+ if (_f1 & i32(2)) == i32(0) {
+ return i32(1)
}
- return i32(1)
-
-_17:
- if (_f2 & i32(2)) != i32(0) {
- goto _18
+ if (_f2 & i32(2)) == i32(0) {
+ return i32(-1)
}
- return i32(-1)
-
-_18:
func() {
if int32(_pMem1.X2) != int32(_pMem2.X2) && ((*Xsqlite3)(_pMem1.X9).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75313), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(74368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75313), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(73436)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pMem1.X2) != i32(1) && int32(_pMem1.X2) != i32(2) && int32(_pMem1.X2) != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75314), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(74420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75314), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(73486)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pColl != nil && (_pColl.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75321), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(74504)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75321), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MemCompareØ00__func__Ø000))), unsafe.Pointer(str(73570)))
crt.X__builtin_abort(tls)
}
}()
- if _pColl == nil {
- goto _29
+ if _pColl != nil {
+ return _vdbeCompareMemString(tls, _pMem1, _pMem2, _pColl, nil)
}
- return _vdbeCompareMemString(tls, _pMem1, _pMem2, _pColl, nil)
-
-_29:
_16:
- r0 = _sqlite3BlobCompare(tls, _pMem1, _pMem2)
- return
+ return _sqlite3BlobCompare(tls, _pMem1, _pMem2)
}
-var _sqlite3MemCompareØ00__func__Ø000 [18]int8 // -
+var _sqlite3MemCompareØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3MemCompareØ00__func__Ø000[0], str(74528), 18)
+ crt.Xstrncpy(nil, &_sqlite3MemCompareØ00__func__Ø000[0], str(73592), 18)
}
-func _sqlite3IntFloatCompare(tls *crt.TLS, _i int64, _r float64) (r0 int32) { // sqlite3.c:75223:1
- var _1_x float64 // sqlite3.c:75225:21
- _ = _1_x
- var _2_y int64 // sqlite3.c:75230:9
- _ = _2_y
- var _2_s float64 // sqlite3.c:75231:12
- _ = _2_s
+// Do a comparison between a 64-bit signed integer and a 64-bit floating-point
+// number. Return negative, zero, or positive if the first (i64) is less than,
+// equal to, or greater than the second (double).
+func _sqlite3IntFloatCompare(tls *crt.TLS, _i int64, _r float64) (r0 int32) {
+ var _2_y int64
+ var _1_x, _2_s float64
goto _0
-
_0:
- if _r >= (-9.223372036854776e+18) {
- goto _4
+ if _r < (-9.223372036854776e+18) {
+ return i32(1)
}
- return i32(1)
-
-_4:
- if _r <= (9.223372036854776e+18) {
- goto _5
+ if _r > (9.223372036854776e+18) {
+ return i32(-1)
}
- return i32(-1)
-
-_5:
_2_y = int64(_r)
- if _i >= _2_y {
- goto _6
+ if _i < _2_y {
+ return i32(-1)
}
- return i32(-1)
-
-_6:
if _i <= _2_y {
goto _7
}
-
- if _2_y != i64(-9223372036854775808) || _r <= float64(0) {
- goto _9
+ if (_2_y == i64(-9223372036854775808)) && (_r > float64(0)) {
+ return i32(-1)
}
- return i32(-1)
-
-_9:
return i32(1)
_7:
_2_s = float64(_i)
- if _2_s >= _r {
- goto _10
+ if _2_s < _r {
+ return i32(-1)
}
- return i32(-1)
-
-_10:
- if _2_s <= _r {
- goto _11
+ if _2_s > _r {
+ return i32(1)
}
- return i32(1)
-
-_11:
return i32(0)
+
+ _ = _1_x
+ panic(0)
}
-func _vdbeCompareMemString(tls *crt.TLS, _pMem1 *XMem, _pMem2 *XMem, _pColl *XCollSeq, _prcErr *uint8) (r0 int32) { // sqlite3.c:75141:1
- var _2_rc int32 // sqlite3.c:75152:9
- _ = _2_rc
- var _2_v1 unsafe.Pointer // sqlite3.c:75153:16
- _ = _2_v1
- var _2_v2 unsafe.Pointer // sqlite3.c:75153:21
- _ = _2_v2
- var _2_n1 int32 // sqlite3.c:75154:9
- _ = _2_n1
- var _2_n2 int32 // sqlite3.c:75154:13
- _ = _2_n2
- var _2_c1 XMem // sqlite3.c:75155:9
- _ = _2_c1
- var _2_c2 XMem // sqlite3.c:75156:9
- _ = _2_c2
- if int32(_pMem1.X2) != int32(_pColl.X1) {
- goto _0
+// Both *pMem1 and *pMem2 contain string values. Compare the two values
+// using the collation sequence pColl. As usual, return a negative , zero
+// or positive value if *pMem1 is less than, equal to or greater than
+// *pMem2, respectively. Similar in spirit to "rc = (*pMem1) - (*pMem2);".
+func _vdbeCompareMemString(tls *crt.TLS, _pMem1 *XMem, _pMem2 *XMem, _pColl *XCollSeq, _prcErr *uint8) (r0 int32) {
+ var _2_rc, _2_n1, _2_n2 int32
+ var _2_v1, _2_v2 unsafe.Pointer
+ var _2_c1, _2_c2 XMem
+ if int32(_pMem1.X2) == int32(_pColl.X1) {
+ return (_pColl.X3)(tls, _pColl.X2, _pMem1.X4, (unsafe.Pointer)(_pMem1.X5), _pMem2.X4, (unsafe.Pointer)(_pMem2.X5))
}
- return (_pColl.X3)(tls, _pColl.X2, _pMem1.X4, (unsafe.Pointer)(_pMem1.X5), _pMem2.X4, (unsafe.Pointer)(_pMem2.X5))
-
-_0:
_sqlite3VdbeMemInit(tls, &_2_c1, (*Xsqlite3)(_pMem1.X9), uint16(i32(1)))
_sqlite3VdbeMemInit(tls, &_2_c2, (*Xsqlite3)(_pMem1.X9), uint16(i32(1)))
_sqlite3VdbeMemShallowCopy(tls, &_2_c1, _pMem1, i32(4096))
@@ -62133,21 +55467,25 @@ _0:
return (_2_c2.X4)
}()
_2_rc = (_pColl.X3)(tls, _pColl.X2, _2_n1, _2_v1, _2_n2, _2_v2)
- if _2_v1 != nil && _2_v2 != nil || _prcErr == nil {
- goto _8
+ if ((_2_v1 == nil) || (_2_v2 == nil)) && (_prcErr != nil) {
+ *_prcErr = uint8(_sqlite3NomemError(tls, i32(75166)))
}
-
- *_prcErr = uint8(_sqlite3NomemError(tls, i32(75166)))
-_8:
_sqlite3VdbeMemRelease(tls, &_2_c1)
_sqlite3VdbeMemRelease(tls, &_2_c2)
return _2_rc
+
+ _ = _2_c1
+ _ = _2_c2
+ panic(0)
}
-func _sqlite3VdbeMemInit(tls *crt.TLS, _pMem *XMem, _db *Xsqlite3, _flags uint16) { // sqlite3.c:70340:1
+// Initialize bulk memory to be a consistent Mem object.
+//
+// The minimum amount of initialization feasible is performed.
+func _sqlite3VdbeMemInit(tls *crt.TLS, _pMem *XMem, _db *Xsqlite3, _flags uint16) {
func() {
if (int32(_flags) & i32(-33280)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70341), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemInitØ00__func__Ø000))), unsafe.Pointer(str(74548)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70341), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemInitØ00__func__Ø000))), unsafe.Pointer(str(73610)))
crt.X__builtin_abort(tls)
}
}()
@@ -62156,67 +55494,53 @@ func _sqlite3VdbeMemInit(tls *crt.TLS, _pMem *XMem, _db *Xsqlite3, _flags uint16
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = i32(0)
}
-var _sqlite3VdbeMemInitØ00__func__Ø000 [19]int8 // -
+var _sqlite3VdbeMemInitØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemInitØ00__func__Ø000[0], str(74576), 19)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemInitØ00__func__Ø000[0], str(73637), 19)
}
-func _sqlite3BlobCompare(tls *crt.TLS, _pB1 *XMem, _pB2 *XMem) (r0 int32) { // sqlite3.c:75190:1
- var _c int32 // sqlite3.c:75191:7
- _ = _c
- var _n1 int32 // sqlite3.c:75192:7
- _ = _n1
- var _n2 int32 // sqlite3.c:75193:7
- _ = _n2
+// Compare two blobs. Return negative, zero, or positive if the first
+// is less than, equal to, or greater than the second, respectively.
+// If one blob is a prefix of the other, then the shorter is the lessor.
+func _sqlite3BlobCompare(tls *crt.TLS, _pB1 *XMem, _pB2 *XMem) (r0 int32) {
+ var _c, _n1, _n2 int32
_n1 = _pB1.X4
_n2 = _pB2.X4
func() {
if (int32(_pB1.X1)&i32(16384)) != i32(0) && _n1 != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75199), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BlobCompareØ00__func__Ø000))), unsafe.Pointer(str(74596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75199), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BlobCompareØ00__func__Ø000))), unsafe.Pointer(str(73656)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pB2.X1)&i32(16384)) != i32(0) && _n2 != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BlobCompareØ00__func__Ø000))), unsafe.Pointer(str(74632)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75200), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BlobCompareØ00__func__Ø000))), unsafe.Pointer(str(73692)))
crt.X__builtin_abort(tls)
}
}()
if ((int32(_pB1.X1) | int32(_pB2.X1)) & i32(16384)) == 0 {
goto _6
}
-
- if ((int32(_pB1.X1) & int32(_pB2.X1)) & i32(16384)) == 0 {
- goto _7
+ if ((int32(_pB1.X1) & int32(_pB2.X1)) & i32(16384)) != 0 {
+ /* X0 */ /* X0 */
+ return (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB1)) + uintptr(0)))))) - (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB2)) + uintptr(0))))))
}
-
- /* X0 */ /* X0 */
- return (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB1)) + uintptr(0)))))) - (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB2)) + uintptr(0))))))
-
-_7:
if (int32(_pB1.X1) & i32(16384)) == 0 {
goto _9
}
-
- if _isAllZero(tls, _pB2.X5, _pB2.X4) != 0 {
- goto _10
+ if _isAllZero(tls, _pB2.X5, _pB2.X4) == 0 {
+ return i32(-1)
}
- return i32(-1)
-
-_10:
/* X0 */
- return (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB1)) + uintptr(0)))))) - _n2
+ return (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB1)) + uintptr(0)))))) - _n2
_9:
- if _isAllZero(tls, _pB1.X5, _pB1.X4) != 0 {
- goto _12
+ if _isAllZero(tls, _pB1.X5, _pB1.X4) == 0 {
+ return i32(1)
}
- return i32(1)
-
-_12:
/* X0 */
- return _n1 - (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB2)) + uintptr(0))))))
+ return _n1 - (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB2)) + uintptr(0))))))
_6:
_c = crt.Xmemcmp(tls, (unsafe.Pointer)(_pB1.X5), (unsafe.Pointer)(_pB2.X5), uint32(func() int32 {
@@ -62225,312 +55549,279 @@ _6:
}
return _n1
}()))
- if _c == 0 {
- goto _15
+ if _c != 0 {
+ return _c
}
- return _c
-
-_15:
return _n1 - _n2
}
-var _sqlite3BlobCompareØ00__func__Ø000 [19]int8 // -
+var _sqlite3BlobCompareØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BlobCompareØ00__func__Ø000[0], str(74668), 19)
+ crt.Xstrncpy(nil, &_sqlite3BlobCompareØ00__func__Ø000[0], str(73728), 19)
}
-func _isAllZero(tls *crt.TLS, _z *int8, _n int32) (r0 int32) { // sqlite3.c:75177:1
- var _i int32 // sqlite3.c:75178:7
- _ = _i
+// The input pBlob is guaranteed to be a Blob that is not marked
+// with MEM_Zero. Return true if it could be a zero-blob.
+func _isAllZero(tls *crt.TLS, _z *int8, _n int32) (r0 int32) {
+ var _i int32
_i = i32(0)
_0:
if _i >= _n {
goto _3
}
-
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) == 0 {
- goto _4
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i)))) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_4:
_i += 1
goto _0
-
_3:
return i32(1)
}
-var _sqlite3VdbeExecØ00and_logicØ002 [9]uint8 // sqlite3.c:80573:32
+var _sqlite3VdbeExecØ00and_logicØ002 [9]uint8
func init() {
_sqlite3VdbeExecØ00and_logicØ002 = [9]uint8{0, 0, 0, 0, 1, 2, 0, 2, 2}
}
-var _sqlite3VdbeExecØ00or_logicØ003 [9]uint8 // sqlite3.c:80576:32
+var _sqlite3VdbeExecØ00or_logicØ003 [9]uint8
func init() {
_sqlite3VdbeExecØ00or_logicØ003 = [9]uint8{0, 1, 2, 1, 1, 1, 2, 1, 2}
}
-func _sqlite3VdbeCursorMoveto(tls *crt.TLS, _pp **XVdbeCursor, _piCol *int32) (r0 int32) { // sqlite3.c:74534:1
- var _p *XVdbeCursor // sqlite3.c:74535:14
- _ = _p
- var _2_iMap int32 // sqlite3.c:74538:11
- _ = _2_iMap
+// Make sure the cursor p is ready to read or write the row to which it
+// was last positioned. Return an error code if an OOM fault or I/O error
+// prevents us from positioning the cursor to its correct position.
+//
+// If a MoveTo operation is pending on the given cursor, then do that
+// MoveTo now. If no move is pending, check to see if the row has been
+// deleted out from under the cursor and if it has, mark the row as
+// a NULL row.
+//
+// If the cursor is already pointing to the correct row and that row has
+// not been deleted out from under the cursor, then this routine is a no-op.
+func _sqlite3VdbeCursorMoveto(tls *crt.TLS, _pp **XVdbeCursor, _piCol *int32) (r0 int32) {
+ var _2_iMap int32
+ var _p *XVdbeCursor
_p = *_pp
if int32(_p.X0) != i32(0) {
goto _0
}
-
if (_p.X3) == 0 {
goto _1
}
-
- if (_p.X10) == nil || store1(&_2_iMap, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X10)) + 4*uintptr(i32(1)+(*_piCol))))) <= i32(0) {
- goto _3
+ if ((_p.X10) != nil) && (store1(&_2_iMap, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X10)) + 4*uintptr(i32(1)+(*_piCol))))) > i32(0)) {
+ *_pp = (*XVdbeCursor)(_p.X13)
+ *_piCol = _2_iMap - i32(1)
+ return i32(0)
}
-
- *_pp = (*XVdbeCursor)(_p.X13)
- *_piCol = _2_iMap - i32(1)
- return i32(0)
-
-_3:
return _handleDeferredMoveto(tls, _p)
_1:
- if _sqlite3BtreeCursorHasMoved(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */))))))) == 0 {
- goto _4
+ if _sqlite3BtreeCursorHasMoved(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */))))))) != 0 {
+ return _handleMovedCursor(tls, _p)
}
- return _handleMovedCursor(tls, _p)
-
-_4:
_0:
- r0 = i32(0)
- return
+ return i32(0)
}
-func _handleDeferredMoveto(tls *crt.TLS, _p *XVdbeCursor) (r0 int32) { // sqlite3.c:74472:1
- var _res int32 // sqlite3.c:74473:7
- _ = _res
- var _rc int32 // sqlite3.c:74473:12
- _ = _rc
+// The cursor "p" has a pending seek operation that has not yet been
+// carried out. Seek the cursor now. If an error occurs, return
+// the appropriate error code.
+func _handleDeferredMoveto(tls *crt.TLS, _p *XVdbeCursor) (r0 int32) {
+ var _res, _rc int32
func() {
if (_p.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74477), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleDeferredMovetoØ00__func__Ø000))), unsafe.Pointer(str(74688)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74477), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleDeferredMovetoØ00__func__Ø000))), unsafe.Pointer(str(73747)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_p.X4) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74478), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleDeferredMovetoØ00__func__Ø000))), unsafe.Pointer(str(74708)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74478), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleDeferredMovetoØ00__func__Ø000))), unsafe.Pointer(str(73765)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74479), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleDeferredMovetoØ00__func__Ø000))), unsafe.Pointer(str(74720)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74479), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleDeferredMovetoØ00__func__Ø000))), unsafe.Pointer(str(73776)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */)))))), nil, _p.X20, i32(0), &_res)
- if _rc == 0 {
- goto _6
+ _rc = _sqlite3BtreeMovetoUnpacked(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */)))))), nil, _p.X20, i32(0), &_res)
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_6:
- if _res == i32(0) {
- goto _7
+ if _res != i32(0) {
+ return _sqlite3CorruptError(tls, i32(74482))
}
- return _sqlite3CorruptError(tls, i32(74482))
-
-_7:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(3 /* X3 */))) = uint8(i32(0))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X11 */))) = uint32(i32(0))
return i32(0)
}
-var _handleDeferredMovetoØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_handleDeferredMovetoØ00__func__Ø000[0], str(74748), 21)
-}
-
-func _sqlite3BtreeMovetoUnpacked(tls *crt.TLS, _pCur *XBtCursor, _pIdxKey *XUnpackedRecord, _intKey int64, _biasRight int32, _pRes *int32) (r0 int32) { // sqlite3.c:64170:1
- var _rc int32 // sqlite3.c:64177:7
- _ = _rc
- var _xRecordCompare func(*crt.TLS, int32, unsafe.Pointer, *XUnpackedRecord) int32 // sqlite3.c:64178:17
- _ = _xRecordCompare
- var _12_lwr int32 // sqlite3.c:64244:9
- _ = _12_lwr
- var _12_upr int32 // sqlite3.c:64244:14
- _ = _12_upr
- var _12_idx int32 // sqlite3.c:64244:19
- _ = _12_idx
- var _12_c int32 // sqlite3.c:64244:24
- _ = _12_c
- var _12_chldPg uint32 // sqlite3.c:64245:10
- _ = _12_chldPg
- var _12_pPage *XMemPage // sqlite3.c:64246:13
- _ = _12_pPage
- var _12_pCell *uint8 // sqlite3.c:64247:8
- _ = _12_pCell
- var _14_nCellKey int64 // sqlite3.c:64264:13
- _ = _14_nCellKey
- var _25_nCell int32 // sqlite3.c:64297:13
- _ = _25_nCell
- var _28_pCellKey unsafe.Pointer // sqlite3.c:64332:16
- _ = _28_pCellKey
- var _28_pCellBody *uint8 // sqlite3.c:64333:14
- _ = _28_pCellBody
+var _handleDeferredMovetoØ00__func__Ø000 [21]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_handleDeferredMovetoØ00__func__Ø000[0], str(73803), 21)
+}
+
+// Move the cursor so that it points to an entry near the key
+// specified by pIdxKey or intKey. Return a success code.
+//
+// For INTKEY tables, the intKey parameter is used. pIdxKey
+// must be NULL. For index tables, pIdxKey is used and intKey
+// is ignored.
+//
+// If an exact match is not found, then the cursor is always
+// left pointing at a leaf page which would hold the entry if it
+// were present. The cursor might point to an entry that comes
+// before or after the key.
+//
+// An integer is written into *pRes which is the result of
+// comparing the key with the entry to which the cursor is
+// pointing. The meaning of the integer written into
+// *pRes is as follows:
+//
+// *pRes<0 The cursor is left pointing at an entry that
+// is smaller than intKey/pIdxKey or if the table is empty
+// and the cursor is therefore left point to nothing.
+//
+// *pRes==0 The cursor is left pointing at an entry that
+// exactly matches intKey/pIdxKey.
+//
+// *pRes>0 The cursor is left pointing at an entry that
+// is larger than intKey/pIdxKey.
+//
+// For index tables, the pIdxKey->eqSeen field is set to 1 if there
+// exists an entry in the table that exactly matches pIdxKey.
+func _sqlite3BtreeMovetoUnpacked(tls *crt.TLS, _pCur *XBtCursor, _pIdxKey *XUnpackedRecord, _intKey int64, _biasRight int32, _pRes *int32) (r0 int32) {
+ var _rc, _12_lwr, _12_upr, _12_idx, _12_c, _25_nCell int32
+ var _14_nCellKey int64
+ var _12_chldPg uint32
+ var _28_pCellKey unsafe.Pointer
+ var _12_pCell, _28_pCellBody *uint8
+ var _12_pPage *XMemPage
+ var _xRecordCompare func(*crt.TLS, int32, unsafe.Pointer, *XUnpackedRecord) int32
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64180), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64180), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XBtree)(_pCur.X0).X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64181), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74800)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64181), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(73849)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pRes == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74844)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(73893)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pIdxKey == nil) != ((*XKeyInfo)(_pCur.X18) == nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64183), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64183), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(73898)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) == i32(1) && (_pIdxKey == nil) != (int32(_pCur.X15) != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64184), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74888)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64184), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(73932)))
crt.X__builtin_abort(tls)
}
}()
if _pIdxKey != nil || int32(_pCur.X12) != i32(1) || (int32(_pCur.X10)&i32(2)) == i32(0) {
goto _13
}
-
- if ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X0) != _intKey {
- goto _14
+ if ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X0) == _intKey {
+ *_pRes = i32(0)
+ return i32(0)
}
-
- *_pRes = i32(0)
- return i32(0)
-
-_14:
if ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X0) >= _intKey {
goto _15
}
-
- if (int32(_pCur.X10) & i32(8)) == i32(0) {
- goto _16
+ if (int32(_pCur.X10) & i32(8)) != i32(0) {
+ *_pRes = i32(-1)
+ return i32(0)
}
-
- *_pRes = i32(-1)
- return i32(0)
-
-_16:
if (((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X0)+int64(i32(1))) != _intKey || (_pCur.X9) != 0 {
goto _18
}
-
*_pRes = i32(0)
_rc = _sqlite3BtreeNext(tls, _pCur, _pRes)
- if _rc == 0 {
- goto _19
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_19:
if (*_pRes) != i32(0) {
goto _20
}
-
_getCellInfo(tls, _pCur)
- if ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X0) != _intKey {
- goto _21
+ if ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X0) == _intKey {
+ return i32(0)
}
- return i32(0)
-
-_21:
_20:
_18:
_15:
_13:
- if _pIdxKey == nil {
- goto _22
+ if _pIdxKey != nil {
+ _xRecordCompare = _sqlite3VdbeFindCompare(tls, _pIdxKey)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxKey)) + uintptr(11 /* X4 */))) = uint8(i32(0))
+ func() {
+ if int32(_pIdxKey.X3) != i32(1) && int32(_pIdxKey.X3) != i32(0) && int32(_pIdxKey.X3) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(73997)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _27
}
-
- _xRecordCompare = _sqlite3VdbeFindCompare(tls, _pIdxKey)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxKey)) + uintptr(11 /* X4 */))) = uint8(i32(0))
- func() {
- if int32(_pIdxKey.X3) != i32(1) && int32(_pIdxKey.X3) != i32(0) && int32(_pIdxKey.X3) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74956)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _27
-
-_22:
_xRecordCompare = nil
_27:
_rc = _moveToRoot(tls, _pCur)
- if _rc == 0 {
- goto _28
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_28:
func() {
if (_pCur.X7) != uint32(i32(0)) && (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75032)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64233), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74073)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pCur.X7) != uint32(i32(0)) && ((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64234), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64234), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74120)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) != i32(0) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64235), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64235), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74175)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pCur.X12) != i32(0) {
- goto _38
+ if int32(_pCur.X12) == i32(0) {
+ *_pRes = i32(-1)
+ func() {
+ if (_pCur.X7) != uint32(i32(0)) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74242)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(0)
}
-
- *_pRes = i32(-1)
- func() {
- if (_pCur.X7) != uint32(i32(0)) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75204)))
- crt.X__builtin_abort(tls)
- }
- }()
- return i32(0)
-
-_38:
func() {
if int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(i32(0))))).X2) != int32(_pCur.X15) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64241), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75264)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64241), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74299)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pCur.X15) == 0 && _pIdxKey == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64242), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64242), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74340)))
crt.X__builtin_abort(tls)
}
}()
@@ -62538,13 +55829,13 @@ _47:
_12_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
func() {
if int32(_12_pPage.X14) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64255), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75336)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64255), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74367)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_12_pPage.X2) != bool2int(_pIdxKey == nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75352)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74382)))
crt.X__builtin_abort(tls)
}
}()
@@ -62552,7 +55843,7 @@ _47:
_12_upr = int32(_12_pPage.X14) - i32(1)
func() {
if _biasRight != i32(0) && _biasRight != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74410)))
crt.X__builtin_abort(tls)
}
}()
@@ -62565,76 +55856,53 @@ _47:
}{nil})) {
goto _57
}
-
_58:
_12_pCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_12_pPage.X22)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_12_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pPage.X21))+1*uintptr(i32(2)*_12_idx))))) + 1*uintptr(i32(0)))))< int32(*postInc11(&_12_pCell, 1)) {
+ if i32(128) > int32(*postInc13(&_12_pCell, 1)) {
goto _63
}
-
- if uintptr(unsafe.Pointer(_12_pCell)) < uintptr(unsafe.Pointer(_12_pPage.X20)) {
- goto _64
+ if uintptr(unsafe.Pointer(_12_pCell)) >= uintptr(unsafe.Pointer(_12_pPage.X20)) {
+ return _sqlite3CorruptError(tls, i32(64268))
}
- return _sqlite3CorruptError(tls, i32(64268))
-
-_64:
goto _62
-
_63:
_61:
_sqlite3GetVarint(tls, _12_pCell, (*uint64)(unsafe.Pointer(&_14_nCellKey)))
if _14_nCellKey >= _intKey {
goto _65
}
-
_12_lwr = _12_idx + i32(1)
- if _12_lwr <= _12_upr {
- goto _66
+ if _12_lwr > _12_upr {
+ _12_c = i32(-1)
+ goto _60
}
-
- _12_c = i32(-1)
- goto _60
-
-_66:
goto _67
-
_65:
if _14_nCellKey <= _intKey {
goto _68
}
-
_12_upr = _12_idx - i32(1)
- if _12_lwr <= _12_upr {
- goto _69
+ if _12_lwr > _12_upr {
+ _12_c = i32(1)
+ goto _60
}
-
- _12_c = i32(1)
- goto _60
-
-_69:
goto _70
-
_68:
func() {
if _14_nCellKey != _intKey {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64279), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64279), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74439)))
crt.X__builtin_abort(tls)
}
}()
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(_12_idx)
- if (_12_pPage.X5) != 0 {
- goto _73
+ if (_12_pPage.X5) == 0 {
+ _12_lwr = _12_idx
+ goto _moveto_next_layer
}
-
- _12_lwr = _12_idx
- goto _moveto_next_layer
-
-_73:
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
*p = uint8(int32(*p) | i32(2))
@@ -62649,58 +55917,40 @@ _70:
_67:
func() {
if (_12_lwr + _12_upr) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64292), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75432)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64292), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74456)))
crt.X__builtin_abort(tls)
}
}()
_12_idx = (_12_lwr + _12_upr) >> uint(i32(1))
goto _58
-
_60:
goto _77
-
_57:
_78:
_12_pCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_12_pPage.X22)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_12_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pPage.X21))+1*uintptr(i32(2)*_12_idx))))) + 1*uintptr(i32(0)))))< int32(_12_pPage.X8) {
- goto _81
+ if _25_nCell <= int32(_12_pPage.X8) {
+ _12_c = _xRecordCompare(tls, _25_nCell, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pCell))+1*uintptr(i32(1))))), _pIdxKey)
+ goto _82
}
-
- _12_c = _xRecordCompare(tls, _25_nCell, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pCell))+1*uintptr(i32(1))))), _pIdxKey)
- goto _82
-
-_81:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pCell)) + 1*uintptr(i32(1)))))&i32(128)) != 0 || store1(&_25_nCell, ((_25_nCell&i32(127))< int32(_12_pPage.X10) {
- goto _84
+ if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pCell)) + 1*uintptr(i32(1))))) & i32(128)) == 0) && (store1(&_25_nCell, ((_25_nCell&i32(127))<= i32(2) {
- goto _86
+ if _25_nCell < i32(2) {
+ _rc = _sqlite3CorruptError(tls, i32(64341))
+ goto _moveto_finish
}
-
- _rc = _sqlite3CorruptError(tls, i32(64341))
- goto _moveto_finish
-
-_86:
_28_pCellKey = _sqlite3Malloc(tls, uint64(_25_nCell+i32(18)))
- if _28_pCellKey != nil {
- goto _87
+ if _28_pCellKey == nil {
+ _rc = _sqlite3NomemError(tls, i32(64346))
+ goto _moveto_finish
}
-
- _rc = _sqlite3NomemError(tls, i32(64346))
- goto _moveto_finish
-
-_87:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(_12_idx)
_rc = _accessPayload(tls, _pCur, uint32(i32(0)), uint32(_25_nCell), (*uint8)(_28_pCellKey), i32(0))
{
@@ -62708,185 +55958,157 @@ _87:
*p = uint8(int32(*p) & i32(-5))
sink2 = *p
}
- if _rc == 0 {
- goto _88
+ if _rc != 0 {
+ Xsqlite3_free(tls, _28_pCellKey)
+ goto _moveto_finish
}
-
- Xsqlite3_free(tls, _28_pCellKey)
- goto _moveto_finish
-
-_88:
_12_c = _xRecordCompare(tls, _25_nCell, _28_pCellKey, _pIdxKey)
Xsqlite3_free(tls, _28_pCellKey)
_85:
_82:
func() {
if int32(_pIdxKey.X4) == i32(11) && _12_c != i32(0) || int32(_pIdxKey.X4) == i32(7) && ((*Xsqlite3)((*XBtree)(_pCur.X0).X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64359), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75444)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64359), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74467)))
crt.X__builtin_abort(tls)
}
}()
- if _12_c >= i32(0) {
- goto _94
+ if _12_c < i32(0) {
+ _12_lwr = _12_idx + i32(1)
+ goto _95
}
-
- _12_lwr = _12_idx + i32(1)
- goto _95
-
-_94:
- if _12_c <= i32(0) {
- goto _96
+ if _12_c > i32(0) {
+ _12_upr = _12_idx - i32(1)
+ goto _97
}
-
- _12_upr = _12_idx - i32(1)
- goto _97
-
-_96:
func() {
if _12_c != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64368), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75560)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64368), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74580)))
crt.X__builtin_abort(tls)
}
}()
*_pRes = i32(0)
_rc = i32(0)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(_12_idx)
- if (_pIdxKey.X4) == 0 {
- goto _100
+ if (_pIdxKey.X4) != 0 {
+ _rc = i32(11)
}
-
- _rc = i32(11)
-_100:
goto _moveto_finish
-
_97:
_95:
- if _12_lwr <= _12_upr {
- goto _101
+ if _12_lwr > _12_upr {
+ goto _80
}
-
- goto _80
-
-_101:
func() {
if (_12_lwr + _12_upr) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75432)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74456)))
crt.X__builtin_abort(tls)
}
}()
_12_idx = (_12_lwr + _12_upr) >> uint(i32(1))
goto _78
-
_80:
_77:
func() {
if _12_lwr != (_12_upr+i32(1)) && ((_12_pPage.X2) == 0 || (_12_pPage.X5) != 0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64380), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64380), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74585)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_12_pPage.X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64381), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(75616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64381), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(74631)))
crt.X__builtin_abort(tls)
}
}()
- if (_12_pPage.X5) == 0 {
- goto _110
+ if (_12_pPage.X5) != 0 {
+ func() {
+ if int32(_pCur.X16) >= int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64383), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(10597)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(_12_idx)
+ *_pRes = _12_c
+ _rc = i32(0)
+ goto _moveto_finish
}
-
- func() {
- if int32(_pCur.X16) >= int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64383), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeMovetoUnpackedØ00__func__Ø000))), unsafe.Pointer(str(9452)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(_12_idx)
- *_pRes = _12_c
- _rc = i32(0)
- goto _moveto_finish
-
-_110:
_moveto_next_layer:
- if _12_lwr < int32(_12_pPage.X14) {
- goto _113
+ if _12_lwr >= int32(_12_pPage.X14) {
+ _12_chldPg = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pPage.X19))+1*uintptr(int32(_12_pPage.X6)+i32(8)))))
+ goto _114
}
-
- _12_chldPg = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pPage.X19))+1*uintptr(int32(_12_pPage.X6)+i32(8)))))
- goto _114
-
-_113:
_12_chldPg = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_12_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_12_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pPage.X21))+1*uintptr(i32(2)*_12_lwr))))) + 1*uintptr(i32(0)))))<= int32(_pPage.X14) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) -= 1
+ return _btreeNext(tls, _pCur, _pRes)
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) -= 1
- return _btreeNext(tls, _pCur, _pRes)
-
-_11:
- if (_pPage.X5) == 0 {
- goto _12
+ if (_pPage.X5) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_12:
return _moveToLeftmost(tls, _pCur)
}
-var _sqlite3BtreeNextØ00__func__Ø000 [17]int8 // -
+var _sqlite3BtreeNextØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeNextØ00__func__Ø000[0], str(75820), 17)
+ crt.Xstrncpy(nil, &_sqlite3BtreeNextØ00__func__Ø000[0], str(74825), 17)
}
-func _btreeNext(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) { // sqlite3.c:64466:1
- var _rc int32 // sqlite3.c:64467:7
- _ = _rc
- var _idx int32 // sqlite3.c:64468:7
- _ = _idx
- var _pPage *XMemPage // sqlite3.c:64469:11
- _ = _pPage
+// Advance the cursor to the next entry in the database. If
+// successful then set *pRes=0. If the cursor
+// was already pointing to the last entry in the database before
+// this routine was called, then set *pRes=1.
+//
+// The main entry point is sqlite3BtreeNext(). That routine is optimized
+// for the common case of merely incrementing the cell counter BtCursor.aiIdx
+// to the next cell on the current page. The (slower) btreeNext() helper
+// routine is called when it is necessary to move to a different page or
+// to restore the cursor.
+//
+// The calling function will set *pRes to 0 or 1. The initial *pRes value
+// will be 1 if the cursor being stepped corresponds to an SQL index and
+// if this routine could have been skipped if that SQL index had been
+// a unique index. Otherwise the caller will have set *pRes to zero.
+// Zero is the common case. The btree implementation is free to use the
+// initial *pRes value as a hint to improve performance, but the current
+// SQLite btree implementation does not. (Note that the comdb2 btree
+// implementation does use this hint, however.)
+func _btreeNext(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) {
+ var _rc, _idx int32
+ var _pPage *XMemPage
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64471), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64471), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pCur.X9) != i32(0) && int32(_pCur.X12) == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64472), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(75772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64472), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(74777)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*_pRes) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64473), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(75840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64473), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(74842)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pCur.X12) == i32(1) {
goto _7
}
-
func() {
if (int32(_pCur.X10) & i32(4)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64475), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(75632)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64475), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(74645)))
crt.X__builtin_abort(tls)
}
}()
@@ -62968,142 +56194,112 @@ func _btreeNext(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) { // sq
}
return i32(0)
}()
- if _rc == i32(0) {
- goto _12
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_12:
- if i32(0) != int32(_pCur.X12) {
- goto _13
+ if i32(0) == int32(_pCur.X12) {
+ *_pRes = i32(1)
+ return i32(0)
}
-
- *_pRes = i32(1)
- return i32(0)
-
-_13:
if (_pCur.X9) == 0 {
goto _14
}
-
func() {
if int32(_pCur.X12) != i32(1) && int32(_pCur.X12) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64485), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(75852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64485), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(74851)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(1))
- if (_pCur.X9) <= i32(0) {
- goto _18
+ if (_pCur.X9) > i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(0)
+ return i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(0)
- return i32(0)
-
-_18:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(0)
_14:
_7:
_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
- _idx = int32(preInc12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(66 /* X16 */))), uint16(1)))
+ _idx = int32(preInc14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(66 /* X16 */))), uint16(1)))
func() {
if (_pPage.X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64497), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(75616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64497), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeNextØ00__func__Ø000))), unsafe.Pointer(str(74631)))
crt.X__builtin_abort(tls)
}
}()
if _idx < int32(_pPage.X14) {
goto _21
}
-
if (_pPage.X5) != 0 {
goto _22
}
-
_rc = _moveToChild(tls, _pCur, _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(int32(_pPage.X6)+i32(8))))))
- if _rc == 0 {
- goto _23
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_23:
return _moveToLeftmost(tls, _pCur)
_22:
_24:
- if int32(_pCur.X14) != i32(0) {
- goto _25
+ if int32(_pCur.X14) == i32(0) {
+ *_pRes = i32(1)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
+ return i32(0)
}
-
- *_pRes = i32(1)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
- return i32(0)
-
-_25:
_moveToParent(tls, _pCur)
_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
if int32(_pCur.X16) >= int32(_pPage.X14) {
goto _24
}
-
- if (_pPage.X2) == 0 {
- goto _26
+ if (_pPage.X2) != 0 {
+ return _sqlite3BtreeNext(tls, _pCur, _pRes)
}
- return _sqlite3BtreeNext(tls, _pCur, _pRes)
-
-_26:
return i32(0)
_21:
- if (_pPage.X5) == 0 {
- goto _28
+ if (_pPage.X5) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_28:
return _moveToLeftmost(tls, _pCur)
}
-var _btreeNextØ00__func__Ø000 [10]int8 // -
+var _btreeNextØ00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_btreeNextØ00__func__Ø000[0], str(75912), 10)
+ crt.Xstrncpy(nil, &_btreeNextØ00__func__Ø000[0], str(74911), 10)
}
-func _btreeRestoreCursorPosition(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:59829:1
- var _rc int32 // sqlite3.c:59830:7
- _ = _rc
- var _skipNext int32 // sqlite3.c:59831:7
- _ = _skipNext
+// Restore the cursor to the position it was in (or as close to as possible)
+// when saveCursorPosition() was called. Note that this call deletes the
+// saved position info stored by saveCursorPosition(), so there can be
+// at most one effective restoreCursorPosition() call after each
+// saveCursorPosition().
+func _btreeRestoreCursorPosition(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
+ var _rc, _skipNext int32
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59832), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeRestoreCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59832), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeRestoreCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) < i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59833), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeRestoreCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(75924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59833), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeRestoreCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(74921)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pCur.X12) != i32(4) {
- goto _4
+ if int32(_pCur.X12) == i32(4) {
+ return _pCur.X9
}
- return _pCur.X9
-
-_4:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
_rc = _btreeMoveto(tls, _pCur, _pCur.X6, _pCur.X5, i32(0), &_skipNext)
if _rc != i32(0) {
goto _5
}
-
Xsqlite3_free(tls, _pCur.X6)
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(44 /* X6 */))) = nil
func() {
if int32(_pCur.X12) != i32(1) && int32(_pCur.X12) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59842), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeRestoreCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(75960)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59842), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeRestoreCursorPositionØ00__func__Ø000))), unsafe.Pointer(str(74954)))
crt.X__builtin_abort(tls)
}
}()
@@ -63112,93 +56308,85 @@ _4:
*p = (*p) | _skipNext
sink1 = *p
}
- if (_pCur.X9) == 0 || int32(_pCur.X12) != i32(1) {
- goto _10
+ if (_pCur.X9) != 0 && (int32(_pCur.X12) == i32(1)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(2))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(2))
-_10:
_5:
- r0 = _rc
- return
+ return _rc
}
-var _btreeRestoreCursorPositionØ00__func__Ø000 [27]int8 // -
+var _btreeRestoreCursorPositionØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_btreeRestoreCursorPositionØ00__func__Ø000[0], str(76020), 27)
+ crt.Xstrncpy(nil, &_btreeRestoreCursorPositionØ00__func__Ø000[0], str(75013), 27)
}
-func _btreeMoveto(tls *crt.TLS, _pCur *XBtCursor, _pKey unsafe.Pointer, _nKey int64, _bias int32, _pRes *int32) (r0 int32) { // sqlite3.c:59792:1
- var _rc int32 // sqlite3.c:59799:7
- _ = _rc
- var _pIdxKey *XUnpackedRecord // sqlite3.c:59800:18
- _ = _pIdxKey
+// In this version of BtreeMoveto, pKey is a packed index record
+// such as is generated by the OP_MakeRecord opcode. Unpack the
+// record and then call BtreeMovetoUnpacked() to do the work.
+func _btreeMoveto(tls *crt.TLS, _pCur *XBtCursor, _pKey unsafe.Pointer, _nKey int64, _bias int32, _pRes *int32) (r0 int32) {
+ var _rc int32
+ var _pIdxKey *XUnpackedRecord
if _pKey == nil {
goto _0
}
-
func() {
if _nKey != int64(int32(_nKey)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59803), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeMovetoØ00__func__Ø000))), unsafe.Pointer(str(76048)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59803), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeMovetoØ00__func__Ø000))), unsafe.Pointer(str(75040)))
crt.X__builtin_abort(tls)
}
}()
_pIdxKey = _sqlite3VdbeAllocUnpackedRecord(tls, (*XKeyInfo)(_pCur.X18))
- if _pIdxKey != nil {
- goto _3
+ if _pIdxKey == nil {
+ return _sqlite3NomemError(tls, i32(59805))
}
- return _sqlite3NomemError(tls, i32(59805))
-
-_3:
_sqlite3VdbeRecordUnpack(tls, (*XKeyInfo)(_pCur.X18), int32(_nKey), _pKey, _pIdxKey)
- if int32(_pIdxKey.X2) != i32(0) {
- goto _4
+ if int32(_pIdxKey.X2) == i32(0) {
+ _rc = _sqlite3CorruptError(tls, i32(59808))
+ goto _moveto_done
}
-
- _rc = _sqlite3CorruptError(tls, i32(59808))
- goto _moveto_done
-
-_4:
goto _5
-
_0:
_pIdxKey = nil
_5:
_rc = _sqlite3BtreeMovetoUnpacked(tls, _pCur, _pIdxKey, _nKey, _bias, _pRes)
_moveto_done:
- if _pIdxKey == nil {
- goto _6
+ if _pIdxKey != nil {
+ _sqlite3DbFree(tls, (*Xsqlite3)((*XKeyInfo)(_pCur.X18).X4), (unsafe.Pointer)(_pIdxKey))
}
-
- _sqlite3DbFree(tls, (*Xsqlite3)((*XKeyInfo)(_pCur.X18).X4), (unsafe.Pointer)(_pIdxKey))
-_6:
return _rc
}
-var _btreeMovetoØ00__func__Ø000 [12]int8 // -
+var _btreeMovetoØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_btreeMovetoØ00__func__Ø000[0], str(76072), 12)
+ crt.Xstrncpy(nil, &_btreeMovetoØ00__func__Ø000[0], str(75061), 12)
}
-func _sqlite3VdbeAllocUnpackedRecord(tls *crt.TLS, _pKeyInfo *XKeyInfo) (r0 *XUnpackedRecord) { // sqlite3.c:74939:1
- var _p *XUnpackedRecord // sqlite3.c:74942:18
- _ = _p
- var _nByte int32 // sqlite3.c:74943:7
- _ = _nByte
+// This routine is used to allocate sufficient space for an UnpackedRecord
+// structure large enough to be used with sqlite3VdbeRecordUnpack() if
+// the first argument is a pointer to KeyInfo structure pKeyInfo.
+//
+// The space is either allocated using sqlite3DbMallocRaw() or from within
+// the unaligned buffer passed via the second and third arguments (presumably
+// stack space). If the former, then *ppFree is set to a pointer that should
+// be eventually freed by the caller using sqlite3DbFree(). Or, if the
+// allocation comes from the pSpace/szSpace buffer, *ppFree is set to NULL
+// before returning.
+//
+// If an OOM error occurs, NULL is returned.
+func _sqlite3VdbeAllocUnpackedRecord(tls *crt.TLS, _pKeyInfo *XKeyInfo) (r0 *XUnpackedRecord) {
+ var _nByte int32
+ var _p *XUnpackedRecord
_nByte = int32(u32(16) + (u32(48) * uint32(int32(_pKeyInfo.X2)+i32(1))))
_p = (*XUnpackedRecord)(_sqlite3DbMallocRaw(tls, (*Xsqlite3)(_pKeyInfo.X4), uint64(_nByte)))
- if _p != nil {
- goto _0
+ if _p == nil {
+ return nil
}
- return nil
-
-_0:
*(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = (*XMem)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(u32(16))))))
func() {
if (_pKeyInfo.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74948), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAllocUnpackedRecordØ00__func__Ø000))), unsafe.Pointer(str(38568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74948), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeAllocUnpackedRecordØ00__func__Ø000))), unsafe.Pointer(str(37852)))
crt.X__builtin_abort(tls)
}
}()
@@ -63207,33 +56395,24 @@ _0:
return _p
}
-var _sqlite3VdbeAllocUnpackedRecordØ00__func__Ø000 [31]int8 // -
+var _sqlite3VdbeAllocUnpackedRecordØ00__func__Ø000 [31]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeAllocUnpackedRecordØ00__func__Ø000[0], str(76084), 31)
+ crt.Xstrncpy(nil, &_sqlite3VdbeAllocUnpackedRecordØ00__func__Ø000[0], str(75073), 31)
}
-func _sqlite3VdbeRecordUnpack(tls *crt.TLS, _pKeyInfo *XKeyInfo, _nKey int32, _pKey unsafe.Pointer, _p *XUnpackedRecord) { // sqlite3.c:74959:1
- var _aKey *uint8 // sqlite3.c:74965:23
- _ = _aKey
- var _d int32 // sqlite3.c:74966:7
- _ = _d
- var _idx uint32 // sqlite3.c:74967:7
- _ = _idx
- var _u uint16 // sqlite3.c:74968:7
- _ = _u
- var _szHdr uint32 // sqlite3.c:74969:7
- _ = _szHdr
- var _pMem *XMem // sqlite3.c:74970:7
- _ = _pMem
- var _1_serial_type uint32 // sqlite3.c:74978:9
- _ = _1_serial_type
+func _sqlite3VdbeRecordUnpack(tls *crt.TLS, _pKeyInfo *XKeyInfo, _nKey int32, _pKey unsafe.Pointer, _p *XUnpackedRecord) {
+ var _d int32
+ var _idx, _szHdr, _1_serial_type uint32
+ var _u uint16
+ var _aKey *uint8
+ var _pMem *XMem
_aKey = (*uint8)(_pKey)
_pMem = (*XMem)(_p.X1)
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X3 */))) = int8(i32(0))
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pMem))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74973), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordUnpackØ00__func__Ø000))), unsafe.Pointer(str(4716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74973), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordUnpackØ00__func__Ø000))), unsafe.Pointer(str(6321)))
crt.X__builtin_abort(tls)
}
}()
@@ -63249,7 +56428,6 @@ _4:
if _idx >= _szHdr || _d > _nKey {
goto _5
}
-
{
p := &_idx
*p = (*p) + uint32(uint8(func() int32 {
@@ -63273,57 +56451,52 @@ _4:
sink1 = *p
}
*(*uintptr)(unsafe.Pointer(&_pMem)) += uintptr(48)
- if int32(preInc12(&_u, uint16(1))) < int32(_p.X2) {
- goto _9
+ if int32(preInc14(&_u, uint16(1))) >= int32(_p.X2) {
+ goto _5
}
-
- goto _5
-
-_9:
goto _4
-
_5:
func() {
if int32(_u) > (int32(_pKeyInfo.X2) + i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74990), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordUnpackØ00__func__Ø000))), unsafe.Pointer(str(76116)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74990), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordUnpackØ00__func__Ø000))), unsafe.Pointer(str(75104)))
crt.X__builtin_abort(tls)
}
}()
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = _u
}
-var _sqlite3VdbeRecordUnpackØ00__func__Ø000 [24]int8 // -
+var _sqlite3VdbeRecordUnpackØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeRecordUnpackØ00__func__Ø000[0], str(76140), 24)
+ crt.Xstrncpy(nil, &_sqlite3VdbeRecordUnpackØ00__func__Ø000[0], str(75128), 24)
}
-func _sqlite3GetVarint32(tls *crt.TLS, _p *uint8, _v *uint32) (r0 uint8) { // sqlite3.c:28662:1
- var _a uint32 // sqlite3.c:28663:7
- _ = _a
- var _b uint32 // sqlite3.c:28663:9
- _ = _b
- var _3_v64 uint64 // sqlite3.c:28717:9
- _ = _3_v64
- var _3_n uint8 // sqlite3.c:28718:8
- _ = _3_n
+// Read a 32-bit variable-length integer from memory starting at p[0].
+// Return the number of bytes read. The value is stored in *v.
+//
+// If the varint stored in p[0] is larger than can fit in a 32-bit unsigned
+// integer, then set *v to 0xffffffff.
+//
+// A MACRO version, getVarint32, is provided which inlines the
+// single-byte case. All code should use the MACRO version as
+// this function assumes the single-byte case has already been handled.
+func _sqlite3GetVarint32(tls *crt.TLS, _p *uint8, _v *uint32) (r0 uint8) {
+ var _a, _b uint32
+ var _3_v64 uint64
+ var _3_n uint8
_a = uint32(*_p)
*(*uintptr)(unsafe.Pointer(&_p)) += uintptr(1)
_b = uint32(*_p)
- if (_b & uint32(i32(128))) != 0 {
- goto _0
- }
-
- {
- p := &_a
- *p = (*p) & uint32(i32(127))
- sink5 = *p
+ if (_b & uint32(i32(128))) == 0 {
+ {
+ p := &_a
+ *p = (*p) & uint32(i32(127))
+ sink5 = *p
+ }
+ _a = _a << uint(i32(7))
+ *_v = _a | _b
+ return uint8(i32(2))
}
- _a = _a << uint(i32(7))
- *_v = _a | _b
- return uint8(i32(2))
-
-_0:
*(*uintptr)(unsafe.Pointer(&_p)) += uintptr(1)
_a = _a << uint(i32(14))
{
@@ -63331,57 +56504,49 @@ _0:
*p = (*p) | uint32(*_p)
sink5 = *p
}
- if (_a & uint32(i32(128))) != 0 {
- goto _1
- }
-
- {
- p := &_a
- *p = (*p) & uint32(i32(2080895))
- sink5 = *p
- }
- {
- p := &_b
- *p = (*p) & uint32(i32(127))
- sink5 = *p
+ if (_a & uint32(i32(128))) == 0 {
+ {
+ p := &_a
+ *p = (*p) & uint32(i32(2080895))
+ sink5 = *p
+ }
+ {
+ p := &_b
+ *p = (*p) & uint32(i32(127))
+ sink5 = *p
+ }
+ _b = _b << uint(i32(7))
+ *_v = _a | _b
+ return uint8(i32(3))
}
- _b = _b << uint(i32(7))
- *_v = _a | _b
- return uint8(i32(3))
-
-_1:
{
p := &_p
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(i32(2))))
- sink11 = *p
+ sink13 = *p
}
_3_n = _sqlite3GetVarint(tls, _p, &_3_v64)
func() {
if int32(_3_n) <= i32(3) || int32(_3_n) > i32(9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28722), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetVarint32Ø00__func__Ø000))), unsafe.Pointer(str(76164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28722), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetVarint32Ø00__func__Ø000))), unsafe.Pointer(str(75152)))
crt.X__builtin_abort(tls)
}
}()
- if (_3_v64 & u64(4294967295)) == _3_v64 {
- goto _5
+ if (_3_v64 & u64(4294967295)) != _3_v64 {
+ *_v = u32(4294967295)
+ goto _6
}
-
- *_v = u32(4294967295)
- goto _6
-
-_5:
*_v = uint32(_3_v64)
_6:
return _3_n
}
-var _sqlite3GetVarint32Ø00__func__Ø000 [19]int8 // -
+var _sqlite3GetVarint32Ø00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3GetVarint32Ø00__func__Ø000[0], str(76176), 19)
+ crt.Xstrncpy(nil, &_sqlite3GetVarint32Ø00__func__Ø000[0], str(75164), 19)
}
-func _sqlite3VdbeSerialGet(tls *crt.TLS, _buf *uint8, _serial_type uint32, _pMem *XMem) (r0 uint32) { // sqlite3.c:74840:1
+func _sqlite3VdbeSerialGet(tls *crt.TLS, _buf *uint8, _serial_type uint32, _pMem *XMem) (r0 uint32) {
switch _serial_type {
case u32(0):
goto _3
@@ -63416,40 +56581,38 @@ _2:
_3:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(1))
goto _14
-
_4:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
return uint32(i32(1))
_5:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64((i32(256) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(1))))))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64((i32(256) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(1))))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
return uint32(i32(2))
_6:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(((i32(65536) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(1))))) << uint(i32(8)))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(2))))))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64(((i32(65536) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(1))))) << uint(i32(8)))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(2))))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
return uint32(i32(3))
_7:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64((((i32(16777216) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(1))))) << uint(i32(16)))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(2))))) << uint(i32(8)))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(3))))))
+ *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64((((i32(16777216) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(0))))))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(1))))) << uint(i32(16)))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(2))))) << uint(i32(8)))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_buf)) + 1*uintptr(i32(3))))))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4))
return uint32(i32(4))
_8:
- *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))) = int64((((uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_buf))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(2)))))))))) + 1*uintptr(i32(0)))))<= i32(20) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63864), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToChildØ00__func__Ø000))), unsafe.Pointer(str(76268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63864), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToChildØ00__func__Ø000))), unsafe.Pointer(str(75251)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X14) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63865), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToChildØ00__func__Ø000))), unsafe.Pointer(str(76300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63865), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToChildØ00__func__Ø000))), unsafe.Pointer(str(75282)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pCur.X14) < i32(19) {
- goto _8
+ if int32(_pCur.X14) >= i32(19) {
+ return _sqlite3CorruptError(tls, i32(63867))
}
- return _sqlite3CorruptError(tls, i32(63867))
-
-_8:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))))) + uintptr(18 /* X4 */))) = uint16(i32(0))
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
@@ -63571,185 +56732,178 @@ _8:
return _getAndInitPage(tls, _pBt, _newPgno, (**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112)))))+4*uintptr(_pCur.X14))), _pCur, int32(_pCur.X11))
}
-var _moveToChildØ00__func__Ø000 [12]int8 // -
+var _moveToChildØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_moveToChildØ00__func__Ø000[0], str(76316), 12)
+ crt.Xstrncpy(nil, &_moveToChildØ00__func__Ø000[0], str(75297), 12)
}
-func _getAndInitPage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _ppPage **XMemPage, _pCur *XBtCursor, _bReadOnly int32) (r0 int32) { // sqlite3.c:61072:1
- var _rc int32 // sqlite3.c:61079:7
- _ = _rc
- var _pDbPage *XPgHdr // sqlite3.c:61080:10
- _ = _pDbPage
+// Get a page from the pager and initialize it.
+//
+// If pCur!=0 then the page is being fetched as part of a moveToChild()
+// call. Do additional sanity checking on the page in this case.
+// And if the fetch fails, this routine must decrement pCur->iPage.
+//
+// The page is fetched as read-write unless pCur is not NULL and is
+// a read-only cursor.
+//
+// If an error occurs, then *ppPage is undefined. It
+// may remain unchanged, or it may be set to an invalid value.
+func _getAndInitPage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _ppPage **XMemPage, _pCur *XBtCursor, _bReadOnly int32) (r0 int32) {
+ var _rc int32
+ var _pDbPage *XPgHdr
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61081), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61081), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pCur != nil && _ppPage != (**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */)))))+4*uintptr(_pCur.X14))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61082), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(76328)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61082), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(75309)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pCur != nil && _bReadOnly != int32(_pCur.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61083), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(76376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61083), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(75355)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pCur != nil && int32(_pCur.X14) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61084), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(76420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61084), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(75397)))
crt.X__builtin_abort(tls)
}
}()
- if _pgno <= _btreePagecount(tls, _pBt) {
- goto _11
+ if _pgno > _btreePagecount(tls, _pBt) {
+ _rc = _sqlite3CorruptError(tls, i32(61087))
+ goto _getAndInitPage_error
}
-
- _rc = _sqlite3CorruptError(tls, i32(61087))
- goto _getAndInitPage_error
-
-_11:
_rc = _sqlite3PagerGet(tls, (*XPager)(_pBt.X0), _pgno, &_pDbPage, _bReadOnly)
- if _rc == 0 {
- goto _12
+ if _rc != 0 {
+ goto _getAndInitPage_error
}
-
- goto _getAndInitPage_error
-
-_12:
*_ppPage = (*XMemPage)(_sqlite3PagerGetExtra(tls, _pDbPage))
if int32((*_ppPage).X0) != i32(0) {
goto _13
}
-
_btreePageFromDbPage(tls, _pDbPage, _pgno, _pBt)
_rc = _btreeInitPage(tls, *_ppPage)
- if _rc == i32(0) {
- goto _14
+ if _rc != i32(0) {
+ _releasePage(tls, *_ppPage)
+ goto _getAndInitPage_error
}
-
- _releasePage(tls, *_ppPage)
- goto _getAndInitPage_error
-
-_14:
_13:
func() {
if ((*_ppPage).X4) != _pgno {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61103), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(76448)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61103), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(75422)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((*_ppPage).X19) != (*uint8)(_sqlite3PagerGetData(tls, _pDbPage)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61104), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(76472)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61104), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(75444)))
crt.X__builtin_abort(tls)
}
}()
- if _pCur == nil || int32((*_ppPage).X14) >= i32(1) && int32((*_ppPage).X2) == int32(_pCur.X15) {
- goto _21
+ if (_pCur != nil) && ((int32((*_ppPage).X14) < i32(1)) || (int32((*_ppPage).X2) != int32(_pCur.X15))) {
+ _rc = _sqlite3CorruptError(tls, i32(61109))
+ _releasePage(tls, *_ppPage)
+ goto _getAndInitPage_error
}
-
- _rc = _sqlite3CorruptError(tls, i32(61109))
- _releasePage(tls, *_ppPage)
- goto _getAndInitPage_error
-
-_21:
return i32(0)
_getAndInitPage_error:
- if _pCur == nil {
- goto _22
+ if _pCur != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) -= 1
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) -= 1
-_22:
func() {
if _pgno == uint32(i32(0)) && _rc != i32(11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61118), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(76520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61118), unsafe.Pointer((*int8)(unsafe.Pointer(&_getAndInitPageØ00__func__Ø000))), unsafe.Pointer(str(75491)))
crt.X__builtin_abort(tls)
}
}()
return _rc
}
-var _getAndInitPageØ00__func__Ø000 [15]int8 // -
+var _getAndInitPageØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_getAndInitPageØ00__func__Ø000[0], str(76552), 15)
+ crt.Xstrncpy(nil, &_getAndInitPageØ00__func__Ø000[0], str(75521), 15)
}
-func _moveToLeftmost(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:64028:1
- var _pgno uint32 // sqlite3.c:64029:8
- _ = _pgno
- var _rc int32 // sqlite3.c:64030:7
- _ = _rc
- var _pPage *XMemPage // sqlite3.c:64031:11
- _ = _pPage
+// Move the cursor down to the left-most leaf entry beneath the
+// entry to which it is currently pointing.
+//
+// The left-most leaf is the one with the smallest key - the first
+// in ascending order.
+func _moveToLeftmost(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
+ var _rc int32
+ var _pgno uint32
+ var _pPage *XMemPage
_rc = i32(0)
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64033), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToLeftmostØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64033), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToLeftmostØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64034), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToLeftmostØ00__func__Ø000))), unsafe.Pointer(str(9240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64034), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToLeftmostØ00__func__Ø000))), unsafe.Pointer(str(10390)))
crt.X__builtin_abort(tls)
}
}()
_4:
- if _rc != i32(0) || (store50(&_pPage, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X5) != 0 {
- goto _5
+ if (_rc == i32(0)) && ((store52(&_pPage, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X5) == 0) {
+ func() {
+ if int32(_pCur.X16) >= int32(_pPage.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64036), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToLeftmostØ00__func__Ø000))), unsafe.Pointer(str(10682)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pgno = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*int32(_pCur.X16)))))) + 1*uintptr(i32(0)))))<= int32(_pPage.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64036), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToLeftmostØ00__func__Ø000))), unsafe.Pointer(str(9544)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pgno = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*int32(_pCur.X16)))))) + 1*uintptr(i32(0)))))<idx is set to the cell index that contains the pointer
+// to the page we are coming from. If we are coming from the
+// right-most child page then pCur->idx is set to one more than
+// the largest cell index.
+func _moveToParent(tls *crt.TLS, _pCur *XBtCursor) {
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63908), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63908), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63909), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(9240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63909), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(10390)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X14) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63910), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(76584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63910), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(75551)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63911), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(76600)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63911), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToParentØ00__func__Ø000))), unsafe.Pointer(str(75565)))
crt.X__builtin_abort(tls)
}
}()
@@ -63764,118 +56918,103 @@ func _moveToParent(tls *crt.TLS, _pCur *XBtCursor) { // sqlite3.c:63907:1
_releasePageNotNull(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(postInc3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(64 /* X14 */))), int8(-1))))))
}
-var _moveToParentØ00__func__Ø000 [13]int8 // -
+var _moveToParentØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_moveToParentØ00__func__Ø000[0], str(76628), 13)
+ crt.Xstrncpy(nil, &_moveToParentØ00__func__Ø000[0], str(75591), 13)
}
-func _assertParentIndex(tls *crt.TLS, _pParent *XMemPage, _iIdx int32, _iChild uint32) { // sqlite3.c:63885:1
- if (_sqlite3Config.X6) != i32(0) {
- goto _0
+// Page pParent is an internal (non-leaf) tree page. This function
+// asserts that page number iChild is the left-child if the iIdx'th
+// cell in page pParent. Or, if iIdx is equal to the total number of
+// cells in pParent, that page number iChild is the right-child of
+// the page.
+func _assertParentIndex(tls *crt.TLS, _pParent *XMemPage, _iIdx int32, _iChild uint32) {
+ if (_sqlite3Config.X6) == i32(0) {
+ return
}
- return
-
-_0:
func() {
if _iIdx > int32(_pParent.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63888), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertParentIndexØ00__func__Ø000))), unsafe.Pointer(str(76644)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63888), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertParentIndexØ00__func__Ø000))), unsafe.Pointer(str(75604)))
crt.X__builtin_abort(tls)
}
}()
- if _iIdx != int32(_pParent.X14) {
- goto _3
+ if _iIdx == int32(_pParent.X14) {
+ func() {
+ if _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent.X19))+1*uintptr(int32(_pParent.X6)+i32(8))))) != _iChild {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63890), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertParentIndexØ00__func__Ø000))), unsafe.Pointer(str(75625)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _6
}
-
- func() {
- if _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent.X19))+1*uintptr(int32(_pParent.X6)+i32(8))))) != _iChild {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63890), unsafe.Pointer((*int8)(unsafe.Pointer(&_assertParentIndexØ00__func__Ø000))), unsafe.Pointer(str(76668)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _6
-
-_3:
func() {
if _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pParent.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pParent.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent.X21))+1*uintptr(i32(2)*_iIdx))))) + 1*uintptr(i32(0)))))< i32(13) {
goto _0
}
-
_1_flags = int32((*XMem)(unsafe.Pointer(uintptr(_p.X1) + 48*uintptr(i32(0)))).X1)
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XKeyInfo)(_p.X0).X5)) + 1*uintptr(i32(0))))) == 0 {
- goto _1
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XKeyInfo)(_p.X0).X5)) + 1*uintptr(i32(0))))) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X5 */))) = int8(i32(1))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(13 /* X6 */))) = int8(i32(-1))
+ goto _2
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X5 */))) = int8(i32(1))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(13 /* X6 */))) = int8(i32(-1))
- goto _2
-
-_1:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X5 */))) = int8(i32(-1))
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(13 /* X6 */))) = int8(i32(1))
_2:
- if (_1_flags & i32(4)) == 0 {
- goto _3
+ if (_1_flags & i32(4)) != 0 {
+ return _vdbeRecordCompareInt
}
- return _vdbeRecordCompareInt
-
-_3:
- if (_1_flags&i32(25)) != i32(0) || (*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X0)+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0))))) != nil {
- goto _5
+ if ((_1_flags & i32(25)) == i32(0)) && ((*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X0)+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0))))) == nil) {
+ func() {
+ if (_1_flags & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75785), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFindCompareØ00__func__Ø000))), unsafe.Pointer(str(75741)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _vdbeRecordCompareString
}
-
- func() {
- if (_1_flags & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75785), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeFindCompareØ00__func__Ø000))), unsafe.Pointer(str(76788)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _vdbeRecordCompareString
-
-_5:
_0:
- r0 = _sqlite3VdbeRecordCompare
- return
+ return _sqlite3VdbeRecordCompare
}
-func _vdbeRecordCompareInt(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord) (r0 int32) { // sqlite3.c:75600:1
- var _aKey *uint8 // sqlite3.c:75604:12
- _ = _aKey
- var _serial_type int32 // sqlite3.c:75605:7
- _ = _serial_type
- var _res int32 // sqlite3.c:75606:7
- _ = _res
- var _y uint32 // sqlite3.c:75607:7
- _ = _y
- var _x uint64 // sqlite3.c:75608:7
- _ = _x
- var _v int64 // sqlite3.c:75609:7
- _ = _v
- var _lhs int64 // sqlite3.c:75610:7
- _ = _lhs
+// This function is an optimized version of sqlite3VdbeRecordCompare()
+// that (a) the first field of pPKey2 is an integer, and (b) the
+// size-of-header varint at the start of (pKey1/nKey1) fits in a single
+// byte (i.e. is less than 128).
+//
+// To avoid concerns about buffer overreads, this routine is only used
+// on schemas where the maximum valid header size is 63 bytes or less.
+func _vdbeRecordCompareInt(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord) (r0 int32) {
+ var _serial_type, _res int32
+ var _v, _lhs int64
+ var _y uint32
+ var _x uint64
+ var _aKey *uint8
_aKey = (*uint8)(unsafe.Pointer(uintptr(_pKey1) + 1*uintptr(int32(*(*uint8)(_pKey1))&i32(63))))
_serial_type = int32(*(*uint8)(unsafe.Pointer(uintptr(_pKey1) + 1*uintptr(i32(1)))))
_vdbeAssertFieldCountWithinLimits(tls, _nKey1, _pKey1, (*XKeyInfo)(_pPKey2.X0))
func() {
if int32(*(*uint8)(_pKey1)) > i32(63) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75613), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareIntØ00__func__Ø000))), unsafe.Pointer(str(76804)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75613), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareIntØ00__func__Ø000))), unsafe.Pointer(str(75757)))
crt.X__builtin_abort(tls)
}
}()
@@ -63907,72 +57046,51 @@ func _vdbeRecordCompareInt(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _p
_4:
_lhs = int64(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(0))))))
goto _15
-
_5:
_lhs = int64((i32(256) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(0))))))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(1))))))
goto _15
-
_6:
_lhs = int64(((i32(65536) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(0))))))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(1))))) << uint(i32(8)))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(2))))))
goto _15
-
_7:
_y = (((uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(0))))) << uint(i32(24))) | uint32(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(1)))))< _lhs {
+ _res = int32(_pPKey2.X5)
+ goto _17
}
-
- _res = int32(_pPKey2.X5)
- goto _17
-
-_16:
- if _v >= _lhs {
- goto _18
+ if _v < _lhs {
+ _res = int32(_pPKey2.X6)
+ goto _19
}
-
- _res = int32(_pPKey2.X6)
- goto _19
-
-_18:
- if int32(_pPKey2.X2) <= i32(1) {
- goto _20
+ if int32(_pPKey2.X2) > i32(1) {
+ _res = _sqlite3VdbeRecordCompareWithSkip(tls, _nKey1, _pKey1, _pPKey2, i32(1))
+ goto _21
}
-
- _res = _sqlite3VdbeRecordCompareWithSkip(tls, _nKey1, _pKey1, _pPKey2, i32(1))
- goto _21
-
-_20:
_res = int32(_pPKey2.X3)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(14 /* X7 */))) = uint8(i32(1))
_21:
@@ -63980,32 +57098,34 @@ _19:
_17:
func() {
if _vdbeRecordCompareDebug(tls, _nKey1, _pKey1, _pPKey2, _res) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75684), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareIntØ00__func__Ø000))), unsafe.Pointer(str(76840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75684), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareIntØ00__func__Ø000))), unsafe.Pointer(str(75791)))
crt.X__builtin_abort(tls)
}
}()
return _res
-}
-func _vdbeAssertFieldCountWithinLimits(tls *crt.TLS, _nKey int32, _pKey unsafe.Pointer, _pKeyInfo *XKeyInfo) { // sqlite3.c:75111:1
- var _nField int32 // sqlite3.c:75115:7
- _ = _nField
- var _szHdr uint32 // sqlite3.c:75116:7
- _ = _szHdr
- var _idx uint32 // sqlite3.c:75117:7
- _ = _idx
- var _notUsed uint32 // sqlite3.c:75118:7
- _ = _notUsed
- var _aKey *uint8 // sqlite3.c:75119:23
- _ = _aKey
+ _ = _y
+ panic(0)
+}
+
+// Count the number of fields (a.k.a. columns) in the record given by
+// pKey,nKey. The verify that this count is less than or equal to the
+// limit given by pKeyInfo->nField + pKeyInfo->nXField.
+//
+// If this constraint is not satisfied, it means that the high-speed
+// vdbeRecordCompareInt() and vdbeRecordCompareString() routines will
+// not work correctly. If this assert() ever fires, it probably means
+// that the KeyInfo.nField or KeyInfo.nXField values were computed
+// incorrectly.
+func _vdbeAssertFieldCountWithinLimits(tls *crt.TLS, _nKey int32, _pKey unsafe.Pointer, _pKeyInfo *XKeyInfo) {
+ var _nField int32
+ var _szHdr, _idx, _notUsed uint32
+ var _aKey *uint8
_nField = i32(0)
_aKey = (*uint8)(_pKey)
- if (_sqlite3Config.X6) != i32(0) {
- goto _0
+ if (_sqlite3Config.X6) == i32(0) {
+ return
}
- return
-
-_0:
_idx = uint32(uint8(func() int32 {
if int32(*_aKey) < int32(u8(128)) {
return func() int32 { _szHdr = uint32(*_aKey); return i32(1) }()
@@ -64014,119 +57134,106 @@ _0:
}()))
func() {
if _nKey < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75123), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000))), unsafe.Pointer(str(76892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75123), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000))), unsafe.Pointer(str(75841)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _szHdr > uint32(_nKey) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75124), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000))), unsafe.Pointer(str(76900)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75124), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000))), unsafe.Pointer(str(75849)))
crt.X__builtin_abort(tls)
}
}()
_7:
- if _idx >= _szHdr {
- goto _8
- }
-
- {
- p := &_idx
- *p = (*p) + uint32(uint8(func() int32 {
- if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_aKey)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_idx)))))))) < int32(u8(128)) {
- return func() int32 {
- _notUsed = uint32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_aKey)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_idx))))))))
- return i32(1)
- }()
- }
- return int32(_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_aKey))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_idx))))))), &_notUsed))
- }()))
- sink5 = *p
+ if _idx < _szHdr {
+ {
+ p := &_idx
+ *p = (*p) + uint32(uint8(func() int32 {
+ if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_aKey)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_idx)))))))) < int32(u8(128)) {
+ return func() int32 {
+ _notUsed = uint32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_aKey)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_idx))))))))
+ return i32(1)
+ }()
+ }
+ return int32(_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_aKey))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_idx))))))), &_notUsed))
+ }()))
+ sink5 = *p
+ }
+ _nField += 1
+ goto _7
}
- _nField += 1
- goto _7
-
-_8:
func() {
if _nField > (int32(_pKeyInfo.X2) + int32(_pKeyInfo.X3)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75129), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000))), unsafe.Pointer(str(76920)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75129), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000))), unsafe.Pointer(str(75866)))
crt.X__builtin_abort(tls)
}
}()
+ _ = _notUsed
}
-var _vdbeAssertFieldCountWithinLimitsØ00__func__Ø000 [33]int8 // -
+var _vdbeAssertFieldCountWithinLimitsØ00__func__Ø000 [33]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000[0], str(76968), 33)
+ crt.Xstrncpy(nil, &_vdbeAssertFieldCountWithinLimitsØ00__func__Ø000[0], str(75911), 33)
}
-var _vdbeRecordCompareIntØ00__func__Ø000 [21]int8 // -
+var _vdbeRecordCompareIntØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeRecordCompareIntØ00__func__Ø000[0], str(77004), 21)
+ crt.Xstrncpy(nil, &_vdbeRecordCompareIntØ00__func__Ø000[0], str(75944), 21)
}
-func _sqlite3VdbeRecordCompare(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord) (r0 int32) { // sqlite3.c:75583:1
+func _sqlite3VdbeRecordCompare(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord) (r0 int32) {
return _sqlite3VdbeRecordCompareWithSkip(tls, _nKey1, _pKey1, _pPKey2, i32(0))
}
-func _sqlite3VdbeRecordCompareWithSkip(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord, _bSkip int32) (r0 int32) { // sqlite3.c:75397:1
- var _d1 uint32 // sqlite3.c:75402:7
- _ = _d1
- var _i int32 // sqlite3.c:75403:7
- _ = _i
- var _szHdr1 uint32 // sqlite3.c:75404:7
- _ = _szHdr1
- var _idx1 uint32 // sqlite3.c:75405:7
- _ = _idx1
- var _rc int32 // sqlite3.c:75406:7
- _ = _rc
- var _pRhs *XMem // sqlite3.c:75407:7
- _ = _pRhs
- var _pKeyInfo *XKeyInfo // sqlite3.c:75408:11
- _ = _pKeyInfo
- var _aKey1 *uint8 // sqlite3.c:75409:23
- _ = _aKey1
- var _mem1 XMem // sqlite3.c:75410:7
- _ = _mem1
- var _1_s1 uint32 // sqlite3.c:75416:9
- _ = _1_s1
- var _4_serial_type uint32 // sqlite3.c:75439:9
- _ = _4_serial_type
- var _9_lhs int64 // sqlite3.c:75453:13
- _ = _9_lhs
- var _9_rhs int64 // sqlite3.c:75454:13
- _ = _9_rhs
- var _26_nCmp int32 // sqlite3.c:75512:15
- _ = _26_nCmp
- var _29_nStr int32 // sqlite3.c:75527:13
- _ = _29_nStr
- var _34_nCmp int32 // sqlite3.c:75540:15
- _ = _34_nCmp
+// This function compares the two table rows or index records
+// specified by {nKey1, pKey1} and pPKey2. It returns a negative, zero
+// or positive integer if key1 is less than, equal to or
+// greater than key2. The {nKey1, pKey1} key must be a blob
+// created by the OP_MakeRecord opcode of the VDBE. The pPKey2
+// key must be a parsed key such as obtained from
+// sqlite3VdbeParseRecord.
+//
+// If argument bSkip is non-zero, it is assumed that the caller has already
+// determined that the first fields of the keys are equal.
+//
+// Key1 and Key2 do not have to contain the same number of fields. If all
+// fields that appear in both keys are equal, then pPKey2->default_rc is
+// returned.
+//
+// If database corruption is discovered, set pPKey2->errCode to
+// SQLITE_CORRUPT and return 0. If an OOM error is encountered,
+// pPKey2->errCode is set to SQLITE_NOMEM and, if it is not NULL, the
+// malloc-failed flag set on database handle (pPKey2->pKeyInfo->db).
+func _sqlite3VdbeRecordCompareWithSkip(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord, _bSkip int32) (r0 int32) {
+ var _i, _rc, _26_nCmp, _29_nStr, _34_nCmp int32
+ var _9_lhs, _9_rhs int64
+ var _d1, _szHdr1, _idx1, _1_s1, _4_serial_type uint32
+ var _aKey1 *uint8
+ var _mem1 XMem
+ var _pRhs *XMem
+ var _pKeyInfo *XKeyInfo
_rc = i32(0)
_pRhs = (*XMem)(_pPKey2.X1)
_pKeyInfo = (*XKeyInfo)(_pPKey2.X0)
_aKey1 = (*uint8)(_pKey1)
- if _bSkip == 0 {
- goto _0
+ if _bSkip != 0 {
+ _idx1 = uint32(i32(1) + int32(uint8(func() int32 {
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(i32(1))))) < int32(u8(128)) {
+ return func() int32 {
+ _1_s1 = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(i32(1)))))
+ return i32(1)
+ }()
+ }
+ return int32(_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(i32(1)))), &_1_s1))
+ }())))
+ _szHdr1 = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(i32(0)))))
+ _d1 = _szHdr1 + _sqlite3VdbeSerialTypeLen(tls, _1_s1)
+ _i = i32(1)
+ *(*uintptr)(unsafe.Pointer(&_pRhs)) += uintptr(48)
+ goto _3
}
-
- _idx1 = uint32(i32(1) + int32(uint8(func() int32 {
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(i32(1))))) < int32(u8(128)) {
- return func() int32 {
- _1_s1 = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(i32(1)))))
- return i32(1)
- }()
- }
- return int32(_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(i32(1)))), &_1_s1))
- }())))
- _szHdr1 = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(i32(0)))))
- _d1 = _szHdr1 + _sqlite3VdbeSerialTypeLen(tls, _1_s1)
- _i = i32(1)
- *(*uintptr)(unsafe.Pointer(&_pRhs)) += uintptr(48)
- goto _3
-
-_0:
_idx1 = uint32(uint8(func() int32 {
if int32(*_aKey1) < int32(u8(128)) {
return func() int32 { _szHdr1 = uint32(*_aKey1); return i32(1) }()
@@ -64134,38 +57241,34 @@ _0:
return int32(_sqlite3GetVarint32(tls, _aKey1, &_szHdr1))
}()))
_d1 = _szHdr1
- if _d1 <= uint32(_nKey1) {
- goto _6
+ if _d1 > uint32(_nKey1) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75426)))
+ return i32(0)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75426)))
- return i32(0)
-
-_6:
_i = i32(0)
_3:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(24 /* X7 */))) = i32(0)
func() {
if (int32((*XKeyInfo)(_pPKey2.X0).X2)+int32((*XKeyInfo)(_pPKey2.X0).X3)) < int32(_pPKey2.X2) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75433), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75433), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(75965)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((*XKeyInfo)(_pPKey2.X0).X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75435), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77112)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75435), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76046)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XKeyInfo)(_pPKey2.X0).X2) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76078)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _idx1 > _szHdr1 && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76105)))
crt.X__builtin_abort(tls)
}
}()
@@ -64173,153 +57276,96 @@ _17:
if (int32(_pRhs.X1) & i32(4)) == 0 {
goto _18
}
-
_4_serial_type = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(_idx1))))
- if _4_serial_type < uint32(i32(10)) {
- goto _19
+ if _4_serial_type >= uint32(i32(10)) {
+ _rc = i32(1)
+ goto _20
}
-
- _rc = i32(1)
- goto _20
-
-_19:
- if _4_serial_type != uint32(i32(0)) {
- goto _21
+ if _4_serial_type == uint32(i32(0)) {
+ _rc = i32(-1)
+ goto _22
}
-
- _rc = i32(-1)
- goto _22
-
-_21:
- if _4_serial_type != uint32(i32(7)) {
- goto _23
+ if _4_serial_type == uint32(i32(7)) {
+ _sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1))), _4_serial_type, &_mem1)
+ _rc = -_sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */))))), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */))))))
+ goto _24
}
-
- _sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1))), _4_serial_type, &_mem1)
- _rc = -_sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */))))), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */))))))
- goto _24
-
-_23:
_9_lhs = _vdbeRecordDecodeInt(tls, _4_serial_type, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1))))
- _9_rhs = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */)))))
- if _9_lhs >= _9_rhs {
- goto _25
+ _9_rhs = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */)))))
+ if _9_lhs < _9_rhs {
+ _rc = i32(-1)
+ goto _26
}
-
- _rc = i32(-1)
- goto _26
-
-_25:
- if _9_lhs <= _9_rhs {
- goto _27
+ if _9_lhs > _9_rhs {
+ _rc = i32(1)
}
-
- _rc = i32(1)
-_27:
_26:
_24:
_22:
_20:
goto _28
-
_18:
if (int32(_pRhs.X1) & i32(8)) == 0 {
goto _29
}
-
_4_serial_type = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(_idx1))))
- if _4_serial_type < uint32(i32(10)) {
- goto _30
+ if _4_serial_type >= uint32(i32(10)) {
+ _rc = i32(1)
+ goto _31
}
-
- _rc = i32(1)
- goto _31
-
-_30:
- if _4_serial_type != uint32(i32(0)) {
- goto _32
+ if _4_serial_type == uint32(i32(0)) {
+ _rc = i32(-1)
+ goto _33
}
-
- _rc = i32(-1)
- goto _33
-
-_32:
_sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1))), _4_serial_type, &_mem1)
if _4_serial_type != uint32(i32(7)) {
goto _34
}
-
- if (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */)))))) >= (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */)))))) {
- goto _35
+ if (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */)))))) < (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */)))))) {
+ _rc = i32(-1)
+ goto _36
}
-
- _rc = i32(-1)
- goto _36
-
-_35:
- if (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */)))))) <= (*(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */)))))) {
- goto _37
+ if (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */)))))) > (*(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */)))))) {
+ _rc = i32(1)
}
-
- _rc = i32(1)
-_37:
_36:
goto _38
-
_34:
- _rc = _sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */))))), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */))))))
+ _rc = _sqlite3IntFloatCompare(tls, *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(0 /* X0 */))))), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */))))))
_38:
_33:
_31:
goto _39
-
_29:
if (int32(_pRhs.X1) & i32(2)) == 0 {
goto _40
}
-
func() {
if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(_idx1)))) >= int32(u8(128)) {
_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_idx1))), &_4_serial_type)
}
}()
- if _4_serial_type >= uint32(i32(12)) {
- goto _43
+ if _4_serial_type < uint32(i32(12)) {
+ _rc = i32(-1)
+ goto _44
}
-
- _rc = i32(-1)
- goto _44
-
-_43:
- if (_4_serial_type & uint32(i32(1))) != 0 {
- goto _45
+ if (_4_serial_type & uint32(i32(1))) == 0 {
+ _rc = i32(1)
+ goto _46
}
-
- _rc = i32(1)
- goto _46
-
-_45:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(12 /* X4 */))) = int32((_4_serial_type - uint32(i32(12))) / uint32(i32(2)))
- if (_d1 + uint32(_mem1.X4)) <= uint32(_nKey1) {
- goto _47
+ if (_d1 + uint32(_mem1.X4)) > uint32(_nKey1) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75501)))
+ return i32(0)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75501)))
- return i32(0)
-
-_47:
- if (*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_i)))) == nil {
- goto _49
+ if (*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_i)))) != nil {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(10 /* X2 */))) = _pKeyInfo.X1
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(32 /* X9 */))))) = (*Xsqlite3)(_pKeyInfo.X4)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(8 /* X1 */))) = uint16(i32(2))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(16 /* X5 */))) = (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(_d1)))))
+ _rc = _vdbeCompareMemString(tls, &_mem1, _pRhs, *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_i))), (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2))+uintptr(11 /* X4 */))))
+ goto _50
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(10 /* X2 */))) = _pKeyInfo.X1
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(32 /* X9 */))))) = (*Xsqlite3)(_pKeyInfo.X4)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(8 /* X1 */))) = uint16(i32(2))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(16 /* X5 */))) = (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(_d1)))))
- _rc = _vdbeCompareMemString(tls, &_mem1, _pRhs, *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_i))), (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2))+uintptr(11 /* X4 */))))
- goto _50
-
-_49:
_26_nCmp = func() int32 {
if (_mem1.X4) < (_pRhs.X4) {
return (_mem1.X4)
@@ -64327,25 +57373,20 @@ _49:
return (_pRhs.X4)
}()
_rc = crt.Xmemcmp(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1)))), (unsafe.Pointer)(_pRhs.X5), uint32(_26_nCmp))
- if _rc != i32(0) {
- goto _53
+ if _rc == i32(0) {
+ _rc = (_mem1.X4) - (_pRhs.X4)
}
-
- _rc = (_mem1.X4) - (_pRhs.X4)
-_53:
_50:
_46:
_44:
goto _54
-
_40:
if (int32(_pRhs.X1) & i32(16)) == 0 {
goto _55
}
-
func() {
if (int32(_pRhs.X1)&i32(16384)) != i32(0) && (_pRhs.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75521), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75521), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76132)))
crt.X__builtin_abort(tls)
}
}()
@@ -64354,39 +57395,25 @@ _40:
_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_idx1))), &_4_serial_type)
}
}()
- if _4_serial_type >= uint32(i32(12)) && (_4_serial_type&uint32(i32(1))) == 0 {
- goto _62
+ if (_4_serial_type < uint32(i32(12))) || ((_4_serial_type & uint32(i32(1))) != 0) {
+ _rc = i32(-1)
+ goto _63
}
-
- _rc = i32(-1)
- goto _63
-
-_62:
_29_nStr = int32((_4_serial_type - uint32(i32(12))) / uint32(i32(2)))
- if (_d1 + uint32(_29_nStr)) <= uint32(_nKey1) {
- goto _64
+ if (_d1 + uint32(_29_nStr)) > uint32(_nKey1) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75531)))
+ return i32(0)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75531)))
- return i32(0)
-
-_64:
if (int32(_pRhs.X1) & i32(16384)) == 0 {
goto _66
}
-
- if _isAllZero(tls, (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1))))), _29_nStr) != 0 {
- goto _67
+ if _isAllZero(tls, (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1))))), _29_nStr) == 0 {
+ _rc = i32(1)
+ goto _68
}
-
- _rc = i32(1)
- goto _68
-
-_67:
- _rc = _29_nStr - (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */))))))
+ _rc = _29_nStr - (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRhs)) + uintptr(0 /* X0 */))))))
_68:
goto _69
-
_66:
_34_nCmp = func() int32 {
if _29_nStr < (_pRhs.X4) {
@@ -64395,16 +57422,12 @@ _66:
return (_pRhs.X4)
}()
_rc = crt.Xmemcmp(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1)))), (unsafe.Pointer)(_pRhs.X5), uint32(_34_nCmp))
- if _rc != i32(0) {
- goto _72
+ if _rc == i32(0) {
+ _rc = _29_nStr - (_pRhs.X4)
}
-
- _rc = _29_nStr - (_pRhs.X4)
-_72:
_69:
_63:
goto _73
-
_55:
_4_serial_type = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(_idx1))))
_rc = bool2int(_4_serial_type != uint32(i32(0)))
@@ -64415,22 +57438,18 @@ _28:
if _rc == i32(0) {
goto _74
}
-
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo.X5)) + 1*uintptr(_i)))) == 0 {
- goto _75
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo.X5)) + 1*uintptr(_i)))) != 0 {
+ _rc = -_rc
}
-
- _rc = -_rc
-_75:
func() {
if _vdbeRecordCompareDebug(tls, _nKey1, _pKey1, _pPKey2, _rc) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75557), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77244)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75557), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76174)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_mem1.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75558), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77296)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75558), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76223)))
crt.X__builtin_abort(tls)
}
}()
@@ -64452,65 +57471,68 @@ _74:
if ((_idx1 < _szHdr1) && (_i < int32(_pPKey2.X2))) && (_d1 <= uint32(_nKey1)) {
goto _17
}
-
func() {
if (_mem1.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77296)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75571), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76223)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_sqlite3Config.X6) != i32(0) && _vdbeRecordCompareDebug(tls, _nKey1, _pKey1, _pPKey2, int32(_pPKey2.X3)) == 0 && ((*Xsqlite3)(_pKeyInfo.X4).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(77316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000))), unsafe.Pointer(str(76240)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(14 /* X7 */))) = uint8(i32(1))
return int32(_pPKey2.X3)
+
+ _ = _mem1
+ panic(0)
}
-func _sqlite3VdbeSerialTypeLen(tls *crt.TLS, _serial_type uint32) (r0 uint32) { // sqlite3.c:74670:1
- if _serial_type < uint32(i32(128)) {
- goto _0
+// Return the length of the data corresponding to the supplied serial-type.
+func _sqlite3VdbeSerialTypeLen(tls *crt.TLS, _serial_type uint32) (r0 uint32) {
+ if _serial_type >= uint32(i32(128)) {
+ return (_serial_type - uint32(i32(12))) / uint32(i32(2))
}
- return (_serial_type - uint32(i32(12))) / uint32(i32(2))
-
-_0:
func() {
if _serial_type >= uint32(i32(12)) && uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3SmallTypeSizes)) + 1*uintptr(_serial_type)))) != ((_serial_type-uint32(i32(12)))/uint32(i32(2))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeLenØ00__func__Ø000))), unsafe.Pointer(str(77428)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeLenØ00__func__Ø000))), unsafe.Pointer(str(76349)))
crt.X__builtin_abort(tls)
}
}()
return uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3SmallTypeSizes)) + 1*uintptr(_serial_type))))
}
-var _sqlite3SmallTypeSizes [128]uint8 // sqlite3.c:74650:17
+var _sqlite3SmallTypeSizes [128]uint8
func init() {
_sqlite3SmallTypeSizes = [128]uint8{0, 1, 2, 3, 4, 6, 8, 8, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57}
}
-var _sqlite3VdbeSerialTypeLenØ00__func__Ø000 [25]int8 // -
+var _sqlite3VdbeSerialTypeLenØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSerialTypeLenØ00__func__Ø000[0], str(77504), 25)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSerialTypeLenØ00__func__Ø000[0], str(76424), 25)
}
-var _sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000 [33]int8 // -
+var _sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000 [33]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000[0], str(77532), 33)
+ crt.Xstrncpy(nil, &_sqlite3VdbeRecordCompareWithSkipØ00__func__Ø000[0], str(76449), 33)
}
-func _vdbeRecordDecodeInt(tls *crt.TLS, _serial_type uint32, _aKey *uint8) (r0 int64) { // sqlite3.c:75342:1
- var _y uint32 // sqlite3.c:75343:7
- _ = _y
- var _4_x uint64 // sqlite3.c:75366:11
- _ = _4_x
+// The first argument passed to this function is a serial-type that
+// corresponds to an integer - all values between 1 and 9 inclusive
+// except 7. The second points to a buffer containing an integer value
+// serialized according to serial_type. This function deserializes
+// and returns the value.
+func _vdbeRecordDecodeInt(tls *crt.TLS, _serial_type uint32, _aKey *uint8) (r0 int64) {
+ var _y uint32
+ var _4_x uint64
func() {
if (_sqlite3Config.X6) != i32(0) && (_serial_type < uint32(i32(1)) || _serial_type > uint32(i32(9)) || _serial_type == uint32(i32(7))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75344), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordDecodeIntØ00__func__Ø000))), unsafe.Pointer(str(77568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75344), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordDecodeIntØ00__func__Ø000))), unsafe.Pointer(str(76482)))
crt.X__builtin_abort(tls)
}
}()
@@ -64535,8 +57557,7 @@ func _vdbeRecordDecodeInt(tls *crt.TLS, _serial_type uint32, _aKey *uint8) (r0 i
_6:
_7:
- r0 = int64(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(0))))))
- return
+ return int64(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(0))))))
_8:
return int64((i32(256) * int32(int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(0))))))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey)) + 1*uintptr(i32(1))))))
@@ -64558,43 +57579,39 @@ _12:
_13:
return int64(_serial_type - uint32(i32(8)))
+
+ _ = _y
+ panic(0)
}
-var _vdbeRecordDecodeIntØ00__func__Ø000 [20]int8 // -
+var _vdbeRecordDecodeIntØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeRecordDecodeIntØ00__func__Ø000[0], str(77636), 20)
+ crt.Xstrncpy(nil, &_vdbeRecordDecodeIntØ00__func__Ø000[0], str(76549), 20)
}
-func _vdbeRecordCompareDebug(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord, _desiredResult int32) (r0 int32) { // sqlite3.c:75006:1
- var _d1 uint32 // sqlite3.c:75011:7
- _ = _d1
- var _idx1 uint32 // sqlite3.c:75012:7
- _ = _idx1
- var _szHdr1 uint32 // sqlite3.c:75013:7
- _ = _szHdr1
- var _i int32 // sqlite3.c:75014:7
- _ = _i
- var _rc int32 // sqlite3.c:75015:7
- _ = _rc
- var _aKey1 *uint8 // sqlite3.c:75016:23
- _ = _aKey1
- var _pKeyInfo *XKeyInfo // sqlite3.c:75017:11
- _ = _pKeyInfo
- var _mem1 XMem // sqlite3.c:75018:7
- _ = _mem1
- var _1_serial_type1 uint32 // sqlite3.c:75044:9
- _ = _1_serial_type1
+// This function compares two index or table record keys in the same way
+// as the sqlite3VdbeRecordCompare() routine. Unlike VdbeRecordCompare(),
+// this function deserializes and compares values using the
+// sqlite3VdbeSerialGet() and sqlite3MemCompare() functions. It is used
+// in assert() statements to ensure that the optimized code in
+// sqlite3VdbeRecordCompare() returns results with these two primitives.
+//
+// Return true if the result of comparison is equivalent to desiredResult.
+// Return false if there is a disagreement.
+func _vdbeRecordCompareDebug(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord, _desiredResult int32) (r0 int32) {
+ var _i, _rc int32
+ var _d1, _idx1, _szHdr1, _1_serial_type1 uint32
+ var _aKey1 *uint8
+ var _mem1 XMem
+ var _pKeyInfo *XKeyInfo
_i = i32(0)
_rc = i32(0)
_aKey1 = (*uint8)(_pKey1)
_pKeyInfo = (*XKeyInfo)(_pPKey2.X0)
- if (*Xsqlite3)(_pKeyInfo.X4) != nil {
- goto _0
+ if (*Xsqlite3)(_pKeyInfo.X4) == nil {
+ return i32(1)
}
- return i32(1)
-
-_0:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(10 /* X2 */))) = _pKeyInfo.X1
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(32 /* X9 */))))) = (*Xsqlite3)(_pKeyInfo.X4)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem1)) + uintptr(24 /* X7 */))) = i32(0)
@@ -64604,34 +57621,31 @@ _0:
}
return int32(_sqlite3GetVarint32(tls, _aKey1, &_szHdr1))
}()))
- if _szHdr1 <= uint32(i32(98307)) {
- goto _3
+ if _szHdr1 > uint32(i32(98307)) {
+ return i32(11)
}
- return i32(11)
-
-_3:
_d1 = _szHdr1
func() {
if (int32(_pKeyInfo.X2)+int32(_pKeyInfo.X3)) < int32(_pPKey2.X2) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75039), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(77656)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75039), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(76569)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pKeyInfo.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75040), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(38568)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75040), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(37852)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pKeyInfo.X2) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75041), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(77724)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75041), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(76634)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _idx1 > _szHdr1 && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75042), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(77172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75042), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(76105)))
crt.X__builtin_abort(tls)
}
}()
@@ -64649,13 +57663,9 @@ _14:
}()))
sink5 = *p
}
- if ((_d1+_1_serial_type1)+uint32(i32(2))) <= uint32(_nKey1) || (_d1+_sqlite3VdbeSerialTypeLen(tls, _1_serial_type1)) <= uint32(_nKey1) {
- goto _18
+ if (((_d1 + _1_serial_type1) + uint32(i32(2))) > uint32(_nKey1)) && ((_d1 + _sqlite3VdbeSerialTypeLen(tls, _1_serial_type1)) > uint32(_nKey1)) {
+ goto _19
}
-
- goto _19
-
-_18:
{
p := &_d1
*p = (*p) + _sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(_d1))), _1_serial_type1, &_mem1)
@@ -64665,126 +57675,101 @@ _18:
if _rc == i32(0) {
goto _20
}
-
func() {
if (_mem1.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75069), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(77296)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75069), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(76223)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo.X5)) + 1*uintptr(_i)))) == 0 {
- goto _23
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo.X5)) + 1*uintptr(_i)))) != 0 {
+ _rc = -_rc
}
-
- _rc = -_rc
-_23:
goto _debugCompareEnd
-
_20:
_i += 1
if (_idx1 < _szHdr1) && (_i < int32(_pPKey2.X2)) {
goto _14
}
-
_19:
func() {
if (_mem1.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75082), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(77296)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75082), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareDebugØ00__func__Ø000))), unsafe.Pointer(str(76223)))
crt.X__builtin_abort(tls)
}
}()
_rc = int32(_pPKey2.X3)
_debugCompareEnd:
- if _desiredResult != i32(0) || _rc != i32(0) {
- goto _28
+ if (_desiredResult == i32(0)) && (_rc == i32(0)) {
+ return i32(1)
}
- return i32(1)
-
-_28:
- if _desiredResult >= i32(0) || _rc >= i32(0) {
- goto _30
+ if (_desiredResult < i32(0)) && (_rc < i32(0)) {
+ return i32(1)
}
- return i32(1)
-
-_30:
- if _desiredResult <= i32(0) || _rc <= i32(0) {
- goto _32
+ if (_desiredResult > i32(0)) && (_rc > i32(0)) {
+ return i32(1)
}
- return i32(1)
-
-_32:
- if (_sqlite3Config.X6) != i32(0) {
- goto _33
+ if (_sqlite3Config.X6) == i32(0) {
+ return i32(1)
}
- return i32(1)
-
-_33:
- if ((*Xsqlite3)(_pKeyInfo.X4).X17) == 0 {
- goto _34
+ if ((*Xsqlite3)(_pKeyInfo.X4).X17) != 0 {
+ return i32(1)
}
- return i32(1)
-
-_34:
return i32(0)
+
+ _ = _mem1
+ panic(0)
}
-var _vdbeRecordCompareDebugØ00__func__Ø000 [23]int8 // -
+var _vdbeRecordCompareDebugØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeRecordCompareDebugØ00__func__Ø000[0], str(77744), 23)
+ crt.Xstrncpy(nil, &_vdbeRecordCompareDebugØ00__func__Ø000[0], str(76653), 23)
}
-func _sqlite3VarintLen(tls *crt.TLS, _v uint64) (r0 int32) { // sqlite3.c:28785:1
- var _i int32 // sqlite3.c:28786:7
- _ = _i
+// Return the number of bytes that will be needed to store the given
+// 64-bit integer.
+func _sqlite3VarintLen(tls *crt.TLS, _v uint64) (r0 int32) {
+ var _i int32
_i = i32(1)
_0:
- if store15(func() (*uint64, uint64) { p := &_v; return p, ((*p) >> uint(i32(7))) }()) == uint64(i32(0)) {
+ if store17(func() (*uint64, uint64) { p := &_v; return p, ((*p) >> uint(i32(7))) }()) == uint64(i32(0)) {
goto _3
}
-
func() {
if _i >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28787), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VarintLenØ00__func__Ø000))), unsafe.Pointer(str(77768)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28787), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VarintLenØ00__func__Ø000))), unsafe.Pointer(str(76676)))
crt.X__builtin_abort(tls)
}
}()
_i += 1
goto _0
-
_3:
return _i
}
-var _sqlite3VarintLenØ00__func__Ø000 [17]int8 // -
+var _sqlite3VarintLenØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VarintLenØ00__func__Ø000[0], str(77776), 17)
+ crt.Xstrncpy(nil, &_sqlite3VarintLenØ00__func__Ø000[0], str(76681), 17)
}
-var _sqlite3VdbeFindCompareØ00__func__Ø000 [23]int8 // -
+var _sqlite3VdbeFindCompareØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeFindCompareØ00__func__Ø000[0], str(77796), 23)
+ crt.Xstrncpy(nil, &_sqlite3VdbeFindCompareØ00__func__Ø000[0], str(76698), 23)
}
-func _vdbeRecordCompareString(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord) (r0 int32) { // sqlite3.c:75694:1
- var _aKey1 *uint8 // sqlite3.c:75698:12
- _ = _aKey1
- var _serial_type int32 // sqlite3.c:75699:7
- _ = _serial_type
- var _res int32 // sqlite3.c:75700:7
- _ = _res
- var _3_nCmp int32 // sqlite3.c:75710:9
- _ = _3_nCmp
- var _3_nStr int32 // sqlite3.c:75711:9
- _ = _3_nStr
- var _3_szHdr int32 // sqlite3.c:75712:9
- _ = _3_szHdr
+// This function is an optimized version of sqlite3VdbeRecordCompare()
+// that (a) the first field of pPKey2 is a string, that (b) the first field
+// uses the collation sequence BINARY and (c) that the size-of-header varint
+// at the start of (pKey1/nKey1) fits in a single byte.
+func _vdbeRecordCompareString(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer, _pPKey2 *XUnpackedRecord) (r0 int32) {
+ var _serial_type, _res, _3_nCmp, _3_nStr, _3_szHdr int32
+ var _aKey1 *uint8
_aKey1 = (*uint8)(_pKey1)
func() {
if (int32((*XMem)(unsafe.Pointer(uintptr(_pPKey2.X1)+48*uintptr(i32(0)))).X1) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75702), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareStringØ00__func__Ø000))), unsafe.Pointer(str(77820)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75702), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareStringØ00__func__Ø000))), unsafe.Pointer(str(76721)))
crt.X__builtin_abort(tls)
}
}()
@@ -64794,32 +57779,20 @@ func _vdbeRecordCompareString(tls *crt.TLS, _nKey1 int32, _pKey1 unsafe.Pointer,
_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1))+1*uintptr(i32(1)))), (*uint32)(unsafe.Pointer(&_serial_type)))
}
}()
- if _serial_type >= i32(12) {
- goto _4
+ if _serial_type < i32(12) {
+ _res = int32(_pPKey2.X5)
+ goto _5
}
-
- _res = int32(_pPKey2.X5)
- goto _5
-
-_4:
- if (_serial_type & i32(1)) != 0 {
- goto _6
+ if (_serial_type & i32(1)) == 0 {
+ _res = int32(_pPKey2.X6)
+ goto _7
}
-
- _res = int32(_pPKey2.X6)
- goto _7
-
-_6:
_3_szHdr = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aKey1)) + 1*uintptr(i32(0)))))
_3_nStr = (_serial_type - i32(12)) / i32(2)
- if (_3_szHdr + _3_nStr) <= _nKey1 {
- goto _8
+ if (_3_szHdr + _3_nStr) > _nKey1 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75716)))
+ return i32(0)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(11 /* X4 */))) = uint8(_sqlite3CorruptError(tls, i32(75716)))
- return i32(0)
-
-_8:
_3_nCmp = func() int32 {
if ((*XMem)(unsafe.Pointer(uintptr(_pPKey2.X1) + 48*uintptr(i32(0)))).X4) < _3_nStr {
return ((*XMem)(unsafe.Pointer(uintptr(_pPKey2.X1) + 48*uintptr(i32(0)))).X4)
@@ -64830,48 +57803,32 @@ _8:
if _res != i32(0) {
goto _11
}
-
_res = _3_nStr - ((*XMem)(unsafe.Pointer(uintptr(_pPKey2.X1) + 48*uintptr(i32(0)))).X4)
if _res != i32(0) {
goto _12
}
-
- if int32(_pPKey2.X2) <= i32(1) {
- goto _13
+ if int32(_pPKey2.X2) > i32(1) {
+ _res = _sqlite3VdbeRecordCompareWithSkip(tls, _nKey1, _pKey1, _pPKey2, i32(1))
+ goto _14
}
-
- _res = _sqlite3VdbeRecordCompareWithSkip(tls, _nKey1, _pKey1, _pPKey2, i32(1))
- goto _14
-
-_13:
_res = int32(_pPKey2.X3)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPKey2)) + uintptr(14 /* X7 */))) = uint8(i32(1))
_14:
goto _15
-
_12:
- if _res <= i32(0) {
- goto _16
+ if _res > i32(0) {
+ _res = int32(_pPKey2.X6)
+ goto _17
}
-
- _res = int32(_pPKey2.X6)
- goto _17
-
-_16:
_res = int32(_pPKey2.X5)
_17:
_15:
goto _18
-
_11:
- if _res <= i32(0) {
- goto _19
+ if _res > i32(0) {
+ _res = int32(_pPKey2.X6)
+ goto _20
}
-
- _res = int32(_pPKey2.X6)
- goto _20
-
-_19:
_res = int32(_pPKey2.X5)
_20:
_18:
@@ -64879,30 +57836,46 @@ _7:
_5:
func() {
if _vdbeRecordCompareDebug(tls, _nKey1, _pKey1, _pPKey2, _res) == 0 && (_sqlite3Config.X6) != i32(0) && ((*Xsqlite3)((*XKeyInfo)(_pPKey2.X0).X4).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75743), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareStringØ00__func__Ø000))), unsafe.Pointer(str(77852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75743), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeRecordCompareStringØ00__func__Ø000))), unsafe.Pointer(str(76753)))
crt.X__builtin_abort(tls)
}
}()
return _res
}
-var _vdbeRecordCompareStringØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_vdbeRecordCompareStringØ00__func__Ø000[0], str(77956), 24)
-}
-
-func _moveToRoot(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:63945:1
- var _pRoot *XMemPage // sqlite3.c:63946:11
- _ = _pRoot
- var _rc int32 // sqlite3.c:63947:7
- _ = _rc
- var _11_subpage uint32 // sqlite3.c:64010:10
- _ = _11_subpage
+var _vdbeRecordCompareStringØ00__func__Ø000 [24]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_vdbeRecordCompareStringØ00__func__Ø000[0], str(76855), 24)
+}
+
+// Move the cursor to point to the root page of its b-tree structure.
+//
+// If the table has a virtual root page, then the cursor is moved to point
+// to the virtual root page instead of the actual root page. A table has a
+// virtual root page when the actual root page contains no cells and a
+// single child page. This can only happen with the table rooted at page 1.
+//
+// If the b-tree structure is empty, the cursor state is set to
+// CURSOR_INVALID. Otherwise, the cursor is set to point to the first
+// cell located on the root (or virtual root) page and the cursor state
+// is set to CURSOR_VALID.
+//
+// If this function returns successfully, it may be assumed that the
+// page-header flags indicate that the [virtual] root-page is the expected
+// kind of b-tree page (i.e. if when opening the cursor the caller did not
+// specify a KeyInfo structure the flags byte is set to 0x05 or 0x0D,
+// indicating a table b-tree, or if the caller did specify a KeyInfo
+// structure the flags byte is set to 0x02 or 0x0A, indicating an index
+// b-tree).
+func _moveToRoot(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
+ var _rc int32
+ var _11_subpage uint32
+ var _pRoot *XMemPage
_rc = i32(0)
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63949), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63949), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
@@ -64912,34 +57885,27 @@ func _moveToRoot(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:63945
if int32(_pCur.X12) < i32(3) {
goto _2
}
-
- if int32(_pCur.X12) != i32(4) {
- goto _3
+ if int32(_pCur.X12) == i32(4) {
+ func() {
+ if (_pCur.X9) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63955), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(76879)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _pCur.X9
}
-
- func() {
- if (_pCur.X9) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63955), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(77980)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _pCur.X9
-
-_3:
_sqlite3BtreeClearCursor(tls, _pCur)
_2:
if int32(_pCur.X14) < i32(0) {
goto _6
}
-
if (_pCur.X14) == 0 {
goto _7
}
-
_8:
func() {
if (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63964), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(78008)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63964), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(76905)))
crt.X__builtin_abort(tls)
}
}()
@@ -64947,58 +57913,44 @@ _8:
if (_pCur.X14) != 0 {
goto _8
}
-
goto _skip_init
-
_7:
goto _11
-
_6:
- if (_pCur.X7) != uint32(i32(0)) {
- goto _12
+ if (_pCur.X7) == uint32(i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
+ return i32(0)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
- return i32(0)
-
-_12:
func() {
if int32(_pCur.X14) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63973), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(78040)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63973), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(76934)))
crt.X__builtin_abort(tls)
}
}()
_rc = _getAndInitPage(tls, (*XBtShared)((*XBtree)(_pCur.X0).X1), _pCur.X7, (**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */)))))+4*uintptr(i32(0)))), nil, int32(_pCur.X11))
- if _rc == i32(0) {
- goto _16
+ if _rc != i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
+ return _rc
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
- return _rc
-
-_16:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) = int8(i32(0))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(65 /* X15 */))) = (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(i32(0))))).X2
_11:
_pRoot = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(i32(0))))
func() {
if (_pRoot.X4) != (_pCur.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63984), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(78060)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63984), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(76952)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pRoot.X2) != i32(1) && int32(_pRoot.X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63996), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(78088)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63996), unsafe.Pointer((*int8)(unsafe.Pointer(&_moveToRootØ00__func__Ø000))), unsafe.Pointer(str(76980)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pRoot.X0) != i32(0) && bool2int((*XKeyInfo)(_pCur.X18) == nil) == int32(_pRoot.X2) {
- goto _23
+ if (int32(_pRoot.X0) == i32(0)) || (bool2int((*XKeyInfo)(_pCur.X18) == nil) != int32(_pRoot.X2)) {
+ return _sqlite3CorruptError(tls, i32(63998))
}
- return _sqlite3CorruptError(tls, i32(63998))
-
-_23:
_skip_init:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(i32(0))
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))))) + uintptr(18 /* X4 */))) = uint16(i32(0))
@@ -65008,99 +57960,108 @@ _skip_init:
sink2 = *p
}
_pRoot = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(i32(0))))
- if int32(_pRoot.X14) <= i32(0) {
- goto _24
+ if int32(_pRoot.X14) > i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(1))
+ goto _25
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(1))
- goto _25
-
-_24:
if (_pRoot.X5) != 0 {
goto _26
}
-
- if (_pRoot.X4) == uint32(i32(1)) {
- goto _27
+ if (_pRoot.X4) != uint32(i32(1)) {
+ return _sqlite3CorruptError(tls, i32(64011))
}
- return _sqlite3CorruptError(tls, i32(64011))
-
-_27:
_11_subpage = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot.X19))+1*uintptr(int32(_pRoot.X6)+i32(8)))))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(1))
_rc = _moveToChild(tls, _pCur, _11_subpage)
goto _28
-
_26:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(0))
_28:
_25:
- r0 = _rc
- return
+ return _rc
}
-var _moveToRootØ00__func__Ø000 [11]int8 // -
+var _moveToRootØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_moveToRootØ00__func__Ø000[0], str(78128), 11)
+ crt.Xstrncpy(nil, &_moveToRootØ00__func__Ø000[0], str(77017), 11)
}
-func _sqlite3BtreeCursorHasMoved(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:59868:1
+// Determine whether or not a cursor has moved from the position where
+// it was last placed, or has been invalidated for any other reason.
+// Cursors can move when the row they are pointing at is deleted out
+// from under them, for example. Cursor might also move if a btree
+// is rebalanced.
+//
+// Calling this routine with a NULL cursor pointer returns false.
+//
+// Use the separate sqlite3BtreeCursorRestore() routine to restore a cursor
+// back to where it ought to be if this routine returns true.
+func _sqlite3BtreeCursorHasMoved(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
return bool2int(int32(_pCur.X12) != i32(1))
}
-func _handleMovedCursor(tls *crt.TLS, _p *XVdbeCursor) (r0 int32) { // sqlite3.c:74498:1
- var _isDifferentRow int32 // sqlite3.c:74499:7
- _ = _isDifferentRow
- var _rc int32 // sqlite3.c:74499:23
- _ = _rc
+// Something has moved cursor "p" out of place. Maybe the row it was
+// pointed to was deleted out from under it. Or maybe the btree was
+// rebalanced. Whatever the cause, try to restore "p" to the place it
+// is supposed to be pointing. If the row was deleted out from under the
+// cursor, set the cursor to point to a NULL row.
+func _handleMovedCursor(tls *crt.TLS, _p *XVdbeCursor) (r0 int32) {
+ var _isDifferentRow, _rc int32
func() {
if int32(_p.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74500), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleMovedCursorØ00__func__Ø000))), unsafe.Pointer(str(74720)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74500), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleMovedCursorØ00__func__Ø000))), unsafe.Pointer(str(73776)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74501), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleMovedCursorØ00__func__Ø000))), unsafe.Pointer(str(78140)))
+ if (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74501), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleMovedCursorØ00__func__Ø000))), unsafe.Pointer(str(77028)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _sqlite3BtreeCursorHasMoved(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */))))))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74502), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleMovedCursorØ00__func__Ø000))), unsafe.Pointer(str(78160)))
+ if _sqlite3BtreeCursorHasMoved(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */))))))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74502), unsafe.Pointer((*int8)(unsafe.Pointer(&_handleMovedCursorØ00__func__Ø000))), unsafe.Pointer(str(77045)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _sqlite3BtreeCursorRestore(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */)))))), &_isDifferentRow)
+ _rc = _sqlite3BtreeCursorRestore(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */)))))), &_isDifferentRow)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X11 */))) = uint32(i32(0))
- if _isDifferentRow == 0 {
- goto _6
+ if _isDifferentRow != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(2 /* X2 */))) = uint8(i32(1))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(2 /* X2 */))) = uint8(i32(1))
-_6:
return _rc
}
-var _handleMovedCursorØ00__func__Ø000 [18]int8 // -
+var _handleMovedCursorØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_handleMovedCursorØ00__func__Ø000[0], str(78204), 18)
+ crt.Xstrncpy(nil, &_handleMovedCursorØ00__func__Ø000[0], str(77087), 18)
}
-func _sqlite3BtreeCursorRestore(tls *crt.TLS, _pCur *XBtCursor, _pDifferentRow *int32) (r0 int32) { // sqlite3.c:59885:1
- var _rc int32 // sqlite3.c:59886:7
- _ = _rc
+// This routine restores a cursor back to its original position after it
+// has been moved by some outside activity (such as a btree rebalance or
+// a row having been deleted out from under the cursor).
+//
+// On success, the *pDifferentRow parameter is false if the cursor is left
+// pointing at exactly the same row. *pDifferntRow is the row the cursor
+// was pointing to has been deleted, forcing the cursor to point to some
+// nearby row.
+//
+// This routine should only be called for a cursor that just returned
+// TRUE from sqlite3BtreeCursorHasMoved().
+func _sqlite3BtreeCursorRestore(tls *crt.TLS, _pCur *XBtCursor, _pDifferentRow *int32) (r0 int32) {
+ var _rc int32
func() {
if _pCur == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59888), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(78224)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59888), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(77105)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59889), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(78232)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59889), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(77113)))
crt.X__builtin_abort(tls)
}
}()
@@ -65110,25 +58071,17 @@ func _sqlite3BtreeCursorRestore(tls *crt.TLS, _pCur *XBtCursor, _pDifferentRow *
}
return i32(0)
}()
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ *_pDifferentRow = i32(1)
+ return _rc
}
-
- *_pDifferentRow = i32(1)
- return _rc
-
-_6:
- if int32(_pCur.X12) == i32(1) {
- goto _7
+ if int32(_pCur.X12) != i32(1) {
+ *_pDifferentRow = i32(1)
+ goto _8
}
-
- *_pDifferentRow = i32(1)
- goto _8
-
-_7:
func() {
if (_pCur.X9) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59898), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(78260)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59898), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(77140)))
crt.X__builtin_abort(tls)
}
}()
@@ -65137,382 +58090,362 @@ _8:
return i32(0)
}
-var _sqlite3BtreeCursorRestoreØ00__func__Ø000 [26]int8 // -
+var _sqlite3BtreeCursorRestoreØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeCursorRestoreØ00__func__Ø000[0], str(78280), 26)
+ crt.Xstrncpy(nil, &_sqlite3BtreeCursorRestoreØ00__func__Ø000[0], str(77158), 26)
}
-func _sqlite3BtreeCursorIsValid(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:63376:1
+// The next routine used only within assert() statements
+
+// Return true if the given BtCursor is valid. A valid cursor is one
+// that is currently pointing to a row in a (non-empty) table.
+// This is a verification routine is used only within assert() statements.
+func _sqlite3BtreeCursorIsValid(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
return bool2int((_pCur != nil) && (int32(_pCur.X12) == i32(1)))
}
-func _sqlite3BtreePayloadFetch(tls *crt.TLS, _pCur *XBtCursor, _pAmt *uint32) (r0 unsafe.Pointer) { // sqlite3.c:63845:1
+// For the entry that cursor pCur is point to, return as
+// many bytes of the key or data as are available on the local
+// b-tree page. Write the number of available bytes into *pAmt.
+//
+// The pointer returned is ephemeral. The key/data may move
+// or be destroyed on the next call to any Btree routine,
+// including calls from other threads against the same cache.
+// Hence, a mutex on the BtShared should be held prior to calling
+// this routine.
+//
+// These routines is used to get quick access to key and data
+// in the common case where no overflow pages are used.
+func _sqlite3BtreePayloadFetch(tls *crt.TLS, _pCur *XBtCursor, _pAmt *uint32) (r0 unsafe.Pointer) {
return _fetchPayload(tls, _pCur, _pAmt)
}
-func _fetchPayload(tls *crt.TLS, _pCur *XBtCursor, _pAmt *uint32) (r0 unsafe.Pointer) { // sqlite3.c:63811:1
- var _amt uint32 // sqlite3.c:63815:7
- _ = _amt
+// Return a pointer to payload information from the entry that the
+// pCur cursor is pointing to. The pointer is to the beginning of
+// the key if index btrees (pPage->intKey==0) and is the data for
+// table btrees (pPage->intKey==1). The number of bytes of available
+// key/data is written into *pAmt. If *pAmt==0, then the value
+// returned will not be a valid pointer.
+//
+// This routine is an optimization. It is common for the entire key
+// and data to fit on the local page and for there to be no overflow
+// pages. When that is so, this routine can be used to access the
+// key and data without making a copy. If the key and/or data spills
+// onto overflow pages, then accessPayload() must be used to reassemble
+// the key/data and copy it into a preallocated buffer.
+//
+// The pointer returned by this routine looks directly into the cached
+// page of the database. The data might change or move the next time
+// any btree routine is called.
+func _fetchPayload(tls *crt.TLS, _pCur *XBtCursor, _pAmt *uint32) (r0 unsafe.Pointer) {
+ var _amt uint32
func() {
if _pCur == nil || int32(_pCur.X14) < i32(0) || (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63816), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(78308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63816), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(77184)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63817), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(9240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63817), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(10390)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XBtree)(_pCur.X0).X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63818), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(74800)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63818), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(73849)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63819), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63819), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X16) >= int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63820), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(9452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63820), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(10597)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X4) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63821), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(78364)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63821), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(77239)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X1)) <= uintptr(unsafe.Pointer((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X19)) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63822), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(78384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63822), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(77258)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X1)) >= uintptr(unsafe.Pointer((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X20)) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63823), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(78452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63823), unsafe.Pointer((*int8)(unsafe.Pointer(&_fetchPayloadØ00__func__Ø000))), unsafe.Pointer(str(77325)))
crt.X__builtin_abort(tls)
}
}()
_amt = uint32(int32((uintptr(unsafe.Pointer((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X20)) - uintptr(unsafe.Pointer((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X1))) / 1))
- if uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3) >= _amt {
- goto _20
+ if uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X3) < _amt {
+ _amt = uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X3)
}
-
- _amt = uint32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X3)
-_20:
*_pAmt = _amt
/* X4 */
return (unsafe.Pointer)((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16))).X1)
}
-var _fetchPayloadØ00__func__Ø000 [13]int8 // -
+var _fetchPayloadØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_fetchPayloadØ00__func__Ø000[0], str(78524), 13)
+ crt.Xstrncpy(nil, &_fetchPayloadØ00__func__Ø000[0], str(77394), 13)
}
-func _sqlite3VdbeMemFromBtree(tls *crt.TLS, _pCur *XBtCursor, _offset uint32, _amt uint32, _pMem *XMem) (r0 int32) { // sqlite3.c:70680:1
- var _zData *int8 // sqlite3.c:70686:8
- _ = _zData
- var _available uint32 // sqlite3.c:70687:7
- _ = _available
- var _rc int32 // sqlite3.c:70688:7
- _ = _rc
+func _sqlite3VdbeMemFromBtree(tls *crt.TLS, _pCur *XBtCursor, _offset uint32, _amt uint32, _pMem *XMem) (r0 int32) {
+ var _rc int32
+ var _available uint32
+ var _zData *int8
_available = u32(0)
_rc = i32(0)
func() {
if _sqlite3BtreeCursorIsValid(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70690), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(78540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70690), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(77407)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pMem.X1) & i32(9312)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70691), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(78572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70691), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(77439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(5148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(6728)))
crt.X__builtin_abort(tls)
}
}()
_zData = (*int8)(_sqlite3BtreePayloadFetch(tls, _pCur, &_available))
func() {
if _zData == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70697), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(78596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70697), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemFromBtreeØ00__func__Ø000))), unsafe.Pointer(str(77461)))
crt.X__builtin_abort(tls)
}
}()
- if (_offset + _amt) > _available {
- goto _8
+ if (_offset + _amt) <= _available {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zData)) + 1*uintptr(_offset)))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4112))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32(_amt)
+ goto _9
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(16 /* X5 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zData)) + 1*uintptr(_offset)))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(4112))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32(_amt)
- goto _9
-
-_8:
_rc = _vdbeMemFromBtreeResize(tls, _pCur, _offset, _amt, _pMem)
_9:
return _rc
}
-var _sqlite3VdbeMemFromBtreeØ00__func__Ø000 [24]int8 // -
+var _sqlite3VdbeMemFromBtreeØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemFromBtreeØ00__func__Ø000[0], str(78608), 24)
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemFromBtreeØ00__func__Ø000[0], str(77470), 24)
}
-func _vdbeMemFromBtreeResize(tls *crt.TLS, _pCur *XBtCursor, _offset uint32, _amt uint32, _pMem *XMem) (r0 int32) { // sqlite3.c:70659:1
- var _rc int32 // sqlite3.c:70665:7
- _ = _rc
+// Move data out of a btree key or data field and into a Mem structure.
+// The data is payload from the entry that pCur is currently pointing
+// to. offset and amt determine what portion of the data or key to retrieve.
+// The result is written into the pMem element.
+//
+// The pMem object must have been initialized. This routine will use
+// pMem->zMalloc to hold the content from the btree, if possible. New
+// pMem->zMalloc space will be allocated if necessary. The calling routine
+// is responsible for making sure that the pMem object is eventually
+// destroyed.
+//
+// If this routine fails for any reason (malloc returns NULL or unable
+// to read from the disk) then the pMem is left in an inconsistent state.
+func _vdbeMemFromBtreeResize(tls *crt.TLS, _pCur *XBtCursor, _offset uint32, _amt uint32, _pMem *XMem) (r0 int32) {
+ var _rc int32
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(1))
if i32(0) != store1(&_rc, _sqlite3VdbeMemClearAndResize(tls, _pMem, int32(_amt+uint32(i32(2))))) {
goto _0
}
-
_rc = _sqlite3BtreePayload(tls, _pCur, _offset, _amt, (unsafe.Pointer)(_pMem.X5))
- if _rc != i32(0) {
- goto _1
+ if _rc == i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_amt))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_amt+uint32(i32(1))))) = int8(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(528))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32(_amt)
+ goto _2
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_amt))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(_amt+uint32(i32(1))))) = int8(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(528))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(12 /* X4 */))) = int32(_amt)
- goto _2
-
-_1:
_sqlite3VdbeMemRelease(tls, _pMem)
_2:
_0:
- r0 = _rc
- return
+ return _rc
}
-func _sqlite3VdbeOneByteSerialTypeLen(tls *crt.TLS, _serial_type uint8) (r0 uint8) { // sqlite3.c:74679:1
+func _sqlite3VdbeOneByteSerialTypeLen(tls *crt.TLS, _serial_type uint8) (r0 uint8) {
func() {
if int32(_serial_type) >= i32(128) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeOneByteSerialTypeLenØ00__func__Ø000))), unsafe.Pointer(str(78632)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeOneByteSerialTypeLenØ00__func__Ø000))), unsafe.Pointer(str(77494)))
crt.X__builtin_abort(tls)
}
}()
return *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3SmallTypeSizes)) + 1*uintptr(_serial_type)))
}
-var _sqlite3VdbeOneByteSerialTypeLenØ00__func__Ø000 [32]int8 // -
+var _sqlite3VdbeOneByteSerialTypeLenØ00__func__Ø000 [32]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeOneByteSerialTypeLenØ00__func__Ø000[0], str(78648), 32)
+ crt.Xstrncpy(nil, &_sqlite3VdbeOneByteSerialTypeLenØ00__func__Ø000[0], str(77510), 32)
}
-var _sqlite3VdbeExecØ00aFlagØ004 [2]uint16 // sqlite3.c:80964:24
+var _sqlite3VdbeExecØ00aFlagØ004 [2]uint16
func init() {
_sqlite3VdbeExecØ00aFlagØ004 = [2]uint16{u16(16), u16(514)}
}
-var _sqlite3VdbeExecØ00aZeroØ005 [16]uint8 // sqlite3.c:80996:17
+var _sqlite3VdbeExecØ00aZeroØ005 [16]uint8
-func _sqlite3VdbeSerialType(tls *crt.TLS, _pMem *XMem, _file_format int32, _pLen *uint32) (r0 uint32) { // sqlite3.c:74598:1
- var _flags int32 // sqlite3.c:74599:7
- _ = _flags
- var _n uint32 // sqlite3.c:74600:7
- _ = _n
- var _2_i int64 // sqlite3.c:74610:9
- _ = _2_i
- var _2_u uint64 // sqlite3.c:74611:9
- _ = _2_u
+// Return the serial-type for the value stored in pMem.
+func _sqlite3VdbeSerialType(tls *crt.TLS, _pMem *XMem, _file_format int32, _pLen *uint32) (r0 uint32) {
+ var _flags int32
+ var _2_i int64
+ var _n uint32
+ var _2_u uint64
_flags = int32(_pMem.X1)
func() {
if _pLen == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74602), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeØ00__func__Ø000))), unsafe.Pointer(str(78680)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74602), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeØ00__func__Ø000))), unsafe.Pointer(str(77542)))
crt.X__builtin_abort(tls)
}
}()
- if (_flags & i32(1)) == 0 {
- goto _2
+ if (_flags & i32(1)) != 0 {
+ *_pLen = uint32(i32(0))
+ return uint32(i32(0))
}
-
- *_pLen = uint32(i32(0))
- return uint32(i32(0))
-
-_2:
if (_flags & i32(4)) == 0 {
goto _3
}
-
- _2_i = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))
- if _2_i >= int64(i32(0)) {
- goto _4
+ _2_i = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))
+ if _2_i < int64(i32(0)) {
+ _2_u = uint64(^_2_i)
+ goto _5
}
-
- _2_u = uint64(^_2_i)
- goto _5
-
-_4:
_2_u = uint64(_2_i)
_5:
if _2_u > uint64(i32(127)) {
goto _6
}
-
- if (_2_i&int64(i32(1))) != _2_i || _file_format < i32(4) {
- goto _8
+ if ((_2_i & int64(i32(1))) == _2_i) && (_file_format >= i32(4)) {
+ *_pLen = uint32(i32(0))
+ return uint32(i32(8)) + uint32(_2_u)
}
-
- *_pLen = uint32(i32(0))
- return uint32(i32(8)) + uint32(_2_u)
-
-_8:
*_pLen = uint32(i32(1))
return uint32(i32(1))
_6:
- if _2_u > uint64(i32(32767)) {
- goto _10
+ if _2_u <= uint64(i32(32767)) {
+ *_pLen = uint32(i32(2))
+ return uint32(i32(2))
}
-
- *_pLen = uint32(i32(2))
- return uint32(i32(2))
-
-_10:
- if _2_u > uint64(i32(8388607)) {
- goto _11
+ if _2_u <= uint64(i32(8388607)) {
+ *_pLen = uint32(i32(3))
+ return uint32(i32(3))
}
-
- *_pLen = uint32(i32(3))
- return uint32(i32(3))
-
-_11:
- if _2_u > uint64(i32(2147483647)) {
- goto _12
+ if _2_u <= uint64(i32(2147483647)) {
+ *_pLen = uint32(i32(4))
+ return uint32(i32(4))
}
-
- *_pLen = uint32(i32(4))
- return uint32(i32(4))
-
-_12:
- if _2_u > uint64(i64(140737488355327)) {
- goto _13
+ if _2_u <= uint64(i64(140737488355327)) {
+ *_pLen = uint32(i32(6))
+ return uint32(i32(5))
}
-
- *_pLen = uint32(i32(6))
- return uint32(i32(5))
-
-_13:
*_pLen = uint32(i32(8))
return uint32(i32(6))
_3:
- if (_flags & i32(8)) == 0 {
- goto _14
+ if (_flags & i32(8)) != 0 {
+ *_pLen = uint32(i32(8))
+ return uint32(i32(7))
}
-
- *_pLen = uint32(i32(8))
- return uint32(i32(7))
-
-_14:
func() {
if ((*Xsqlite3)(_pMem.X9).X17) == 0 && (_flags&i32(18)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeØ00__func__Ø000))), unsafe.Pointer(str(78688)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeØ00__func__Ø000))), unsafe.Pointer(str(77550)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pMem.X4) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeØ00__func__Ø000))), unsafe.Pointer(str(4376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialTypeØ00__func__Ø000))), unsafe.Pointer(str(6001)))
crt.X__builtin_abort(tls)
}
}()
_n = uint32(_pMem.X4)
- if (_flags & i32(16384)) == 0 {
- goto _20
- }
-
- {
- p := &_n
- *p = (*p) + uint32(*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
- sink5 = *p
+ if (_flags & i32(16384)) != 0 {
+ {
+ p := &_n
+ *p = (*p) + uint32(*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ sink5 = *p
+ }
}
-_20:
*_pLen = _n
return ((_n * uint32(i32(2))) + uint32(i32(12))) + uint32(bool2int((_flags&i32(2)) != i32(0)))
}
-var _sqlite3VdbeSerialTypeØ00__func__Ø000 [22]int8 // -
+var _sqlite3VdbeSerialTypeØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSerialTypeØ00__func__Ø000[0], str(78740), 22)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSerialTypeØ00__func__Ø000[0], str(77601), 22)
}
-func _sqlite3PutVarint(tls *crt.TLS, _p *uint8, _v uint64) (r0 int32) { // sqlite3.c:28461:1
- if _v > uint64(i32(127)) {
- goto _0
+func _sqlite3PutVarint(tls *crt.TLS, _p *uint8, _v uint64) (r0 int32) {
+ if _v <= uint64(i32(127)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(0)))) = uint8(_v & uint64(i32(127)))
+ return i32(1)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(0)))) = uint8(_v & uint64(i32(127)))
- return i32(1)
-
-_0:
- if _v > uint64(i32(16383)) {
- goto _1
+ if _v <= uint64(i32(16383)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(0)))) = uint8(((_v >> uint(i32(7))) & uint64(i32(127))) | uint64(i32(128)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(1)))) = uint8(_v & uint64(i32(127)))
+ return i32(2)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(0)))) = uint8(((_v >> uint(i32(7))) & uint64(i32(127))) | uint64(i32(128)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(1)))) = uint8(_v & uint64(i32(127)))
- return i32(2)
-
-_1:
return _putVarint64(tls, _p, _v)
}
-func _putVarint64(tls *crt.TLS, _p *uint8, _v uint64) (r0 int32) { // sqlite3.c:28437:1
- var _i int32 // sqlite3.c:28438:7
- _ = _i
- var _j int32 // sqlite3.c:28438:10
- _ = _j
- var _n int32 // sqlite3.c:28438:13
- _ = _n
- var _buf [10]uint8 // sqlite3.c:28439:6
- _ = _buf
+// Write a 64-bit variable-length integer to memory starting at p[0].
+// The length of data write will be between 1 and 9 bytes. The number
+// of bytes written is returned.
+//
+// A variable-length integer consists of the lower 7 bits of each byte
+// for all bytes that have the 8th bit set and one byte with the 8th
+// bit clear. Except, if we get to the 9th byte, it stores the full
+// 8 bits and is the last byte.
+func _putVarint64(tls *crt.TLS, _p *uint8, _v uint64) (r0 int32) {
+ var _i, _j, _n int32
+ var _buf [10]uint8
if (_v & u64(18374686479671623680)) == 0 {
goto _0
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(i32(8)))) = uint8(_v)
{
p := &_v
*p = (*p) >> uint(i32(8))
- sink15 = *p
+ sink17 = *p
}
_i = i32(7)
_1:
if _i < i32(0) {
goto _4
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(_i))) = uint8((_v & uint64(i32(127))) | uint64(i32(128)))
{
p := &_v
*p = (*p) >> uint(i32(7))
- sink15 = *p
+ sink17 = *p
}
_i -= 1
goto _1
-
_4:
return i32(9)
@@ -65523,12 +58456,11 @@ _5:
{
p := &_v
*p = (*p) >> uint(i32(7))
- sink15 = *p
+ sink17 = *p
}
if _v != uint64(i32(0)) {
goto _5
}
-
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_buf)) + 1*uintptr(i32(0))))
*p = uint8(int32(*p) & i32(127))
@@ -65536,7 +58468,7 @@ _5:
}
func() {
if _n > i32(9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(28455), unsafe.Pointer((*int8)(unsafe.Pointer(&_putVarint64Ø00__func__Ø000))), unsafe.Pointer(str(78764)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(28455), unsafe.Pointer((*int8)(unsafe.Pointer(&_putVarint64Ø00__func__Ø000))), unsafe.Pointer(str(77623)))
crt.X__builtin_abort(tls)
}
}()
@@ -65545,47 +58477,39 @@ _8:
if _j < i32(0) {
goto _11
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 1*uintptr(_i))) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_buf)) + 1*uintptr(_j)))
*func() *int32 { _j -= 1; return &_i }() += 1
goto _8
-
_11:
return _n
+
+ _ = _buf
+ panic(0)
}
-var _putVarint64Ø00__func__Ø000 [12]int8 // -
+var _putVarint64Ø00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_putVarint64Ø00__func__Ø000[0], str(78772), 12)
+ crt.Xstrncpy(nil, &_putVarint64Ø00__func__Ø000[0], str(77628), 12)
}
-func _sqlite3VdbeSerialPut(tls *crt.TLS, _buf *uint8, _pMem *XMem, _serial_type uint32) (r0 uint32) { // sqlite3.c:74750:1
- var _len uint32 // sqlite3.c:74751:7
- _ = _len
- var _1_v uint64 // sqlite3.c:74755:9
- _ = _1_v
- var _1_i uint32 // sqlite3.c:74756:9
- _ = _1_i
+func _sqlite3VdbeSerialPut(tls *crt.TLS, _buf *uint8, _pMem *XMem, _serial_type uint32) (r0 uint32) {
+ var _len, _1_i uint32
+ var _1_v uint64
if _serial_type > uint32(i32(7)) || _serial_type <= uint32(i32(0)) {
goto _1
}
-
- if _serial_type != uint32(i32(7)) {
- goto _2
+ if _serial_type == uint32(i32(7)) {
+ i32(0)
+ crt.Xmemcpy(tls, (unsafe.Pointer)(&_1_v), (unsafe.Pointer)((*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */)))))), u32(8))
+ goto _3
}
-
- i32(0)
- crt.Xmemcpy(tls, (unsafe.Pointer)(&_1_v), (unsafe.Pointer)((*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem))+uintptr(0 /* X0 */)))))), u32(8))
- goto _3
-
-_2:
- _1_v = uint64(*(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ _1_v = uint64(*(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
_3:
_len = store5(&_1_i, uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3SmallTypeSizes)) + 1*uintptr(_serial_type)))))
func() {
if _1_i <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialPutØ00__func__Ø000))), unsafe.Pointer(str(11928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialPutØ00__func__Ø000))), unsafe.Pointer(str(12970)))
crt.X__builtin_abort(tls)
}
}()
@@ -65594,7 +58518,7 @@ _6:
{
p := &_1_v
*p = (*p) >> uint(i32(8))
- sink15 = *p
+ sink17 = *p
}
if _1_i != 0 {
goto _6
@@ -65605,176 +58529,172 @@ _1:
if _serial_type < uint32(i32(12)) {
goto _7
}
-
func() {
if ((_pMem.X4) + func() int32 {
if (int32(_pMem.X1) & i32(16384)) != 0 {
- return (*(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
+ return (*(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))
}
return i32(0)
}()) != int32(_sqlite3VdbeSerialTypeLen(tls, _serial_type)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74775), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialPutØ00__func__Ø000))), unsafe.Pointer(str(78784)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74775), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSerialPutØ00__func__Ø000))), unsafe.Pointer(str(77640)))
crt.X__builtin_abort(tls)
}
}()
_len = uint32(_pMem.X4)
- if _len <= uint32(i32(0)) {
- goto _12
+ if _len > uint32(i32(0)) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_buf), (unsafe.Pointer)(_pMem.X5), _len)
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_buf), (unsafe.Pointer)(_pMem.X5), _len)
-_12:
return _len
_7:
return uint32(i32(0))
}
-var _sqlite3VdbeSerialPutØ00__func__Ø000 [21]int8 // -
+var _sqlite3VdbeSerialPutØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSerialPutØ00__func__Ø000[0], str(78884), 21)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSerialPutØ00__func__Ø000[0], str(77739), 21)
}
-func _sqlite3BtreeCount(tls *crt.TLS, _pCur *XBtCursor, _pnEntry *int64) (r0 int32) { // sqlite3.c:67920:1
- var _nEntry int64 // sqlite3.c:67921:7
- _ = _nEntry
- var _rc int32 // sqlite3.c:67922:7
- _ = _rc
- var _2_iIdx int32 // sqlite3.c:67934:9
- _ = _2_iIdx
- var _2_pPage *XMemPage // sqlite3.c:67935:13
- _ = _2_pPage
+// The first argument, pCur, is a cursor opened on some b-tree. Count the
+// number of entries in the b-tree and write the result to *pnEntry.
+//
+// SQLITE_OK is returned if the operation is successfully executed.
+// Otherwise, if an error is encountered (i.e. an IO error or database
+// corruption) an SQLite error code is returned.
+func _sqlite3BtreeCount(tls *crt.TLS, _pCur *XBtCursor, _pnEntry *int64) (r0 int32) {
+ var _rc, _2_iIdx int32
+ var _nEntry int64
+ var _2_pPage *XMemPage
_nEntry = i64(0)
- if (_pCur.X7) != uint32(i32(0)) {
- goto _0
+ if (_pCur.X7) == uint32(i32(0)) {
+ *_pnEntry = int64(i32(0))
+ return i32(0)
}
-
- *_pnEntry = int64(i32(0))
- return i32(0)
-
-_0:
_rc = _moveToRoot(tls, _pCur)
_1:
if _rc != i32(0) {
goto _2
}
-
_2_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
- if (_2_pPage.X5) == 0 && (_2_pPage.X2) != 0 {
- goto _4
- }
-
- {
- p := &_nEntry
- *p = (*p) + int64(_2_pPage.X14)
- sink6 = *p
+ if ((_2_pPage.X5) != 0) || ((_2_pPage.X2) == 0) {
+ {
+ p := &_nEntry
+ *p = (*p) + int64(_2_pPage.X14)
+ sink6 = *p
+ }
}
-_4:
if (_2_pPage.X5) == 0 {
goto _5
}
-
_6:
- if int32(_pCur.X14) != i32(0) {
- goto _7
+ if int32(_pCur.X14) == i32(0) {
+ *_pnEntry = _nEntry
+ return _moveToRoot(tls, _pCur)
}
-
- *_pnEntry = _nEntry
- return _moveToRoot(tls, _pCur)
-
-_7:
_moveToParent(tls, _pCur)
if int32(_pCur.X16) >= int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) {
goto _6
}
-
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) += 1
_2_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
_5:
_2_iIdx = int32(_pCur.X16)
- if _2_iIdx != int32(_2_pPage.X14) {
- goto _8
+ if _2_iIdx == int32(_2_pPage.X14) {
+ _rc = _moveToChild(tls, _pCur, _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pPage.X19))+1*uintptr(int32(_2_pPage.X6)+i32(8))))))
+ goto _9
}
-
- _rc = _moveToChild(tls, _pCur, _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pPage.X19))+1*uintptr(int32(_2_pPage.X6)+i32(8))))))
- goto _9
-
-_8:
_rc = _moveToChild(tls, _pCur, _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_2_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_2_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pPage.X21))+1*uintptr(i32(2)*_2_iIdx))))) + 1*uintptr(i32(0)))))< i32(15) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(79112)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(77952)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3BtreeEnter(tls, _p)
func() {
if int32(_p.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67893), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(78980)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67893), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(77829)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XMemPage)(_pBt.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67894), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(79132)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67894), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(77970)))
crt.X__builtin_abort(tls)
}
}()
@@ -65821,44 +58740,39 @@ func _sqlite3BtreeUpdateMeta(tls *crt.TLS, _p *XBtree, _idx int32, _iMeta uint32
if _rc != i32(0) {
goto _7
}
-
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pP1))+1*uintptr(i32(36)+(_idx*i32(4))))), _iMeta)
- if _idx != i32(7) {
- goto _8
+ if _idx == i32(7) {
+ func() {
+ if (_pBt.X5) == 0 && _iMeta != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67901), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(77985)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _iMeta != uint32(i32(0)) && _iMeta != uint32(i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(78013)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(18 /* X6 */))) = uint8(_iMeta)
}
-
- func() {
- if (_pBt.X5) == 0 && _iMeta != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67901), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(79148)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _iMeta != uint32(i32(0)) && _iMeta != uint32(i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67902), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeUpdateMetaØ00__func__Ø000))), unsafe.Pointer(str(79176)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(18 /* X6 */))) = uint8(_iMeta)
-_8:
_7:
_sqlite3BtreeLeave(tls, _p)
return _rc
}
-var _sqlite3BtreeUpdateMetaØ00__func__Ø000 [23]int8 // -
+var _sqlite3BtreeUpdateMetaØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeUpdateMetaØ00__func__Ø000[0], str(79200), 23)
+ crt.Xstrncpy(nil, &_sqlite3BtreeUpdateMetaØ00__func__Ø000[0], str(78034), 23)
}
-func _allocateCursor(tls *crt.TLS, _p *TVdbe, _iCur int32, _nField int32, _iDb int32, _eCurType uint8) (r0 *XVdbeCursor) { // sqlite3.c:78385:1
- var _pMem *XMem // sqlite3.c:78410:7
- _ = _pMem
- var _nByte int32 // sqlite3.c:78412:7
- _ = _nByte
- var _pCx *XVdbeCursor // sqlite3.c:78413:14
- _ = _pCx
+// Allocate VdbeCursor number iCur. Return a pointer to it. Return NULL
+// if we run out of memory.
+func _allocateCursor(tls *crt.TLS, _p *TVdbe, _iCur int32, _nField int32, _iDb int32, _eCurType uint8) (r0 *XVdbeCursor) {
+ var _nByte int32
+ var _pMem *XMem
+ var _pCx *XVdbeCursor
_pMem = func() *XMem {
if _iCur > i32(0) {
return (*XMem)(unsafe.Pointer(uintptr(_p.X18) + 48*uintptr((_p.X6)-_iCur)))
@@ -65874,64 +58788,63 @@ func _allocateCursor(tls *crt.TLS, _p *TVdbe, _iCur int32, _nField int32, _iDb i
}()))
func() {
if _iCur < i32(0) || _iCur >= (_p.X7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78418), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateCursorØ00__func__Ø000))), unsafe.Pointer(str(79224)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78418), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateCursorØ00__func__Ø000))), unsafe.Pointer(str(78057)))
crt.X__builtin_abort(tls)
}
}()
- if (*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur)))) == nil {
- goto _7
+ if (*(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur)))) != nil {
+ _sqlite3VdbeFreeCursor(tls, _p, *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur))))
+ *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur))) = nil
}
-
- _sqlite3VdbeFreeCursor(tls, _p, *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur))))
- *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur))) = nil
-_7:
if i32(0) != _sqlite3VdbeMemClearAndResize(tls, _pMem, _nByte) {
goto _8
}
-
- *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur))) = store51(&_pCx, (*XVdbeCursor)(unsafe.Pointer(_pMem.X5)))
+ *(**XVdbeCursor)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X23)) + 4*uintptr(_iCur))) = store53(&_pCx, (*XVdbeCursor)(unsafe.Pointer(_pMem.X5)))
crt.Xmemset(tls, (unsafe.Pointer)(_pCx), i32(0), u32(32))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(0 /* X0 */))) = _eCurType
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(1 /* X1 */))) = int8(_iDb)
*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(52 /* X18 */))) = int16(_nField)
*(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(64 /* X21 */))) = (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx))+uintptr(80 /* X25 */))))) + 4*uintptr(_nField)))
- if int32(_eCurType) != i32(0) {
- goto _9
+ if int32(_eCurType) == i32(0) {
+ *(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */))))))) = (*XBtCursor)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(u32(88)+(u32(8)*uint32(_nField)))))))
+ _sqlite3BtreeCursorZero(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */)))))))
}
-
- *(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */))))))) = (*XBtCursor)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem.X5)) + 1*uintptr(u32(88)+(u32(8)*uint32(_nField)))))))
- _sqlite3BtreeCursorZero(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCx)) + uintptr(36 /* X14 */)))))))
-_9:
_8:
- r0 = _pCx
- return
+ return _pCx
}
-func _sqlite3BtreeCursorSize(tls *crt.TLS) (r0 int32) { // sqlite3.c:63290:1
+// Return the size of a BtCursor object in bytes.
+//
+// This interfaces is needed so that users of cursors can preallocate
+// sufficient storage to hold a cursor. The BtCursor object is opaque
+// to users so they cannot do the sizeof() themselves - they must call
+// this routine.
+func _sqlite3BtreeCursorSize(tls *crt.TLS) (r0 int32) {
return int32(u32(192))
}
-var _allocateCursorØ00__func__Ø000 [15]int8 // -
+var _allocateCursorØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_allocateCursorØ00__func__Ø000[0], str(79252), 15)
+ crt.Xstrncpy(nil, &_allocateCursorØ00__func__Ø000[0], str(78084), 15)
}
-func _sqlite3BtreeCursorZero(tls *crt.TLS, _p *XBtCursor) { // sqlite3.c:63302:1
+// Initialize memory that will be converted into a BtCursor object.
+//
+// The simple approach here would be to memset() the entire object
+// to zero. But it turns out that the apPage[] and aiIdx[] arrays
+// do not need to be zeroed and they are large, so we can save a lot
+// of run-time by skipping the initialization of those elements.
+func _sqlite3BtreeCursorZero(tls *crt.TLS, _p *XBtCursor) {
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(64))
}
-func _sqlite3BtreeCursor(tls *crt.TLS, _p *XBtree, _iTable int32, _wrFlag int32, _pKeyInfo *XKeyInfo, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:63264:1
- var _rc int32 // sqlite3.c:63271:7
- _ = _rc
- if _iTable >= i32(1) {
- goto _0
+func _sqlite3BtreeCursor(tls *crt.TLS, _p *XBtree, _iTable int32, _wrFlag int32, _pKeyInfo *XKeyInfo, _pCur *XBtCursor) (r0 int32) {
+ var _rc int32
+ if _iTable < i32(1) {
+ _rc = _sqlite3CorruptError(tls, i32(63273))
+ goto _1
}
-
- _rc = _sqlite3CorruptError(tls, i32(63273))
- goto _1
-
-_0:
_sqlite3BtreeEnter(tls, _p)
_rc = _btreeCursor(tls, _p, _iTable, _wrFlag, _pKeyInfo, _pCur)
_sqlite3BtreeLeave(tls, _p)
@@ -65939,21 +58852,59 @@ _1:
return _rc
}
-func _btreeCursor(tls *crt.TLS, _p *XBtree, _iTable int32, _wrFlag int32, _pKeyInfo *XKeyInfo, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:63204:1
- var _pBt *XBtShared // sqlite3.c:63211:12
- _ = _pBt
- var _pX *XBtCursor // sqlite3.c:63212:12
- _ = _pX
+// Create a new cursor for the BTree whose root is on the page
+// iTable. If a read-only cursor is requested, it is assumed that
+// the caller already has at least a read-only transaction open
+// on the database already. If a write-cursor is requested, then
+// the caller is assumed to have an open write transaction.
+//
+// If the BTREE_WRCSR bit of wrFlag is clear, then the cursor can only
+// be used for reading. If the BTREE_WRCSR bit is set, then the cursor
+// can be used for reading or for writing if other conditions for writing
+// are also met. These are the conditions that must be met in order
+// for writing to be allowed:
+//
+// 1: The cursor must have been opened with wrFlag containing BTREE_WRCSR
+//
+// 2: Other database connections that share the same pager cache
+// but which are not in the READ_UNCOMMITTED state may not have
+// cursors open with wrFlag==0 on the same table. Otherwise
+// the changes made by this write cursor would be visible to
+// the read cursors in the other database connection.
+//
+// 3: The database must be writable (not on read-only media)
+//
+// 4: There must be an active transaction.
+//
+// The BTREE_FORDELETE bit of wrFlag may optionally be set if BTREE_WRCSR
+// is set. If FORDELETE is set, that is a hint to the implementation that
+// this cursor will only be used to seek to and delete entries of an index
+// as part of a larger DELETE statement. The FORDELETE hint is not used by
+// this implementation. But in a hypothetical alternative storage engine
+// in which index entries are automatically deleted when corresponding table
+// rows are deleted, the FORDELETE flag is a hint that all SEEK and DELETE
+// operations on this cursor can be no-ops and all READ operations can
+// return a null row (2-bytes: 0x01 0x00).
+//
+// No checking is done to make sure that page iTable really is the
+// root page of a b-tree. If it is not, then the cursor acquired
+// will not work correctly.
+//
+// It is assumed that the sqlite3BtreeCursorZero() has been called
+// on pCur to initialize the memory space prior to invoking this routine.
+func _btreeCursor(tls *crt.TLS, _p *XBtree, _iTable int32, _wrFlag int32, _pKeyInfo *XKeyInfo, _pCur *XBtCursor) (r0 int32) {
+ var _pBt *XBtShared
+ var _pX *XBtCursor
_pBt = (*XBtShared)(_p.X1)
func() {
if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63214), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63214), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _wrFlag != i32(0) && _wrFlag != i32(4) && _wrFlag != i32(12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63215), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(79268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63215), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(78099)))
crt.X__builtin_abort(tls)
}
}()
@@ -65964,64 +58915,57 @@ func _btreeCursor(tls *crt.TLS, _p *XBtree, _iTable int32, _wrFlag int32, _pKeyI
}
return i32(1)
}()) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63224), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(79344)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63224), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(78173)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _wrFlag != i32(0) && _hasReadConflicts(tls, _p, uint32(_iTable)) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63225), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(79408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63225), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(78235)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X2) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63228), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(55928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63228), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(54142)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _wrFlag != i32(0) && int32(_p.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63229), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(79452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63229), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(78277)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XMemPage)(_pBt.X3) == nil || ((*XMemPage)(_pBt.X3).X19) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63230), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(79492)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63230), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(78314)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _wrFlag != i32(0) && (int32(_pBt.X10)&i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63231), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(79528)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63231), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(78348)))
crt.X__builtin_abort(tls)
}
}()
if _wrFlag == 0 {
goto _24
}
-
_allocateTempSpace(tls, _pBt)
- if (_pBt.X27) != nil {
- goto _25
+ if (_pBt.X27) == nil {
+ return _sqlite3NomemError(tls, i32(63235))
}
- return _sqlite3NomemError(tls, i32(63235))
-
-_25:
_24:
- if _iTable != i32(1) || _btreePagecount(tls, _pBt) != uint32(i32(0)) {
- goto _27
+ if (_iTable == i32(1)) && (_btreePagecount(tls, _pBt) == uint32(i32(0))) {
+ func() {
+ if _wrFlag != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63238), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(78396)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _iTable = i32(0)
}
-
- func() {
- if _wrFlag != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63238), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCursorØ00__func__Ø000))), unsafe.Pointer(str(79576)))
- crt.X__builtin_abort(tls)
- }
- }()
- _iTable = i32(0)
-_27:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(48 /* X7 */))) = uint32(_iTable)
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) = int8(i32(-1))
*(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(108 /* X18 */))))) = _pKeyInfo
@@ -66044,25 +58988,20 @@ _34:
if _pX == nil {
goto _37
}
-
- if (_pX.X7) != uint32(_iTable) {
- goto _38
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(60 /* X10 */)))
- *p = uint8(int32(*p) | i32(32))
- sink2 = *p
- }
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
- *p = uint8(int32(*p) | i32(32))
- sink2 = *p
+ if (_pX.X7) == uint32(_iTable) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(60 /* X10 */)))
+ *p = uint8(int32(*p) | i32(32))
+ sink2 = *p
+ }
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
+ *p = uint8(int32(*p) | i32(32))
+ sink2 = *p
+ }
}
-_38:
_pX = (*XBtCursor)(_pX.X2)
goto _34
-
_37:
*(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(8 /* X2 */))))) = (*XBtCursor)(_pBt.X2)
*(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(8 /* X2 */))))) = _pCur
@@ -66070,66 +59009,67 @@ _37:
return i32(0)
}
-var _btreeCursorØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_btreeCursorØ00__func__Ø000[0], str(79588), 12)
-}
-
-func _hasSharedCacheTableLock(tls *crt.TLS, _pBtree *XBtree, _iRoot uint32, _isIndex int32, _eLockType int32) (r0 int32) { // sqlite3.c:59174:1
- var _pSchema *XSchema // sqlite3.c:59180:10
- _ = _pSchema
- var _iTab uint32 // sqlite3.c:59181:8
- _ = _iTab
- var _pLock *XBtLock // sqlite3.c:59182:10
- _ = _pLock
- var _3_p *XHashElem // sqlite3.c:59208:14
- _ = _3_p
- var _4_pIdx *XIndex // sqlite3.c:59210:13
- _ = _4_pIdx
+var _btreeCursorØ00__func__Ø000 [12]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_btreeCursorØ00__func__Ø000[0], str(78406), 12)
+}
+
+// **** This function is only used as part of an assert() statement. ***
+//
+// Check to see if pBtree holds the required locks to read or write to the
+// table with root page iRoot. Return 1 if it does and 0 if not.
+//
+// For example, when writing to a table with root-page iRoot via
+// Btree connection pBtree:
+//
+// assert( hasSharedCacheTableLock(pBtree, iRoot, 0, WRITE_LOCK) );
+//
+// When writing to an index that resides in a sharable database, the
+// caller should have first obtained a lock specifying the root page of
+// the corresponding table. This makes things a bit more complicated,
+// as this module treats each table as a separate structure. To determine
+// the table corresponding to the index being written, this
+// function has to search through the database schema.
+//
+// Instead of a lock on the table/index rooted at page iRoot, the caller may
+// hold a write-lock on the schema table (root page 1). This is also
+// acceptable.
+func _hasSharedCacheTableLock(tls *crt.TLS, _pBtree *XBtree, _iRoot uint32, _isIndex int32, _eLockType int32) (r0 int32) {
+ var _iTab uint32
+ var _pSchema *XSchema
+ var _3_p *XHashElem
+ var _pLock *XBtLock
+ var _4_pIdx *XIndex
_pSchema = (*XSchema)((*XBtShared)(_pBtree.X1).X19)
_iTab = u32(0)
- if int32(_pBtree.X3) != i32(0) && (_eLockType != i32(1) || (((*Xsqlite3)(_pBtree.X0).X6)&i32(16384)) == 0) {
- goto _2
+ if (int32(_pBtree.X3) == i32(0)) || ((_eLockType == i32(1)) && (((*Xsqlite3)(_pBtree.X0).X6)&i32(16384)) != 0) {
+ return i32(1)
}
- return i32(1)
-
-_2:
- if _isIndex == 0 || _pSchema != nil && (int32(_pSchema.X9)&i32(1)) != i32(0) {
- goto _5
+ if _isIndex != 0 && ((_pSchema == nil) || ((int32(_pSchema.X9) & i32(1)) == i32(0))) {
+ return i32(1)
}
- return i32(1)
-
-_5:
if _isIndex == 0 {
goto _6
}
-
_3_p = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(24 /* X3 */))).X2)
_7:
if _3_p == nil {
goto _10
}
-
_4_pIdx = (*XIndex)(_3_p.X2)
if (_4_pIdx.X11) != int32(_iRoot) {
goto _11
}
-
- if _iTab == 0 {
- goto _12
+ if _iTab != 0 {
+ return i32(1)
}
- return i32(1)
-
-_12:
_iTab = uint32((*XTable)(_4_pIdx.X3).X7)
_11:
_3_p = (*XHashElem)(_3_p.X0)
goto _7
-
_10:
goto _13
-
_6:
_iTab = _iRoot
_13:
@@ -66138,179 +59078,166 @@ _14:
if _pLock == nil {
goto _17
}
-
- if (*XBtree)(_pLock.X0) != _pBtree || (_pLock.X1) != _iTab && (int32(_pLock.X2) != i32(2) || (_pLock.X1) != uint32(i32(1))) || int32(_pLock.X2) < _eLockType {
- goto _22
+ if (((*XBtree)(_pLock.X0) == _pBtree) && (((_pLock.X1) == _iTab) || ((int32(_pLock.X2) == i32(2)) && ((_pLock.X1) == uint32(i32(1)))))) && (int32(_pLock.X2) >= _eLockType) {
+ return i32(1)
}
- return i32(1)
-
-_22:
_pLock = (*XBtLock)(_pLock.X3)
goto _14
-
_17:
return i32(0)
}
-func _hasReadConflicts(tls *crt.TLS, _pBtree *XBtree, _iRoot uint32) (r0 int32) { // sqlite3.c:59261:1
- var _p *XBtCursor // sqlite3.c:59262:12
- _ = _p
+// **** This function may be used as part of assert() statements only. ****
+//
+// Return true if it would be illegal for pBtree to write into the
+// table or index rooted at iRoot because other shared connections are
+// simultaneously reading that same table or index.
+//
+// It is illegal for pBtree to write if some other Btree object that
+// shares the same BtShared object is currently reading or writing
+// the iRoot table. Except, if the other Btree object has the
+// read-uncommitted flag set, then it is OK for the other object to
+// have a read cursor.
+//
+// For example, before writing to any part of the table or index
+// rooted at page iRoot, one should call:
+//
+// assert( !hasReadConflicts(pBtree, iRoot) );
+func _hasReadConflicts(tls *crt.TLS, _pBtree *XBtree, _iRoot uint32) (r0 int32) {
+ var _p *XBtCursor
_p = (*XBtCursor)((*XBtShared)(_pBtree.X1).X2)
_0:
if _p == nil {
goto _3
}
-
- if (_p.X7) != _iRoot || (*XBtree)(_p.X0) == _pBtree || i32(0) != (((*Xsqlite3)((*XBtree)(_p.X0).X0).X6)&i32(16384)) {
- goto _6
+ if (((_p.X7) == _iRoot) && ((*XBtree)(_p.X0) != _pBtree)) && (i32(0) == (((*Xsqlite3)((*XBtree)(_p.X0).X0).X6) & i32(16384))) {
+ return i32(1)
}
- return i32(1)
-
-_6:
_p = (*XBtCursor)(_p.X2)
goto _0
-
_3:
return i32(0)
}
-func _allocateTempSpace(tls *crt.TLS, _pBt *XBtShared) { // sqlite3.c:61558:1
+// Make sure pBt->pTmpSpace points to an allocation of
+// MX_CELL_SIZE(pBt) bytes with a 4-byte prefix for a left-child
+// pointer.
+func _allocateTempSpace(tls *crt.TLS, _pBt *XBtShared) {
if (_pBt.X27) != nil {
goto _0
}
-
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(80 /* X27 */))) = (*uint8)(_sqlite3PageMalloc(tls, int32(_pBt.X15)))
- if (_pBt.X27) == nil {
- goto _1
- }
-
- crt.Xmemset(tls, (unsafe.Pointer)(_pBt.X27), i32(0), uint32(i32(8)))
- {
- p := (**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(80 /* X27 */)))
- *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(4))))
- sink11 = *p
+ if (_pBt.X27) != nil {
+ crt.Xmemset(tls, (unsafe.Pointer)(_pBt.X27), i32(0), uint32(i32(8)))
+ {
+ p := (**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(80 /* X27 */)))
+ *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(4))))
+ sink13 = *p
+ }
}
-_1:
_0:
}
-func _sqlite3BtreeCursorHintFlags(tls *crt.TLS, _pCur *XBtCursor, _x uint32) { // sqlite3.c:59918:1
+// Provide flag hints to the cursor.
+func _sqlite3BtreeCursorHintFlags(tls *crt.TLS, _pCur *XBtCursor, _x uint32) {
func() {
if _x != uint32(i32(2)) && _x != uint32(i32(1)) && _x != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorHintFlagsØ00__func__Ø000))), unsafe.Pointer(str(79600)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59919), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorHintFlagsØ00__func__Ø000))), unsafe.Pointer(str(78418)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(63 /* X13 */))) = uint8(_x)
}
-var _sqlite3BtreeCursorHintFlagsØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeCursorHintFlagsØ00__func__Ø000[0], str(79648), 28)
-}
-
-func _sqlite3BtreeOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zFilename *int8, _db *Xsqlite3, _ppBtree **XBtree, _flags int32, _vfsFlags int32) (r0 int32) { // sqlite3.c:61227:1
- var _pBt *XBtShared // sqlite3.c:61235:12
- _ = _pBt
- var _p *XBtree // sqlite3.c:61236:9
- _ = _p
- var _mutexOpen *Xsqlite3_mutex // sqlite3.c:61237:17
- _ = _mutexOpen
- var _rc int32 // sqlite3.c:61238:7
- _ = _rc
- var _nReserve uint8 // sqlite3.c:61239:6
- _ = _nReserve
- var _zDbHeader [100]uint8 // sqlite3.c:61240:17
- _ = _zDbHeader
- var _isTempDb int32 // sqlite3.c:61243:13
- _ = _isTempDb
- var _isMemdb int32 // sqlite3.c:61251:13
- _ = _isMemdb
- var _5_nFilename int32 // sqlite3.c:61291:11
- _ = _5_nFilename
- var _5_nFullPathname int32 // sqlite3.c:61292:11
- _ = _5_nFullPathname
- var _5_zFullPathname *int8 // sqlite3.c:61293:12
- _ = _5_zFullPathname
- var _5_mutexShared *Xsqlite3_mutex // sqlite3.c:61294:34
- _ = _5_mutexShared
- var _11_iDb int32 // sqlite3.c:61322:15
- _ = _11_iDb
- var _12_pExisting *XBtree // sqlite3.c:61324:19
- _ = _12_pExisting
- var _22_mutexShared *Xsqlite3_mutex // sqlite3.c:61431:34
- _ = _22_mutexShared
- var _25_i int32 // sqlite3.c:61454:9
- _ = _25_i
- var _25_pSib *XBtree // sqlite3.c:61455:11
- _ = _25_pSib
- var _35_pFile *Xsqlite3_file // sqlite3.c:61490:18
- _ = _35_pFile
+var _sqlite3BtreeCursorHintFlagsØ00__func__Ø000 [28]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeCursorHintFlagsØ00__func__Ø000[0], str(78464), 28)
+}
+
+// Open a database file.
+//
+// zFilename is the name of the database file. If zFilename is NULL
+// then an ephemeral database is created. The ephemeral database might
+// be exclusively in memory, or it might use a disk-based memory cache.
+// Either way, the ephemeral database will be automatically deleted
+// when sqlite3BtreeClose() is called.
+//
+// If zFilename is ":memory:" then an in-memory database is created
+// that is automatically destroyed when it is closed.
+//
+// The "flags" parameter is a bitmask that might contain bits like
+// BTREE_OMIT_JOURNAL and/or BTREE_MEMORY.
+//
+// If the database is already opened in the same database connection
+// and we are in shared cache mode, then the open will fail with an
+// SQLITE_CONSTRAINT error. We cannot allow two or more BtShared
+// objects in the same database connection since doing so will lead
+// to problems with locking.
+func _sqlite3BtreeOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zFilename *int8, _db *Xsqlite3, _ppBtree **XBtree, _flags int32, _vfsFlags int32) (r0 int32) {
+ var _rc, _isTempDb, _isMemdb, _5_nFilename, _5_nFullPathname, _11_iDb, _25_i int32
+ var _5_zFullPathname *int8
+ var _nReserve uint8
+ var _mutexOpen, _5_mutexShared, _22_mutexShared *Xsqlite3_mutex
+ var _p, _12_pExisting, _25_pSib *XBtree
+ var _35_pFile *Xsqlite3_file
+ var _zDbHeader [100]uint8
+ var _pBt *XBtShared
_pBt = nil
_mutexOpen = nil
_rc = i32(0)
_isTempDb = bool2int((_zFilename == nil) || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFilename)) + 1*uintptr(i32(0))))) == i32(0)))
- _isMemdb = bool2int((((_zFilename != nil) && (crt.Xstrcmp(tls, _zFilename, str(79676)) == i32(0))) || (_isTempDb != 0 && _sqlite3TempInMemory(tls, _db) != 0)) || ((_vfsFlags & i32(128)) != i32(0)))
+ _isMemdb = bool2int((((_zFilename != nil) && (crt.Xstrcmp(tls, _zFilename, str(78492)) == i32(0))) || (_isTempDb != 0 && _sqlite3TempInMemory(tls, _db) != 0)) || ((_vfsFlags & i32(128)) != i32(0)))
func() {
if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61256), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pVfs == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61257), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79688)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61257), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78501)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61258), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(863)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_flags & i32(255)) != _flags {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61259), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78509)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_flags&i32(8)) != i32(0) && (_flags&i32(4)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61262), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79716)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61262), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78529)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_flags&i32(4)) != i32(0) && _isTempDb == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61265), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79776)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61265), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78587)))
crt.X__builtin_abort(tls)
}
}()
- if _isMemdb == 0 {
- goto _19
- }
-
- {
- p := &_flags
- *p = (*p) | i32(2)
- sink1 = *p
+ if _isMemdb != 0 {
+ {
+ p := &_flags
+ *p = (*p) | i32(2)
+ sink1 = *p
+ }
}
-_19:
- if (_vfsFlags&i32(256)) == i32(0) || _isMemdb == 0 && _isTempDb == 0 {
- goto _22
+ if ((_vfsFlags & i32(256)) != i32(0)) && (_isMemdb != 0 || _isTempDb != 0) {
+ _vfsFlags = (_vfsFlags & i32(-257)) | i32(512)
}
-
- _vfsFlags = (_vfsFlags & i32(-257)) | i32(512)
-_22:
_p = (*XBtree)(_sqlite3MallocZero(tls, uint64(u32(48))))
- if _p != nil {
- goto _23
+ if _p == nil {
+ return _sqlite3NomemError(tls, i32(61275))
}
- return _sqlite3NomemError(tls, i32(61275))
-
-_23:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = uint8(i32(0))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _db
*(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XBtLock)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X11 */))))) + uintptr(0 /* X0 */))))) = _p
@@ -66318,11 +59245,9 @@ _23:
if _isTempDb != i32(0) || _isMemdb != i32(0) && (_vfsFlags&i32(64)) == i32(0) {
goto _26
}
-
if (_vfsFlags & i32(131072)) == 0 {
goto _27
}
-
_5_nFilename = _sqlite3Strlen30(tls, _zFilename) + i32(1)
_5_nFullPathname = (_pVfs.X2) + i32(1)
_5_zFullPathname = (*int8)(_sqlite3Malloc(tls, uint64(func() int32 {
@@ -66332,32 +59257,20 @@ _23:
return _5_nFilename
}())))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(9 /* X3 */))) = uint8(i32(1))
- if _5_zFullPathname != nil {
- goto _30
+ if _5_zFullPathname == nil {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p))
+ return _sqlite3NomemError(tls, i32(61299))
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_p))
- return _sqlite3NomemError(tls, i32(61299))
-
-_30:
- if _isMemdb == 0 {
- goto _31
+ if _isMemdb != 0 {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_5_zFullPathname), (unsafe.Pointer)(_zFilename), uint32(_5_nFilename))
+ goto _32
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_5_zFullPathname), (unsafe.Pointer)(_zFilename), uint32(_5_nFilename))
- goto _32
-
-_31:
_rc = _sqlite3OsFullPathname(tls, _pVfs, _zFilename, _5_nFullPathname, _5_zFullPathname)
- if _rc == 0 {
- goto _33
+ if _rc != 0 {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_5_zFullPathname))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p))
+ return _rc
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_5_zFullPathname))
- Xsqlite3_free(tls, (unsafe.Pointer)(_p))
- return _rc
-
-_33:
_32:
_mutexOpen = _sqlite3MutexAlloc(tls, i32(4))
Xsqlite3_mutex_enter(tls, _mutexOpen)
@@ -66368,52 +59281,41 @@ _34:
if _pBt == nil {
goto _37
}
-
func() {
if (_pBt.X23) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61319), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61319), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78625)))
crt.X__builtin_abort(tls)
}
}()
if i32(0) != crt.Xstrcmp(tls, _5_zFullPathname, _sqlite3PagerFilename(tls, (*XPager)(_pBt.X0), i32(0))) || _sqlite3PagerVfs(tls, (*XPager)(_pBt.X0)) != _pVfs {
goto _41
}
-
_11_iDb = (_db.X5) - i32(1)
_42:
if _11_iDb < i32(0) {
goto _45
}
-
_12_pExisting = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_11_iDb))).X1)
- if _12_pExisting == nil || (*XBtShared)(_12_pExisting.X1) != _pBt {
- goto _47
+ if (_12_pExisting != nil) && ((*XBtShared)(_12_pExisting.X1) == _pBt) {
+ Xsqlite3_mutex_leave(tls, _5_mutexShared)
+ Xsqlite3_mutex_leave(tls, _mutexOpen)
+ Xsqlite3_free(tls, (unsafe.Pointer)(_5_zFullPathname))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p))
+ return i32(19)
}
-
- Xsqlite3_mutex_leave(tls, _5_mutexShared)
- Xsqlite3_mutex_leave(tls, _mutexOpen)
- Xsqlite3_free(tls, (unsafe.Pointer)(_5_zFullPathname))
- Xsqlite3_free(tls, (unsafe.Pointer)(_p))
- return i32(19)
-
-_47:
_11_iDb -= 1
goto _42
-
_45:
*(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = _pBt
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(64 /* X23 */))) += 1
goto _37
-
_41:
_pBt = (*XBtShared)(_pBt.X24)
goto _34
-
_37:
Xsqlite3_mutex_leave(tls, _5_mutexShared)
Xsqlite3_free(tls, (unsafe.Pointer)(_5_zFullPathname))
goto _48
-
_27:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(9 /* X3 */))) = uint8(i32(1))
_48:
@@ -66421,74 +59323,54 @@ _26:
if _pBt != nil {
goto _49
}
-
i32(0)
i32(0)
i32(0)
i32(0)
i32(0)
_pBt = (*XBtShared)(_sqlite3MallocZero(tls, uint64(u32(84))))
- if _pBt != nil {
- goto _50
+ if _pBt == nil {
+ _rc = _sqlite3NomemError(tls, i32(61367))
+ goto _btree_open_out
}
-
- _rc = _sqlite3NomemError(tls, i32(61367))
- goto _btree_open_out
-
-_50:
_rc = _sqlite3PagerOpen(tls, _pVfs, (**XPager)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(0 /* X0 */))))), _zFilename, int32(u32(84)), _flags, _vfsFlags, _pageReinit)
- if _rc != i32(0) {
- goto _51
- }
-
- _sqlite3PagerSetMmapLimit(tls, (*XPager)(_pBt.X0), _db.X8)
- _rc = _sqlite3PagerReadFileheader(tls, (*XPager)(_pBt.X0), int32(u32(100)), (*uint8)(unsafe.Pointer(&_zDbHeader)))
-_51:
if _rc == i32(0) {
- goto _52
+ _sqlite3PagerSetMmapLimit(tls, (*XPager)(_pBt.X0), _db.X8)
+ _rc = _sqlite3PagerReadFileheader(tls, (*XPager)(_pBt.X0), int32(u32(100)), (*uint8)(unsafe.Pointer(&_zDbHeader)))
+ }
+ if _rc != i32(0) {
+ goto _btree_open_out
}
-
- goto _btree_open_out
-
-_52:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(16 /* X4 */))) = uint8(_flags)
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(4 /* X1 */))))) = _db
_sqlite3PagerSetBusyhandler(tls, (*XPager)(_pBt.X0), _btreeInvokeBusyHandler, (unsafe.Pointer)(_pBt))
*(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = _pBt
*(**XBtCursor)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(8 /* X2 */))))) = nil
*(**XMemPage)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(12 /* X3 */))))) = nil
- if _sqlite3PagerIsreadonly(tls, (*XPager)(_pBt.X0)) == 0 {
- goto _53
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
+ if _sqlite3PagerIsreadonly(tls, (*XPager)(_pBt.X0)) != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
+ }
}
-_53:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(32 /* X15 */))) = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_zDbHeader)) + 1*uintptr(i32(16))))) << uint(i32(8))) | (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_zDbHeader)) + 1*uintptr(i32(17))))) << uint(i32(16))))
if (_pBt.X15) >= uint32(i32(512)) && (_pBt.X15) <= uint32(i32(65536)) && (((_pBt.X15)-uint32(i32(1)))&(_pBt.X15)) == uint32(i32(0)) {
goto _56
}
-
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(32 /* X15 */))) = uint32(i32(0))
- if _zFilename == nil || _isMemdb != 0 {
- goto _58
+ if (_zFilename != nil) && (_isMemdb == 0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(17 /* X5 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(18 /* X6 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(17 /* X5 */))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(18 /* X6 */))) = uint8(i32(0))
-_58:
_nReserve = uint8(i32(0))
goto _59
-
_56:
_nReserve = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_zDbHeader)) + 1*uintptr(i32(20))))
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
*p = uint16(int32(*p) | i32(2))
- sink12 = *p
+ sink14 = *p
}
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(17 /* X5 */))) = uint8(func() int32 {
if _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_zDbHeader))+1*uintptr(i32(52))))) != 0 {
@@ -66504,17 +59386,13 @@ _56:
}())
_59:
_rc = _sqlite3PagerSetPagesize(tls, (*XPager)(_pBt.X0), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(32 /* X15 */))), int32(_nReserve))
- if _rc == 0 {
- goto _64
+ if _rc != 0 {
+ goto _btree_open_out
}
-
- goto _btree_open_out
-
-_64:
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(36 /* X16 */))) = (_pBt.X15) - uint32(_nReserve)
func() {
if ((_pBt.X15) & uint32(i32(7))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61424), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79828)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61424), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78637)))
crt.X__builtin_abort(tls)
}
}()
@@ -66522,21 +59400,15 @@ _64:
if (_p.X3) == 0 {
goto _67
}
-
_22_mutexShared = _sqlite3MutexAlloc(tls, i32(2))
if i32(1) == 0 || (_sqlite3Config.X1) == 0 {
goto _69
}
-
*(**Xsqlite3_mutex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(56 /* X21 */))))) = _sqlite3MutexAlloc(tls, i32(0))
- if (*Xsqlite3_mutex)(_pBt.X21) != nil {
- goto _70
+ if (*Xsqlite3_mutex)(_pBt.X21) == nil {
+ _rc = _sqlite3NomemError(tls, i32(61436))
+ goto _btree_open_out
}
-
- _rc = _sqlite3NomemError(tls, i32(61436))
- goto _btree_open_out
-
-_70:
_69:
Xsqlite3_mutex_enter(tls, _22_mutexShared)
*(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(68 /* X24 */))))) = _sqlite3SharedCacheList
@@ -66548,61 +59420,41 @@ _49:
if (_p.X3) == 0 {
goto _71
}
-
_25_i = i32(0)
_72:
if _25_i >= (_db.X5) {
goto _75
}
-
- if store52(&_25_pSib, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_25_i))).X1)) == nil || (_25_pSib.X3) == 0 {
+ if store54(&_25_pSib, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_25_i))).X1)) == nil || (_25_pSib.X3) == 0 {
goto _77
}
-
_78:
- if (*XBtree)(_25_pSib.X10) == nil {
- goto _79
+ if (*XBtree)(_25_pSib.X10) != nil {
+ _25_pSib = (*XBtree)(_25_pSib.X10)
+ goto _78
}
-
- _25_pSib = (*XBtree)(_25_pSib.X10)
- goto _78
-
-_79:
- if uint32(uintptr(unsafe.Pointer((*XBtShared)(_p.X1)))) >= uint32(uintptr(unsafe.Pointer((*XBtShared)(_25_pSib.X1)))) {
- goto _80
+ if uint32(uintptr(unsafe.Pointer((*XBtShared)(_p.X1)))) < uint32(uintptr(unsafe.Pointer((*XBtShared)(_25_pSib.X1)))) {
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X9 */))))) = _25_pSib
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X10 */))))) = nil
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_25_pSib)) + uintptr(28 /* X10 */))))) = _p
+ goto _81
}
-
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X9 */))))) = _25_pSib
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X10 */))))) = nil
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_25_pSib)) + uintptr(28 /* X10 */))))) = _p
- goto _81
-
-_80:
_82:
- if (*XBtree)(_25_pSib.X9) == nil || uint32(uintptr(unsafe.Pointer((*XBtShared)((*XBtree)(_25_pSib.X9).X1)))) >= uint32(uintptr(unsafe.Pointer((*XBtShared)(_p.X1)))) {
- goto _83
+ if ((*XBtree)(_25_pSib.X9) != nil) && (uint32(uintptr(unsafe.Pointer((*XBtShared)((*XBtree)(_25_pSib.X9).X1)))) < uint32(uintptr(unsafe.Pointer((*XBtShared)(_p.X1))))) {
+ _25_pSib = (*XBtree)(_25_pSib.X9)
+ goto _82
}
-
- _25_pSib = (*XBtree)(_25_pSib.X9)
- goto _82
-
-_83:
*(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X9 */))))) = (*XBtree)(_25_pSib.X9)
*(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X10 */))))) = _25_pSib
- if (*XBtree)(_p.X9) == nil {
- goto _85
+ if (*XBtree)(_p.X9) != nil {
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X9) + uintptr(28 /* X10 */))))) = _p
}
-
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_p.X9) + uintptr(28 /* X10 */))))) = _p
-_85:
*(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_25_pSib)) + uintptr(24 /* X9 */))))) = _p
_81:
goto _75
-
_77:
_25_i += 1
goto _72
-
_75:
_71:
*_ppBtree = _p
@@ -66610,106 +59462,97 @@ _btree_open_out:
if _rc == i32(0) {
goto _86
}
-
- if _pBt == nil || (*XPager)(_pBt.X0) == nil {
- goto _88
+ if (_pBt != nil) && ((*XPager)(_pBt.X0) != nil) {
+ _sqlite3PagerClose(tls, (*XPager)(_pBt.X0), nil)
}
-
- _sqlite3PagerClose(tls, (*XPager)(_pBt.X0), nil)
-_88:
Xsqlite3_free(tls, (unsafe.Pointer)(_pBt))
Xsqlite3_free(tls, (unsafe.Pointer)(_p))
*_ppBtree = nil
goto _89
-
_86:
- if _sqlite3BtreeSchema(tls, _p, i32(0), nil) != nil {
- goto _90
+ if _sqlite3BtreeSchema(tls, _p, i32(0), nil) == nil {
+ _sqlite3PagerSetCachesize(tls, (*XPager)((*XBtShared)(_p.X1).X0), i32(-2000))
}
-
- _sqlite3PagerSetCachesize(tls, (*XPager)((*XBtShared)(_p.X1).X0), i32(-2000))
-_90:
_35_pFile = _sqlite3PagerFile(tls, (*XPager)(_pBt.X0))
- if (*Xsqlite3_io_methods)(_35_pFile.X0) == nil {
- goto _91
+ if (*Xsqlite3_io_methods)(_35_pFile.X0) != nil {
+ _sqlite3OsFileControlHint(tls, _35_pFile, i32(30), (unsafe.Pointer)((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(4 /* X1 */)))))
}
-
- _sqlite3OsFileControlHint(tls, _35_pFile, i32(30), (unsafe.Pointer)((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(4 /* X1 */)))))
-_91:
_89:
- if _mutexOpen == nil {
- goto _92
+ if _mutexOpen != nil {
+ func() {
+ if Xsqlite3_mutex_held(tls, _mutexOpen) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61506), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78660)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ Xsqlite3_mutex_leave(tls, _mutexOpen)
}
-
- func() {
- if Xsqlite3_mutex_held(tls, _mutexOpen) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61506), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79852)))
- crt.X__builtin_abort(tls)
- }
- }()
- Xsqlite3_mutex_leave(tls, _mutexOpen)
-_92:
func() {
if _rc == i32(0) && _sqlite3BtreeConnectionCount(tls, *_ppBtree) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61509), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(79884)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61509), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeOpenØ00__func__Ø000))), unsafe.Pointer(str(78690)))
crt.X__builtin_abort(tls)
}
}()
return _rc
+
+ _ = _zDbHeader
+ panic(0)
}
-var _sqlite3BtreeOpenØ00__func__Ø000 [17]int8 // -
+var _sqlite3BtreeOpenØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeOpenØ00__func__Ø000[0], str(79944), 17)
+ crt.Xstrncpy(nil, &_sqlite3BtreeOpenØ00__func__Ø000[0], str(78747), 17)
}
-func _sqlite3OsFullPathname(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _nPathOut int32, _zPathOut *int8) (r0 int32) { // sqlite3.c:20309:1
+func _sqlite3OsFullPathname(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _zPath *int8, _nPathOut int32, _zPathOut *int8) (r0 int32) {
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPathOut)) + 1*uintptr(i32(0)))) = int8(i32(0))
return (*(*func(*crt.TLS, *Xsqlite3_vfs, *int8, int32, *int8) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int8, int32, *int8) int32
}{(_pVfs.X9)})))(tls, _pVfs, _zPath, _nPathOut, _zPathOut)
}
-func _sqlite3PagerVfs(tls *crt.TLS, _pPager *XPager) (r0 *Xsqlite3_vfs) { // sqlite3.c:53778:1
+// Return the VFS structure for the pager.
+func _sqlite3PagerVfs(tls *crt.TLS, _pPager *XPager) (r0 *Xsqlite3_vfs) {
return (*Xsqlite3_vfs)(_pPager.X0)
}
-func _sqlite3PagerOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _ppPager **XPager, _zFilename *int8, _nExtra int32, _flags int32, _vfsFlags int32, _xReinit func(*crt.TLS, *XPgHdr)) (r0 int32) { // sqlite3.c:51565:1
- var _pPtr *uint8 // sqlite3.c:51574:6
- _ = _pPtr
- var _pPager *XPager // sqlite3.c:51575:9
- _ = _pPager
- var _rc int32 // sqlite3.c:51576:7
- _ = _rc
- var _tempFile int32 // sqlite3.c:51577:7
- _ = _tempFile
- var _memDb int32 // sqlite3.c:51578:7
- _ = _memDb
- var _readOnly int32 // sqlite3.c:51579:7
- _ = _readOnly
- var _journalFileSize int32 // sqlite3.c:51580:7
- _ = _journalFileSize
- var _zPathname *int8 // sqlite3.c:51581:8
- _ = _zPathname
- var _nPathname int32 // sqlite3.c:51582:7
- _ = _nPathname
- var _useJournal int32 // sqlite3.c:51583:7
- _ = _useJournal
- var _pcacheSize int32 // sqlite3.c:51584:7
- _ = _pcacheSize
- var _szPageDflt uint32 // sqlite3.c:51585:7
- _ = _szPageDflt
- var _zUri *int8 // sqlite3.c:51586:14
- _ = _zUri
- var _nUri int32 // sqlite3.c:51587:7
- _ = _nUri
- var _3_z *int8 // sqlite3.c:51613:16
- _ = _3_z
- var _10_fout int32 // sqlite3.c:51703:9
- _ = _10_fout
- var _11_iDc int32 // sqlite3.c:51717:11
- _ = _11_iDc
+// Allocate and initialize a new Pager object and put a pointer to it
+// in *ppPager. The pager should eventually be freed by passing it
+// to sqlite3PagerClose().
+//
+// The zFilename argument is the path to the database file to open.
+// If zFilename is NULL then a randomly-named temporary file is created
+// and used as the file to be cached. Temporary files are be deleted
+// automatically when they are closed. If zFilename is ":memory:" then
+// all information is held in cache. It is never written to disk.
+// This can be used to implement an in-memory database.
+//
+// The nExtra parameter specifies the number of bytes of space allocated
+// along with each page reference. This space is available to the user
+// via the sqlite3PagerGetExtra() API. When a new page is allocated, the
+// first 8 bytes of this space are zeroed but the remainder is uninitialized.
+// (The extra space is used by btree as the MemPage object.)
+//
+// The flags argument is used to specify properties that affect the
+// operation of the pager. It should be passed some bitwise combination
+// of the PAGER_* flags.
+//
+// The vfsFlags parameter is a bitmask to pass to the flags parameter
+// of the xOpen() method of the supplied VFS when opening files.
+//
+// If the pager object is allocated and the specified file opened
+// successfully, SQLITE_OK is returned and *ppPager set to point to
+// the new pager object. If an error occurs, *ppPager is set to NULL
+// and error code returned. This function may return SQLITE_NOMEM
+// (sqlite3Malloc() is used to allocate memory), SQLITE_CANTOPEN or
+// various SQLITE_IO_XXX errors.
+func _sqlite3PagerOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _ppPager **XPager, _zFilename *int8, _nExtra int32, _flags int32, _vfsFlags int32, _xReinit func(*crt.TLS, *XPgHdr)) (r0 int32) {
+ var _rc, _tempFile, _memDb, _readOnly, _journalFileSize, _nPathname, _useJournal, _pcacheSize, _nUri, _10_fout, _11_iDc int32
+ var _szPageDflt uint32
+ var _zPathname, _zUri, _3_z *int8
+ var _pPtr *uint8
+ var _pPager *XPager
_pPager = nil
_rc = i32(0)
_tempFile = i32(0)
@@ -66727,19 +59570,14 @@ func _sqlite3PagerOpen(tls *crt.TLS, _pVfs *Xsqlite3_vfs, _ppPager **XPager, _zF
if (_flags & i32(2)) == 0 {
goto _0
}
-
_memDb = i32(1)
if _zFilename == nil || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFilename)) + 1*uintptr(i32(0))))) == 0 {
goto _2
}
-
_zPathname = _sqlite3DbStrDup(tls, nil, _zFilename)
- if _zPathname != nil {
- goto _3
+ if _zPathname == nil {
+ return _sqlite3NomemError(tls, i32(51601))
}
- return _sqlite3NomemError(tls, i32(51601))
-
-_3:
_nPathname = _sqlite3Strlen30(tls, _zPathname)
_zFilename = nil
_2:
@@ -66747,127 +59585,104 @@ _0:
if _zFilename == nil || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFilename)) + 1*uintptr(i32(0))))) == 0 {
goto _5
}
-
_nPathname = (_pVfs.X2) + i32(1)
_zPathname = (*int8)(_sqlite3DbMallocRaw(tls, nil, uint64(_nPathname*i32(2))))
- if _zPathname != nil {
- goto _6
+ if _zPathname == nil {
+ return _sqlite3NomemError(tls, i32(51617))
}
- return _sqlite3NomemError(tls, i32(51617))
-
-_6:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPathname)) + 1*uintptr(i32(0)))) = int8(i32(0))
_rc = _sqlite3OsFullPathname(tls, _pVfs, _zFilename, _nPathname, _zPathname)
_nPathname = _sqlite3Strlen30(tls, _zPathname)
_3_z = store0(&_zUri, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFilename))+1*uintptr(_sqlite3Strlen30(tls, _zFilename)+i32(1)))))
_7:
- if (*_3_z) == 0 {
- goto _8
- }
-
- {
- p := &_3_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _3_z)+i32(1))))
- sink0 = *p
- }
- {
- p := &_3_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _3_z)+i32(1))))
- sink0 = *p
+ if (*_3_z) != 0 {
+ {
+ p := &_3_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _3_z)+i32(1))))
+ sink0 = *p
+ }
+ {
+ p := &_3_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _3_z)+i32(1))))
+ sink0 = *p
+ }
+ goto _7
}
- goto _7
-
-_8:
_nUri = int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_z))+1*uintptr(i32(1)))))) - uintptr(unsafe.Pointer(_zUri))) / 1)
func() {
if _nUri < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51628), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79964)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51628), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78764)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(0) || (_nPathname+i32(8)) <= (_pVfs.X2) {
- goto _12
+ if (_rc == i32(0)) && ((_nPathname + i32(8)) > (_pVfs.X2)) {
+ _rc = _sqlite3CantopenError(tls, i32(51636))
}
-
- _rc = _sqlite3CantopenError(tls, i32(51636))
-_12:
- if _rc == i32(0) {
- goto _13
+ if _rc != i32(0) {
+ _sqlite3DbFree(tls, nil, (unsafe.Pointer)(_zPathname))
+ return _rc
}
-
- _sqlite3DbFree(tls, nil, (unsafe.Pointer)(_zPathname))
- return _rc
-
-_13:
_5:
_pPtr = (*uint8)(_sqlite3MallocZero(tls, uint64((((((((((((u32(224)+uint32((_pcacheSize+i32(7))&i32(-8)))+uint32(((_pVfs.X1)+i32(7))&i32(-8)))+uint32(_journalFileSize*i32(2)))+uint32(_nPathname))+uint32(i32(1)))+uint32(_nUri))+uint32(_nPathname))+uint32(i32(8)))+uint32(i32(2)))+uint32(_nPathname))+uint32(i32(4)))+uint32(i32(2)))))
func() {
if (int32((uintptr(unsafe.Pointer((*int8)((unsafe.Pointer)(uintptr(_journalFileSize)))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79972)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78772)))
crt.X__builtin_abort(tls)
}
}()
- if _pPtr != nil {
- goto _16
+ if _pPtr == nil {
+ _sqlite3DbFree(tls, nil, (unsafe.Pointer)(_zPathname))
+ return _sqlite3NomemError(tls, i32(51670))
}
-
- _sqlite3DbFree(tls, nil, (unsafe.Pointer)(_zPathname))
- return _sqlite3NomemError(tls, i32(51670))
-
-_16:
_pPager = (*XPager)(unsafe.Pointer(_pPtr))
- *(**XPCache)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(208 /* X59 */))))) = (*XPCache)(unsafe.Pointer(store11(func() (**uint8, *uint8) {
+ *(**XPCache)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(208 /* X59 */))))) = (*XPCache)(unsafe.Pointer(store13(func() (**uint8, *uint8) {
p := &_pPtr
return p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(224))))
}())))
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(64 /* X31 */))))) = (*Xsqlite3_file)(unsafe.Pointer(store11(func() (**uint8, *uint8) {
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(64 /* X31 */))))) = (*Xsqlite3_file)(unsafe.Pointer(store13(func() (**uint8, *uint8) {
p := &_pPtr
return p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr((_pcacheSize+i32(7))&i32(-8))))
}())))
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(72 /* X33 */))))) = (*Xsqlite3_file)(unsafe.Pointer(store11(func() (**uint8, *uint8) {
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(72 /* X33 */))))) = (*Xsqlite3_file)(unsafe.Pointer(store13(func() (**uint8, *uint8) {
p := &_pPtr
return p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(((_pVfs.X1)+i32(7))&i32(-8))))
}())))
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(68 /* X32 */))))) = (*Xsqlite3_file)(unsafe.Pointer(store11(func() (**uint8, *uint8) {
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(68 /* X32 */))))) = (*Xsqlite3_file)(unsafe.Pointer(store13(func() (**uint8, *uint8) {
p := &_pPtr
return p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_journalFileSize)))
}())))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(168 /* X51 */))) = (*int8)(unsafe.Pointer(store11(func() (**uint8, *uint8) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(168 /* X51 */))) = (*int8)(unsafe.Pointer(store13(func() (**uint8, *uint8) {
p := &_pPtr
return p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_journalFileSize)))
}())))
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer((*Xsqlite3_file)(_pPager.X32)))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51678), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80032)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51678), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78829)))
crt.X__builtin_abort(tls)
}
}()
if _zPathname == nil {
goto _19
}
-
func() {
if _nPathname <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80068)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78863)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(172 /* X52 */))) = (*int8)(unsafe.Pointer(store11(func() (**uint8, *uint8) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(172 /* X52 */))) = (*int8)(unsafe.Pointer(store13(func() (**uint8, *uint8) {
p := &_pPtr
return p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr((_nPathname+i32(1))+_nUri)))
}())))
crt.Xmemcpy(tls, (unsafe.Pointer)(_pPager.X51), (unsafe.Pointer)(_zPathname), uint32(_nPathname))
- if _nUri == 0 {
- goto _22
+ if _nUri != 0 {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X51))+1*uintptr(_nPathname+i32(1))))), (unsafe.Pointer)(_zUri), uint32(_nUri))
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X51))+1*uintptr(_nPathname+i32(1))))), (unsafe.Pointer)(_zUri), uint32(_nUri))
-_22:
crt.Xmemcpy(tls, (unsafe.Pointer)(_pPager.X52), (unsafe.Pointer)(_zPathname), uint32(_nPathname))
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X52))+1*uintptr(_nPathname)))), (unsafe.Pointer)(str(80080)), uint32(i32(10)))
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X52))+1*uintptr(_nPathname)))), (unsafe.Pointer)(str(78875)), uint32(i32(10)))
*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(216 /* X61 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X52)) + 1*uintptr((_nPathname+i32(8))+i32(1))))
crt.Xmemcpy(tls, (unsafe.Pointer)(_pPager.X61), (unsafe.Pointer)(_zPathname), uint32(_nPathname))
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X61))+1*uintptr(_nPathname)))), (unsafe.Pointer)(str(80092)), uint32(i32(5)))
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager.X61))+1*uintptr(_nPathname)))), (unsafe.Pointer)(str(78885)), uint32(i32(5)))
_sqlite3DbFree(tls, nil, (unsafe.Pointer)(_zPathname))
_19:
*(**Xsqlite3_vfs)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(0 /* X0 */))))) = _pVfs
@@ -66875,12 +59690,11 @@ _19:
if _zFilename == nil || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFilename)) + 1*uintptr(i32(0))))) == 0 {
goto _24
}
-
_10_fout = i32(0)
_rc = _sqlite3OsOpen(tls, _pVfs, _pPager.X51, (*Xsqlite3_file)(_pPager.X31), _vfsFlags, &_10_fout)
func() {
if _memDb != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51705), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80100)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51705), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78891)))
crt.X__builtin_abort(tls)
}
}()
@@ -66888,46 +59702,34 @@ _19:
if _rc != i32(0) {
goto _27
}
-
_11_iDc = _sqlite3OsDeviceCharacteristics(tls, (*Xsqlite3_file)(_pPager.X31))
if _readOnly != 0 {
goto _28
}
-
_setSectorSize(tls, _pPager)
i32(0)
if _szPageDflt >= (_pPager.X47) {
goto _29
}
-
- if (_pPager.X47) <= uint32(i32(8192)) {
- goto _30
+ if (_pPager.X47) > uint32(i32(8192)) {
+ _szPageDflt = uint32(i32(8192))
+ goto _31
}
-
- _szPageDflt = uint32(i32(8192))
- goto _31
-
-_30:
_szPageDflt = _pPager.X47
_31:
_29:
_28:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(14 /* X11 */))) = uint8(Xsqlite3_uri_boolean(tls, _zFilename, str(80108), i32(0)))
- if (_11_iDc&i32(8192)) == i32(0) && Xsqlite3_uri_boolean(tls, _zFilename, str(80116), i32(0)) == 0 {
- goto _33
- }
-
- {
- p := &_vfsFlags
- *p = (*p) | i32(1)
- sink1 = *p
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(14 /* X11 */))) = uint8(Xsqlite3_uri_boolean(tls, _zFilename, str(78898), i32(0)))
+ if ((_11_iDc & i32(8192)) != i32(0)) || Xsqlite3_uri_boolean(tls, _zFilename, str(78905), i32(0)) != 0 {
+ {
+ p := &_vfsFlags
+ *p = (*p) | i32(1)
+ sink1 = *p
+ }
+ goto _act_like_temp_file
}
- goto _act_like_temp_file
-
-_33:
_27:
goto _34
-
_24:
_act_like_temp_file:
_tempFile = i32(1)
@@ -66936,52 +59738,42 @@ _act_like_temp_file:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(14 /* X11 */))) = uint8(i32(1))
_readOnly = _vfsFlags & i32(1)
_34:
- if _rc != i32(0) {
- goto _35
- }
-
- func() {
- if int32(_pPager.X13) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51772), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80128)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _sqlite3PagerSetPagesize(tls, _pPager, &_szPageDflt, i32(-1))
-_35:
- if _rc != i32(0) {
- goto _38
+ if _rc == i32(0) {
+ func() {
+ if int32(_pPager.X13) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51772), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78915)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3PagerSetPagesize(tls, _pPager, &_szPageDflt, i32(-1))
}
-
- _nExtra = (_nExtra + i32(7)) & i32(-8)
- func() {
- if _nExtra < i32(8) || _nExtra >= i32(1000) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51780), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80148)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _sqlite3PcacheOpen(tls, int32(_szPageDflt), _nExtra, bool2int(_memDb == 0), func() func(*crt.TLS, unsafe.Pointer, *XPgHdr) int32 {
- if _memDb == 0 {
- return _pagerStress
- }
- return nil
- }(), (unsafe.Pointer)(_pPager), (*XPCache)(_pPager.X59))
-_38:
if _rc == i32(0) {
- goto _44
+ _nExtra = (_nExtra + i32(7)) & i32(-8)
+ func() {
+ if _nExtra < i32(8) || _nExtra >= i32(1000) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51780), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78932)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3PcacheOpen(tls, int32(_szPageDflt), _nExtra, bool2int(_memDb == 0), func() func(*crt.TLS, unsafe.Pointer, *XPgHdr) int32 {
+ if _memDb == 0 {
+ return _pagerStress
+ }
+ return nil
+ }(), (unsafe.Pointer)(_pPager), (*XPCache)(_pPager.X59))
+ }
+ if _rc != i32(0) {
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X31))
+ _sqlite3PageFree(tls, (unsafe.Pointer)(_pPager.X58))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pPager))
+ return _rc
}
-
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X31))
- _sqlite3PageFree(tls, (unsafe.Pointer)(_pPager.X58))
- Xsqlite3_free(tls, (unsafe.Pointer)(_pPager))
- return _rc
-
-_44:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(6 /* X3 */))) = uint8(_useJournal)
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(156 /* X49 */))) = uint32(i32(1073741823))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(13 /* X10 */))) = uint8(_tempFile)
func() {
if _tempFile != i32(0) && _tempFile != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80176)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51808), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(78957)))
crt.X__builtin_abort(tls)
}
}()
@@ -66992,48 +59784,44 @@ _44:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(15 /* X12 */))) = uint8(_readOnly)
func() {
if _useJournal == 0 && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80252)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79033)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(7 /* X4 */))) = _pPager.X10
- if (_pPager.X4) == 0 {
- goto _51
+ if (_pPager.X4) != 0 {
+ func() {
+ if int32(_pPager.X5) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51818), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79064)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pPager.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51819), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79084)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pPager.X9) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79105)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pPager.X8) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51821), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79126)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pPager.X7) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _62
}
-
- func() {
- if int32(_pPager.X5) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51818), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80284)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pPager.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51819), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80304)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pPager.X9) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51820), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80328)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pPager.X8) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51821), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80352)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pPager.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80376)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _62
-
-_51:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(8 /* X5 */))) = uint8(i32(1))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(9 /* X6 */))) = uint8(i32(0))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(2))
@@ -67044,25 +59832,18 @@ _62:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(160 /* X50 */))) = int64(i32(-1))
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && _tempFile == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51835), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(80404)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51835), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOpenØ00__func__Ø000))), unsafe.Pointer(str(79175)))
crt.X__builtin_abort(tls)
}
}()
_setSectorSize(tls, _pPager)
- if _useJournal != 0 {
- goto _66
+ if _useJournal == 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(2))
+ goto _67
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(2))
- goto _67
-
-_66:
- if _memDb == 0 {
- goto _68
+ if _memDb != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(4))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(i32(4))
-_68:
_67:
*(*func(*crt.TLS, *XPgHdr))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(196 /* X56 */))))) = _xReinit
_setGetterMethod(tls, _pPager)
@@ -67070,11 +59851,14 @@ _67:
return i32(0)
}
-func _sqlite3PcacheSize(tls *crt.TLS) (r0 int32) { // sqlite3.c:44403:1
+// Return the size in bytes of a PCache object.
+func _sqlite3PcacheSize(tls *crt.TLS) (r0 int32) {
return int32(u32(48))
}
-func _sqlite3JournalSize(tls *crt.TLS, _pVfs *Xsqlite3_vfs) (r0 int32) { // sqlite3.c:89181:1
+// Return the number of bytes required to store a JournalFile that uses vfs
+// pVfs to create the underlying on-disk files.
+func _sqlite3JournalSize(tls *crt.TLS, _pVfs *Xsqlite3_vfs) (r0 int32) {
return func() int32 {
if (_pVfs.X1) > i32(56) {
return (_pVfs.X1)
@@ -67083,15 +59867,15 @@ func _sqlite3JournalSize(tls *crt.TLS, _pVfs *Xsqlite3_vfs) (r0 int32) { // sqli
}()
}
-var _sqlite3PagerOpenØ00__func__Ø000 [17]int8 // -
+var _sqlite3PagerOpenØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerOpenØ00__func__Ø000[0], str(80436), 17)
+ crt.Xstrncpy(nil, &_sqlite3PagerOpenØ00__func__Ø000[0], str(79206), 17)
}
-func Xsqlite3_uri_boolean(tls *crt.TLS, _zFilename *int8, _zParam *int8, _bDflt int32) (r0 int32) { // sqlite3.c:144390:12
- var _z *int8 // sqlite3.c:144391:14
- _ = _z
+// Return a boolean value for a query parameter.
+func Xsqlite3_uri_boolean(tls *crt.TLS, _zFilename *int8, _zParam *int8, _bDflt int32) (r0 int32) {
+ var _z *int8
_z = Xsqlite3_uri_parameter(tls, _zFilename, _zParam)
_bDflt = bool2int(_bDflt != i32(0))
return func() int32 {
@@ -67102,15 +59886,20 @@ func Xsqlite3_uri_boolean(tls *crt.TLS, _zFilename *int8, _zParam *int8, _bDflt
}()
}
-func Xsqlite3_uri_parameter(tls *crt.TLS, _zFilename *int8, _zParam *int8) (r0 *int8) { // sqlite3.c:144375:12
- var _1_x int32 // sqlite3.c:144379:9
- _ = _1_x
- if _zFilename != nil && _zParam != nil {
- goto _1
+// This is a utility routine, useful to VFS implementations, that checks
+// to see if a database file was a URI that contained a specific query
+// parameter, and if so obtains the value of the query parameter.
+//
+// The zFilename argument is the filename pointer passed into the xOpen()
+// method of a VFS implementation. The zParam argument is the name of the
+// query parameter we seek. This routine returns the value of the zParam
+// parameter if it exists. If the parameter does not exist, this routine
+// returns a NULL pointer.
+func Xsqlite3_uri_parameter(tls *crt.TLS, _zFilename *int8, _zParam *int8) (r0 *int8) {
+ var _1_x int32
+ if (_zFilename == nil) || (_zParam == nil) {
+ return nil
}
- return nil
-
-_1:
{
p := &_zFilename
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _zFilename)+i32(1))))
@@ -67120,96 +59909,100 @@ _2:
if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zFilename)) + 1*uintptr(i32(0))))) == 0 {
goto _3
}
-
_1_x = crt.Xstrcmp(tls, _zFilename, _zParam)
{
p := &_zFilename
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _zFilename)+i32(1))))
sink0 = *p
}
- if _1_x != i32(0) {
- goto _4
+ if _1_x == i32(0) {
+ return _zFilename
}
- return _zFilename
-
-_4:
{
p := &_zFilename
*p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sqlite3Strlen30(tls, _zFilename)+i32(1))))
sink0 = *p
}
goto _2
-
_3:
return nil
}
-func _sqlite3GetBoolean(tls *crt.TLS, _z *int8, _dflt uint8) (r0 uint8) { // sqlite3.c:113296:1
+// Interpret the given string as a boolean value.
+func _sqlite3GetBoolean(tls *crt.TLS, _z *int8, _dflt uint8) (r0 uint8) {
return uint8(bool2int(int32(_getSafetyLevel(tls, _z, i32(1), _dflt)) != i32(0)))
}
-func _getSafetyLevel(tls *crt.TLS, _z *int8, _omitFull int32, _dflt uint8) (r0 uint8) { // sqlite3.c:113271:1
- var _i int32 // sqlite3.c:113278:7
- _ = _i
- var _n int32 // sqlite3.c:113278:10
- _ = _n
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z))))) & i32(4)) == 0 {
- goto _0
+// Interpret the given string as a safety level. Return 0 for OFF,
+// 1 for ON or NORMAL, 2 for FULL, and 3 for EXTRA. Return 1 for an empty or
+// unrecognized string argument. The FULL and EXTRA option is disallowed
+// if the omitFull parameter it 1.
+//
+// Note that the values returned are one less that the values that
+// should be passed into sqlite3BtreeSetSafetyLevel(). The is done
+// to support legacy SQL code. The safety level used to be boolean
+// and older scripts may have used numbers 0 for OFF and 1 for ON.
+func _getSafetyLevel(tls *crt.TLS, _z *int8, _omitFull int32, _dflt uint8) (r0 uint8) {
+ var _i, _n int32
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*_z))))) & i32(4)) != 0 {
+ return uint8(_sqlite3Atoi(tls, _z))
}
- return uint8(_sqlite3Atoi(tls, _z))
-
-_0:
_n = _sqlite3Strlen30(tls, _z)
_i = i32(0)
_1:
if _i >= i32(8) {
goto _4
}
-
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iLengthØ003)) + 1*uintptr(_i)))) != _n || Xsqlite3_strnicmp(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00zTextØ001))+1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iOffsetØ002)) + 1*uintptr(_i)))))), _z, _n) != i32(0) || _omitFull != 0 && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iValueØ004)) + 1*uintptr(_i)))) > i32(1) {
- goto _8
+ if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iLengthØ003)) + 1*uintptr(_i)))) == _n) && (Xsqlite3_strnicmp(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00zTextØ001))+1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iOffsetØ002)) + 1*uintptr(_i)))))), _z, _n) == i32(0))) && ((_omitFull == 0) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iValueØ004)) + 1*uintptr(_i)))) <= i32(1))) {
+ return *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iValueØ004)) + 1*uintptr(_i)))
}
- return *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_getSafetyLevelØ00iValueØ004)) + 1*uintptr(_i)))
-
-_8:
_i += 1
goto _1
-
_4:
return _dflt
}
-var _getSafetyLevelØ00iLengthØ003 [8]uint8 // sqlite3.c:113275:19
+var _getSafetyLevelØ00iLengthØ003 [8]uint8
func init() {
_getSafetyLevelØ00iLengthØ003 = [8]uint8{2, 2, 3, 5, 3, 4, 5, 4}
}
-var _getSafetyLevelØ00zTextØ001 [25]int8 // sqlite3.c:113273:21
+var _getSafetyLevelØ00zTextØ001 [25]int8
func init() {
- crt.Xstrncpy(nil, &_getSafetyLevelØ00zTextØ001[0], str(80456), 25)
+ crt.Xstrncpy(nil, &_getSafetyLevelØ00zTextØ001[0], str(79223), 25)
}
-var _getSafetyLevelØ00iOffsetØ002 [8]uint8 // sqlite3.c:113274:19
+var _getSafetyLevelØ00iOffsetØ002 [8]uint8
func init() {
_getSafetyLevelØ00iOffsetØ002 = [8]uint8{0, 1, 2, 4, 9, 12, 15, 20}
}
-var _getSafetyLevelØ00iValueØ004 [8]uint8 // sqlite3.c:113276:19
+var _getSafetyLevelØ00iValueØ004 [8]uint8
func init() {
_getSafetyLevelØ00iValueØ004 = [8]uint8{1, 0, 0, 0, 1, 1, 3, 2}
}
-func _sqlite3PcacheOpen(tls *crt.TLS, _szPage int32, _szExtra int32, _bPurgeable int32, _xStress func(*crt.TLS, unsafe.Pointer, *XPgHdr) int32, _pStress unsafe.Pointer, _p *XPCache) (r0 int32) { // sqlite3.c:44417:1
+// Create a new PCache object. Storage space to hold the object
+// has already been allocated and is passed in as the p pointer.
+// The caller discovers how much space needs to be allocated by
+// calling sqlite3PcacheSize().
+//
+// szExtra is some extra space allocated for each page. The first
+// 8 bytes of the extra space will be zeroed as the page is allocated,
+// but remaining content will be uninitialized. Though it is opaque
+// to this module, the extra space really ends up being the MemPage
+// structure in the pager.
+func _sqlite3PcacheOpen(tls *crt.TLS, _szPage int32, _szExtra int32, _bPurgeable int32, _xStress func(*crt.TLS, unsafe.Pointer, *XPgHdr) int32, _pStress unsafe.Pointer, _p *XPCache) (r0 int32) {
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = i32(1)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = _szExtra
func() {
if _szExtra < i32(8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44428), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheOpenØ00__func__Ø000))), unsafe.Pointer(str(80484)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44428), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheOpenØ00__func__Ø000))), unsafe.Pointer(str(79248)))
crt.X__builtin_abort(tls)
}
}()
@@ -67222,416 +60015,414 @@ func _sqlite3PcacheOpen(tls *crt.TLS, _szPage int32, _szExtra int32, _bPurgeable
return _sqlite3PcacheSetPageSize(tls, _p, _szPage)
}
-var _sqlite3PcacheOpenØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheOpenØ00__func__Ø000[0], str(80496), 18)
-}
-
-func _pagerStress(tls *crt.TLS, _p unsafe.Pointer, _pPg *XPgHdr) (r0 int32) { // sqlite3.c:51447:1
- var _pPager *XPager // sqlite3.c:51448:9
- _ = _pPager
- var _rc int32 // sqlite3.c:51449:7
- _ = _rc
+var _sqlite3PcacheOpenØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PcacheOpenØ00__func__Ø000[0], str(79259), 18)
+}
+
+// This function is called by the pcache layer when it has reached some
+// soft memory limit. The first argument is a pointer to a Pager object
+// (cast as a void*). The pager is always 'purgeable' (not an in-memory
+// database). The second argument is a reference to a page that is
+// currently dirty but has no outstanding references. The page
+// is always associated with the Pager object passed as the first
+// argument.
+//
+// The job of this function is to make pPg clean by writing its contents
+// out to the database file, if possible. This may involve syncing the
+// journal file.
+//
+// If successful, sqlite3PcacheMakeClean() is called on the page and
+// SQLITE_OK returned. If an IO error occurs while trying to make the
+// page clean, the IO error code is returned. If the page cannot be
+// made clean for some other reason, but no error occurs, then SQLITE_OK
+// is returned by sqlite3PcacheMakeClean() is not called.
+func _pagerStress(tls *crt.TLS, _p unsafe.Pointer, _pPg *XPgHdr) (r0 int32) {
+ var _rc int32
+ var _pPager *XPager
_pPager = (*XPager)(_p)
_rc = i32(0)
func() {
if (*XPager)(_pPg.X4) != _pPager {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51451), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(17896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51451), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(18492)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pPg.X6) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51452), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(55816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51452), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(54035)))
crt.X__builtin_abort(tls)
}
}()
if func() int32 {
if (_pPager.X26) != 0 {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51470), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51470), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _6
+ }() != 0 {
+ return i32(0)
}
- return i32(0)
-
-_6:
- if (_pPager.X18) == 0 || (int32(_pPager.X18)&i32(3)) == i32(0) && (int32(_pPg.X6)&i32(8)) == i32(0) {
- goto _9
+ if ((_pPager.X18) != 0) && (((int32(_pPager.X18) & i32(3)) != i32(0)) || ((int32(_pPg.X6) & i32(8)) != i32(0))) {
+ return i32(0)
}
- return i32(0)
-
-_9:
*(**XPgHdr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(12 /* X3 */))))) = nil
if (*XWal)(_pPager.X60) == nil {
goto _10
}
-
_rc = _subjournalPageIfRequired(tls, _pPg)
- if _rc != i32(0) {
- goto _11
+ if _rc == i32(0) {
+ _rc = _pagerWalFrames(tls, _pPager, _pPg, uint32(i32(0)), i32(0))
}
-
- _rc = _pagerWalFrames(tls, _pPager, _pPg, uint32(i32(0)), i32(0))
-_11:
goto _12
-
_10:
- if (int32(_pPg.X6)&i32(8)) == 0 && int32(_pPager.X14) != i32(3) {
- goto _14
+ if (int32(_pPg.X6)&i32(8)) != 0 || (int32(_pPager.X14) == i32(3)) {
+ _rc = _syncJournal(tls, _pPager, i32(1))
}
-
- _rc = _syncJournal(tls, _pPager, i32(1))
-_14:
- if _rc != i32(0) {
- goto _15
+ if _rc == i32(0) {
+ func() {
+ if (int32(_pPg.X6) & i32(8)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(51499), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(79277)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _pager_write_pagelist(tls, _pPager, _pPg)
}
-
- func() {
- if (int32(_pPg.X6) & i32(8)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(51499), unsafe.Pointer((*int8)(unsafe.Pointer(&_pagerStressØ00__func__Ø000))), unsafe.Pointer(str(80516)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _pager_write_pagelist(tls, _pPager, _pPg)
-_15:
_12:
- if _rc != i32(0) {
- goto _18
+ if _rc == i32(0) {
+ _sqlite3PcacheMakeClean(tls, _pPg)
}
-
- _sqlite3PcacheMakeClean(tls, _pPg)
-_18:
return _pager_error(tls, _pPager, _rc)
}
-var _pagerStressØ00__func__Ø000 [12]int8 // -
+var _pagerStressØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_pagerStressØ00__func__Ø000[0], str(80548), 12)
+ crt.Xstrncpy(nil, &_pagerStressØ00__func__Ø000[0], str(79309), 12)
}
-func _pageReinit(tls *crt.TLS, _pData *XPgHdr) { // sqlite3.c:61177:1
- var _pPage *XMemPage // sqlite3.c:61178:11
- _ = _pPage
+// During a rollback, when the pager reloads information into the cache
+// so that the cache is restored to its original state at the start of
+// the transaction, for each page restored this routine is called.
+//
+// This routine needs to reset the extra data section at the end of the
+// page to agree with the restored data.
+func _pageReinit(tls *crt.TLS, _pData *XPgHdr) {
+ var _pPage *XMemPage
_pPage = (*XMemPage)(_sqlite3PagerGetExtra(tls, _pData))
func() {
if _sqlite3PagerPageRefcount(tls, _pData) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61180), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageReinitØ00__func__Ø000))), unsafe.Pointer(str(80560)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61180), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageReinitØ00__func__Ø000))), unsafe.Pointer(str(79321)))
crt.X__builtin_abort(tls)
}
}()
if (_pPage.X0) == 0 {
goto _2
}
-
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61182), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageReinitØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61182), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageReinitØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = uint8(i32(0))
- if _sqlite3PagerPageRefcount(tls, _pData) <= i32(1) {
- goto _5
+ if _sqlite3PagerPageRefcount(tls, _pData) > i32(1) {
+ _btreeInitPage(tls, _pPage)
}
-
- _btreeInitPage(tls, _pPage)
-_5:
_2:
}
-var _pageReinitØ00__func__Ø000 [11]int8 // -
+var _pageReinitØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_pageReinitØ00__func__Ø000[0], str(80596), 11)
+ crt.Xstrncpy(nil, &_pageReinitØ00__func__Ø000[0], str(79355), 11)
}
-func _sqlite3PagerSetMmapLimit(tls *crt.TLS, _pPager *XPager, _szMmap int64) { // sqlite3.c:50429:1
+// Change the maximum size of any memory mapping made of the database file.
+func _sqlite3PagerSetMmapLimit(tls *crt.TLS, _pPager *XPager, _szMmap int64) {
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(128 /* X42 */))) = _szMmap
_pagerFixMaplimit(tls, _pPager)
}
-func _sqlite3PagerReadFileheader(tls *crt.TLS, _pPager *XPager, _N int32, _pDest *uint8) (r0 int32) { // sqlite3.c:50762:1
- var _rc int32 // sqlite3.c:50763:7
- _ = _rc
+// Read the first N bytes from the beginning of the file into memory
+// that pDest points to.
+//
+// If the pager was opened on a transient file (zFilename==""), or
+// opened on a file less than N bytes in size, the output buffer is
+// zeroed and SQLITE_OK returned. The rationale for this is that this
+// function is used to read database headers, and a new transient or
+// zero sized database has a header than consists entirely of zeroes.
+//
+// If any IO error apart from SQLITE_IOERR_SHORT_READ is encountered,
+// the error code is returned to the caller and the contents of the
+// output buffer undefined.
+func _sqlite3PagerReadFileheader(tls *crt.TLS, _pPager *XPager, _N int32, _pDest *uint8) (r0 int32) {
+ var _rc int32
_rc = i32(0)
crt.Xmemset(tls, (unsafe.Pointer)(_pDest), i32(0), uint32(_N))
func() {
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerReadFileheaderØ00__func__Ø000))), unsafe.Pointer(str(19024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerReadFileheaderØ00__func__Ø000))), unsafe.Pointer(str(19565)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XWal)(_pPager.X60) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerReadFileheaderØ00__func__Ø000))), unsafe.Pointer(str(11084)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerReadFileheaderØ00__func__Ø000))), unsafe.Pointer(str(12168)))
crt.X__builtin_abort(tls)
}
}()
if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
goto _5
}
-
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pPager.X31), (unsafe.Pointer)(_pDest), _N, int64(i32(0)))
- if _rc != i32(522) {
- goto _6
+ if _rc == i32(522) {
+ _rc = i32(0)
}
-
- _rc = i32(0)
-_6:
_5:
- r0 = _rc
- return
-}
-
-var _sqlite3PagerReadFileheaderØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerReadFileheaderØ00__func__Ø000[0], str(80608), 27)
+ return _rc
}
-func _sqlite3PagerSetBusyhandler(tls *crt.TLS, _pPager *XPager, _xBusyHandler func(*crt.TLS, unsafe.Pointer) int32, _pBusyHandlerArg unsafe.Pointer) { // sqlite3.c:50595:1
- var _1_ap *unsafe.Pointer // sqlite3.c:50604:10
- _ = _1_ap
+var _sqlite3PagerReadFileheaderØ00__func__Ø000 [27]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerReadFileheaderØ00__func__Ø000[0], str(79366), 27)
+}
+
+// Set the busy handler function.
+//
+// The pager invokes the busy-handler if sqlite3OsLock() returns
+// SQLITE_BUSY when trying to upgrade from no-lock to a SHARED lock,
+// or when trying to upgrade from a RESERVED lock to an EXCLUSIVE
+// lock. It does *not* invoke the busy handler when upgrading from
+// SHARED to RESERVED, or when upgrading from SHARED to EXCLUSIVE
+// (which occurs during hot-journal rollback). Summary:
+//
+// Transition | Invokes xBusyHandler
+// --------------------------------------------------------
+// NO_LOCK -> SHARED_LOCK | Yes
+// SHARED_LOCK -> RESERVED_LOCK | No
+// SHARED_LOCK -> EXCLUSIVE_LOCK | No
+// RESERVED_LOCK -> EXCLUSIVE_LOCK | Yes
+//
+// If the busy-handler callback returns non-zero, the lock is
+// retried. If it returns zero, then the SQLITE_BUSY error is
+// returned to the caller of the pager API function.
+func _sqlite3PagerSetBusyhandler(tls *crt.TLS, _pPager *XPager, _xBusyHandler func(*crt.TLS, unsafe.Pointer) int32, _pBusyHandlerArg unsafe.Pointer) {
+ var _1_ap *unsafe.Pointer
*(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(176 /* X53 */))) = _xBusyHandler
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(180 /* X54 */))) = _pBusyHandlerArg
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil {
- goto _0
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) != nil {
+ _1_ap = (*unsafe.Pointer)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(176 /* X53 */)))))
+ func() {
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{(*(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct{ f unsafe.Pointer }{(*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ap)) + 4*uintptr(i32(0)))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_xBusyHandler})) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50605), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetBusyhandlerØ00__func__Ø000))), unsafe.Pointer(str(79393)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ap)) + 4*uintptr(i32(1)))) != _pBusyHandlerArg {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50606), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetBusyhandlerØ00__func__Ø000))), unsafe.Pointer(str(79433)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), i32(15), (unsafe.Pointer)(_1_ap))
}
-
- _1_ap = (*unsafe.Pointer)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(176 /* X53 */)))))
- func() {
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{(*(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct{ f unsafe.Pointer }{(*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ap)) + 4*uintptr(i32(0)))))})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_xBusyHandler})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50605), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetBusyhandlerØ00__func__Ø000))), unsafe.Pointer(str(80636)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ap)) + 4*uintptr(i32(1)))) != _pBusyHandlerArg {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50606), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetBusyhandlerØ00__func__Ø000))), unsafe.Pointer(str(80676)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3OsFileControlHint(tls, (*Xsqlite3_file)(_pPager.X31), i32(15), (unsafe.Pointer)(_1_ap))
-_0:
}
-var _sqlite3PagerSetBusyhandlerØ00__func__Ø000 [27]int8 // -
+var _sqlite3PagerSetBusyhandlerØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerSetBusyhandlerØ00__func__Ø000[0], str(80700), 27)
+ crt.Xstrncpy(nil, &_sqlite3PagerSetBusyhandlerØ00__func__Ø000[0], str(79456), 27)
}
-func _sqlite3PagerIsreadonly(tls *crt.TLS, _pPager *XPager) (r0 uint8) { // sqlite3.c:53514:1
+// Return TRUE if the database file is opened read-only. Return FALSE
+// if the database is (in theory) writable.
+func _sqlite3PagerIsreadonly(tls *crt.TLS, _pPager *XPager) (r0 uint8) {
return _pPager.X12
}
-func _sqlite3BtreeSchema(tls *crt.TLS, _p *XBtree, _nBytes int32, _xFree func(*crt.TLS, unsafe.Pointer)) (r0 unsafe.Pointer) { // sqlite3.c:68705:1
- var _pBt *XBtShared // sqlite3.c:68706:12
- _ = _pBt
+// This function returns a pointer to a blob of memory associated with
+// a single shared-btree. The memory is used by client code for its own
+// purposes (for example, to store a high-level schema associated with
+// the shared-btree). The btree layer manages reference counting issues.
+//
+// The first time this is called on a shared-btree, nBytes bytes of memory
+// are allocated, zeroed, and returned to the caller. For each subsequent
+// call the nBytes parameter is ignored and a pointer to the same blob
+// of memory returned.
+//
+// If the nBytes parameter is 0 and the blob of memory has not yet been
+// allocated, a null pointer is returned. If the blob has already been
+// allocated, it is returned as normal.
+//
+// Just before the shared-btree is closed, the function passed as the
+// xFree argument when the memory allocation was made is invoked on the
+// blob of allocated memory. The xFree function should not call sqlite3_free()
+// on the memory, the btree layer does that.
+func _sqlite3BtreeSchema(tls *crt.TLS, _p *XBtree, _nBytes int32, _xFree func(*crt.TLS, unsafe.Pointer)) (r0 unsafe.Pointer) {
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_p.X1)
_sqlite3BtreeEnter(tls, _p)
- if (_pBt.X19) != nil || _nBytes == 0 {
- goto _1
+ if ((_pBt.X19) == nil) && _nBytes != 0 {
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(48 /* X19 */))) = _sqlite3DbMallocZero(tls, nil, uint64(_nBytes))
+ *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(52 /* X20 */))) = _xFree
}
-
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(48 /* X19 */))) = _sqlite3DbMallocZero(tls, nil, uint64(_nBytes))
- *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(52 /* X20 */))) = _xFree
-_1:
_sqlite3BtreeLeave(tls, _p)
return _pBt.X19
}
-func _sqlite3PagerFile(tls *crt.TLS, _pPager *XPager) (r0 *Xsqlite3_file) { // sqlite3.c:53787:1
+// Return the file handle for the database file associated
+// with the pager. This might return NULL if the file has
+// not yet been opened.
+func _sqlite3PagerFile(tls *crt.TLS, _pPager *XPager) (r0 *Xsqlite3_file) {
return (*Xsqlite3_file)(_pPager.X31)
}
-func _sqlite3BtreeConnectionCount(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:68891:1
+// Return the number of connections to the BtShared object accessed by
+// the Btree handle passed as the only argument. For private caches
+// this is always 1. For shared caches it may be 1 or greater.
+func _sqlite3BtreeConnectionCount(tls *crt.TLS, _p *XBtree) (r0 int32) {
return (*XBtShared)(_p.X1).X23
}
-var _sqlite3VdbeExecØ00vfsFlagsØ006 int32 // sqlite3.c:81896:20
+var _sqlite3VdbeExecØ00vfsFlagsØ006 int32
func init() {
_sqlite3VdbeExecØ00vfsFlagsØ006 = i32(1054)
}
-func _sqlite3BtreeCreateTable(tls *crt.TLS, _p *XBtree, _piTable *int32, _flags int32) (r0 int32) { // sqlite3.c:67619:1
- var _rc int32 // sqlite3.c:67620:7
- _ = _rc
+func _sqlite3BtreeCreateTable(tls *crt.TLS, _p *XBtree, _piTable *int32, _flags int32) (r0 int32) {
+ var _rc int32
_sqlite3BtreeEnter(tls, _p)
_rc = _btreeCreateTable(tls, _p, _piTable, _flags)
_sqlite3BtreeLeave(tls, _p)
return _rc
}
-func _btreeCreateTable(tls *crt.TLS, _p *XBtree, _piTable *int32, _createTabFlags int32) (r0 int32) { // sqlite3.c:67476:1
- var _pBt *XBtShared // sqlite3.c:67477:12
- _ = _pBt
- var _pRoot *XMemPage // sqlite3.c:67478:11
- _ = _pRoot
- var _pgnoRoot uint32 // sqlite3.c:67479:8
- _ = _pgnoRoot
- var _rc int32 // sqlite3.c:67480:7
- _ = _rc
- var _ptfFlags int32 // sqlite3.c:67481:7
- _ = _ptfFlags
- var _1_pgnoMove uint32 // sqlite3.c:67494:10
- _ = _1_pgnoMove
- var _1_pPageMove *XMemPage // sqlite3.c:67495:13
- _ = _1_pPageMove
- var _4_eType uint8 // sqlite3.c:67537:10
- _ = _4_eType
- var _4_iPtrPage uint32 // sqlite3.c:67538:12
- _ = _4_iPtrPage
+// Create a new BTree table. Write into *piTable the page
+// number for the root page of the new table.
+//
+// The type of type is determined by the flags parameter. Only the
+// following values of flags are currently in use. Other values for
+// flags might not work:
+//
+// BTREE_INTKEY|BTREE_LEAFDATA Used for SQL tables with rowid keys
+// BTREE_ZERODATA Used for SQL indices
+func _btreeCreateTable(tls *crt.TLS, _p *XBtree, _piTable *int32, _createTabFlags int32) (r0 int32) {
+ var _rc, _ptfFlags int32
+ var _pgnoRoot, _1_pgnoMove, _4_iPtrPage uint32
+ var _4_eType uint8
+ var _pBt *XBtShared
+ var _pRoot, _1_pPageMove *XMemPage
_pBt = (*XBtShared)(_p.X1)
func() {
if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67483), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67483), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pBt.X8) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67484), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(58864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67484), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(56928)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pBt.X10) & i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67485), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(79004)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67485), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(77853)))
crt.X__builtin_abort(tls)
}
}()
if (_pBt.X5) == 0 {
goto _6
}
-
_invalidateAllOverflowCache(tls, _pBt)
_sqlite3BtreeGetMeta(tls, _p, i32(4), &_pgnoRoot)
_pgnoRoot += 1
_7:
- if _pgnoRoot != _ptrmapPageno(tls, _pBt, _pgnoRoot) && _pgnoRoot != ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) {
- goto _8
+ if (_pgnoRoot == _ptrmapPageno(tls, _pBt, _pgnoRoot)) || (_pgnoRoot == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) {
+ _pgnoRoot += 1
+ goto _7
}
-
- _pgnoRoot += 1
- goto _7
-
-_8:
func() {
if _pgnoRoot < uint32(i32(3)) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67518), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(80728)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67518), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(79483)))
crt.X__builtin_abort(tls)
}
}()
_rc = _allocateBtreePage(tls, _pBt, &_1_pPageMove, &_1_pgnoMove, _pgnoRoot, uint8(i32(1)))
- if _rc == i32(0) {
- goto _13
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_13:
if _1_pgnoMove == _pgnoRoot {
goto _14
}
-
_4_eType = u8(0)
_4_iPtrPage = u32(0)
_rc = _saveAllCursors(tls, _pBt, uint32(i32(0)), nil)
_releasePage(tls, _1_pPageMove)
- if _rc == i32(0) {
- goto _15
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_15:
_rc = _btreeGetPage(tls, _pBt, _pgnoRoot, &_pRoot, i32(0))
- if _rc == i32(0) {
- goto _16
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_16:
_rc = _ptrmapGet(tls, _pBt, _pgnoRoot, &_4_eType, &_4_iPtrPage)
- if int32(_4_eType) != i32(1) && int32(_4_eType) != i32(2) {
- goto _18
+ if (int32(_4_eType) == i32(1)) || (int32(_4_eType) == i32(2)) {
+ _rc = _sqlite3CorruptError(tls, i32(67556))
}
-
- _rc = _sqlite3CorruptError(tls, i32(67556))
-_18:
- if _rc == i32(0) {
- goto _19
+ if _rc != i32(0) {
+ _releasePage(tls, _pRoot)
+ return _rc
}
-
- _releasePage(tls, _pRoot)
- return _rc
-
-_19:
func() {
if int32(_4_eType) == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67562), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(80756)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67562), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(79509)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_4_eType) == i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67563), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(80780)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67563), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(79532)))
crt.X__builtin_abort(tls)
}
}()
_rc = _relocatePage(tls, _pBt, _pRoot, _4_eType, _4_iPtrPage, _1_pgnoMove, i32(0))
_releasePage(tls, _pRoot)
- if _rc == i32(0) {
- goto _24
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_24:
_rc = _btreeGetPage(tls, _pBt, _pgnoRoot, &_pRoot, i32(0))
- if _rc == i32(0) {
- goto _25
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_25:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pRoot.X23))
- if _rc == i32(0) {
- goto _26
+ if _rc != i32(0) {
+ _releasePage(tls, _pRoot)
+ return _rc
}
-
- _releasePage(tls, _pRoot)
- return _rc
-
-_26:
goto _27
-
_14:
_pRoot = _1_pPageMove
_27:
_ptrmapPut(tls, _pBt, _pgnoRoot, uint8(i32(1)), uint32(i32(0)), &_rc)
- if _rc == 0 {
- goto _28
+ if _rc != 0 {
+ _releasePage(tls, _pRoot)
+ return _rc
}
-
- _releasePage(tls, _pRoot)
- return _rc
-
-_28:
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67595), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(80804)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67595), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(79555)))
crt.X__builtin_abort(tls)
}
}()
@@ -67639,52 +60430,40 @@ _28:
if func() int32 {
if _rc != 0 {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67597), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67597), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _33
+ }() != 0 {
+ _releasePage(tls, _pRoot)
+ return _rc
}
-
- _releasePage(tls, _pRoot)
- return _rc
-
-_33:
goto _34
-
_6:
_rc = _allocateBtreePage(tls, _pBt, &_pRoot, &_pgnoRoot, uint32(i32(1)), uint8(i32(0)))
- if _rc == 0 {
- goto _35
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_35:
_34:
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pRoot.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67607), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(80852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67607), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(79601)))
crt.X__builtin_abort(tls)
}
}()
- if (_createTabFlags & i32(1)) == 0 {
- goto _38
+ if (_createTabFlags & i32(1)) != 0 {
+ _ptfFlags = i32(13)
+ goto _39
}
-
- _ptfFlags = i32(13)
- goto _39
-
-_38:
_ptfFlags = i32(10)
_39:
_zeroPage(tls, _pRoot, _ptfFlags)
_sqlite3PagerUnref(tls, (*XPgHdr)(_pRoot.X23))
func() {
if (int32(_pBt.X4)&i32(4)) != i32(0) && _pgnoRoot != uint32(i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67615), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(80892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67615), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeCreateTableØ00__func__Ø000))), unsafe.Pointer(str(79641)))
crt.X__builtin_abort(tls)
}
}()
@@ -67692,84 +60471,74 @@ _39:
return i32(0)
}
-var _btreeCreateTableØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_btreeCreateTableØ00__func__Ø000[0], str(80944), 17)
-}
-
-func _sqlite3VdbeSorterInit(tls *crt.TLS, _db *Xsqlite3, _nField int32, _pCsr *XVdbeCursor) (r0 int32) { // sqlite3.c:86940:1
- var _pgsz int32 // sqlite3.c:86945:7
- _ = _pgsz
- var _i int32 // sqlite3.c:86946:7
- _ = _i
- var _pSorter *XVdbeSorter // sqlite3.c:86947:14
- _ = _pSorter
- var _pKeyInfo *XKeyInfo // sqlite3.c:86948:11
- _ = _pKeyInfo
- var _szKeyInfo int32 // sqlite3.c:86949:7
- _ = _szKeyInfo
- var _sz int32 // sqlite3.c:86950:7
- _ = _sz
- var _rc int32 // sqlite3.c:86951:7
- _ = _rc
- var _nWorker int32 // sqlite3.c:86955:7
- _ = _nWorker
- var _6_pTask *XSortSubtask // sqlite3.c:86998:19
- _ = _6_pTask
- var _7_mxCache int64 // sqlite3.c:87003:11
- _ = _7_mxCache
- var _7_szPma uint32 // sqlite3.c:87004:11
- _ = _7_szPma
+var _btreeCreateTableØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_btreeCreateTableØ00__func__Ø000[0], str(79691), 17)
+}
+
+// Initialize the temporary index cursor just opened as a sorter cursor.
+//
+// Usually, the sorter module uses the value of (pCsr->pKeyInfo->nField)
+// to determine the number of fields that should be compared from the
+// records being sorted. However, if the value passed as argument nField
+// is non-zero and the sorter is able to guarantee a stable sort, nField
+// is used instead. This is used when sorting records for a CREATE INDEX
+// statement. In this case, keys are always delivered to the sorter in
+// order of the primary key, which happens to be make up the final part
+// of the records being sorted. So if the sort is stable, there is never
+// any reason to compare PK fields and they can be ignored for a small
+// performance boost.
+//
+// The sorter can guarantee a stable sort when running in single-threaded
+// mode, but not in multi-threaded mode.
+//
+// SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+func _sqlite3VdbeSorterInit(tls *crt.TLS, _db *Xsqlite3, _nField int32, _pCsr *XVdbeCursor) (r0 int32) {
+ var _pgsz, _i, _szKeyInfo, _sz, _rc, _nWorker int32
+ var _7_mxCache int64
+ var _7_szPma uint32
+ var _pKeyInfo *XKeyInfo
+ var _pSorter *XVdbeSorter
+ var _6_pTask *XSortSubtask
_rc = i32(0)
- if _sqlite3TempInMemory(tls, _db) == 0 && (_sqlite3Config.X1) != i32(0) {
- goto _1
+ if _sqlite3TempInMemory(tls, _db) != 0 || ((_sqlite3Config.X1) == i32(0)) {
+ _nWorker = i32(0)
+ goto _2
}
-
- _nWorker = i32(0)
- goto _2
-
-_1:
_nWorker = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(11))))
_2:
func() {
if (*XKeyInfo)(_pCsr.X15) == nil || (*XBtree)(_pCsr.X8) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterInitØ00__func__Ø000))), unsafe.Pointer(str(80964)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterInitØ00__func__Ø000))), unsafe.Pointer(str(79708)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCsr.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86976), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterInitØ00__func__Ø000))), unsafe.Pointer(str(59856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86976), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterInitØ00__func__Ø000))), unsafe.Pointer(str(57861)))
crt.X__builtin_abort(tls)
}
}()
_szKeyInfo = int32(u32(24) + (uint32(int32((*XKeyInfo)(_pCsr.X15).X2)-i32(1)) * u32(4)))
_sz = int32(u32(124) + (uint32(_nWorker) * u32(60)))
_pSorter = (*XVdbeSorter)(_sqlite3DbMallocZero(tls, _db, uint64(_sz+_szKeyInfo)))
- *(**XVdbeSorter)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))) = _pSorter
- if _pSorter != nil {
- goto _8
+ *(**XVdbeSorter)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))) = _pSorter
+ if _pSorter == nil {
+ _rc = _sqlite3NomemError(tls, i32(86983))
+ goto _9
}
-
- _rc = _sqlite3NomemError(tls, i32(86983))
- goto _9
-
-_8:
- *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(28 /* X7 */))))) = store48(&_pKeyInfo, (*XKeyInfo)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_pSorter))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_sz))))))))))
+ *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(28 /* X7 */))))) = store50(&_pKeyInfo, (*XKeyInfo)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(_pSorter))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_sz))))))))))
crt.Xmemcpy(tls, (unsafe.Pointer)(_pKeyInfo), _pCsr.X15, uint32(_szKeyInfo))
*(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo)) + uintptr(12 /* X4 */))))) = nil
- if _nField == 0 || _nWorker != i32(0) {
- goto _11
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo)) + uintptr(8 /* X3 */)))
- *p = uint16(int32(*p) + (int32(_pKeyInfo.X2) - _nField))
- sink12 = *p
+ if _nField != 0 && (_nWorker == i32(0)) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo)) + uintptr(8 /* X3 */)))
+ *p = uint16(int32(*p) + (int32(_pKeyInfo.X2) - _nField))
+ sink14 = *p
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo)) + uintptr(6 /* X2 */))) = uint16(_nField)
}
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo)) + uintptr(6 /* X2 */))) = uint16(_nField)
-_11:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(12 /* X3 */))) = store1(&_pgsz, _sqlite3BtreeGetPageSize(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(0)))).X1)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(59 /* X15 */))) = uint8(_nWorker + i32(1))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(58 /* X14 */))) = uint8(_nWorker - i32(1))
@@ -67780,28 +60549,21 @@ _12:
if _i >= int32(_pSorter.X15) {
goto _15
}
-
_6_pTask = (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */))))) + 60*uintptr(_i)))
*(**XVdbeSorter)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pTask)) + uintptr(8 /* X2 */))))) = _pSorter
_i += 1
goto _12
-
_15:
if _sqlite3TempInMemory(tls, _db) != 0 {
goto _16
}
-
_7_szPma = _sqlite3Config.X27
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(0 /* X0 */))) = int32(_7_szPma * uint32(_pgsz))
_7_mxCache = int64((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(i32(0)))).X4).X10)
- if _7_mxCache >= int64(i32(0)) {
- goto _17
+ if _7_mxCache < int64(i32(0)) {
+ _7_mxCache = _7_mxCache * int64(i32(-1024))
+ goto _18
}
-
- _7_mxCache = _7_mxCache * int64(i32(-1024))
- goto _18
-
-_17:
_7_mxCache = _7_mxCache * int64(_pgsz)
_18:
_7_mxCache = func() int64 {
@@ -67819,66 +60581,60 @@ _18:
if _sqlite3Config.X19 != nil {
goto _23
}
-
func() {
if (_pSorter.X10) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87023), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterInitØ00__func__Ø000))), unsafe.Pointer(str(80996)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87023), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterInitØ00__func__Ø000))), unsafe.Pointer(str(79740)))
crt.X__builtin_abort(tls)
}
}()
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(52 /* X11 */))) = _pgsz
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = (*uint8)(_sqlite3Malloc(tls, uint64(_pgsz)))
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) != nil {
- goto _26
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = (*uint8)(_sqlite3Malloc(tls, uint64(_pgsz)))
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
+ _rc = _sqlite3NomemError(tls, i32(87026))
}
-
- _rc = _sqlite3NomemError(tls, i32(87026))
-_26:
_23:
_16:
- if (int32(_pKeyInfo.X2)+int32(_pKeyInfo.X3)) >= i32(13) || (*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0))))) != nil && (*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0))))) != (*XCollSeq)(_db.X2) {
- goto _29
+ if ((int32(_pKeyInfo.X2) + int32(_pKeyInfo.X3)) < i32(13)) && (((*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0))))) == nil) || ((*(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(i32(0))))) == (*XCollSeq)(_db.X2))) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(60 /* X16 */))) = uint8(i32(3))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(60 /* X16 */))) = uint8(i32(3))
-_29:
_9:
- r0 = _rc
- return
+ return _rc
}
-var _sqlite3VdbeSorterInitØ00__func__Ø000 [22]int8 // -
+var _sqlite3VdbeSorterInitØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterInitØ00__func__Ø000[0], str(81016), 22)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterInitØ00__func__Ø000[0], str(79760), 22)
}
-func _sqlite3BtreeCursorHasHint(tls *crt.TLS, _pCsr *XBtCursor, _mask uint32) (r0 int32) { // sqlite3.c:68862:1
+// Return true if the cursor has a hint specified. This routine is
+// only used from within assert() statements
+func _sqlite3BtreeCursorHasHint(tls *crt.TLS, _pCsr *XBtCursor, _mask uint32) (r0 int32) {
return bool2int((uint32(_pCsr.X13) & _mask) != uint32(i32(0)))
}
-func _sqlite3BtreePrevious(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) { // sqlite3.c:64635:1
+func _sqlite3BtreePrevious(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) {
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64636), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64636), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pRes == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75740)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74748)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*_pRes) != i32(0) && (*_pRes) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75748)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74756)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pCur.X9) != i32(0) && int32(_pCur.X12) == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74777)))
crt.X__builtin_abort(tls)
}
}()
@@ -67889,297 +60645,282 @@ func _sqlite3BtreePrevious(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int
sink2 = *p
}
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))))) + uintptr(18 /* X4 */))) = uint16(i32(0))
- if int32(_pCur.X12) == i32(1) && int32(_pCur.X16) != i32(0) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X5) != i32(0) {
- goto _12
+ if ((int32(_pCur.X12) != i32(1)) || (int32(_pCur.X16) == i32(0))) || (int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X5) == i32(0)) {
+ return _btreePrevious(tls, _pCur, _pRes)
}
- return _btreePrevious(tls, _pCur, _pRes)
-
-_12:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) -= 1
return i32(0)
}
-var _sqlite3BtreePreviousØ00__func__Ø000 [21]int8 // -
+var _sqlite3BtreePreviousØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreePreviousØ00__func__Ø000[0], str(81040), 21)
+ crt.Xstrncpy(nil, &_sqlite3BtreePreviousØ00__func__Ø000[0], str(79782), 21)
}
-func _btreePrevious(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) { // sqlite3.c:64576:1
- var _rc int32 // sqlite3.c:64577:7
- _ = _rc
- var _pPage *XMemPage // sqlite3.c:64578:11
- _ = _pPage
- var _6_idx int32 // sqlite3.c:64609:9
- _ = _6_idx
+// Step the cursor to the back to the previous entry in the database. If
+// successful then set *pRes=0. If the cursor
+// was already pointing to the first entry in the database before
+// this routine was called, then set *pRes=1.
+//
+// The main entry point is sqlite3BtreePrevious(). That routine is optimized
+// for the common case of merely decrementing the cell counter BtCursor.aiIdx
+// to the previous cell on the current page. The (slower) btreePrevious()
+// helper routine is called when it is necessary to move to a different page
+// or to restore the cursor.
+//
+// The calling function will set *pRes to 0 or 1. The initial *pRes value
+// will be 1 if the cursor being stepped corresponds to an SQL index and
+// if this routine could have been skipped if that SQL index had been
+// a unique index. Otherwise the caller will have set *pRes to zero.
+// Zero is the common case. The btree implementation is free to use the
+// initial *pRes value as a hint to improve performance, but the current
+// SQLite btree implementation does not. (Note that the comdb2 btree
+// implementation does use this hint, however.)
+func _btreePrevious(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) {
+ var _rc, _6_idx int32
+ var _pPage *XMemPage
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64580), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64580), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pRes == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64581), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75740)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64581), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74748)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*_pRes) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64582), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64582), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74842)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pCur.X9) != i32(0) && int32(_pCur.X12) == i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64583), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64583), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74777)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pCur.X10) & i32(14)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64584), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(81064)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64584), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(79803)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64585), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(81132)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64585), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(79869)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pCur.X12) == i32(1) {
goto _13
}
-
_rc = func() int32 {
if int32(_pCur.X12) >= i32(3) {
return _btreeRestoreCursorPosition(tls, _pCur)
}
return i32(0)
}()
- if _rc == i32(0) {
- goto _16
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_16:
- if i32(0) != int32(_pCur.X12) {
- goto _17
+ if i32(0) == int32(_pCur.X12) {
+ *_pRes = i32(1)
+ return i32(0)
}
-
- *_pRes = i32(1)
- return i32(0)
-
-_17:
if (_pCur.X9) == 0 {
goto _18
}
-
func() {
if int32(_pCur.X12) != i32(1) && int32(_pCur.X12) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64596), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64596), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74851)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(1))
- if (_pCur.X9) >= i32(0) {
- goto _22
+ if (_pCur.X9) < i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(0)
+ return i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(0)
- return i32(0)
-
-_22:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(0)
_18:
_13:
_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
func() {
if (_pPage.X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64607), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(75616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64607), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePreviousØ00__func__Ø000))), unsafe.Pointer(str(74631)))
crt.X__builtin_abort(tls)
}
}()
if (_pPage.X5) != 0 {
goto _25
}
-
_6_idx = int32(_pCur.X16)
_rc = _moveToChild(tls, _pCur, _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*_6_idx))))) + 1*uintptr(i32(0)))))<= int32(_pCur.X14) {
goto _9
}
-
func() {
if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[19]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(68 /* X17 */))))) + 2*uintptr(_1_ii)))) != int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_1_ii)))).X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(81264)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(79995)))
crt.X__builtin_abort(tls)
}
}()
_1_ii += 1
goto _6
-
_9:
func() {
if int32(_pCur.X16) != (int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) - i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64114), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(81308)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64114), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(80036)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64115), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(81356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64115), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(80081)))
crt.X__builtin_abort(tls)
}
}()
@@ -68190,41 +60931,32 @@ _5:
if _rc != i32(0) {
goto _16
}
-
- if i32(0) != int32(_pCur.X12) {
- goto _17
+ if i32(0) == int32(_pCur.X12) {
+ func() {
+ if (_pCur.X7) != uint32(i32(0)) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64123), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(74242)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_pRes = i32(1)
+ goto _21
}
-
- func() {
- if (_pCur.X7) != uint32(i32(0)) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64123), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(75204)))
- crt.X__builtin_abort(tls)
- }
- }()
- *_pRes = i32(1)
- goto _21
-
-_17:
func() {
if int32(_pCur.X12) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64126), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(9240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64126), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLastØ00__func__Ø000))), unsafe.Pointer(str(10390)))
crt.X__builtin_abort(tls)
}
}()
*_pRes = i32(0)
_rc = _moveToRightmost(tls, _pCur)
- if _rc != i32(0) {
- goto _24
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
- *p = uint8(int32(*p) | i32(8))
- sink2 = *p
+ if _rc == i32(0) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
+ *p = uint8(int32(*p) | i32(8))
+ sink2 = *p
+ }
+ goto _25
}
- goto _25
-
-_24:
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
*p = uint8(int32(*p) & i32(-9))
@@ -68233,39 +60965,51 @@ _24:
_25:
_21:
_16:
- r0 = _rc
- return
-}
-
-var _sqlite3BtreeLastØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeLastØ00__func__Ø000[0], str(81388), 17)
+ return _rc
}
-func _sqlite3BtreeInsert(tls *crt.TLS, _pCur *XBtCursor, _pX *XBtreePayload, _flags int32, _seekResult int32) (r0 int32) { // sqlite3.c:67093:1
- var _rc int32 // sqlite3.c:67099:7
- _ = _rc
- var _loc int32 // sqlite3.c:67100:7
- _ = _loc
- var _szNew int32 // sqlite3.c:67101:7
- _ = _szNew
- var _idx int32 // sqlite3.c:67102:7
- _ = _idx
- var _pPage *XMemPage // sqlite3.c:67103:11
- _ = _pPage
- var _p *XBtree // sqlite3.c:67104:9
- _ = _p
- var _pBt *XBtShared // sqlite3.c:67105:12
- _ = _pBt
- var _oldCell *uint8 // sqlite3.c:67106:17
- _ = _oldCell
- var _newCell *uint8 // sqlite3.c:67107:17
- _ = _newCell
- var _7_r XUnpackedRecord // sqlite3.c:67167:22
- _ = _7_r
- var _9_info XCellInfo // sqlite3.c:67200:14
- _ = _9_info
+var _sqlite3BtreeLastØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeLastØ00__func__Ø000[0], str(80113), 17)
+}
+
+// Insert a new record into the BTree. The content of the new record
+// is described by the pX object. The pCur cursor is used only to
+// define what table the record should be inserted into, and is left
+// pointing at a random location.
+//
+// For a table btree (used for rowid tables), only the pX.nKey value of
+// the key is used. The pX.pKey value must be NULL. The pX.nKey is the
+// rowid or INTEGER PRIMARY KEY of the row. The pX.nData,pData,nZero fields
+// hold the content of the row.
+//
+// For an index btree (used for indexes and WITHOUT ROWID tables), the
+// key is an arbitrary byte sequence stored in pX.pKey,nKey. The
+// pX.pData,nData,nZero fields must be zero.
+//
+// If the seekResult parameter is non-zero, then a successful call to
+// MovetoUnpacked() to seek cursor pCur to (pKey,nKey) has already
+// been performed. In other words, if seekResult!=0 then the cursor
+// is currently pointing to a cell that will be adjacent to the cell
+// to be inserted. If seekResult<0 then pCur points to a cell that is
+// smaller then (pKey,nKey). If seekResult>0 then pCur points to a cell
+// that is larger than (pKey,nKey).
+//
+// If seekResult==0, that means pCur is pointing at some unknown location.
+// In that case, this routine must seek the cursor to the correct insertion
+// point for (pKey,nKey) before doing the insertion. For index btrees,
+// if pX->nMem is non-zero, then pX->aMem contains pointers to the unpacked
+// key values and pX->aMem can be used instead of pX->pKey to avoid having
+// to decode the key.
+func _sqlite3BtreeInsert(tls *crt.TLS, _pCur *XBtCursor, _pX *XBtreePayload, _flags int32, _seekResult int32) (r0 int32) {
+ var _rc, _loc, _szNew, _idx int32
+ var _oldCell, _newCell *uint8
+ var _p *XBtree
+ var _pBt *XBtShared
+ var _9_info XCellInfo
+ var _pPage *XMemPage
+ var _7_r XUnpackedRecord
_loc = _seekResult
_szNew = i32(0)
_p = (*XBtree)(_pCur.X0)
@@ -68273,181 +61017,151 @@ func _sqlite3BtreeInsert(tls *crt.TLS, _pCur *XBtCursor, _pX *XBtreePayload, _fl
_newCell = nil
func() {
if (_flags & i32(10)) != _flags {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80130)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pCur.X12) != i32(4) {
- goto _2
+ if int32(_pCur.X12) == i32(4) {
+ func() {
+ if (_pCur.X9) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(76879)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _pCur.X9
}
-
- func() {
- if (_pCur.X9) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(77980)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _pCur.X9
-
-_2:
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pCur.X10)&i32(1)) == i32(0) || int32(_pBt.X8) != i32(2) || (int32(_pBt.X10)&i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67117), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81460)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67117), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80181)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _hasSharedCacheTableLock(tls, _p, _pCur.X7, bool2int((*XKeyInfo)(_pCur.X18) != nil), i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67120), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67120), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80291)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pX.X0 == nil) != ((*XKeyInfo)(_pCur.X18) == nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67127), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81640)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67127), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80356)))
crt.X__builtin_abort(tls)
}
}()
if (int32(_pCur.X10) & i32(32)) == 0 {
goto _15
}
-
_rc = _saveAllCursors(tls, _pBt, _pCur.X7, _pCur)
- if _rc == 0 {
- goto _16
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_16:
_15:
if (*XKeyInfo)(_pCur.X18) != nil {
goto _17
}
-
func() {
if _pX.X0 != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81676)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80391)))
crt.X__builtin_abort(tls)
}
}()
_invalidateIncrblobCursors(tls, _p, _pCur.X7, _pX.X1, i32(0))
func() {
if (_flags&i32(2)) != i32(0) && ((int32(_pCur.X10)&i32(2)) == i32(0) || (_pX.X1) != ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67153), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81688)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67153), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80403)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pCur.X10)&i32(2)) == i32(0) || (_pX.X1) != ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X0) {
- goto _25
+ if ((int32(_pCur.X10) & i32(2)) != i32(0)) && ((_pX.X1) == ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(16 /* X4 */))).X0)) {
+ _loc = i32(0)
+ goto _26
}
-
- _loc = i32(0)
- goto _26
-
-_25:
if _loc != i32(0) {
goto _27
}
-
_rc = _sqlite3BtreeMovetoUnpacked(tls, _pCur, nil, _pX.X1, bool2int(_flags != i32(0)), &_loc)
- if _rc == 0 {
- goto _28
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_28:
_27:
_26:
goto _29
-
_17:
if _loc != i32(0) || (_flags&i32(2)) != i32(0) {
goto _31
}
-
- if (_pX.X4) == 0 {
- goto _32
+ if (_pX.X4) != 0 {
+ *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(0 /* X0 */))))) = (*XKeyInfo)(_pCur.X18)
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(4 /* X1 */))))) = (*XMem)(_pX.X3)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(8 /* X2 */))) = _pX.X4
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(10 /* X3 */))) = int8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(11 /* X4 */))) = uint8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(12 /* X5 */))) = int8(i32(0))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(13 /* X6 */))) = int8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(14 /* X7 */))) = uint8(i32(0))
+ _rc = _sqlite3BtreeMovetoUnpacked(tls, _pCur, &_7_r, int64(i32(0)), bool2int(_flags != i32(0)), &_loc)
+ goto _33
}
-
- *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(0 /* X0 */))))) = (*XKeyInfo)(_pCur.X18)
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(4 /* X1 */))))) = (*XMem)(_pX.X3)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(8 /* X2 */))) = _pX.X4
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(10 /* X3 */))) = int8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(11 /* X4 */))) = uint8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(12 /* X5 */))) = int8(i32(0))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(13 /* X6 */))) = int8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_7_r)) + uintptr(14 /* X7 */))) = uint8(i32(0))
- _rc = _sqlite3BtreeMovetoUnpacked(tls, _pCur, &_7_r, int64(i32(0)), bool2int(_flags != i32(0)), &_loc)
- goto _33
-
-_32:
_rc = _btreeMoveto(tls, _pCur, _pX.X0, _pX.X1, bool2int(_flags != i32(0)), &_loc)
_33:
- if _rc == 0 {
- goto _34
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_34:
_31:
_29:
func() {
if int32(_pCur.X12) != i32(1) && (int32(_pCur.X12) != i32(0) || _loc == 0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81792)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80504)))
crt.X__builtin_abort(tls)
}
}()
_pPage = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
func() {
if (_pPage.X2) == 0 && (_pX.X1) < int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67185), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67185), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80572)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPage.X5) == 0 && (_pPage.X2) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67186), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81892)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67186), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80601)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pPage.X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67191), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(75616)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67191), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(74631)))
crt.X__builtin_abort(tls)
}
}()
_newCell = _pBt.X27
func() {
if _newCell == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67193), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67193), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80631)))
crt.X__builtin_abort(tls)
}
}()
_rc = _fillInCell(tls, _pPage, _newCell, _pX, &_szNew)
- if _rc == 0 {
- goto _49
+ if _rc != 0 {
+ goto _end_insert
}
-
- goto _end_insert
-
-_49:
func() {
if _szNew != int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{(_pPage.X24)})))(tls, _pPage, _newCell)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67196), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81936)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67196), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80642)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _szNew > int32((_pBt.X15)-uint32(i32(8))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(81976)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67197), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80682)))
crt.X__builtin_abort(tls)
}
}()
@@ -68455,82 +61169,61 @@ _49:
if _loc != i32(0) {
goto _54
}
-
func() {
if _idx >= int32(_pPage.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67201), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(82004)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67201), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80709)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage.X23))
- if _rc == 0 {
- goto _57
+ if _rc != 0 {
+ goto _end_insert
}
-
- goto _end_insert
-
-_57:
_oldCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*_idx))))) + 1*uintptr(i32(0)))))<= int32(_pPage.X11) {
goto _62
}
-
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
- if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_oldCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_szNew))))))))) <= uintptr(unsafe.Pointer(_pPage.X20)) {
- goto _65
+ if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_oldCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_szNew))))))))) > uintptr(unsafe.Pointer(_pPage.X20)) {
+ return _sqlite3CorruptError(tls, i32(67224))
}
- return _sqlite3CorruptError(tls, i32(67224))
-
-_65:
crt.Xmemcpy(tls, (unsafe.Pointer)(_oldCell), (unsafe.Pointer)(_newCell), uint32(_szNew))
return i32(0)
_62:
_dropCell(tls, _pPage, _idx, int32(_9_info.X4), &_rc)
- if _rc == 0 {
- goto _66
+ if _rc != 0 {
+ goto _end_insert
}
-
- goto _end_insert
-
-_66:
goto _67
-
_54:
- if _loc >= i32(0) || int32(_pPage.X14) <= i32(0) {
- goto _69
- }
-
- func() {
- if (_pPage.X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(82024)))
- crt.X__builtin_abort(tls)
+ if (_loc < i32(0)) && (int32(_pPage.X14) > i32(0)) {
+ func() {
+ if (_pPage.X5) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67231), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80726)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _idx = int32(preInc14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(66 /* X16 */))), uint16(1)))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
+ *p = uint8(int32(*p) & i32(-3))
+ sink2 = *p
}
- }()
- _idx = int32(preInc12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(66 /* X16 */))), uint16(1)))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(60 /* X10 */)))
- *p = uint8(int32(*p) & i32(-3))
- sink2 = *p
+ goto _72
}
- goto _72
-
-_69:
func() {
if (_pPage.X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67235), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(82024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67235), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80726)))
crt.X__builtin_abort(tls)
}
}()
@@ -68539,13 +61232,13 @@ _67:
_insertCell(tls, _pPage, _idx, _newCell, _szNew, nil, uint32(i32(0)), &_rc)
func() {
if int32(_pPage.X9) != i32(0) && _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(82036)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67238), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80738)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _rc == i32(0) && int32(_pPage.X14) <= i32(0) && int32(_pPage.X9) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67239), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(82076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67239), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80775)))
crt.X__builtin_abort(tls)
}
}()
@@ -68553,10 +61246,9 @@ _67:
if (_pPage.X9) == 0 {
goto _82
}
-
func() {
if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67263), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67263), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(15012)))
crt.X__builtin_abort(tls)
}
}()
@@ -68571,27 +61263,21 @@ _67:
if (_flags&i32(2)) == 0 || _rc != i32(0) {
goto _86
}
-
_rc = _moveToRoot(tls, _pCur)
if (*XKeyInfo)(_pCur.X18) == nil {
goto _87
}
-
func() {
if _pCur.X6 != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(82132)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80829)))
crt.X__builtin_abort(tls)
}
}()
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(44 /* X6 */))) = _sqlite3Malloc(tls, uint64(_pX.X1))
- if _pCur.X6 != nil {
- goto _90
+ if _pCur.X6 == nil {
+ _rc = i32(7)
+ goto _91
}
-
- _rc = i32(7)
- goto _91
-
-_90:
crt.Xmemcpy(tls, _pCur.X6, _pX.X0, uint32(_pX.X1))
_91:
_87:
@@ -68601,32 +61287,43 @@ _86:
_82:
func() {
if int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X9) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(82148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeInsertØ00__func__Ø000))), unsafe.Pointer(str(80843)))
crt.X__builtin_abort(tls)
}
}()
_end_insert:
return _rc
+
+ _ = _7_r
+ _ = _9_info
+ panic(0)
}
-var _sqlite3BtreeInsertØ00__func__Ø000 [19]int8 // -
+var _sqlite3BtreeInsertØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeInsertØ00__func__Ø000[0], str(82188), 19)
+ crt.Xstrncpy(nil, &_sqlite3BtreeInsertØ00__func__Ø000[0], str(80883), 19)
}
-func _invalidateIncrblobCursors(tls *crt.TLS, _pBtree *XBtree, _pgnoRoot uint32, _iRow int64, _isClearTable int32) { // sqlite3.c:59534:1
- var _p *XBtCursor // sqlite3.c:59540:12
- _ = _p
- if int32(_pBtree.X5) != i32(0) {
- goto _0
+// This function is called before modifying the contents of a table
+// to invalidate any incrblob cursors that are open on the
+// row or one of the rows being modified.
+//
+// If argument isClearTable is true, then the entire contents of the
+// table is about to be deleted. In this case invalidate all incrblob
+// cursors open on any row within the table with root-page pgnoRoot.
+//
+// Otherwise, if argument isClearTable is false, then the row with
+// rowid iRow is being replaced or deleted. In this case invalidate
+// only those incrblob cursors open on that specific row.
+func _invalidateIncrblobCursors(tls *crt.TLS, _pBtree *XBtree, _pgnoRoot uint32, _iRow int64, _isClearTable int32) {
+ var _p *XBtCursor
+ if int32(_pBtree.X5) == i32(0) {
+ return
}
- return
-
-_0:
func() {
if _sqlite3BtreeHoldsMutex(tls, _pBtree) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59542), unsafe.Pointer((*int8)(unsafe.Pointer(&_invalidateIncrblobCursorsØ00__func__Ø000))), unsafe.Pointer(str(82208)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59542), unsafe.Pointer((*int8)(unsafe.Pointer(&_invalidateIncrblobCursorsØ00__func__Ø000))), unsafe.Pointer(str(80902)))
crt.X__builtin_abort(tls)
}
}()
@@ -68636,120 +61333,93 @@ _3:
if _p == nil {
goto _6
}
-
if (int32(_p.X10) & i32(16)) == i32(0) {
goto _7
}
-
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBtree)) + uintptr(11 /* X5 */))) = uint8(i32(1))
- if (_p.X7) != _pgnoRoot || _isClearTable == 0 && ((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(16 /* X4 */))).X0) != _iRow {
- goto _10
+ if ((_p.X7) == _pgnoRoot) && (_isClearTable != 0 || (((*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))).X0) == _iRow)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(62 /* X12 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(62 /* X12 */))) = uint8(i32(0))
-_10:
_7:
_p = (*XBtCursor)(_p.X2)
goto _3
-
_6:
}
-var _invalidateIncrblobCursorsØ00__func__Ø000 [26]int8 // -
+var _invalidateIncrblobCursorsØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_invalidateIncrblobCursorsØ00__func__Ø000[0], str(82240), 26)
+ crt.Xstrncpy(nil, &_invalidateIncrblobCursorsØ00__func__Ø000[0], str(80933), 26)
}
-func _fillInCell(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pX *XBtreePayload, _pnSize *int32) (r0 int32) { // sqlite3.c:65215:1
- var _nPayload int32 // sqlite3.c:65221:7
- _ = _nPayload
- var _pSrc *uint8 // sqlite3.c:65222:12
- _ = _pSrc
- var _nSrc int32 // sqlite3.c:65223:7
- _ = _nSrc
- var _n int32 // sqlite3.c:65223:13
- _ = _n
- var _rc int32 // sqlite3.c:65223:16
- _ = _rc
- var _spaceLeft int32 // sqlite3.c:65224:7
- _ = _spaceLeft
- var _pOvfl *XMemPage // sqlite3.c:65225:11
- _ = _pOvfl
- var _pToRelease *XMemPage // sqlite3.c:65226:11
- _ = _pToRelease
- var _pPrior *uint8 // sqlite3.c:65227:17
- _ = _pPrior
- var _pPayload *uint8 // sqlite3.c:65228:17
- _ = _pPayload
- var _pBt *XBtShared // sqlite3.c:65229:12
- _ = _pBt
- var _pgnoOvfl uint32 // sqlite3.c:65230:8
- _ = _pgnoOvfl
- var _nHeader int32 // sqlite3.c:65231:7
- _ = _nHeader
- var _4_mn int32 // sqlite3.c:65266:9
- _ = _4_mn
- var _5_info XCellInfo // sqlite3.c:65291:14
- _ = _5_info
- var _7_pgnoPtrmap uint32 // sqlite3.c:65304:12
- _ = _7_pgnoPtrmap
- var _10_eType uint8 // sqlite3.c:65326:12
- _ = _10_eType
+// Create the byte sequence used to represent a cell on page pPage
+// and write that byte sequence into pCell[]. Overflow pages are
+// allocated and filled in as necessary. The calling procedure
+// is responsible for making sure sufficient space has been allocated
+// for pCell[].
+//
+// Note that pCell does not necessary need to point to the pPage->aData
+// area. pCell might point to some temporary storage. The cell will
+// be constructed in this temporary area then copied into pPage->aData
+// later.
+func _fillInCell(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pX *XBtreePayload, _pnSize *int32) (r0 int32) {
+ var _nPayload, _nSrc, _n, _rc, _spaceLeft, _nHeader, _4_mn int32
+ var _pgnoOvfl, _7_pgnoPtrmap uint32
+ var _10_eType uint8
+ var _pSrc, _pPrior, _pPayload *uint8
+ var _pBt *XBtShared
+ var _5_info XCellInfo
+ var _pOvfl, _pToRelease *XMemPage
_pOvfl = nil
_pToRelease = nil
_pBt = (*XBtShared)(_pPage.X18)
_pgnoOvfl = u32(0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65233), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65233), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer(_pCell)) >= uintptr(unsafe.Pointer(_pPage.X19)) && uintptr(unsafe.Pointer(_pCell)) < uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(_pBt.X15))))) && _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65237), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65237), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(80959)))
crt.X__builtin_abort(tls)
}
}()
_nHeader = int32(_pPage.X7)
- if (_pPage.X2) == 0 {
- goto _6
- }
-
- _nPayload = (_pX.X5) + (_pX.X6)
- _pSrc = (*uint8)(_pX.X2)
- _nSrc = _pX.X5
- func() {
- if (_pPage.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65246), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(55320)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := &_nHeader
- *p = (*p) + int32(uint8(func() int32 {
- if uint32(_nPayload) < u32(128) {
- return func() int32 {
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell)) + 1*uintptr(_nHeader))) = uint8(_nPayload)
- return i32(1)
- }()
+ if (_pPage.X2) != 0 {
+ _nPayload = (_pX.X5) + (_pX.X6)
+ _pSrc = (*uint8)(_pX.X2)
+ _nSrc = _pX.X5
+ func() {
+ if (_pPage.X3) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65246), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(53565)))
+ crt.X__builtin_abort(tls)
}
- return _sqlite3PutVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(_nHeader))), uint64(_nPayload))
- }()))
- sink1 = *p
- }
- {
- p := &_nHeader
- *p = (*p) + _sqlite3PutVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(_nHeader))), *(*uint64)(unsafe.Pointer((*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(4 /* X1 */))))))
- sink1 = *p
+ }()
+ {
+ p := &_nHeader
+ *p = (*p) + int32(uint8(func() int32 {
+ if uint32(_nPayload) < u32(128) {
+ return func() int32 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell)) + 1*uintptr(_nHeader))) = uint8(_nPayload)
+ return i32(1)
+ }()
+ }
+ return _sqlite3PutVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(_nHeader))), uint64(_nPayload))
+ }()))
+ sink1 = *p
+ }
+ {
+ p := &_nHeader
+ *p = (*p) + _sqlite3PutVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(_nHeader))), *(*uint64)(unsafe.Pointer((*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(4 /* X1 */))))))
+ sink1 = *p
+ }
+ goto _11
}
- goto _11
-
-_6:
func() {
if (_pX.X1) > int64(i32(2147483647)) || (_pX.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65250), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82372)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65250), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81060)))
crt.X__builtin_abort(tls)
}
}()
@@ -68772,28 +61442,20 @@ _11:
if _nPayload > int32(_pPage.X10) {
goto _17
}
-
_n = _nHeader + _nPayload
- if _n >= i32(4) {
- goto _18
+ if _n < i32(4) {
+ _n = i32(4)
}
-
- _n = i32(4)
-_18:
*_pnSize = _n
_spaceLeft = _nPayload
_pPrior = _pCell
goto _19
-
_17:
_4_mn = int32(_pPage.X11)
_n = int32(uint32(_4_mn) + (uint32(_nPayload-_4_mn) % (((*XBtShared)(_pPage.X18).X16) - uint32(i32(4)))))
- if _n <= int32(_pPage.X10) {
- goto _20
+ if _n > int32(_pPage.X10) {
+ _n = _4_mn
}
-
- _n = _4_mn
-_20:
_spaceLeft = _n
*_pnSize = (_n + _nHeader) + i32(4)
_pPrior = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell)) + 1*uintptr(_nHeader+_n)))
@@ -68804,25 +61466,25 @@ _19:
}{(_pPage.X25)})))(tls, _pPage, _pCell, &_5_info)
func() {
if _nHeader != int32((uintptr(unsafe.Pointer(_5_info.X1))-uintptr(unsafe.Pointer(_pCell)))/1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65293), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82408)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65293), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81096)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_5_info.X0) != (_pX.X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65294), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82448)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65294), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81134)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*_pnSize) != int32(_5_info.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65295), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82468)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65295), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81154)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _spaceLeft != int32(_5_info.X3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65296), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82492)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65296), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81176)))
crt.X__builtin_abort(tls)
}
}()
@@ -68830,28 +61492,23 @@ _29:
if _nPayload <= i32(0) {
goto _30
}
-
if _spaceLeft != i32(0) {
goto _31
}
-
_7_pgnoPtrmap = _pgnoOvfl
if (_pBt.X5) == 0 {
goto _32
}
-
_33:
_pgnoOvfl += 1
if (_ptrmapPageno(tls, _pBt, _pgnoOvfl) == _pgnoOvfl) || (_pgnoOvfl == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) {
goto _33
}
-
_32:
_rc = _allocateBtreePage(tls, _pBt, &_pOvfl, &_pgnoOvfl, _pgnoOvfl, uint8(i32(0)))
if (_pBt.X5) == 0 || _rc != i32(0) {
goto _36
}
-
_10_eType = uint8(func() int32 {
if _7_pgnoPtrmap != 0 {
return i32(4)
@@ -68859,30 +61516,23 @@ _32:
return i32(3)
}())
_ptrmapPut(tls, _pBt, _pgnoOvfl, _10_eType, _7_pgnoPtrmap, &_rc)
- if _rc == 0 {
- goto _39
+ if _rc != 0 {
+ _releasePage(tls, _pOvfl)
}
-
- _releasePage(tls, _pOvfl)
-_39:
_36:
- if _rc == 0 {
- goto _40
+ if _rc != 0 {
+ _releasePage(tls, _pToRelease)
+ return _rc
}
-
- _releasePage(tls, _pToRelease)
- return _rc
-
-_40:
func() {
if _pToRelease != nil && _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pToRelease.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65340), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65340), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer(_pPrior)) >= uintptr(unsafe.Pointer(_pPage.X19)) && uintptr(unsafe.Pointer(_pPrior)) < uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(_pBt.X15))))) && _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65344), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82584)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65344), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81263)))
crt.X__builtin_abort(tls)
}
}()
@@ -68895,43 +61545,35 @@ _40:
_spaceLeft = int32((_pBt.X16) - uint32(i32(4)))
_31:
_n = _nPayload
- if _n <= _spaceLeft {
- goto _48
+ if _n > _spaceLeft {
+ _n = _spaceLeft
}
-
- _n = _spaceLeft
-_48:
func() {
if _pToRelease != nil && _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pToRelease.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65360), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82520)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65360), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81201)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uintptr(unsafe.Pointer(_pPayload)) >= uintptr(unsafe.Pointer(_pPage.X19)) && uintptr(unsafe.Pointer(_pPayload)) < uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(_pBt.X15))))) && _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65364), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82688)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65364), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81366)))
crt.X__builtin_abort(tls)
}
}()
if _nSrc <= i32(0) {
goto _56
}
-
- if _n <= _nSrc {
- goto _57
+ if _n > _nSrc {
+ _n = _nSrc
}
-
- _n = _nSrc
-_57:
func() {
if _pSrc == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65369), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(82796)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65369), unsafe.Pointer((*int8)(unsafe.Pointer(&_fillInCellØ00__func__Ø000))), unsafe.Pointer(str(81473)))
crt.X__builtin_abort(tls)
}
}()
crt.Xmemcpy(tls, (unsafe.Pointer)(_pPayload), (unsafe.Pointer)(_pSrc), uint32(_n))
goto _60
-
_56:
crt.Xmemset(tls, (unsafe.Pointer)(_pPayload), i32(0), uint32(_n))
_60:
@@ -68943,12 +61585,12 @@ _60:
{
p := &_pPayload
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
- sink11 = *p
+ sink13 = *p
}
{
p := &_pSrc
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
- sink11 = *p
+ sink13 = *p
}
{
p := &_nSrc
@@ -68961,59 +61603,48 @@ _60:
sink1 = *p
}
goto _29
-
_30:
_releasePage(tls, _pToRelease)
return i32(0)
+
+ _ = _5_info
+ panic(0)
}
-var _fillInCellØ00__func__Ø000 [11]int8 // -
+var _fillInCellØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_fillInCellØ00__func__Ø000[0], str(82804), 11)
+ crt.Xstrncpy(nil, &_fillInCellØ00__func__Ø000[0], str(81478), 11)
}
-func _clearCell(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) (r0 int32) { // sqlite3.c:65136:1
- var _pBt *XBtShared // sqlite3.c:65141:12
- _ = _pBt
- var _ovflPgno uint32 // sqlite3.c:65142:8
- _ = _ovflPgno
- var _rc int32 // sqlite3.c:65143:7
- _ = _rc
- var _nOvfl int32 // sqlite3.c:65144:7
- _ = _nOvfl
- var _ovflPageSize uint32 // sqlite3.c:65145:7
- _ = _ovflPageSize
- var _3_iNext uint32 // sqlite3.c:65163:10
- _ = _3_iNext
- var _3_pOvfl *XMemPage // sqlite3.c:65164:13
- _ = _3_pOvfl
+// Free any overflow pages associated with the given Cell. Write the
+// local Cell size (the number of bytes on the original page, omitting
+// overflow) into *pnSize.
+func _clearCell(tls *crt.TLS, _pPage *XMemPage, _pCell *uint8, _pInfo *XCellInfo) (r0 int32) {
+ var _rc, _nOvfl int32
+ var _ovflPgno, _ovflPageSize, _3_iNext uint32
+ var _pBt *XBtShared
+ var _3_pOvfl *XMemPage
_pBt = (*XBtShared)(_pPage.X18)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65147), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearCellØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65147), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearCellØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
(*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
}{(_pPage.X25)})))(tls, _pPage, _pCell, _pInfo)
- if uint32(_pInfo.X3) != (_pInfo.X2) {
- goto _2
+ if uint32(_pInfo.X3) == (_pInfo.X2) {
+ return i32(0)
}
- return i32(0)
-
-_2:
- if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pInfo.X4)))))))))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(1)))))))))) <= uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pPage.X15))))))))) {
- goto _3
+ if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pInfo.X4)))))))))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(1)))))))))) > uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pPage.X15))))))))) {
+ return _sqlite3CorruptError(tls, i32(65153))
}
- return _sqlite3CorruptError(tls, i32(65153))
-
-_3:
_ovflPgno = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_pInfo.X4)))))))))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4)))))))))
func() {
if (_pBt.X16) <= uint32(i32(4)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65156), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearCellØ00__func__Ø000))), unsafe.Pointer(str(82816)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65156), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearCellØ00__func__Ø000))), unsafe.Pointer(str(81489)))
crt.X__builtin_abort(tls)
}
}()
@@ -69021,7 +61652,7 @@ _3:
_nOvfl = int32(((((_pInfo.X2) - uint32(_pInfo.X3)) + _ovflPageSize) - uint32(i32(1))) / _ovflPageSize)
func() {
if _nOvfl <= i32(0) && ((_sqlite3Config.X6) != i32(0) || ((_pInfo.X2)+_ovflPageSize) >= _ovflPageSize) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65159), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearCellØ00__func__Ø000))), unsafe.Pointer(str(82836)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65159), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearCellØ00__func__Ø000))), unsafe.Pointer(str(81509)))
crt.X__builtin_abort(tls)
}
}()
@@ -69029,277 +61660,211 @@ _10:
if postInc1(&_nOvfl, int32(-1)) == 0 {
goto _11
}
-
_3_iNext = uint32(i32(0))
_3_pOvfl = nil
- if _ovflPgno >= uint32(i32(2)) && _ovflPgno <= _btreePagecount(tls, _pBt) {
- goto _13
+ if (_ovflPgno < uint32(i32(2))) || (_ovflPgno > _btreePagecount(tls, _pBt)) {
+ return _sqlite3CorruptError(tls, i32(65169))
}
- return _sqlite3CorruptError(tls, i32(65169))
-
-_13:
if _nOvfl == 0 {
goto _14
}
-
_rc = _getOverflowPage(tls, _pBt, _ovflPgno, &_3_pOvfl, &_3_iNext)
- if _rc == 0 {
- goto _15
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_15:
_14:
- if _3_pOvfl == nil && store50(&_3_pOvfl, _btreePageLookup(tls, _pBt, _ovflPgno)) == nil || _sqlite3PagerPageRefcount(tls, (*XPgHdr)(_3_pOvfl.X23)) == i32(1) {
- goto _18
+ if ((_3_pOvfl != nil) || (store52(&_3_pOvfl, _btreePageLookup(tls, _pBt, _ovflPgno)) != nil)) && (_sqlite3PagerPageRefcount(tls, (*XPgHdr)(_3_pOvfl.X23)) != i32(1)) {
+ _rc = _sqlite3CorruptError(tls, i32(65189))
+ goto _19
}
-
- _rc = _sqlite3CorruptError(tls, i32(65189))
- goto _19
-
-_18:
_rc = _freePage2(tls, _pBt, _3_pOvfl, _ovflPgno)
_19:
- if _3_pOvfl == nil {
- goto _20
+ if _3_pOvfl != nil {
+ _sqlite3PagerUnref(tls, (*XPgHdr)(_3_pOvfl.X23))
}
-
- _sqlite3PagerUnref(tls, (*XPgHdr)(_3_pOvfl.X23))
-_20:
- if _rc == 0 {
- goto _21
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_21:
_ovflPgno = _3_iNext
goto _10
-
_11:
return i32(0)
}
-var _clearCellØ00__func__Ø000 [10]int8 // -
+var _clearCellØ00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_clearCellØ00__func__Ø000[0], str(82912), 10)
+ crt.Xstrncpy(nil, &_clearCellØ00__func__Ø000[0], str(81582), 10)
}
-func _btreePageLookup(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 *XMemPage) { // sqlite3.c:61036:1
- var _pDbPage *XPgHdr // sqlite3.c:61037:10
- _ = _pDbPage
+// Retrieve a page from the pager cache. If the requested page is not
+// already in the pager cache return NULL. Initialize the MemPage.pBt and
+// MemPage.aData elements if needed.
+func _btreePageLookup(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 *XMemPage) {
+ var _pDbPage *XPgHdr
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61038), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePageLookupØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61038), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreePageLookupØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
_pDbPage = _sqlite3PagerLookup(tls, (*XPager)(_pBt.X0), _pgno)
- if _pDbPage == nil {
- goto _2
+ if _pDbPage != nil {
+ return _btreePageFromDbPage(tls, _pDbPage, _pgno, _pBt)
}
- return _btreePageFromDbPage(tls, _pDbPage, _pgno, _pBt)
-
-_2:
return nil
}
-var _btreePageLookupØ00__func__Ø000 [16]int8 // -
+var _btreePageLookupØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_btreePageLookupØ00__func__Ø000[0], str(82924), 16)
+ crt.Xstrncpy(nil, &_btreePageLookupØ00__func__Ø000[0], str(81592), 16)
}
-func _freePage2(tls *crt.TLS, _pBt *XBtShared, _pMemPage *XMemPage, _iPage uint32) (r0 int32) { // sqlite3.c:64997:1
- var _pTrunk *XMemPage // sqlite3.c:64998:11
- _ = _pTrunk
- var _iTrunk uint32 // sqlite3.c:64999:8
- _ = _iTrunk
- var _pPage1 *XMemPage // sqlite3.c:65000:11
- _ = _pPage1
- var _pPage *XMemPage // sqlite3.c:65001:11
- _ = _pPage
- var _rc int32 // sqlite3.c:65002:7
- _ = _rc
- var _nFree int32 // sqlite3.c:65003:7
- _ = _nFree
- var _6_nLeaf uint32 // sqlite3.c:65051:9
- _ = _6_nLeaf
+// This function is used to add page iPage to the database file free-list.
+// It is assumed that the page is not already a part of the free-list.
+//
+// The value passed as the second argument to this function is optional.
+// If the caller happens to have a pointer to the MemPage object
+// corresponding to page iPage handy, it may pass it as the second value.
+// Otherwise, it may pass NULL.
+//
+// If a pointer to a MemPage object is passed as the second argument,
+// its reference count is not altered by this function.
+func _freePage2(tls *crt.TLS, _pBt *XBtShared, _pMemPage *XMemPage, _iPage uint32) (r0 int32) {
+ var _rc, _nFree int32
+ var _iTrunk, _6_nLeaf uint32
+ var _pTrunk, _pPage1, _pPage *XMemPage
_pTrunk = nil
_iTrunk = u32(0)
_pPage1 = (*XMemPage)(_pBt.X3)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65005), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65005), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_sqlite3Config.X6) != i32(0) && _iPage <= uint32(i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65006), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(82940)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65006), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(81608)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pMemPage != nil && (_pMemPage.X4) != _iPage {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65007), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(82964)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65007), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(81630)))
crt.X__builtin_abort(tls)
}
}()
- if _iPage >= uint32(i32(2)) {
- goto _8
+ if _iPage < uint32(i32(2)) {
+ return _sqlite3CorruptError(tls, i32(65009))
}
- return _sqlite3CorruptError(tls, i32(65009))
-
-_8:
- if _pMemPage == nil {
- goto _9
+ if _pMemPage != nil {
+ _pPage = _pMemPage
+ _sqlite3PagerRef(tls, (*XPgHdr)(_pPage.X23))
+ goto _10
}
-
- _pPage = _pMemPage
- _sqlite3PagerRef(tls, (*XPgHdr)(_pPage.X23))
- goto _10
-
-_9:
_pPage = _btreePageLookup(tls, _pBt, _iPage)
_10:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage1.X23))
- if _rc == 0 {
- goto _11
+ if _rc != 0 {
+ goto _freepage_out
}
-
- goto _freepage_out
-
-_11:
_nFree = int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(36))))))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(36)))), uint32(_nFree+i32(1)))
if (int32(_pBt.X10) & i32(4)) == 0 {
goto _12
}
-
- if (_pPage != nil || store1(&_rc, _btreeGetPage(tls, _pBt, _iPage, &_pPage, i32(0))) == i32(0)) && store1(&_rc, _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage.X23))) == i32(0) {
- goto _15
+ if ((_pPage == nil) && (store1(&_rc, _btreeGetPage(tls, _pBt, _iPage, &_pPage, i32(0))) != i32(0))) || (store1(&_rc, _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage.X23))) != i32(0)) {
+ goto _freepage_out
}
-
- goto _freepage_out
-
-_15:
crt.Xmemset(tls, (unsafe.Pointer)(_pPage.X19), i32(0), (*XBtShared)(_pPage.X18).X15)
_12:
if (_pBt.X5) == 0 {
goto _16
}
-
_ptrmapPut(tls, _pBt, _iPage, uint8(i32(2)), uint32(i32(0)), &_rc)
- if _rc == 0 {
- goto _17
+ if _rc != 0 {
+ goto _freepage_out
}
-
- goto _freepage_out
-
-_17:
_16:
if _nFree == i32(0) {
goto _18
}
-
_iTrunk = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32)))))
_rc = _btreeGetPage(tls, _pBt, _iTrunk, &_pTrunk, i32(0))
- if _rc == i32(0) {
- goto _19
+ if _rc != i32(0) {
+ goto _freepage_out
}
-
- goto _freepage_out
-
-_19:
_6_nLeaf = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(4)))))
func() {
if (_pBt.X16) <= uint32(i32(32)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65060), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(83000)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65060), unsafe.Pointer((*int8)(unsafe.Pointer(&_freePage2Ø00__func__Ø000))), unsafe.Pointer(str(81665)))
crt.X__builtin_abort(tls)
}
}()
- if _6_nLeaf <= (((_pBt.X16) / uint32(i32(4))) - uint32(i32(2))) {
- goto _22
+ if _6_nLeaf > (((_pBt.X16) / uint32(i32(4))) - uint32(i32(2))) {
+ _rc = _sqlite3CorruptError(tls, i32(65062))
+ goto _freepage_out
}
-
- _rc = _sqlite3CorruptError(tls, i32(65062))
- goto _freepage_out
-
-_22:
if _6_nLeaf >= (((_pBt.X16) / uint32(i32(4))) - uint32(i32(8))) {
goto _23
}
-
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pTrunk.X23))
if _rc != i32(0) {
goto _24
}
-
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(i32(4)))), _6_nLeaf+uint32(i32(1)))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrunk.X19))+1*uintptr(uint32(i32(8))+(_6_nLeaf*uint32(i32(4)))))), _iPage)
- if _pPage == nil || (int32(_pBt.X10)&i32(4)) != i32(0) {
- goto _26
+ if (_pPage != nil) && ((int32(_pBt.X10) & i32(4)) == i32(0)) {
+ _sqlite3PagerDontWrite(tls, (*XPgHdr)(_pPage.X23))
}
-
- _sqlite3PagerDontWrite(tls, (*XPgHdr)(_pPage.X23))
-_26:
_rc = _btreeSetHasContent(tls, _pBt, _iPage)
_24:
goto _freepage_out
-
_23:
_18:
- if _pPage != nil || i32(0) == store1(&_rc, _btreeGetPage(tls, _pBt, _iPage, &_pPage, i32(0))) {
- goto _28
+ if (_pPage == nil) && (i32(0) != store1(&_rc, _btreeGetPage(tls, _pBt, _iPage, &_pPage, i32(0)))) {
+ goto _freepage_out
}
-
- goto _freepage_out
-
-_28:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage.X23))
- if _rc == i32(0) {
- goto _29
+ if _rc != i32(0) {
+ goto _freepage_out
}
-
- goto _freepage_out
-
-_29:
_sqlite3Put4byte(tls, _pPage.X19, _iTrunk)
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19))+1*uintptr(i32(4)))), uint32(i32(0)))
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage1.X19))+1*uintptr(i32(32)))), _iPage)
_freepage_out:
- if _pPage == nil {
- goto _30
+ if _pPage != nil {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = uint8(i32(0))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = uint8(i32(0))
-_30:
_releasePage(tls, _pPage)
_releasePage(tls, _pTrunk)
return _rc
}
-var _freePage2Ø00__func__Ø000 [10]int8 // -
+var _freePage2Ø00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_freePage2Ø00__func__Ø000[0], str(83020), 10)
+ crt.Xstrncpy(nil, &_freePage2Ø00__func__Ø000[0], str(81684), 10)
}
-func _sqlite3PagerRef(tls *crt.TLS, _pPg *XPgHdr) { // sqlite3.c:51078:1
+// Increment the reference count for page pPg.
+func _sqlite3PagerRef(tls *crt.TLS, _pPg *XPgHdr) {
_sqlite3PcacheRef(tls, _pPg)
}
-func _sqlite3PcacheRef(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44652:1
+// Increase the reference count of a supplied page by 1.
+func _sqlite3PcacheRef(tls *crt.TLS, _p *XPgHdr) {
func() {
if int32(_p.X7) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheRefØ00__func__Ø000))), unsafe.Pointer(str(12860)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheRefØ00__func__Ø000))), unsafe.Pointer(str(13857)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PcachePageSanity(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44654), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheRefØ00__func__Ø000))), unsafe.Pointer(str(12872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44654), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheRefØ00__func__Ø000))), unsafe.Pointer(str(13867)))
crt.X__builtin_abort(tls)
}
}()
@@ -69307,108 +61872,143 @@ func _sqlite3PcacheRef(tls *crt.TLS, _p *XPgHdr) { // sqlite3.c:44652:1
*(*int32)(unsafe.Pointer(uintptr(_p.X8) + uintptr(12 /* X3 */))) += 1
}
-var _sqlite3PcacheRefØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheRefØ00__func__Ø000[0], str(83032), 17)
-}
-
-func _sqlite3PagerDontWrite(tls *crt.TLS, _pPg *XPgHdr) { // sqlite3.c:53036:1
- var _pPager *XPager // sqlite3.c:53037:9
- _ = _pPager
+var _sqlite3PcacheRefØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PcacheRefØ00__func__Ø000[0], str(81694), 17)
+}
+
+// A call to this routine tells the pager that it is not necessary to
+// write the information on page pPg back to the disk, even though
+// that page might be marked as dirty. This happens, for example, when
+// the page has been added as a leaf of the freelist and so its
+// content no longer matters.
+//
+// The overlying software layer calls this routine when all of the data
+// on the given page is unused. The pager marks the page as clean so
+// that it does not get written to disk.
+//
+// Tests show that this optimization can quadruple the speed of large
+// DELETE operations.
+//
+// This optimization cannot be used with a temp-file, as the page may
+// have been dirty at the start of the transaction. In that case, if
+// memory pressure forces page pPg out of the cache, the data does need
+// to be written out to disk so that it may be read back in if the
+// current transaction is rolled back.
+func _sqlite3PagerDontWrite(tls *crt.TLS, _pPg *XPgHdr) {
+ var _pPager *XPager
_pPager = (*XPager)(_pPg.X4)
- if (_pPager.X10) != 0 || (int32(_pPg.X6)&i32(2)) == 0 || (_pPager.X38) != i32(0) {
- goto _2
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
- *p = uint16(int32(*p) | i32(16))
- sink12 = *p
- }
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
- *p = uint16(int32(*p) & i32(-5))
- sink12 = *p
- }
-_2:
-}
-
-func _btreeSetHasContent(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 int32) { // sqlite3.c:59594:1
- var _rc int32 // sqlite3.c:59595:7
- _ = _rc
+ if (((_pPager.X10) == 0) && (int32(_pPg.X6)&i32(2)) != 0) && ((_pPager.X38) == i32(0)) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
+ *p = uint16(int32(*p) | i32(16))
+ sink14 = *p
+ }
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(24 /* X6 */)))
+ *p = uint16(int32(*p) & i32(-5))
+ sink14 = *p
+ }
+ }
+}
+
+// Set bit pgno of the BtShared.pHasContent bitvec. This is called
+// when a page that previously contained data becomes a free-list leaf
+// page.
+//
+// The BtShared.pHasContent bitvec exists to work around an obscure
+// bug caused by the interaction of two useful IO optimizations surrounding
+// free-list leaf pages:
+//
+// 1) When all data is deleted from a page and the page becomes
+// a free-list leaf page, the page is not written to the database
+// (as free-list leaf pages contain no meaningful data). Sometimes
+// such a page is not even journalled (as it will not be modified,
+// why bother journalling it?).
+//
+// 2) When a free-list leaf page is reused, its content is not read
+// from the database or written to the journal file (why should it
+// be, if it is not at all meaningful?).
+//
+// By themselves, these optimizations work fine and provide a handy
+// performance boost to bulk delete or insert operations. However, if
+// a page is moved to the free-list and then reused within the same
+// transaction, a problem comes up. If the page is not journalled when
+// it is moved to the free-list and it is also not journalled when it
+// is extracted from the free-list and reused, then the original data
+// may be lost. In the event of a rollback, it may not be possible
+// to restore the database to its original configuration.
+//
+// The solution is the BtShared.pHasContent bitvec. Whenever a page is
+// moved to become a free-list leaf page, the corresponding bit is
+// set in the bitvec. Whenever a leaf page is extracted from the free-list,
+// optimization 2 above is omitted if the corresponding bit is already
+// set in BtShared.pHasContent. The contents of the bitvec are cleared
+// at the end of every transaction.
+func _btreeSetHasContent(tls *crt.TLS, _pBt *XBtShared, _pgno uint32) (r0 int32) {
+ var _rc int32
_rc = i32(0)
if (*XBitvec)(_pBt.X22) != nil {
goto _0
}
-
func() {
if _pgno > (_pBt.X18) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59597), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeSetHasContentØ00__func__Ø000))), unsafe.Pointer(str(83052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59597), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeSetHasContentØ00__func__Ø000))), unsafe.Pointer(str(81711)))
crt.X__builtin_abort(tls)
}
}()
*(**XBitvec)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(60 /* X22 */))))) = _sqlite3BitvecCreate(tls, _pBt.X18)
- if (*XBitvec)(_pBt.X22) != nil {
- goto _3
+ if (*XBitvec)(_pBt.X22) == nil {
+ _rc = _sqlite3NomemError(tls, i32(59600))
}
-
- _rc = _sqlite3NomemError(tls, i32(59600))
-_3:
_0:
- if _rc != i32(0) || _pgno > _sqlite3BitvecSize(tls, (*XBitvec)(_pBt.X22)) {
- goto _5
+ if (_rc == i32(0)) && (_pgno <= _sqlite3BitvecSize(tls, (*XBitvec)(_pBt.X22))) {
+ _rc = _sqlite3BitvecSet(tls, (*XBitvec)(_pBt.X22), _pgno)
}
-
- _rc = _sqlite3BitvecSet(tls, (*XBitvec)(_pBt.X22), _pgno)
-_5:
return _rc
}
-var _btreeSetHasContentØ00__func__Ø000 [19]int8 // -
+var _btreeSetHasContentØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_btreeSetHasContentØ00__func__Ø000[0], str(83072), 19)
+ crt.Xstrncpy(nil, &_btreeSetHasContentØ00__func__Ø000[0], str(81728), 19)
}
-func _dropCell(tls *crt.TLS, _pPage *XMemPage, _idx int32, _sz int32, _pRC *int32) { // sqlite3.c:65392:1
- var _pc uint32 // sqlite3.c:65393:7
- _ = _pc
- var _data *uint8 // sqlite3.c:65394:6
- _ = _data
- var _ptr *uint8 // sqlite3.c:65395:6
- _ = _ptr
- var _rc int32 // sqlite3.c:65396:7
- _ = _rc
- var _hdr int32 // sqlite3.c:65397:7
- _ = _hdr
- if (*_pRC) == 0 {
- goto _0
+// Remove the i-th cell from pPage. This routine effects pPage only.
+// The cell content is not freed or deallocated. It is assumed that
+// the cell content has been copied someplace else. This routine just
+// removes the reference to the cell from pPage.
+//
+// "sz" must be the number of bytes in the cell.
+func _dropCell(tls *crt.TLS, _pPage *XMemPage, _idx int32, _sz int32, _pRC *int32) {
+ var _rc, _hdr int32
+ var _pc uint32
+ var _data, _ptr *uint8
+ if (*_pRC) != 0 {
+ return
}
- return
-
-_0:
func() {
if _idx < i32(0) || _idx >= int32(_pPage.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65400), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(83092)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65400), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(81747)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_sqlite3Config.X6) != i32(0) && _sz != int32(_cellSize(tls, _pPage, _idx)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65401), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(83120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65401), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(81774)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65402), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65402), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65403), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65403), unsafe.Pointer((*int8)(unsafe.Pointer(&_dropCellØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
@@ -69416,38 +62016,26 @@ _0:
_ptr = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21)) + 1*uintptr(i32(2)*_idx)))
_pc = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_ptr)) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_ptr)) + 1*uintptr(i32(1))))))
_hdr = int32(_pPage.X6)
- if _pc >= uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0)))))< ((*XBtShared)(_pPage.X18).X16)) {
+ *_pRC = _sqlite3CorruptError(tls, i32(65411))
+ return
}
-
- *_pRC = _sqlite3CorruptError(tls, i32(65411))
- return
-
-_12:
_rc = _freeSpace(tls, _pPage, uint16(_pc), uint16(_sz))
- if _rc == 0 {
- goto _13
+ if _rc != 0 {
+ *_pRC = _rc
+ return
}
-
- *_pRC = _rc
- return
-
-_13:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(22 /* X14 */))) -= 1
- if int32(_pPage.X14) != i32(0) {
- goto _14
+ if int32(_pPage.X14) == i32(0) {
+ crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(1))))), i32(0), uint32(i32(4)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7)))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0)))) = uint8(((*XBtShared)(_pPage.X18).X16) >> uint(i32(8)))
+ return _data
+ }()))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))) = uint8((*XBtShared)(_pPage.X18).X16)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(20 /* X13 */))) = uint16(((((*XBtShared)(_pPage.X18).X16) - uint32(_pPage.X6)) - uint32(_pPage.X7)) - uint32(i32(8)))
+ goto _15
}
-
- crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(1))))), i32(0), uint32(i32(4)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7)))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0)))) = uint8(((*XBtShared)(_pPage.X18).X16) >> uint(i32(8)))
- return _data
- }()))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))) = uint8((*XBtShared)(_pPage.X18).X16)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(20 /* X13 */))) = uint16(((((*XBtShared)(_pPage.X18).X16) - uint32(_pPage.X6)) - uint32(_pPage.X7)) - uint32(i32(8)))
- goto _15
-
-_14:
crt.Xmemmove(tls, (unsafe.Pointer)(_ptr), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_ptr))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(2))))))))), uint32(i32(2)*(int32(_pPage.X14)-_idx)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(3)))))) + 1*uintptr(i32(0)))) = uint8(int32(_pPage.X14) >> uint(i32(8)))
@@ -69456,42 +62044,42 @@ _14:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(20 /* X13 */)))
*p = uint16(int32(*p) + i32(2))
- sink12 = *p
+ sink14 = *p
}
_15:
}
-var _dropCellØ00__func__Ø000 [9]int8 // -
+var _dropCellØ00__func__Ø000 [9]int8
func init() {
- crt.Xstrncpy(nil, &_dropCellØ00__func__Ø000[0], str(83160), 9)
+ crt.Xstrncpy(nil, &_dropCellØ00__func__Ø000[0], str(81813), 9)
}
-func _cellSize(tls *crt.TLS, _pPage *XMemPage, _iCell int32) (r0 uint16) { // sqlite3.c:60330:1
+// This variation on cellSizePtr() is used inside of assert() statements
+// only.
+func _cellSize(tls *crt.TLS, _pPage *XMemPage, _iCell int32) (r0 uint16) {
return (*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{(_pPage.X24)})))(tls, _pPage, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*_iCell))))) + 1*uintptr(i32(0)))))<aData to the freelist.
+// The first byte of the new free block is pPage->aData[iStart]
+// and the size of the block is iSize bytes.
+//
+// Adjacent freeblocks are coalesced.
+//
+// Note that even though the freeblock list was checked by btreeInitPage(),
+// that routine will not detect overlap between cells or freeblocks. Nor
+// does it detect cells or freeblocks that encrouch into the reserved bytes
+// at the end of the page. So do additional corruption checks inside this
+// routine and return SQLITE_CORRUPT if any problems are found.
+func _freeSpace(tls *crt.TLS, _pPage *XMemPage, _iStart uint16, _iSize uint16) (r0 int32) {
+ var _7_iPtrEnd int32
+ var _iLast, _iEnd uint32
+ var _iPtr, _iFreeBlk, _iOrigSize uint16
+ var _hdr, _nFrag uint8
+ var _data *uint8
_nFrag = u8(0)
_iOrigSize = _iSize
_iLast = ((*XBtShared)(_pPage.X18).X16) - uint32(i32(4))
@@ -69499,133 +62087,104 @@ func _freeSpace(tls *crt.TLS, _pPage *XMemPage, _iStart uint16, _iSize uint16) (
_data = _pPage.X19
func() {
if (*XBtShared)(_pPage.X18) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60667), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(57212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60667), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(55360)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60668), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60668), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_sqlite3Config.X6) != i32(0) && int32(_iStart) < ((int32(_pPage.X6)+i32(6))+int32(_pPage.X7)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60669), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(83172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60669), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(81822)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_sqlite3Config.X6) != i32(0) && _iEnd > ((*XBtShared)(_pPage.X18).X16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60670), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(83236)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60670), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(81883)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60671), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60671), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_iSize) < i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60672), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(83284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60672), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(81928)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uint32(_iStart) > _iLast {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60673), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(83296)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60673), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(81937)))
crt.X__builtin_abort(tls)
}
}()
- if (int32((*XBtShared)(_pPage.X18).X10) & i32(4)) == 0 {
- goto _16
+ if (int32((*XBtShared)(_pPage.X18).X10) & i32(4)) != 0 {
+ crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iStart)))), i32(0), uint32(_iSize))
}
-
- crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iStart)))), i32(0), uint32(_iSize))
-_16:
_hdr = _pPage.X6
_iPtr = uint16(int32(_hdr) + i32(1))
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(int32(_iPtr)+i32(1))))) != i32(0) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_iPtr)))) != i32(0) {
- goto _18
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(int32(_iPtr)+i32(1))))) == i32(0)) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_iPtr)))) == i32(0)) {
+ _iFreeBlk = uint16(i32(0))
+ goto _19
}
-
- _iFreeBlk = uint16(i32(0))
- goto _19
-
-_18:
_20:
- if int32(store12(&_iFreeBlk, uint16((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iPtr))))) + 1*uintptr(i32(0)))))<= int32(_iStart) {
+ if int32(store14(&_iFreeBlk, uint16((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iPtr))))) + 1*uintptr(i32(0)))))<= int32(_iStart) {
goto _21
}
-
if int32(_iFreeBlk) >= (int32(_iPtr) + i32(4)) {
goto _22
}
-
- if int32(_iFreeBlk) != i32(0) {
- goto _23
+ if int32(_iFreeBlk) == i32(0) {
+ goto _21
}
-
- goto _21
-
-_23:
return _sqlite3CorruptError(tls, i32(60692))
_22:
_iPtr = _iFreeBlk
goto _20
-
_21:
- if uint32(_iFreeBlk) <= _iLast {
- goto _24
+ if uint32(_iFreeBlk) > _iLast {
+ return _sqlite3CorruptError(tls, i32(60696))
}
- return _sqlite3CorruptError(tls, i32(60696))
-
-_24:
func() {
if int32(_iFreeBlk) <= int32(_iPtr) && int32(_iFreeBlk) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60697), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(83312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60697), unsafe.Pointer((*int8)(unsafe.Pointer(&_freeSpaceØ00__func__Ø000))), unsafe.Pointer(str(81951)))
crt.X__builtin_abort(tls)
}
}()
if _iFreeBlk == 0 || (_iEnd+uint32(i32(3))) < uint32(_iFreeBlk) {
goto _29
}
-
_nFrag = uint8(uint32(_iFreeBlk) - _iEnd)
- if _iEnd <= uint32(_iFreeBlk) {
- goto _30
+ if _iEnd > uint32(_iFreeBlk) {
+ return _sqlite3CorruptError(tls, i32(60707))
}
- return _sqlite3CorruptError(tls, i32(60707))
-
-_30:
_iEnd = uint32(int32(_iFreeBlk) + ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_iFreeBlk)+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_iFreeBlk)+i32(2)))))) + 1*uintptr(i32(1)))))))
- if _iEnd <= ((*XBtShared)(_pPage.X18).X16) {
- goto _31
+ if _iEnd > ((*XBtShared)(_pPage.X18).X16) {
+ return _sqlite3CorruptError(tls, i32(60709))
}
- return _sqlite3CorruptError(tls, i32(60709))
-
-_31:
_iSize = uint16(_iEnd - uint32(_iStart))
_iFreeBlk = uint16((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iFreeBlk))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iFreeBlk))))) + 1*uintptr(i32(1))))))
_29:
if int32(_iPtr) <= (int32(_hdr) + i32(1)) {
goto _32
}
-
_7_iPtrEnd = int32(_iPtr) + ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_iPtr)+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_iPtr)+i32(2)))))) + 1*uintptr(i32(1))))))
if (_7_iPtrEnd + i32(3)) < int32(_iStart) {
goto _33
}
-
- if _7_iPtrEnd <= int32(_iStart) {
- goto _34
+ if _7_iPtrEnd > int32(_iStart) {
+ return _sqlite3CorruptError(tls, i32(60721))
}
- return _sqlite3CorruptError(tls, i32(60721))
-
-_34:
{
p := &_nFrag
*p = uint8(int32(*p) + (int32(_iStart) - _7_iPtrEnd))
@@ -69635,12 +62194,9 @@ _34:
_iStart = _iPtr
_33:
_32:
- if int32(_nFrag) <= int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(int32(_hdr)+i32(7))))) {
- goto _35
+ if int32(_nFrag) > int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(int32(_hdr)+i32(7))))) {
+ return _sqlite3CorruptError(tls, i32(60727))
}
- return _sqlite3CorruptError(tls, i32(60727))
-
-_35:
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(int32(_hdr)+i32(7))))
*p = uint8(int32(*p) - int32(_nFrag))
@@ -69650,13 +62206,9 @@ _19:
if int32(_iStart) != ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_hdr)+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_hdr)+i32(5)))))) + 1*uintptr(i32(1)))))) {
goto _36
}
-
- if int32(_iPtr) == (int32(_hdr) + i32(1)) {
- goto _37
+ if int32(_iPtr) != (int32(_hdr) + i32(1)) {
+ return _sqlite3CorruptError(tls, i32(60734))
}
- return _sqlite3CorruptError(tls, i32(60734))
-
-_37:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_hdr)+i32(1)))))) + 1*uintptr(i32(0)))) = uint8(int32(_iFreeBlk) >> uint(i32(8)))
return _data
@@ -69666,7 +62218,6 @@ _37:
return _data
}()))+1*uintptr(int32(_hdr)+i32(5)))))) + 1*uintptr(i32(1)))) = uint8(_iEnd)
goto _38
-
_36:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iPtr))))) + 1*uintptr(i32(0)))) = uint8(int32(_iStart) >> uint(i32(8)))
@@ -69684,63 +62235,67 @@ _38:
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(20 /* X13 */)))
*p = uint16(int32(*p) + int32(_iOrigSize))
- sink12 = *p
+ sink14 = *p
}
return i32(0)
}
-var _freeSpaceØ00__func__Ø000 [10]int8 // -
+var _freeSpaceØ00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_freeSpaceØ00__func__Ø000[0], str(83344), 10)
+ crt.Xstrncpy(nil, &_freeSpaceØ00__func__Ø000[0], str(81980), 10)
}
-func _insertCell(tls *crt.TLS, _pPage *XMemPage, _i int32, _pCell *uint8, _sz int32, _pTemp *uint8, _iChild uint32, _pRC *int32) { // sqlite3.c:65447:1
- var _idx int32 // sqlite3.c:65456:7
- _ = _idx
- var _j int32 // sqlite3.c:65457:7
- _ = _j
- var _data *uint8 // sqlite3.c:65458:6
- _ = _data
- var _pIns *uint8 // sqlite3.c:65459:6
- _ = _pIns
- var _4_rc int32 // sqlite3.c:65498:9
- _ = _4_rc
+// Insert a new cell on pPage at cell index "i". pCell points to the
+// content of the cell.
+//
+// If the cell content will fit on the page, then put it there. If it
+// will not fit, then make a copy of the cell content into pTemp if
+// pTemp is not null. Regardless of pTemp, allocate a new entry
+// in pPage->apOvfl[] and make it point to the cell content (either
+// in pTemp or the original pCell) and also record its index.
+// Allocating a new entry in pPage->aCell[] implies that
+// pPage->nOverflow is incremented.
+//
+// *pRC must be SQLITE_OK when this routine is called.
+func _insertCell(tls *crt.TLS, _pPage *XMemPage, _i int32, _pCell *uint8, _sz int32, _pTemp *uint8, _iChild uint32, _pRC *int32) {
+ var _idx, _j, _4_rc int32
+ var _data, _pIns *uint8
_idx = i32(0)
func() {
if (*_pRC) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65461), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65461), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(81990)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _i < i32(0) || _i > (int32(_pPage.X14)+int32(_pPage.X9)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65462), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83372)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65462), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82006)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((((*XBtShared)(_pPage.X18).X15) - uint32(i32(8))) / uint32(i32(6))) > uint32(i32(10921)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65463), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83416)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65463), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82047)))
crt.X__builtin_abort(tls)
}
}()
func() {
if uint32(_pPage.X14) > ((((*XBtShared)(_pPage.X18).X15)-uint32(i32(8)))/uint32(i32(6))) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65464), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83444)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65464), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82074)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X9) > i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65465), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83492)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65465), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82122)))
crt.X__builtin_abort(tls)
}
}()
i32(0)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65467), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65467), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
@@ -69748,31 +62303,24 @@ func _insertCell(tls *crt.TLS, _pPage *XMemPage, _i int32, _pCell *uint8, _sz in
if _sz != int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{(_pPage.X24)})))(tls, _pPage, _pCell)) && (_sz != i32(8) || _iChild <= uint32(i32(0))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65473), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83536)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65473), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82165)))
crt.X__builtin_abort(tls)
}
}()
if (_pPage.X9) == 0 && (_sz+i32(2)) <= int32(_pPage.X13) {
goto _19
}
-
- if _pTemp == nil {
- goto _20
+ if _pTemp != nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pTemp), (unsafe.Pointer)(_pCell), uint32(_sz))
+ _pCell = _pTemp
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pTemp), (unsafe.Pointer)(_pCell), uint32(_sz))
- _pCell = _pTemp
-_20:
- if _iChild == 0 {
- goto _21
+ if _iChild != 0 {
+ _sqlite3Put4byte(tls, _pCell, _iChild)
}
-
- _sqlite3Put4byte(tls, _pCell, _iChild)
-_21:
_j = int32(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage))+uintptr(12 /* X9 */))), uint8(1)))
func() {
if _j >= i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65486), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83596)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65486), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82223)))
crt.X__builtin_abort(tls)
}
}()
@@ -69780,80 +62328,68 @@ _21:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage))+uintptr(26 /* X16 */))))) + 2*uintptr(_j))) = uint16(_i)
func() {
if _j != i32(0) && int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage))+uintptr(26 /* X16 */))))) + 2*uintptr(_j-i32(1))))) >= int32(uint16(_i)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65495), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83628)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65495), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82254)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _j != i32(0) && _i != (int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage))+uintptr(26 /* X16 */))))) + 2*uintptr(_j-i32(1)))))+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65496), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83664)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65496), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82288)))
crt.X__builtin_abort(tls)
}
}()
goto _30
-
_19:
_4_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage.X23))
- if _4_rc == i32(0) {
- goto _31
+ if _4_rc != i32(0) {
+ *_pRC = _4_rc
+ return
}
-
- *_pRC = _4_rc
- return
-
-_31:
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65503), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65503), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
_data = _pPage.X19
func() {
if (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_pPage.X12))) != (_pPage.X21) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65505), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83696)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65505), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82320)))
crt.X__builtin_abort(tls)
}
}()
_4_rc = _allocateSpace(tls, _pPage, _sz, &_idx)
- if _4_rc == 0 {
- goto _36
+ if _4_rc != 0 {
+ *_pRC = _4_rc
+ return
}
-
- *_pRC = _4_rc
- return
-
-_36:
func() {
if _idx < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65510), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83740)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65510), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82362)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _idx < ((int32(_pPage.X12)+(i32(2)*int32(_pPage.X14)))+i32(2)) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65511), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83752)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65511), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82371)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_idx + _sz) > int32((*XBtShared)(_pPage.X18).X16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65512), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65512), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82427)))
crt.X__builtin_abort(tls)
}
}()
{
p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(20 /* X13 */)))
*p = uint16(int32(*p) - int32(uint16(i32(2)+_sz)))
- sink12 = *p
+ sink14 = *p
}
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_idx)))), (unsafe.Pointer)(_pCell), uint32(_sz))
- if _iChild == 0 {
- goto _44
+ if _iChild != 0 {
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_idx))), _iChild)
}
-
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_idx))), _iChild)
-_44:
_pIns = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X21)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_i*i32(2))))))))
crt.Xmemmove(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pIns))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(2))))))))), (unsafe.Pointer)(_pIns), uint32(i32(2)*(int32(_pPage.X14)-_i)))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
@@ -69861,123 +62397,113 @@ _44:
return _pIns
}())) + 1*uintptr(i32(1)))) = uint8(_idx)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(22 /* X14 */))) += 1
- if int32(preInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_pPage.X6)+i32(4)))), byte(1))) != i32(0) {
- goto _45
+ if int32(preInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_pPage.X6)+i32(4)))), byte(1))) == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(int32(_pPage.X6)+i32(3)))) += 1
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(int32(_pPage.X6)+i32(3)))) += 1
-_45:
func() {
if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_pPage.X6)+i32(3)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(int32(_pPage.X6)+i32(3)))))) + 1*uintptr(i32(1)))))) != int32(_pPage.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65524), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(83848)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65524), unsafe.Pointer((*int8)(unsafe.Pointer(&_insertCellØ00__func__Ø000))), unsafe.Pointer(str(82465)))
crt.X__builtin_abort(tls)
}
}()
- if ((*XBtShared)(_pPage.X18).X5) == 0 {
- goto _48
+ if ((*XBtShared)(_pPage.X18).X5) != 0 {
+ _ptrmapPutOvflPtr(tls, _pPage, _pCell, _pRC)
}
-
- _ptrmapPutOvflPtr(tls, _pPage, _pCell, _pRC)
-_48:
_30:
}
-var _insertCellØ00__func__Ø000 [11]int8 // -
+var _insertCellØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_insertCellØ00__func__Ø000[0], str(83900), 11)
+ crt.Xstrncpy(nil, &_insertCellØ00__func__Ø000[0], str(82515), 11)
}
-func _allocateSpace(tls *crt.TLS, _pPage *XMemPage, _nByte int32, _pIdx *int32) (r0 int32) { // sqlite3.c:60567:1
- var _hdr int32 // sqlite3.c:60568:13
- _ = _hdr
- var _data *uint8 // sqlite3.c:60569:6
- _ = _data
- var _top int32 // sqlite3.c:60570:7
- _ = _top
- var _rc int32 // sqlite3.c:60571:7
- _ = _rc
- var _gap int32 // sqlite3.c:60572:7
- _ = _gap
- var _4_pSpace *uint8 // sqlite3.c:60608:8
- _ = _4_pSpace
+// Allocate nByte bytes of space from within the B-Tree page passed
+// as the first argument. Write into *pIdx the index into pPage->aData[]
+// of the first byte of allocated space. Return either SQLITE_OK or
+// an error code (usually SQLITE_CORRUPT).
+//
+// The caller guarantees that there is sufficient space to make the
+// allocation. This routine might need to defragment in order to bring
+// all the space together, however. This routine will avoid using
+// the first two bytes past the cell pointer area since presumably this
+// allocation is being made in order to insert a new cell, so we will
+// also end up needing a new cell pointer.
+func _allocateSpace(tls *crt.TLS, _pPage *XMemPage, _nByte int32, _pIdx *int32) (r0 int32) {
+ var _hdr, _top, _rc, _gap int32
+ var _data, _4_pSpace *uint8
_hdr = int32(_pPage.X6)
_data = _pPage.X19
_rc = i32(0)
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60574), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60574), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtShared)(_pPage.X18) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60575), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(19808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60575), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(20307)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60576), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60576), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nByte < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60577), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(83912)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60577), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82526)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X13) < _nByte {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60578), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(83924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60578), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82535)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X9) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60579), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(83944)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60579), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82555)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nByte >= int32(((*XBtShared)(_pPage.X18).X16)-uint32(i32(8))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60580), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(83964)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60580), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82575)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X12) != ((_hdr + i32(12)) - (i32(4) * int32(_pPage.X5))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60582), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(84004)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60582), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82615)))
crt.X__builtin_abort(tls)
}
}()
_gap = int32(_pPage.X12) + (i32(2) * int32(_pPage.X14))
func() {
if _gap > i32(65536) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60584), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(84052)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60584), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82661)))
crt.X__builtin_abort(tls)
}
}()
_top = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))))
func() {
if _top > int32((*XBtShared)(_pPage.X18).X16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60591), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(84064)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60591), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82672)))
crt.X__builtin_abort(tls)
}
}()
if _gap <= _top {
goto _20
}
-
- if _top != i32(0) || ((*XBtShared)(_pPage.X18).X16) != uint32(i32(65536)) {
- goto _22
+ if (_top == i32(0)) && (((*XBtShared)(_pPage.X18).X16) == uint32(i32(65536))) {
+ _top = i32(65536)
+ goto _23
}
-
- _top = i32(65536)
- goto _23
-
-_22:
return _sqlite3CorruptError(tls, i32(60596))
_23:
@@ -69985,36 +62511,27 @@ _20:
if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(2))))) == 0 && (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(1))))) == 0 || (_gap+i32(2)) > _top {
goto _26
}
-
_4_pSpace = _pageFindSlot(tls, _pPage, _nByte, &_rc)
- if _4_pSpace == nil {
- goto _27
+ if _4_pSpace != nil {
+ func() {
+ if uintptr(unsafe.Pointer(_4_pSpace)) < uintptr(unsafe.Pointer(_data)) || int32((uintptr(unsafe.Pointer(_4_pSpace))-uintptr(unsafe.Pointer(_data)))/1) >= i32(65536) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60610), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82705)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_pIdx = int32((uintptr(unsafe.Pointer(_4_pSpace)) - uintptr(unsafe.Pointer(_data))) / 1)
+ return i32(0)
}
-
- func() {
- if uintptr(unsafe.Pointer(_4_pSpace)) < uintptr(unsafe.Pointer(_data)) || int32((uintptr(unsafe.Pointer(_4_pSpace))-uintptr(unsafe.Pointer(_data)))/1) >= i32(65536) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60610), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(84100)))
- crt.X__builtin_abort(tls)
- }
- }()
- *_pIdx = int32((uintptr(unsafe.Pointer(_4_pSpace)) - uintptr(unsafe.Pointer(_data))) / 1)
- return i32(0)
-
-_27:
- if _rc == 0 {
- goto _32
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_32:
_26:
if ((_gap + i32(2)) + _nByte) <= _top {
goto _33
}
-
func() {
if int32(_pPage.X14) <= i32(0) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60623), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(84140)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60623), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82743)))
crt.X__builtin_abort(tls)
}
}()
@@ -70024,16 +62541,13 @@ _26:
}
return (int32(_pPage.X13) - (i32(2) + _nByte))
}())
- if _rc == 0 {
- goto _39
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_39:
_top = ((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))))) - i32(1)) & i32(65535)) + i32(1)
func() {
if ((_gap + i32(2)) + _nByte) > _top {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60627), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(84172)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60627), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82772)))
crt.X__builtin_abort(tls)
}
}()
@@ -70049,7 +62563,7 @@ _33:
}()))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))) = uint8(_top)
func() {
if (_top + _nByte) > int32((*XBtShared)(_pPage.X18).X16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60639), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(84192)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60639), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateSpaceØ00__func__Ø000))), unsafe.Pointer(str(82789)))
crt.X__builtin_abort(tls)
}
}()
@@ -70057,27 +62571,27 @@ _33:
return i32(0)
}
-var _allocateSpaceØ00__func__Ø000 [14]int8 // -
+var _allocateSpaceØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_allocateSpaceØ00__func__Ø000[0], str(84236), 14)
+ crt.Xstrncpy(nil, &_allocateSpaceØ00__func__Ø000[0], str(82830), 14)
}
-func _pageFindSlot(tls *crt.TLS, _pPg *XMemPage, _nByte int32, _pRc *int32) (r0 *uint8) { // sqlite3.c:60504:1
- var _hdr int32 // sqlite3.c:60505:13
- _ = _hdr
- var _aData *uint8 // sqlite3.c:60506:6
- _ = _aData
- var _iAddr int32 // sqlite3.c:60507:7
- _ = _iAddr
- var _pc int32 // sqlite3.c:60508:7
- _ = _pc
- var _x int32 // sqlite3.c:60509:7
- _ = _x
- var _usableSize int32 // sqlite3.c:60510:7
- _ = _usableSize
- var _1_size int32 // sqlite3.c:60514:9
- _ = _1_size
+// Search the free-list on page pPg for space to store a cell nByte bytes in
+// size. If one can be found, return a pointer to the space and remove it
+// from the free-list.
+//
+// If no suitable space can be found on the free-list, return NULL.
+//
+// This function may detect corruption within pPg. If corruption is
+// detected then *pRc is set to SQLITE_CORRUPT and NULL is returned.
+//
+// Slots on the free list that are between 1 and 3 bytes larger than nByte
+// will be ignored if adding the extra space to the fragmentation count
+// causes the fragmentation count to exceed 60.
+func _pageFindSlot(tls *crt.TLS, _pPg *XMemPage, _nByte int32, _pRc *int32) (r0 *uint8) {
+ var _hdr, _iAddr, _pc, _x, _usableSize, _1_size int32
+ var _aData *uint8
_hdr = int32(_pPg.X6)
_aData = _pPg.X19
_iAddr = _hdr + i32(1)
@@ -70085,42 +62599,29 @@ func _pageFindSlot(tls *crt.TLS, _pPg *XMemPage, _nByte int32, _pRc *int32) (r0
_usableSize = int32((*XBtShared)(_pPg.X18).X16)
func() {
if _pc <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60512), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFindSlotØ00__func__Ø000))), unsafe.Pointer(str(84252)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60512), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFindSlotØ00__func__Ø000))), unsafe.Pointer(str(82844)))
crt.X__builtin_abort(tls)
}
}()
_2:
- if _pc <= (_usableSize-i32(4)) && _pc >= (_iAddr+i32(4)) {
- goto _4
+ if (_pc > (_usableSize - i32(4))) || (_pc < (_iAddr + i32(4))) {
+ *_pRc = _sqlite3CorruptError(tls, i32(60518))
+ return nil
}
-
- *_pRc = _sqlite3CorruptError(tls, i32(60518))
- return nil
-
-_4:
_1_size = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr(_pc+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr(_pc+i32(2)))))) + 1*uintptr(i32(1)))))
if store1(&_x, _1_size-_nByte) < i32(0) {
goto _5
}
-
- if _pc >= (int32(_pPg.X12)+(i32(2)*int32(_pPg.X14))) && (_1_size+_pc) <= _usableSize {
- goto _7
+ if (_pc < (int32(_pPg.X12) + (i32(2) * int32(_pPg.X14)))) || ((_1_size + _pc) > _usableSize) {
+ *_pRc = _sqlite3CorruptError(tls, i32(60529))
+ return nil
}
-
- *_pRc = _sqlite3CorruptError(tls, i32(60529))
- return nil
-
-_7:
if _x >= i32(4) {
goto _9
}
-
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(_hdr+i32(7))))) <= i32(57) {
- goto _10
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(_hdr+i32(7))))) > i32(57) {
+ return nil
}
- return nil
-
-_10:
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr(_iAddr)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr(_pc)))), uint32(i32(2)))
{
p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(_hdr+i32(7))))
@@ -70128,7 +62629,6 @@ _10:
sink2 = *p
}
goto _11
-
_9:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr(_pc+i32(2)))))) + 1*uintptr(i32(0)))) = uint8(_x >> uint(i32(8)))
@@ -70146,95 +62646,63 @@ _5:
return nil
}
-var _pageFindSlotØ00__func__Ø000 [13]int8 // -
+var _pageFindSlotØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_pageFindSlotØ00__func__Ø000[0], str(84260), 13)
+ crt.Xstrncpy(nil, &_pageFindSlotØ00__func__Ø000[0], str(82849), 13)
}
-func _defragmentPage(tls *crt.TLS, _pPage *XMemPage, _nMaxFrag int32) (r0 int32) { // sqlite3.c:60366:1
- var _i int32 // sqlite3.c:60367:7
- _ = _i
- var _pc int32 // sqlite3.c:60368:7
- _ = _pc
- var _hdr int32 // sqlite3.c:60369:7
- _ = _hdr
- var _size int32 // sqlite3.c:60370:7
- _ = _size
- var _usableSize int32 // sqlite3.c:60371:7
- _ = _usableSize
- var _cellOffset int32 // sqlite3.c:60372:7
- _ = _cellOffset
- var _cbrk int32 // sqlite3.c:60373:7
- _ = _cbrk
- var _nCell int32 // sqlite3.c:60374:7
- _ = _nCell
- var _data *uint8 // sqlite3.c:60375:17
- _ = _data
- var _temp *uint8 // sqlite3.c:60376:17
- _ = _temp
- var _src *uint8 // sqlite3.c:60377:17
- _ = _src
- var _iCellFirst int32 // sqlite3.c:60378:7
- _ = _iCellFirst
- var _iCellLast int32 // sqlite3.c:60379:7
- _ = _iCellLast
- var _1_iFree int32 // sqlite3.c:60401:9
- _ = _1_iFree
- var _2_iFree2 int32 // sqlite3.c:60403:11
- _ = _2_iFree2
- var _3_pEnd *uint8 // sqlite3.c:60416:12
- _ = _3_pEnd
- var _3_pAddr *uint8 // sqlite3.c:60417:12
- _ = _3_pAddr
- var _3_sz2 int32 // sqlite3.c:60418:13
- _ = _3_sz2
- var _3_sz int32 // sqlite3.c:60419:13
- _ = _3_sz
- var _3_top int32 // sqlite3.c:60420:13
- _ = _3_top
- var _8_pAddr *uint8 // sqlite3.c:60444:8
- _ = _8_pAddr
- var _11_x int32 // sqlite3.c:60466:11
- _ = _11_x
+// Defragment the page given. This routine reorganizes cells within the
+// page so that there are no free-blocks on the free-block list.
+//
+// Parameter nMaxFrag is the maximum amount of fragmented space that may be
+// present in the page after this routine returns.
+//
+// EVIDENCE-OF: R-44582-60138 SQLite may from time to time reorganize a
+// b-tree page so that there are no freeblocks or fragment bytes, all
+// unused bytes are contained in the unallocated space region, and all
+// cells are packed tightly at the end of the page.
+func _defragmentPage(tls *crt.TLS, _pPage *XMemPage, _nMaxFrag int32) (r0 int32) {
+ var _i, _pc, _hdr, _size, _usableSize, _cellOffset, _cbrk, _nCell, _iCellFirst, _iCellLast, _1_iFree, _2_iFree2, _3_sz2, _3_sz, _3_top, _11_x int32
+ var _data, _temp, _src, _3_pEnd, _3_pAddr, _8_pAddr *uint8
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60381), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60381), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XBtShared)(_pPage.X18) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60382), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(57212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60382), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(55360)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((*XBtShared)(_pPage.X18).X16) > uint32(i32(65536)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60383), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60383), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(82862)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X9) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60384), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(83944)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60384), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(82555)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60385), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60385), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
_temp = nil
- _src = store11(&_data, _pPage.X19)
+ _src = store13(&_data, _pPage.X19)
_hdr = int32(_pPage.X6)
_cellOffset = int32(_pPage.X12)
_nCell = int32(_pPage.X14)
func() {
if _nCell != ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(3)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(3)))))) + 1*uintptr(i32(1)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60391), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84324)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60391), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(82909)))
crt.X__builtin_abort(tls)
}
}()
@@ -70243,35 +62711,32 @@ func _defragmentPage(tls *crt.TLS, _pPage *XMemPage, _nMaxFrag int32) (r0 int32)
if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7))))) > _nMaxFrag {
goto _12
}
-
_1_iFree = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(1)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(1)))))) + 1*uintptr(i32(1)))))
if _1_iFree == 0 {
goto _13
}
-
_2_iFree2 = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_1_iFree))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_1_iFree))))) + 1*uintptr(i32(1)))))
func() {
if _2_iFree2 != i32(0) && _2_iFree2 <= _1_iFree {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60411), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60411), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(82939)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_1_iFree + ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_1_iFree+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_1_iFree+i32(2)))))) + 1*uintptr(i32(1))))))) > _usableSize {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60412), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84384)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60412), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(82965)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _2_iFree2 != i32(0) && (_2_iFree2+((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_2_iFree2+i32(2)))))) + 1*uintptr(i32(0)))))< _usableSize {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60413), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84432)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60413), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(83010)))
crt.X__builtin_abort(tls)
}
}()
if i32(0) != _2_iFree2 && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_2_iFree2)))) != i32(0) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_2_iFree2+i32(1))))) != i32(0)) {
goto _24
}
-
_3_pEnd = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_cellOffset+(_nCell*i32(2)))))
_3_sz2 = i32(0)
_3_sz = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_1_iFree+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_1_iFree+i32(2)))))) + 1*uintptr(i32(1)))))
@@ -70279,17 +62744,13 @@ func _defragmentPage(tls *crt.TLS, _pPage *XMemPage, _nMaxFrag int32) (r0 int32)
if _2_iFree2 == 0 {
goto _25
}
-
- if (_1_iFree + _3_sz) <= _2_iFree2 {
- goto _26
+ if (_1_iFree + _3_sz) > _2_iFree2 {
+ return _sqlite3CorruptError(tls, i32(60422))
}
- return _sqlite3CorruptError(tls, i32(60422))
-
-_26:
_3_sz2 = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_2_iFree2+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_2_iFree2+i32(2)))))) + 1*uintptr(i32(1)))))
func() {
if ((((_1_iFree + _3_sz) + _3_sz2) + _2_iFree2) - (_1_iFree + _3_sz)) > _usableSize {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60424), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84492)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60424), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(83070)))
crt.X__builtin_abort(tls)
}
}()
@@ -70303,7 +62764,7 @@ _25:
_cbrk = _3_top + _3_sz
func() {
if (_cbrk + (_1_iFree - _3_top)) > _usableSize {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60429), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60429), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(83115)))
crt.X__builtin_abort(tls)
}
}()
@@ -70313,39 +62774,29 @@ _31:
if uintptr(unsafe.Pointer(_3_pAddr)) >= uintptr(unsafe.Pointer(_3_pEnd)) {
goto _34
}
-
_pc = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAddr)) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAddr)) + 1*uintptr(i32(1)))))
- if _pc >= _1_iFree {
- goto _35
+ if _pc < _1_iFree {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAddr)) + 1*uintptr(i32(0)))) = uint8((_pc + _3_sz) >> uint(i32(8)))
+ return _3_pAddr
+ }())) + 1*uintptr(i32(1)))) = uint8(_pc + _3_sz)
+ goto _36
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAddr)) + 1*uintptr(i32(0)))) = uint8((_pc + _3_sz) >> uint(i32(8)))
- return _3_pAddr
- }())) + 1*uintptr(i32(1)))) = uint8(_pc + _3_sz)
- goto _36
-
-_35:
- if _pc >= _2_iFree2 {
- goto _37
+ if _pc < _2_iFree2 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAddr)) + 1*uintptr(i32(0)))) = uint8((_pc + _3_sz2) >> uint(i32(8)))
+ return _3_pAddr
+ }())) + 1*uintptr(i32(1)))) = uint8(_pc + _3_sz2)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAddr)) + 1*uintptr(i32(0)))) = uint8((_pc + _3_sz2) >> uint(i32(8)))
- return _3_pAddr
- }())) + 1*uintptr(i32(1)))) = uint8(_pc + _3_sz2)
-_37:
_36:
{
p := &_3_pAddr
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(2))))
- sink11 = *p
+ sink13 = *p
}
goto _31
-
_34:
goto _defragment_out
-
_24:
_13:
_12:
@@ -70356,18 +62807,14 @@ _38:
if _i >= _nCell {
goto _41
}
-
_8_pAddr = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_cellOffset+(_i*i32(2)))))
_pc = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pAddr)) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pAddr)) + 1*uintptr(i32(1)))))
- if _pc >= _iCellFirst && _pc <= _iCellLast {
- goto _43
+ if (_pc < _iCellFirst) || (_pc > _iCellLast) {
+ return _sqlite3CorruptError(tls, i32(60453))
}
- return _sqlite3CorruptError(tls, i32(60453))
-
-_43:
func() {
if _pc < _iCellFirst || _pc > _iCellLast {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60455), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60455), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(83146)))
crt.X__builtin_abort(tls)
}
}()
@@ -70379,15 +62826,12 @@ _43:
*p = (*p) - _size
sink1 = *p
}
- if _cbrk >= _iCellFirst && (_pc+_size) <= _usableSize {
- goto _48
+ if (_cbrk < _iCellFirst) || ((_pc + _size) > _usableSize) {
+ return _sqlite3CorruptError(tls, i32(60459))
}
- return _sqlite3CorruptError(tls, i32(60459))
-
-_48:
func() {
if (_cbrk+_size) > _usableSize || _cbrk < _iCellFirst {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60461), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84604)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60461), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(83178)))
crt.X__builtin_abort(tls)
}
}()
@@ -70398,14 +62842,9 @@ _48:
if _temp != nil {
goto _52
}
-
- if _cbrk != _pc {
- goto _53
+ if _cbrk == _pc {
+ goto _39
}
-
- goto _39
-
-_53:
_temp = (*uint8)(_sqlite3PagerTempSpace(tls, (*XPager)((*XBtShared)(_pPage.X18).X0)))
_11_x = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))))
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_temp))+1*uintptr(_11_x)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_11_x)))), uint32((_cbrk+_size)-_11_x))
@@ -70415,19 +62854,15 @@ _52:
_39:
_i += 1
goto _38
-
_41:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7)))) = uint8(i32(0))
_defragment_out:
- if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7))))) + _cbrk) - _iCellFirst) == int32(_pPage.X13) {
- goto _54
+ if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7))))) + _cbrk) - _iCellFirst) != int32(_pPage.X13) {
+ return _sqlite3CorruptError(tls, i32(60479))
}
- return _sqlite3CorruptError(tls, i32(60479))
-
-_54:
func() {
if _cbrk < _iCellFirst {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60481), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(84648)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60481), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(83220)))
crt.X__builtin_abort(tls)
}
}()
@@ -70440,46 +62875,42 @@ _54:
crt.Xmemset(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_iCellFirst)))), i32(0), uint32(_cbrk-_iCellFirst))
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pPage.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(60486), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(55076)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(60486), unsafe.Pointer((*int8)(unsafe.Pointer(&_defragmentPageØ00__func__Ø000))), unsafe.Pointer(str(53334)))
crt.X__builtin_abort(tls)
}
}()
return i32(0)
}
-var _defragmentPageØ00__func__Ø000 [15]int8 // -
+var _defragmentPageØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_defragmentPageØ00__func__Ø000[0], str(84668), 15)
+ crt.Xstrncpy(nil, &_defragmentPageØ00__func__Ø000[0], str(83237), 15)
}
-func _sqlite3PagerTempSpace(tls *crt.TLS, _pPager *XPager) (r0 unsafe.Pointer) { // sqlite3.c:50704:1
+// Return a pointer to the "temporary page" buffer held internally
+// by the pager. This is a buffer that is big enough to hold the
+// entire content of a database page. This buffer is used internally
+// during rollback and will be overwritten whenever a rollback
+// occurs. But other modules are free to use it too, as long as
+// no rollbacks are happening.
+func _sqlite3PagerTempSpace(tls *crt.TLS, _pPager *XPager) (r0 unsafe.Pointer) {
return (unsafe.Pointer)(_pPager.X58)
}
-func _balance(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:66946:1
- var _rc int32 // sqlite3.c:66947:7
- _ = _rc
- var _nMin int32 // sqlite3.c:66948:13
- _ = _nMin
- var _aBalanceQuickSpace [13]uint8 // sqlite3.c:66949:6
- _ = _aBalanceQuickSpace
- var _pFree *uint8 // sqlite3.c:66950:6
- _ = _pFree
- var _balance_quick_called int32 // sqlite3.c:66952:17
- _ = _balance_quick_called
- var _balance_deeper_called int32 // sqlite3.c:66953:17
- _ = _balance_deeper_called
- var _1_iPage int32 // sqlite3.c:66956:9
- _ = _1_iPage
- var _1_pPage *XMemPage // sqlite3.c:66957:13
- _ = _1_pPage
- var _7_pParent *XMemPage // sqlite3.c:66981:15
- _ = _7_pParent
- var _7_iIdx int32 // sqlite3.c:66982:17
- _ = _7_iIdx
- var _10_pSpace *uint8 // sqlite3.c:67029:14
- _ = _10_pSpace
+// The page that pCur currently points to has just been modified in
+// some way. This function figures out if this modification means the
+// tree needs to be balanced, and if so calls the appropriate balancing
+// routine. Balancing routines are:
+//
+// balance_quick()
+// balance_deeper()
+// balance_nonroot()
+func _balance(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
+ var _rc, _nMin, _balance_quick_called, _balance_deeper_called, _1_iPage, _7_iIdx int32
+ var _pFree, _10_pSpace *uint8
+ var _1_pPage, _7_pParent *XMemPage
+ var _aBalanceQuickSpace [13]uint8
_rc = i32(0)
_nMin = int32((((*XBtShared)(_pCur.X1).X16) * uint32(i32(2))) / uint32(i32(3)))
_pFree = nil
@@ -70491,79 +62922,59 @@ _0:
if _1_iPage != i32(0) {
goto _1
}
-
if (_1_pPage.X9) == 0 {
goto _2
}
-
func() {
if _balance_deeper_called != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66966), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(84684)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66966), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(83252)))
crt.X__builtin_abort(tls)
}
}()
_balance_deeper_called += 1
_rc = _balance_deeper(tls, _1_pPage, (**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */)))))+4*uintptr(i32(1)))))
- if _rc != i32(0) {
- goto _5
+ if _rc == i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) = int8(i32(1))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[19]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(68 /* X17 */))))) + 2*uintptr(i32(0)))) = uint16(i32(0))
+ func() {
+ if ((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(i32(1))))).X9) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66973), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(83277)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) = int8(i32(1))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[19]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(68 /* X17 */))))) + 2*uintptr(i32(0)))) = uint16(i32(0))
- func() {
- if ((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(i32(1))))).X9) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66973), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(84712)))
- crt.X__builtin_abort(tls)
- }
- }()
-_5:
goto _8
-
_2:
goto _9
-
_8:
goto _10
-
_1:
- if int32(_1_pPage.X9) != i32(0) || int32(_1_pPage.X13) > _nMin {
- goto _12
+ if (int32(_1_pPage.X9) == i32(0)) && (int32(_1_pPage.X13) <= _nMin) {
+ goto _9
}
-
- goto _9
-
-_12:
_7_pParent = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_1_iPage-i32(1))))
_7_iIdx = int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[19]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(68 /* X17 */))))) + 2*uintptr(_1_iPage-i32(1)))))
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_7_pParent.X23))
if _rc != i32(0) {
goto _14
}
-
- if (_1_pPage.X3) == 0 || int32(_1_pPage.X9) != i32(1) || int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pPage))+uintptr(26 /* X16 */))))) + 2*uintptr(i32(0))))) != int32(_1_pPage.X14) || (_7_pParent.X4) == uint32(i32(1)) || int32(_7_pParent.X14) != _7_iIdx {
- goto _19
+ if (((((_1_pPage.X3) != 0) && (int32(_1_pPage.X9) == i32(1))) && (int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pPage))+uintptr(26 /* X16 */))))) + 2*uintptr(i32(0))))) == int32(_1_pPage.X14))) && ((_7_pParent.X4) != uint32(i32(1)))) && (int32(_7_pParent.X14) == _7_iIdx) {
+ func() {
+ if _balance_quick_called != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67006), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(83304)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _balance_quick_called += 1
+ _rc = _balance_quick(tls, _7_pParent, _1_pPage, (*uint8)(unsafe.Pointer(&_aBalanceQuickSpace)))
+ goto _22
}
-
- func() {
- if _balance_quick_called != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67006), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(84740)))
- crt.X__builtin_abort(tls)
- }
- }()
- _balance_quick_called += 1
- _rc = _balance_quick(tls, _7_pParent, _1_pPage, (*uint8)(unsafe.Pointer(&_aBalanceQuickSpace)))
- goto _22
-
-_19:
_10_pSpace = (*uint8)(_sqlite3PageMalloc(tls, int32((*XBtShared)(_pCur.X1).X15)))
_rc = _balance_nonroot(tls, _7_pParent, _7_iIdx, _10_pSpace, bool2int(_1_iPage == i32(1)), int32(_pCur.X13)&i32(1))
- if _pFree == nil {
- goto _23
+ if _pFree != nil {
+ _sqlite3PageFree(tls, (unsafe.Pointer)(_pFree))
}
-
- _sqlite3PageFree(tls, (unsafe.Pointer)(_pFree))
-_23:
_pFree = _10_pSpace
_22:
_14:
@@ -70572,7 +62983,7 @@ _14:
*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(64 /* X14 */))) -= 1
func() {
if int32(_pCur.X14) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67052), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(76300)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67052), unsafe.Pointer((*int8)(unsafe.Pointer(&_balanceØ00__func__Ø000))), unsafe.Pointer(str(75282)))
crt.X__builtin_abort(tls)
}
}()
@@ -70580,44 +62991,56 @@ _10:
if _rc == i32(0) {
goto _0
}
-
_9:
- if _pFree == nil {
- goto _26
+ if _pFree != nil {
+ _sqlite3PageFree(tls, (unsafe.Pointer)(_pFree))
}
-
- _sqlite3PageFree(tls, (unsafe.Pointer)(_pFree))
-_26:
return _rc
-}
-var _balanceØ00__func__Ø000 [8]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_balanceØ00__func__Ø000[0], str(84764), 8)
-}
-
-func _balance_deeper(tls *crt.TLS, _pRoot *XMemPage, _ppChild **XMemPage) (r0 int32) { // sqlite3.c:66889:1
- var _rc int32 // sqlite3.c:66890:7
- _ = _rc
- var _pChild *XMemPage // sqlite3.c:66891:11
- _ = _pChild
- var _pgnoChild uint32 // sqlite3.c:66892:8
- _ = _pgnoChild
- var _pBt *XBtShared // sqlite3.c:66893:12
- _ = _pBt
+ _ = _aBalanceQuickSpace
+ panic(0)
+}
+
+var _balanceØ00__func__Ø000 [8]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_balanceØ00__func__Ø000[0], str(83328), 8)
+}
+
+// This function is called when the root page of a b-tree structure is
+// overfull (has one or more overflow pages).
+//
+// A new child page is allocated and the contents of the current root
+// page, including overflow cells, are copied into the child. The root
+// page is then overwritten to make it an empty page with the right-child
+// pointer pointing to the new page.
+//
+// Before returning, all pointer-map entries corresponding to pages
+// that the new child-page now contains pointers to are updated. The
+// entry corresponding to the new right-child pointer of the root
+// page is also updated.
+//
+// If successful, *ppChild is set to contain a reference to the child
+// page and SQLITE_OK is returned. In this case the caller is required
+// to call releasePage() on *ppChild exactly once. If an error occurs,
+// an error code is returned and *ppChild is set to 0.
+func _balance_deeper(tls *crt.TLS, _pRoot *XMemPage, _ppChild **XMemPage) (r0 int32) {
+ var _rc int32
+ var _pgnoChild uint32
+ var _pBt *XBtShared
+ var _pChild *XMemPage
_pChild = nil
_pgnoChild = u32(0)
_pBt = (*XBtShared)(_pRoot.X18)
func() {
if int32(_pRoot.X9) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66895), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(84772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66895), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(83336)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66896), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66896), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
@@ -70625,40 +63048,32 @@ func _balance_deeper(tls *crt.TLS, _pRoot *XMemPage, _ppChild **XMemPage) (r0 in
if _rc != i32(0) {
goto _4
}
-
_rc = _allocateBtreePage(tls, _pBt, &_pChild, &_pgnoChild, _pRoot.X4, uint8(i32(0)))
_copyNodeContent(tls, _pRoot, _pChild, &_rc)
- if (_pBt.X5) == 0 {
- goto _5
+ if (_pBt.X5) != 0 {
+ _ptrmapPut(tls, _pBt, _pgnoChild, uint8(i32(5)), _pRoot.X4, &_rc)
}
-
- _ptrmapPut(tls, _pBt, _pgnoChild, uint8(i32(5)), _pRoot.X4, &_rc)
-_5:
_4:
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ *_ppChild = nil
+ _releasePage(tls, _pChild)
+ return _rc
}
-
- *_ppChild = nil
- _releasePage(tls, _pChild)
- return _rc
-
-_6:
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pChild.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66915), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(84792)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66915), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(83355)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pRoot.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66916), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(80852)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66916), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(79601)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pChild.X14) != int32(_pRoot.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66917), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(84836)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66917), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_deeperØ00__func__Ø000))), unsafe.Pointer(str(83396)))
crt.X__builtin_abort(tls)
}
}()
@@ -70671,31 +63086,34 @@ _6:
return i32(0)
}
-var _balance_deeperØ00__func__Ø000 [15]int8 // -
+var _balance_deeperØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_balance_deeperØ00__func__Ø000[0], str(84864), 15)
+ crt.Xstrncpy(nil, &_balance_deeperØ00__func__Ø000[0], str(83424), 15)
}
-func _copyNodeContent(tls *crt.TLS, _pFrom *XMemPage, _pTo *XMemPage, _pRC *int32) { // sqlite3.c:66045:1
- var _1_pBt *XBtShared // sqlite3.c:66047:14
- _ = _1_pBt
- var _1_aFrom *uint8 // sqlite3.c:66048:8
- _ = _1_aFrom
- var _1_aTo *uint8 // sqlite3.c:66049:8
- _ = _1_aTo
- var _1_iFromHdr int32 // sqlite3.c:66050:15
- _ = _1_iFromHdr
- var _1_iToHdr int32 // sqlite3.c:66051:15
- _ = _1_iToHdr
- var _1_rc int32 // sqlite3.c:66052:9
- _ = _1_rc
- var _1_iData int32 // sqlite3.c:66053:9
- _ = _1_iData
+// This function is used to copy the contents of the b-tree node stored
+// on page pFrom to page pTo. If page pFrom was not a leaf page, then
+// the pointer-map entries for each child page are updated so that the
+// parent page stored in the pointer map is page pTo. If pFrom contained
+// any cells with overflow page pointers, then the corresponding pointer
+// map entries are also updated so that the parent page is page pTo.
+//
+// If pFrom is currently carrying any overflow cells (entries in the
+// MemPage.apOvfl[] array), they are not copied to pTo.
+//
+// Before returning, page pTo is reinitialized using btreeInitPage().
+//
+// The performance of this function is not critical. It is only used by
+// the balance_shallower() and balance_deeper() procedures, neither of
+// which are called often under normal circumstances.
+func _copyNodeContent(tls *crt.TLS, _pFrom *XMemPage, _pTo *XMemPage, _pRC *int32) {
+ var _1_iFromHdr, _1_iToHdr, _1_rc, _1_iData int32
+ var _1_aFrom, _1_aTo *uint8
+ var _1_pBt *XBtShared
if (*_pRC) != i32(0) {
goto _0
}
-
_1_pBt = (*XBtShared)(_pFrom.X18)
_1_aFrom = _pFrom.X19
_1_aTo = _pTo.X19
@@ -70708,19 +63126,19 @@ func _copyNodeContent(tls *crt.TLS, _pFrom *XMemPage, _pTo *XMemPage, _pRC *int3
}()
func() {
if (_pFrom.X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66056), unsafe.Pointer((*int8)(unsafe.Pointer(&_copyNodeContentØ00__func__Ø000))), unsafe.Pointer(str(84880)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66056), unsafe.Pointer((*int8)(unsafe.Pointer(&_copyNodeContentØ00__func__Ø000))), unsafe.Pointer(str(83439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pFrom.X13) < _1_iToHdr {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66057), unsafe.Pointer((*int8)(unsafe.Pointer(&_copyNodeContentØ00__func__Ø000))), unsafe.Pointer(str(84896)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66057), unsafe.Pointer((*int8)(unsafe.Pointer(&_copyNodeContentØ00__func__Ø000))), unsafe.Pointer(str(83453)))
crt.X__builtin_abort(tls)
}
}()
func() {
if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aFrom))+1*uintptr(_1_iFromHdr+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aFrom))+1*uintptr(_1_iFromHdr+i32(5)))))) + 1*uintptr(i32(1)))))) > int32(_1_pBt.X16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66058), unsafe.Pointer((*int8)(unsafe.Pointer(&_copyNodeContentØ00__func__Ø000))), unsafe.Pointer(str(84920)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66058), unsafe.Pointer((*int8)(unsafe.Pointer(&_copyNodeContentØ00__func__Ø000))), unsafe.Pointer(str(83474)))
crt.X__builtin_abort(tls)
}
}()
@@ -70729,85 +63147,85 @@ func _copyNodeContent(tls *crt.TLS, _pFrom *XMemPage, _pTo *XMemPage, _pRC *int3
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aTo))+1*uintptr(_1_iToHdr)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aFrom))+1*uintptr(_1_iFromHdr)))), uint32(int32(_pFrom.X12)+(i32(2)*int32(_pFrom.X14))))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(0 /* X0 */))) = uint8(i32(0))
_1_rc = _btreeInitPage(tls, _pTo)
- if _1_rc == i32(0) {
- goto _9
- }
-
- *_pRC = _1_rc
- return
-
-_9:
- if (_1_pBt.X5) == 0 {
- goto _10
- }
-
- *_pRC = _setChildPtrmaps(tls, _pTo)
-_10:
-_0:
-}
-
-var _copyNodeContentØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_copyNodeContentØ00__func__Ø000[0], str(84976), 16)
-}
-
-func _balance_quick(tls *crt.TLS, _pParent *XMemPage, _pPage *XMemPage, _pSpace *uint8) (r0 int32) { // sqlite3.c:65901:1
- var _pBt *XBtShared // sqlite3.c:65902:12
- _ = _pBt
- var _pNew *XMemPage // sqlite3.c:65903:11
- _ = _pNew
- var _rc int32 // sqlite3.c:65904:7
- _ = _rc
- var _pgnoNew uint32 // sqlite3.c:65905:8
- _ = _pgnoNew
- var _1_pOut *uint8 // sqlite3.c:65922:8
- _ = _1_pOut
- var _1_pCell *uint8 // sqlite3.c:65923:8
- _ = _1_pCell
- var _1_szCell uint16 // sqlite3.c:65924:9
- _ = _1_szCell
- var _1_pStop *uint8 // sqlite3.c:65925:8
- _ = _1_pStop
+ if _1_rc != i32(0) {
+ *_pRC = _1_rc
+ return
+ }
+ if (_1_pBt.X5) != 0 {
+ *_pRC = _setChildPtrmaps(tls, _pTo)
+ }
+_0:
+}
+
+var _copyNodeContentØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_copyNodeContentØ00__func__Ø000[0], str(83527), 16)
+}
+
+// This version of balance() handles the common special case where
+// a new entry is being inserted on the extreme right-end of the
+// tree, in other words, when the new entry will become the largest
+// entry in the tree.
+//
+// Instead of trying to balance the 3 right-most leaf pages, just add
+// a new page to the right-hand side and put the one new entry in
+// that page. This leaves the right side of the tree somewhat
+// unbalanced. But odds are that we will be inserting new entries
+// at the end soon afterwards so the nearly empty page will quickly
+// fill up. On average.
+//
+// pPage is the leaf page which is the right-most page in the tree.
+// pParent is its parent. pPage must have a single overflow entry
+// which is also the right-most entry on the page.
+//
+// The pSpace buffer is used to store a temporary copy of the divider
+// cell that will be inserted into pParent. Such a cell consists of a 4
+// byte page number followed by a variable length integer. In other
+// words, at most 13 bytes. Hence the pSpace buffer must be at
+// least 13 bytes in size.
+func _balance_quick(tls *crt.TLS, _pParent *XMemPage, _pPage *XMemPage, _pSpace *uint8) (r0 int32) {
+ var _rc int32
+ var _pgnoNew uint32
+ var _1_szCell uint16
+ var _1_pOut, _1_pCell, _1_pStop *uint8
+ var _pBt *XBtShared
+ var _pNew *XMemPage
_pBt = (*XBtShared)(_pPage.X18)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*XBtShared)(_pPage.X18).X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65907), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(19948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65907), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(20439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pParent.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65908), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(84992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65908), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(83543)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X9) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65909), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(85036)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65909), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(83585)))
crt.X__builtin_abort(tls)
}
}()
if func() int32 {
if int32(_pPage.X14) == i32(0) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65912), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65912), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _8
+ }() != 0 {
+ return _sqlite3CorruptError(tls, i32(65912))
}
- return _sqlite3CorruptError(tls, i32(65912))
-
-_8:
_rc = _allocateBtreePage(tls, _pBt, &_pNew, &_pgnoNew, uint32(i32(0)), uint8(i32(0)))
if _rc != i32(0) {
goto _9
}
-
_1_pOut = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSpace)) + 1*uintptr(i32(4))))
_1_pCell = *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage))+uintptr(36 /* X17 */))))) + 4*uintptr(i32(0))))
_1_szCell = (*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
@@ -70815,13 +63233,13 @@ _8:
}{(_pPage.X24)})))(tls, _pPage, _1_pCell)
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pNew.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65927), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(85056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65927), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(83605)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X19)) + 1*uintptr(i32(0))))) != i32(13) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65928), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(85096)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65928), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(83644)))
crt.X__builtin_abort(tls)
}
}()
@@ -70830,87 +63248,64 @@ _8:
if func() int32 {
if _rc != 0 {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65931), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65931), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_quickØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _16
+ }() != 0 {
+ return _rc
}
- return _rc
-
-_16:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X13 */))) = uint16((((_pBt.X16) - uint32(_pNew.X12)) - uint32(i32(2))) - uint32(_1_szCell))
if (_pBt.X5) == 0 {
goto _17
}
-
_ptrmapPut(tls, _pBt, _pgnoNew, uint8(i32(5)), _pParent.X4, &_rc)
- if int32(_1_szCell) <= int32(_pNew.X11) {
- goto _18
+ if int32(_1_szCell) > int32(_pNew.X11) {
+ _ptrmapPutOvflPtr(tls, _pNew, _1_pCell, &_rc)
}
-
- _ptrmapPutOvflPtr(tls, _pNew, _1_pCell, &_rc)
-_18:
_17:
_1_pCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*(int32(_pPage.X14)-i32(1))))))) + 1*uintptr(i32(0)))))<= uintptr(unsafe.Pointer(_1_pStop)) {
- goto _20
+ if (int32(*postInc13(&_1_pCell, 1))&i32(128)) != 0 && (uintptr(unsafe.Pointer(_1_pCell)) < uintptr(unsafe.Pointer(_1_pStop))) {
+ goto _19
}
-
- goto _19
-
-_20:
_1_pStop = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pCell)) + 1*uintptr(i32(9))))
_22:
- if (int32(store2(postInc11(&_1_pOut, 1), *postInc11(&_1_pCell, 1)))&i32(128)) == 0 || uintptr(unsafe.Pointer(_1_pCell)) >= uintptr(unsafe.Pointer(_1_pStop)) {
- goto _23
+ if (int32(store2(postInc13(&_1_pOut, 1), *postInc13(&_1_pCell, 1)))&i32(128)) != 0 && (uintptr(unsafe.Pointer(_1_pCell)) < uintptr(unsafe.Pointer(_1_pStop))) {
+ goto _22
}
-
- goto _22
-
-_23:
- if _rc != i32(0) {
- goto _25
+ if _rc == i32(0) {
+ _insertCell(tls, _pParent, int32(_pParent.X14), _pSpace, int32((uintptr(unsafe.Pointer(_1_pOut))-uintptr(unsafe.Pointer(_pSpace)))/1), nil, _pPage.X4, &_rc)
}
-
- _insertCell(tls, _pParent, int32(_pParent.X14), _pSpace, int32((uintptr(unsafe.Pointer(_1_pOut))-uintptr(unsafe.Pointer(_pSpace)))/1), nil, _pPage.X4, &_rc)
-_25:
_sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent.X19))+1*uintptr(int32(_pParent.X6)+i32(8)))), _pgnoNew)
_releasePage(tls, _pNew)
_9:
return _rc
}
-var _balance_quickØ00__func__Ø000 [14]int8 // -
+var _balance_quickØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_balance_quickØ00__func__Ø000[0], str(85148), 14)
+ crt.Xstrncpy(nil, &_balance_quickØ00__func__Ø000[0], str(83696), 14)
}
-func _rebuildPage(tls *crt.TLS, _pPg *XMemPage, _nCell int32, _apCell **uint8, _szCell *uint16) (r0 int32) { // sqlite3.c:65595:1
- var _hdr int32 // sqlite3.c:65601:13
- _ = _hdr
- var _aData *uint8 // sqlite3.c:65602:6
- _ = _aData
- var _usableSize int32 // sqlite3.c:65603:13
- _ = _usableSize
- var _pEnd *uint8 // sqlite3.c:65604:6
- _ = _pEnd
- var _i int32 // sqlite3.c:65605:7
- _ = _i
- var _pCellptr *uint8 // sqlite3.c:65606:6
- _ = _pCellptr
- var _pTmp *uint8 // sqlite3.c:65607:6
- _ = _pTmp
- var _pData *uint8 // sqlite3.c:65608:6
- _ = _pData
- var _1_pCell *uint8 // sqlite3.c:65615:8
- _ = _1_pCell
+// Array apCell[] contains pointers to nCell b-tree page cells. The
+// szCell[] array contains the size in bytes of each cell. This function
+// replaces the current contents of page pPg with the contents of the cell
+// array.
+//
+// Some of the cells in apCell[] may currently be stored in pPg. This
+// function works around problems caused by this by making a copy of any
+// such cells before overwriting the page data.
+//
+// The MemPage.nFree field is invalidated by this function. It is the
+// responsibility of the caller to set it correctly.
+func _rebuildPage(tls *crt.TLS, _pPg *XMemPage, _nCell int32, _apCell **uint8, _szCell *uint16) (r0 int32) {
+ var _hdr, _usableSize, _i int32
+ var _aData, _pEnd, _pCellptr, _pTmp, _pData, _1_pCell *uint8
_hdr = int32(_pPg.X6)
_aData = _pPg.X19
_usableSize = int32((*XBtShared)(_pPg.X18).X16)
@@ -70925,18 +63320,14 @@ _0:
if _i >= _nCell {
goto _3
}
-
_1_pCell = *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_apCell)) + 4*uintptr(_i)))
- if uint32(uintptr(unsafe.Pointer(_1_pCell))) < uint32(uintptr(unsafe.Pointer(_aData))) || uint32(uintptr(unsafe.Pointer(_1_pCell))) >= uint32(uintptr(unsafe.Pointer(_pEnd))) {
- goto _5
+ if (uint32(uintptr(unsafe.Pointer(_1_pCell))) >= uint32(uintptr(unsafe.Pointer(_aData)))) && (uint32(uintptr(unsafe.Pointer(_1_pCell))) < uint32(uintptr(unsafe.Pointer(_pEnd)))) {
+ _1_pCell = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTmp)) + 1*uintptr(int32((uintptr(unsafe.Pointer(_1_pCell))-uintptr(unsafe.Pointer(_aData)))/1))))
}
-
- _1_pCell = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTmp)) + 1*uintptr(int32((uintptr(unsafe.Pointer(_1_pCell))-uintptr(unsafe.Pointer(_aData)))/1))))
-_5:
{
p := &_pData
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_szCell)) + 2*uintptr(_i))))))
- sink11 = *p
+ sink13 = *p
}
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCellptr)) + 1*uintptr(i32(0)))) = uint8(int32((uintptr(unsafe.Pointer(_pData))-uintptr(unsafe.Pointer(_aData)))/1) >> uint(i32(8)))
@@ -70945,26 +63336,22 @@ _5:
{
p := &_pCellptr
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(2))))
- sink11 = *p
+ sink13 = *p
}
- if uintptr(unsafe.Pointer(_pData)) >= uintptr(unsafe.Pointer(_pCellptr)) {
- goto _6
+ if uintptr(unsafe.Pointer(_pData)) < uintptr(unsafe.Pointer(_pCellptr)) {
+ return _sqlite3CorruptError(tls, i32(65622))
}
- return _sqlite3CorruptError(tls, i32(65622))
-
-_6:
crt.Xmemcpy(tls, (unsafe.Pointer)(_pData), (unsafe.Pointer)(_1_pCell), uint32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_szCell)) + 2*uintptr(_i)))))
func() {
if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_szCell)) + 2*uintptr(_i)))) != int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{(_pPg.X24)})))(tls, _pPg, _1_pCell)) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65624), unsafe.Pointer((*int8)(unsafe.Pointer(&_rebuildPageØ00__func__Ø000))), unsafe.Pointer(str(85164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65624), unsafe.Pointer((*int8)(unsafe.Pointer(&_rebuildPageØ00__func__Ø000))), unsafe.Pointer(str(83710)))
crt.X__builtin_abort(tls)
}
}()
_i += 1
goto _0
-
_3:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(22 /* X14 */))) = uint16(_nCell)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(12 /* X9 */))) = uint8(i32(0))
@@ -70984,145 +63371,66 @@ _3:
return i32(0)
}
-var _rebuildPageØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_rebuildPageØ00__func__Ø000[0], str(85216), 12)
-}
-
-func _balance_nonroot(tls *crt.TLS, _pParent *XMemPage, _iParentIdx int32, _aOvflSpace *uint8, _isRoot int32, _bBulk int32) (r0 int32) { // sqlite3.c:66126:1
- var _pBt *XBtShared // sqlite3.c:66133:12
- _ = _pBt
- var _nMaxCells int32 // sqlite3.c:66134:7
- _ = _nMaxCells
- var _nNew int32 // sqlite3.c:66135:7
- _ = _nNew
- var _nOld int32 // sqlite3.c:66136:7
- _ = _nOld
- var _i int32 // sqlite3.c:66137:7
- _ = _i
- var _j int32 // sqlite3.c:66137:10
- _ = _j
- var _k int32 // sqlite3.c:66137:13
- _ = _k
- var _nxDiv int32 // sqlite3.c:66138:7
- _ = _nxDiv
- var _rc int32 // sqlite3.c:66139:7
- _ = _rc
- var _leafCorrection uint16 // sqlite3.c:66140:7
- _ = _leafCorrection
- var _leafData int32 // sqlite3.c:66141:7
- _ = _leafData
- var _usableSpace int32 // sqlite3.c:66142:7
- _ = _usableSpace
- var _pageFlags int32 // sqlite3.c:66143:7
- _ = _pageFlags
- var _iSpace1 int32 // sqlite3.c:66144:7
- _ = _iSpace1
- var _iOvflSpace int32 // sqlite3.c:66145:7
- _ = _iOvflSpace
- var _szScratch int32 // sqlite3.c:66146:7
- _ = _szScratch
- var _apOld [3]*XMemPage // sqlite3.c:66147:11
- _ = _apOld
- var _apNew [5]*XMemPage // sqlite3.c:66148:11
- _ = _apNew
- var _pRight *uint8 // sqlite3.c:66149:6
- _ = _pRight
- var _apDiv [2]*uint8 // sqlite3.c:66150:6
- _ = _apDiv
- var _cntNew [5]int32 // sqlite3.c:66151:7
- _ = _cntNew
- var _cntOld [5]int32 // sqlite3.c:66152:7
- _ = _cntOld
- var _szNew [5]int32 // sqlite3.c:66153:7
- _ = _szNew
- var _aSpace1 *uint8 // sqlite3.c:66154:6
- _ = _aSpace1
- var _pgno uint32 // sqlite3.c:66155:8
- _ = _pgno
- var _abDone [5]uint8 // sqlite3.c:66156:6
- _ = _abDone
- var _aPgno [5]uint32 // sqlite3.c:66157:8
- _ = _aPgno
- var _aPgOrder [5]uint32 // sqlite3.c:66158:8
- _ = _aPgOrder
- var _aPgFlags [5]uint16 // sqlite3.c:66159:7
- _ = _aPgFlags
- var _b XCellArray // sqlite3.c:66160:13
- _ = _b
- var _13_iOff int32 // sqlite3.c:66249:13
- _ = _13_iOff
- var _17_pOld *XMemPage // sqlite3.c:66309:13
- _ = _17_pOld
- var _17_limit int32 // sqlite3.c:66310:9
- _ = _17_limit
- var _17_aData *uint8 // sqlite3.c:66311:8
- _ = _17_aData
- var _17_maskPage uint16 // sqlite3.c:66312:9
- _ = _17_maskPage
- var _17_piCell *uint8 // sqlite3.c:66313:8
- _ = _17_piCell
- var _17_piEnd *uint8 // sqlite3.c:66314:8
- _ = _17_piEnd
- var _23_sz uint16 // sqlite3.c:66365:11
- _ = _23_sz
- var _23_pTemp *uint8 // sqlite3.c:66366:10
- _ = _23_pTemp
- var _27_p *XMemPage // sqlite3.c:66416:13
- _ = _27_p
- var _29_sz int32 // sqlite3.c:66425:9
- _ = _29_sz
- var _42_szRight int32 // sqlite3.c:66479:9
- _ = _42_szRight
- var _42_szLeft int32 // sqlite3.c:66480:9
- _ = _42_szLeft
- var _42_r int32 // sqlite3.c:66481:9
- _ = _42_r
- var _42_d int32 // sqlite3.c:66482:9
- _ = _42_d
- var _46_pNew *XMemPage // sqlite3.c:66528:13
- _ = _46_pNew
- var _54_iBest int32 // sqlite3.c:66584:9
- _ = _54_iBest
- var _58_pOld *XMemPage // sqlite3.c:66619:13
- _ = _58_pOld
- var _59_pNew *XMemPage // sqlite3.c:66640:13
- _ = _59_pNew
- var _59_aOld *uint8 // sqlite3.c:66641:8
- _ = _59_aOld
- var _59_cntOldNext int32 // sqlite3.c:66642:9
- _ = _59_cntOldNext
- var _59_usableSize int32 // sqlite3.c:66643:9
- _ = _59_usableSize
- var _59_iNew int32 // sqlite3.c:66644:9
- _ = _59_iNew
- var _59_iOld int32 // sqlite3.c:66645:9
- _ = _59_iOld
- var _60_pCell *uint8 // sqlite3.c:66648:10
- _ = _60_pCell
- var _61_pOld *XMemPage // sqlite3.c:66650:17
- _ = _61_pOld
- var _66_pCell *uint8 // sqlite3.c:66682:8
- _ = _66_pCell
- var _66_pTemp *uint8 // sqlite3.c:66683:8
- _ = _66_pTemp
- var _66_sz int32 // sqlite3.c:66684:9
- _ = _66_sz
- var _66_pNew *XMemPage // sqlite3.c:66685:13
- _ = _66_pNew
- var _68_info XCellInfo // sqlite3.c:66701:16
- _ = _68_info
- var _71_iPg int32 // sqlite3.c:66756:9
- _ = _71_iPg
- var _72_iNew int32 // sqlite3.c:66762:11
- _ = _72_iNew
- var _72_iOld int32 // sqlite3.c:66763:11
- _ = _72_iOld
- var _72_nNewCell int32 // sqlite3.c:66764:11
- _ = _72_nNewCell
- var _77_key uint32 // sqlite3.c:66828:11
- _ = _77_key
+var _rebuildPageØ00__func__Ø000 [12]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_rebuildPageØ00__func__Ø000[0], str(83762), 12)
+}
+
+// This routine redistributes cells on the iParentIdx'th child of pParent
+// (hereafter "the page") and up to 2 siblings so that all pages have about the
+// same amount of free space. Usually a single sibling on either side of the
+// page are used in the balancing, though both siblings might come from one
+// side if the page is the first or last child of its parent. If the page
+// has fewer than 2 siblings (something which can only happen if the page
+// is a root page or a child of a root page) then all available siblings
+// participate in the balancing.
+//
+// The number of siblings of the page might be increased or decreased by
+// one or two in an effort to keep pages nearly full but not over full.
+//
+// Note that when this routine is called, some of the cells on the page
+// might not actually be stored in MemPage.aData[]. This can happen
+// if the page is overfull. This routine ensures that all cells allocated
+// to the page and its siblings fit into MemPage.aData[] before returning.
+//
+// In the course of balancing the page and its siblings, cells may be
+// inserted into or removed from the parent page (pParent). Doing so
+// may cause the parent page to become overfull or underfull. If this
+// happens, it is the responsibility of the caller to invoke the correct
+// balancing routine to fix this problem (see the balance() routine).
+//
+// If this routine fails for any reason, it might leave the database
+// in a corrupted state. So if this routine fails, the database should
+// be rolled back.
+//
+// The third argument to this function, aOvflSpace, is a pointer to a
+// buffer big enough to hold one page. If while inserting cells into the parent
+// page (pParent) the parent page becomes overfull, this buffer is
+// used to store the parent's overflow cells. Because this function inserts
+// a maximum of four divider cells into the parent page, and the maximum
+// size of a cell stored within an internal node is always less than 1/4
+// of the page-size, the aOvflSpace[] buffer is guaranteed to be large
+// enough for all overflow cells.
+//
+// If aOvflSpace is set to a null pointer, this function returns
+// SQLITE_NOMEM.
+func _balance_nonroot(tls *crt.TLS, _pParent *XMemPage, _iParentIdx int32, _aOvflSpace *uint8, _isRoot int32, _bBulk int32) (r0 int32) {
+ var _nMaxCells, _nNew, _nOld, _i, _j, _k, _nxDiv, _rc, _leafData, _usableSpace, _pageFlags, _iSpace1, _iOvflSpace, _szScratch, _13_iOff, _17_limit, _29_sz, _42_szRight, _42_szLeft, _42_r, _42_d, _54_iBest, _59_cntOldNext, _59_usableSize, _59_iNew, _59_iOld, _66_sz, _71_iPg, _72_iNew, _72_iOld, _72_nNewCell int32
+ var _pgno, _77_key uint32
+ var _leafCorrection, _17_maskPage, _23_sz uint16
+ var _pRight, _aSpace1, _17_aData, _17_piCell, _17_piEnd, _23_pTemp, _59_aOld, _60_pCell, _66_pCell, _66_pTemp *uint8
+ var _aPgno, _aPgOrder [5]uint32
+ var _pBt *XBtShared
+ var _68_info XCellInfo
+ var _17_pOld, _27_p, _46_pNew, _58_pOld, _59_pNew, _61_pOld, _66_pNew *XMemPage
+ var _b XCellArray
+ var _apOld [3]*XMemPage
+ var _apNew [5]*XMemPage
+ var _apDiv [2]*uint8
+ var _cntNew, _cntOld, _szNew [5]int32
+ var _abDone [5]uint8
+ var _aPgFlags [5]uint16
_nMaxCells = i32(0)
_nNew = i32(0)
_rc = i32(0)
@@ -71134,117 +63442,86 @@ func _balance_nonroot(tls *crt.TLS, _pParent *XMemPage, _iParentIdx int32, _aOvf
_pBt = (*XBtShared)(_pParent.X18)
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66166), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66166), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pParent.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66167), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66167), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83543)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pParent.X9) != i32(0) && int32(_pParent.X9) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66178), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85228)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66178), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83774)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pParent.X9) != i32(0) && int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent))+uintptr(26 /* X16 */))))) + 2*uintptr(i32(0))))) != _iParentIdx {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66179), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85276)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66179), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83821)))
crt.X__builtin_abort(tls)
}
}()
- if _aOvflSpace != nil {
- goto _10
+ if _aOvflSpace == nil {
+ return _sqlite3NomemError(tls, i32(66182))
}
- return _sqlite3NomemError(tls, i32(66182))
-
-_10:
_i = int32(_pParent.X9) + int32(_pParent.X14)
- if _i >= i32(2) {
- goto _11
+ if _i < i32(2) {
+ _nxDiv = i32(0)
+ goto _12
}
-
- _nxDiv = i32(0)
- goto _12
-
-_11:
func() {
if _bBulk != i32(0) && _bBulk != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66200), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85332)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66200), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83877)))
crt.X__builtin_abort(tls)
}
}()
- if _iParentIdx != i32(0) {
- goto _16
+ if _iParentIdx == i32(0) {
+ _nxDiv = i32(0)
+ goto _17
}
-
- _nxDiv = i32(0)
- goto _17
-
-_16:
- if _iParentIdx != _i {
- goto _18
+ if _iParentIdx == _i {
+ _nxDiv = (_i - i32(2)) + _bBulk
+ goto _19
}
-
- _nxDiv = (_i - i32(2)) + _bBulk
- goto _19
-
-_18:
_nxDiv = _iParentIdx - i32(1)
_19:
_17:
_i = i32(2) - _bBulk
_12:
_nOld = _i + i32(1)
- if ((_i + _nxDiv) - int32(_pParent.X9)) != int32(_pParent.X14) {
- goto _20
+ if ((_i + _nxDiv) - int32(_pParent.X9)) == int32(_pParent.X14) {
+ _pRight = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent.X19)) + 1*uintptr(int32(_pParent.X6)+i32(8))))
+ goto _21
}
-
- _pRight = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent.X19)) + 1*uintptr(int32(_pParent.X6)+i32(8))))
- goto _21
-
-_20:
_pRight = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pParent.X19)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pParent.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent.X21))+1*uintptr(i32(2)*((_i+_nxDiv)-int32(_pParent.X9))))))) + 1*uintptr(i32(0)))))< int32(_pBt.X16) {
+ _rc = _sqlite3CorruptError(tls, i32(66253))
+ crt.Xmemset(tls, (unsafe.Pointer)(&_apOld), i32(0), uint32(_i+i32(1))*u32(4))
+ goto _balance_cleanup
}
-
- _rc = _sqlite3CorruptError(tls, i32(66253))
- crt.Xmemset(tls, (unsafe.Pointer)(&_apOld), i32(0), uint32(_i+i32(1))*u32(4))
- goto _balance_cleanup
-
-_30:
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOvflSpace))+1*uintptr(_13_iOff)))), (unsafe.Pointer)(*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apDiv)) + 4*uintptr(_i)))), uint32(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i)))))
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apDiv)) + 4*uintptr(_i))) = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOvflSpace)) + 1*uintptr(int32((uintptr(unsafe.Pointer(*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apDiv)) + 4*uintptr(_i)))))-uintptr(unsafe.Pointer(_pParent.X19)))/1))))
_29:
_dropCell(tls, _pParent, (_i+_nxDiv)-int32(_pParent.X9), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i))), &_rc)
_28:
goto _22
-
_23:
_nMaxCells = (_nMaxCells + i32(3)) & i32(-4)
_szScratch = int32(((uint32(_nMaxCells) * u32(4)) + (uint32(_nMaxCells) * u32(2))) + (_pBt.X15))
func() {
if _szScratch > (i32(6) * int32(_pBt.X15)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66279), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66279), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83898)))
crt.X__builtin_abort(tls)
}
}()
*(***uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(8 /* X2 */))) = (**uint8)(_sqlite3ScratchMalloc(tls, _szScratch))
- if (_b.X2) != nil {
- goto _34
+ if (_b.X2) == nil {
+ _rc = _sqlite3NomemError(tls, i32(66282))
+ goto _balance_cleanup
}
-
- _rc = _sqlite3NomemError(tls, i32(66282))
- goto _balance_cleanup
-
-_34:
*(**uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(12 /* X3 */))) = (*uint16)(unsafe.Pointer((**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_nMaxCells)))))
_aSpace1 = (*uint8)(unsafe.Pointer((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_nMaxCells)))))
func() {
if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_aSpace1))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66287), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85388)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66287), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83930)))
crt.X__builtin_abort(tls)
}
}()
@@ -71305,52 +63572,43 @@ _37:
if _i >= _nOld {
goto _40
}
-
_17_pOld = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_i)))
_17_limit = int32(_17_pOld.X14)
_17_aData = _17_pOld.X19
_17_maskPage = _17_pOld.X15
_17_piCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_17_aData)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_17_pOld.X12)))))))
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pOld.X19)) + 1*uintptr(i32(0))))) == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(i32(0))))).X19)) + 1*uintptr(i32(0))))) {
- goto _41
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pOld.X19)) + 1*uintptr(i32(0))))) != int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(i32(0))))).X19)) + 1*uintptr(i32(0))))) {
+ _rc = _sqlite3CorruptError(tls, i32(66320))
+ goto _balance_cleanup
}
-
- _rc = _sqlite3CorruptError(tls, i32(66320))
- goto _balance_cleanup
-
-_41:
crt.Xmemset(tls, (unsafe.Pointer)((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3))+2*uintptr(_b.X0)))), i32(0), u32(2)*uint32(_17_limit+int32(_17_pOld.X9)))
if int32(_17_pOld.X9) <= i32(0) {
goto _42
}
-
_17_limit = int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pOld))+uintptr(26 /* X16 */))))) + 2*uintptr(i32(0)))))
_j = i32(0)
_43:
if _j >= _17_limit {
goto _46
}
-
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_b.X0))) = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_17_aData)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_17_maskPage)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_piCell)) + 1*uintptr(i32(0)))))<= int32(_17_pOld.X9) {
goto _50
}
-
func() {
if _k != i32(0) && (int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pOld))+uintptr(26 /* X16 */))))) + 2*uintptr(_k-i32(1)))))+i32(1)) != int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pOld))+uintptr(26 /* X16 */))))) + 2*uintptr(_k)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66350), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66350), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83960)))
crt.X__builtin_abort(tls)
}
}()
@@ -71358,40 +63616,34 @@ _47:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(0 /* X0 */))) += 1
_k += 1
goto _47
-
_50:
_42:
_17_piEnd = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_17_aData))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_17_pOld.X12))))))))) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(2)*int32(_17_pOld.X14))))))))
_54:
- if uintptr(unsafe.Pointer(_17_piCell)) >= uintptr(unsafe.Pointer(_17_piEnd)) {
- goto _55
- }
-
- func() {
- if (_b.X0) >= _nMaxCells {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66357), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85468)))
- crt.X__builtin_abort(tls)
+ if uintptr(unsafe.Pointer(_17_piCell)) < uintptr(unsafe.Pointer(_17_piEnd)) {
+ func() {
+ if (_b.X0) >= _nMaxCells {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66357), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84005)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_b.X0))) = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_17_aData)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_17_maskPage)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_piCell)) + 1*uintptr(i32(0)))))<= (_nOld-i32(1)) || _leafData != 0 {
goto _59
}
-
_23_sz = uint16(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i))))
func() {
if (_b.X0) >= _nMaxCells {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66367), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85468)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66367), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84005)))
crt.X__builtin_abort(tls)
}
}()
@@ -71404,13 +63656,13 @@ _55:
}
func() {
if int32(_23_sz) > (int32(_pBt.X11) + i32(23)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66371), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66371), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84023)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iSpace1 > int32(_pBt.X15) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66372), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85512)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66372), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84044)))
crt.X__builtin_abort(tls)
}
}()
@@ -71418,65 +63670,56 @@ _55:
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_b.X0))) = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_23_pTemp)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_leafCorrection)))))))
func() {
if int32(_leafCorrection) != i32(0) && int32(_leafCorrection) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66375), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85544)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66375), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84074)))
crt.X__builtin_abort(tls)
}
}()
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0))) = uint16(int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0)))) - int32(_leafCorrection))
- if (_17_pOld.X5) != 0 {
- goto _69
+ if (_17_pOld.X5) == 0 {
+ func() {
+ if int32(_leafCorrection) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66378), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84113)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_17_pOld.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66379), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84131)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ crt.Xmemcpy(tls, (unsafe.Pointer)(*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_b.X0)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pOld.X19))+1*uintptr(i32(8))))), uint32(i32(4)))
+ goto _74
}
-
- func() {
- if int32(_leafCorrection) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66378), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85584)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_17_pOld.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66379), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85604)))
- crt.X__builtin_abort(tls)
- }
- }()
- crt.Xmemcpy(tls, (unsafe.Pointer)(*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_b.X0)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pOld.X19))+1*uintptr(i32(8))))), uint32(i32(4)))
- goto _74
-
-_69:
func() {
if int32(_leafCorrection) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66384), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85624)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66384), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84150)))
crt.X__builtin_abort(tls)
}
}()
_77:
- if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0)))) >= i32(4) {
- goto _78
+ if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0)))) < i32(4) {
+ func() {
+ if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0)))) != i32(3) && (_sqlite3Config.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66388), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84168)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_b.X0)))) != (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSpace1))+1*uintptr(_iSpace1-i32(3)))) && (_sqlite3Config.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66389), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84203)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSpace1)) + 1*uintptr(postInc1(&_iSpace1, int32(1))))) = uint8(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0))) += 1
+ goto _77
}
-
- func() {
- if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0)))) != i32(3) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66388), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85644)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_b.X0)))) != (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSpace1))+1*uintptr(_iSpace1-i32(3)))) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66389), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85680)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSpace1)) + 1*uintptr(postInc1(&_iSpace1, int32(1))))) = uint8(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_b.X0))) += 1
- goto _77
-
-_78:
_74:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(0 /* X0 */))) += 1
_59:
_i += 1
goto _37
-
_40:
_usableSpace = int32(((_pBt.X16) - uint32(i32(12))) + uint32(_leafCorrection))
_i = i32(0)
@@ -71484,7 +63727,6 @@ _85:
if _i >= _nOld {
goto _88
}
-
_27_p = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_i)))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i))) = _usableSpace - int32(_27_p.X13)
_j = i32(0)
@@ -71492,7 +63734,6 @@ _89:
if _j >= int32(_27_p.X9) {
goto _92
}
-
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i)))
*p = (*p) + (i32(2) + int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
@@ -71502,12 +63743,10 @@ _89:
}
_j += 1
goto _89
-
_92:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntOld)) + 4*uintptr(_i)))
_i += 1
goto _85
-
_88:
_k = _nOld
_i = i32(0)
@@ -71515,25 +63754,18 @@ _93:
if _i >= _k {
goto _96
}
-
_97:
if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i)))) <= _usableSpace {
goto _98
}
-
if (_i + i32(1)) < _k {
goto _99
}
-
_k = _i + i32(2)
- if _k <= i32(5) {
- goto _100
+ if _k > i32(5) {
+ _rc = _sqlite3CorruptError(tls, i32(66429))
+ goto _balance_cleanup
}
-
- _rc = _sqlite3CorruptError(tls, i32(66429))
- goto _balance_cleanup
-
-_100:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_k-i32(1)))) = i32(0)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_k-i32(1)))) = _b.X0
_99:
@@ -71546,15 +63778,10 @@ _99:
if _leafData != 0 {
goto _101
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) >= (_b.X0) {
- goto _102
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) < (_b.X0) {
+ _29_sz = i32(2) + int32(_cachedCellSize(tls, &_b, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))))
+ goto _103
}
-
- _29_sz = i32(2) + int32(_cachedCellSize(tls, &_b, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))))
- goto _103
-
-_102:
_29_sz = i32(0)
_103:
_101:
@@ -71565,21 +63792,15 @@ _101:
}
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i))) -= 1
goto _97
-
_98:
_104:
if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) >= (_b.X0) {
goto _105
}
-
_29_sz = i32(2) + int32(_cachedCellSize(tls, &_b, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))))
- if ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i)))) + _29_sz) <= _usableSpace {
- goto _106
+ if ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i)))) + _29_sz) > _usableSpace {
+ goto _105
}
-
- goto _105
-
-_106:
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i)))
*p = (*p) + _29_sz
@@ -71589,15 +63810,10 @@ _106:
if _leafData != 0 {
goto _107
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) >= (_b.X0) {
- goto _108
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) < (_b.X0) {
+ _29_sz = i32(2) + int32(_cachedCellSize(tls, &_b, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))))
+ goto _109
}
-
- _29_sz = i32(2) + int32(_cachedCellSize(tls, &_b, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))))
- goto _109
-
-_108:
_29_sz = i32(0)
_109:
_107:
@@ -71607,40 +63823,29 @@ _107:
sink1 = *p
}
goto _104
-
_105:
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) < (_b.X0) {
- goto _110
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) >= (_b.X0) {
+ _k = _i + i32(1)
+ goto _111
}
-
- _k = _i + i32(1)
- goto _111
-
-_110:
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) > func() int32 {
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))) <= func() int32 {
if _i > i32(0) {
return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i-i32(1)))))
}
return i32(0)
}() {
- goto _114
+ _rc = _sqlite3CorruptError(tls, i32(66462))
+ goto _balance_cleanup
}
-
- _rc = _sqlite3CorruptError(tls, i32(66462))
- goto _balance_cleanup
-
-_114:
_111:
_i += 1
goto _93
-
_96:
_i = _k - i32(1)
_115:
if _i <= i32(0) {
goto _118
}
-
_42_szRight = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i)))
_42_szLeft = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i-i32(1))))
_42_r = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i-i32(1))))) - i32(1)
@@ -71649,29 +63854,25 @@ _115:
_119:
func() {
if _42_d >= _nMaxCells {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66488), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85736)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66488), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84256)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _42_r >= _nMaxCells {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66489), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85748)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66489), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84268)))
crt.X__builtin_abort(tls)
}
}()
_cachedCellSize(tls, &_b, _42_r)
- if _42_szRight == i32(0) || _bBulk == 0 && ((_42_szRight+int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_42_d)))))+i32(2)) <= (_42_szLeft-(int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_42_r))))+func() int32 {
+ if (_42_szRight != i32(0)) && (_bBulk != 0 || (((_42_szRight + int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_42_d))))) + i32(2)) > (_42_szLeft - (int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_42_r)))) + func() int32 {
if _i == (_k - i32(1)) {
return i32(0)
}
return i32(2)
- }())) {
- goto _128
+ }())))) {
+ goto _129
}
-
- goto _129
-
-_128:
{
p := &_42_szRight
*p = (*p) + (int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_42_d)))) + i32(2))
@@ -71688,30 +63889,24 @@ _128:
if _42_r >= i32(0) {
goto _119
}
-
_129:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i))) = _42_szRight
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_i-i32(1)))) = _42_szLeft
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i-i32(1))))) > func() int32 {
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i-i32(1))))) <= func() int32 {
if _i > i32(1) {
return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i-i32(2)))))
}
return i32(0)
}() {
- goto _132
+ _rc = _sqlite3CorruptError(tls, i32(66504))
+ goto _balance_cleanup
}
-
- _rc = _sqlite3CorruptError(tls, i32(66504))
- goto _balance_cleanup
-
-_132:
_i -= 1
goto _115
-
_118:
func() {
if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(i32(0))))) <= i32(0) && ((_pParent.X4) != uint32(i32(1)) || int32(_pParent.X14) != i32(0)) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66516), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85760)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66516), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84280)))
crt.X__builtin_abort(tls)
}
}()
@@ -71721,28 +63916,21 @@ _138:
if _i >= _k {
goto _141
}
-
if _i >= _nOld {
goto _142
}
-
- _46_pNew = store50((**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew))+4*uintptr(_i))), *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_i))))
+ _46_pNew = store52((**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew))+4*uintptr(_i))), *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_i))))
*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_i))) = nil
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_46_pNew.X23))
_nNew += 1
- if _rc == 0 {
- goto _143
+ if _rc != 0 {
+ goto _balance_cleanup
}
-
- goto _balance_cleanup
-
-_143:
goto _144
-
_142:
func() {
if _i <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66536), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(11928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66536), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(12970)))
crt.X__builtin_abort(tls)
}
}()
@@ -71752,13 +63940,9 @@ _142:
}
return _pgno
}(), uint8(i32(0)))
- if _rc == 0 {
- goto _149
+ if _rc != 0 {
+ goto _balance_cleanup
}
-
- goto _balance_cleanup
-
-_149:
_zeroPage(tls, _46_pNew, _pageFlags)
*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i))) = _46_pNew
_nNew += 1
@@ -71766,27 +63950,20 @@ _149:
if (_pBt.X5) == 0 {
goto _150
}
-
_ptrmapPut(tls, _pBt, _46_pNew.X4, uint8(i32(5)), _pParent.X4, &_rc)
- if _rc == i32(0) {
- goto _151
+ if _rc != i32(0) {
+ goto _balance_cleanup
}
-
- goto _balance_cleanup
-
-_151:
_150:
_144:
_i += 1
goto _138
-
_141:
_i = i32(0)
_152:
if _i >= _nNew {
goto _155
}
-
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgOrder)) + 4*uintptr(_i))) = store5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgno))+4*uintptr(_i))), (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i)))).X4)
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgFlags)) + 2*uintptr(_i))) = (*XPgHdr)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i)))).X23).X6
_j = i32(0)
@@ -71794,94 +63971,72 @@ _156:
if _j >= _i {
goto _159
}
-
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgno)) + 4*uintptr(_j)))) != (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgno)) + 4*uintptr(_i)))) {
- goto _160
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgno)) + 4*uintptr(_j)))) == (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgno)) + 4*uintptr(_i)))) {
+ func() {
+ if (_sqlite3Config.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66577), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84349)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3CorruptError(tls, i32(66578))
+ goto _balance_cleanup
}
-
- func() {
- if (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66577), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85832)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _sqlite3CorruptError(tls, i32(66578))
- goto _balance_cleanup
-
-_160:
_j += 1
goto _156
-
_159:
_i += 1
goto _152
-
_155:
_i = i32(0)
_163:
if _i >= _nNew {
goto _166
}
-
_54_iBest = i32(0)
_j = i32(1)
_167:
if _j >= _nNew {
goto _170
}
-
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgOrder)) + 4*uintptr(_j)))) >= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgOrder)) + 4*uintptr(_54_iBest)))) {
- goto _171
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgOrder)) + 4*uintptr(_j)))) < (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgOrder)) + 4*uintptr(_54_iBest)))) {
+ _54_iBest = _j
}
-
- _54_iBest = _j
-_171:
_j += 1
goto _167
-
_170:
_pgno = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgOrder)) + 4*uintptr(_54_iBest)))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgOrder)) + 4*uintptr(_54_iBest))) = u32(4294967295)
if _54_iBest == _i {
goto _172
}
-
- if _54_iBest <= _i {
- goto _173
+ if _54_iBest > _i {
+ _sqlite3PagerRekey(tls, (*XPgHdr)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_54_iBest)))).X23), ((_pBt.X18)+uint32(_54_iBest))+uint32(i32(1)), uint16(i32(0)))
}
-
- _sqlite3PagerRekey(tls, (*XPgHdr)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_54_iBest)))).X23), ((_pBt.X18)+uint32(_54_iBest))+uint32(i32(1)), uint16(i32(0)))
-_173:
_sqlite3PagerRekey(tls, (*XPgHdr)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i)))).X23), _pgno, *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgFlags)) + 2*uintptr(_54_iBest))))
*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i))))) + uintptr(4 /* X4 */))) = _pgno
_172:
_i += 1
goto _163
-
_166:
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pParent.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66612), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66612), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83543)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3Put4byte(tls, _pRight, (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_nNew-i32(1))))).X4)
- if (_pageFlags&i32(8)) != i32(0) || _nOld == _nNew {
- goto _177
+ if ((_pageFlags & i32(8)) == i32(0)) && (_nOld != _nNew) {
+ _58_pOld = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() **XMemPage {
+ if _nNew > _nOld {
+ return (**XMemPage)(unsafe.Pointer(&_apNew))
+ }
+ return (**XMemPage)(unsafe.Pointer(&_apOld))
+ }())) + 4*uintptr(_nOld-i32(1))))
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_nNew-i32(1))))).X19))+1*uintptr(i32(8))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_58_pOld.X19))+1*uintptr(i32(8))))), uint32(i32(4)))
}
-
- _58_pOld = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() **XMemPage {
- if _nNew > _nOld {
- return (**XMemPage)(unsafe.Pointer(&_apNew))
- }
- return (**XMemPage)(unsafe.Pointer(&_apOld))
- }())) + 4*uintptr(_nOld-i32(1))))
- crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_nNew-i32(1))))).X19))+1*uintptr(i32(8))))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_58_pOld.X19))+1*uintptr(i32(8))))), uint32(i32(4)))
-_177:
if (_pBt.X5) == 0 {
goto _180
}
-
_59_pNew = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(i32(0))))
_59_aOld = _59_pNew.X19
_59_cntOldNext = int32(_59_pNew.X14) + int32(_59_pNew.X9)
@@ -71893,66 +64048,45 @@ _181:
if _i >= (_b.X0) {
goto _184
}
-
_60_pCell = *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_i)))
- if _i != _59_cntOldNext {
- goto _185
- }
-
- _61_pOld = func() *XMemPage {
- if preInc1(&_59_iOld, 1) < _nNew {
- return (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_59_iOld))))
+ if _i == _59_cntOldNext {
+ _61_pOld = func() *XMemPage {
+ if preInc1(&_59_iOld, 1) < _nNew {
+ return (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_59_iOld))))
+ }
+ return (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_59_iOld))))
+ }()
+ {
+ p := &_59_cntOldNext
+ *p = (*p) + ((int32(_61_pOld.X14) + int32(_61_pOld.X9)) + bool2int(_leafData == 0))
+ sink1 = *p
}
- return (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_59_iOld))))
- }()
- {
- p := &_59_cntOldNext
- *p = (*p) + ((int32(_61_pOld.X14) + int32(_61_pOld.X9)) + bool2int(_leafData == 0))
- sink1 = *p
+ _59_aOld = _61_pOld.X19
}
- _59_aOld = _61_pOld.X19
-_185:
if _i != (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_59_iNew)))) {
goto _188
}
-
_59_pNew = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(preInc1(&_59_iNew, 1))))
- if _leafData != 0 {
- goto _189
+ if _leafData == 0 {
+ goto _182
}
-
- goto _182
-
-_189:
_188:
if _59_iOld < _nNew && (_59_pNew.X4) == (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPgno)) + 4*uintptr(_59_iOld)))) && (uint32(uintptr(unsafe.Pointer(_60_pCell))) >= uint32(uintptr(unsafe.Pointer(_59_aOld))) && uint32(uintptr(unsafe.Pointer(_60_pCell))) < uint32(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_59_aOld))+1*uintptr(_59_usableSize))))))) {
goto _193
}
-
- if _leafCorrection != 0 {
- goto _194
+ if _leafCorrection == 0 {
+ _ptrmapPut(tls, _pBt, _sqlite3Get4byte(tls, _60_pCell), uint8(i32(5)), _59_pNew.X4, &_rc)
}
-
- _ptrmapPut(tls, _pBt, _sqlite3Get4byte(tls, _60_pCell), uint8(i32(5)), _59_pNew.X4, &_rc)
-_194:
- if int32(_cachedCellSize(tls, &_b, _i)) <= int32(_59_pNew.X11) {
- goto _195
+ if int32(_cachedCellSize(tls, &_b, _i)) > int32(_59_pNew.X11) {
+ _ptrmapPutOvflPtr(tls, _59_pNew, _60_pCell, &_rc)
}
-
- _ptrmapPutOvflPtr(tls, _59_pNew, _60_pCell, &_rc)
-_195:
- if _rc == 0 {
- goto _196
+ if _rc != 0 {
+ goto _balance_cleanup
}
-
- goto _balance_cleanup
-
-_196:
_193:
_182:
_i += 1
goto _181
-
_184:
_180:
_i = i32(0)
@@ -71960,65 +64094,53 @@ _197:
if _i >= (_nNew - i32(1)) {
goto _200
}
-
_66_pNew = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i)))
_j = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_i)))
func() {
if _j >= _nMaxCells {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66688), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85844)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66688), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84360)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_j)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66689), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66689), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84372)))
crt.X__builtin_abort(tls)
}
}()
_66_pCell = *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_j)))
_66_sz = int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_j)))) + int32(_leafCorrection)
_66_pTemp = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOvflSpace)) + 1*uintptr(_iOvflSpace)))
- if (_66_pNew.X5) != 0 {
- goto _205
+ if (_66_pNew.X5) == 0 {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_66_pNew.X19))+1*uintptr(i32(8))))), (unsafe.Pointer)(_66_pCell), uint32(i32(4)))
+ goto _206
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_66_pNew.X19))+1*uintptr(i32(8))))), (unsafe.Pointer)(_66_pCell), uint32(i32(4)))
- goto _206
-
-_205:
- if _leafData == 0 {
- goto _207
+ if _leafData != 0 {
+ _j -= 1
+ (*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
+ }{(_66_pNew.X25)})))(tls, _66_pNew, *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_j))), &_68_info)
+ _66_pCell = _66_pTemp
+ _66_sz = i32(4) + _sqlite3PutVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_66_pCell))+1*uintptr(i32(4)))), uint64(_68_info.X0))
+ _66_pTemp = nil
+ goto _208
}
-
- _j -= 1
- (*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
- }{(_66_pNew.X25)})))(tls, _66_pNew, *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X2)) + 4*uintptr(_j))), &_68_info)
- _66_pCell = _66_pTemp
- _66_sz = i32(4) + _sqlite3PutVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_66_pCell))+1*uintptr(i32(4)))), uint64(_68_info.X0))
- _66_pTemp = nil
- goto _208
-
-_207:
{
p := &_66_pCell
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(i32(4))))
- sink11 = *p
+ sink13 = *p
}
- if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_j)))) != i32(4) {
- goto _209
+ if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_b.X3)) + 2*uintptr(_j)))) == i32(4) {
+ func() {
+ if int32(_leafCorrection) != i32(4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66721), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _66_sz = int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
+ }{(_pParent.X24)})))(tls, _pParent, _66_pCell))
}
-
- func() {
- if int32(_leafCorrection) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66721), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85624)))
- crt.X__builtin_abort(tls)
- }
- }()
- _66_sz = int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
- }{(_pParent.X24)})))(tls, _pParent, _66_pCell))
-_209:
_208:
_206:
{
@@ -72028,40 +64150,34 @@ _206:
}
func() {
if _66_sz > (int32(_pBt.X11) + i32(23)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66726), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85488)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66726), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84023)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iOvflSpace > int32(_pBt.X15) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66727), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85872)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66727), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84387)))
crt.X__builtin_abort(tls)
}
}()
_insertCell(tls, _pParent, _nxDiv+_i, _66_pCell, _66_sz, _66_pTemp, _66_pNew.X4, &_rc)
- if _rc == i32(0) {
- goto _216
+ if _rc != i32(0) {
+ goto _balance_cleanup
}
-
- goto _balance_cleanup
-
-_216:
func() {
if _sqlite3PagerIswriteable(tls, (*XPgHdr)(_pParent.X23)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66730), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84992)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66730), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(83543)))
crt.X__builtin_abort(tls)
}
}()
_i += 1
goto _197
-
_200:
_i = i32(1) - _nNew
_219:
if _i >= _nNew {
goto _222
}
-
_71_iPg = func() int32 {
if _i < i32(0) {
return (-_i)
@@ -72070,42 +64186,33 @@ _219:
}()
func() {
if _71_iPg < i32(0) || _71_iPg >= _nNew {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66757), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85908)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66757), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84420)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_abDone)) + 1*uintptr(_71_iPg)))) == 0 {
- goto _228
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_abDone)) + 1*uintptr(_71_iPg)))) != 0 {
+ goto _220
}
-
- goto _220
-
-_228:
if _i < i32(0) && (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntOld)) + 4*uintptr(_71_iPg-i32(1))))) < (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_71_iPg-i32(1))))) {
goto _230
}
-
func() {
if _71_iPg != i32(0) && (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntOld)) + 4*uintptr(_71_iPg-i32(1))))) < (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_71_iPg-i32(1))))) && (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_abDone)) + 1*uintptr(_71_iPg-i32(1))))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66768), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85928)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66768), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84439)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_71_iPg)))) < (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntOld)) + 4*uintptr(_71_iPg)))) && (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_abDone)) + 1*uintptr(_71_iPg+i32(1))))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66772), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(85984)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66772), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84495)))
crt.X__builtin_abort(tls)
}
}()
- if _71_iPg != i32(0) {
- goto _238
+ if _71_iPg == i32(0) {
+ _72_iNew = store1(&_72_iOld, i32(0))
+ _72_nNewCell = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(i32(0))))
+ goto _239
}
-
- _72_iNew = store1(&_72_iOld, i32(0))
- _72_nNewCell = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(i32(0))))
- goto _239
-
-_238:
_72_iOld = func() int32 {
if _71_iPg < _nOld {
return ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntOld)) + 4*uintptr(_71_iPg-i32(1))))) + bool2int(_leafData == 0))
@@ -72116,24 +64223,20 @@ _238:
_72_nNewCell = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cntNew)) + 4*uintptr(_71_iPg)))) - _72_iNew
_239:
_rc = _editPage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_71_iPg))), _72_iOld, _72_iNew, _72_nNewCell, &_b)
- if _rc == 0 {
- goto _242
+ if _rc != 0 {
+ goto _balance_cleanup
}
-
- goto _balance_cleanup
-
-_242:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_abDone)) + 1*uintptr(_71_iPg))) += 1
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_71_iPg))))) + uintptr(20 /* X13 */))) = uint16(_usableSpace - (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_szNew)) + 4*uintptr(_71_iPg)))))
func() {
if int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_71_iPg)))).X9) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66787), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(86028)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66787), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84537)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_71_iPg)))).X14) != _72_nNewCell {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66788), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(86056)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66788), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84562)))
crt.X__builtin_abort(tls)
}
}()
@@ -72141,69 +64244,61 @@ _230:
_220:
_i += 1
goto _219
-
_222:
func() {
- if crt.Xmemcmp(tls, (unsafe.Pointer)(&_abDone), (unsafe.Pointer)(str(86084)), uint32(_nNew)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66793), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(86092)))
+ if crt.Xmemcmp(tls, (unsafe.Pointer)(&_abDone), (unsafe.Pointer)(str(84590)), uint32(_nNew)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66793), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84596)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nOld <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66795), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(86136)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66795), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84639)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _nNew <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66796), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(86144)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66796), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84646)))
crt.X__builtin_abort(tls)
}
}()
- if _isRoot == 0 || int32(_pParent.X14) != i32(0) || int32(_pParent.X6) > int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(i32(0))))).X13) {
- goto _255
+ if (_isRoot != 0 && (int32(_pParent.X14) == i32(0))) && (int32(_pParent.X6) <= int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(i32(0))))).X13)) {
+ func() {
+ if _nNew != i32(1) && (_sqlite3Config.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66814), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84653)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _defragmentPage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(i32(0)))), i32(-1))
+ func() {
+ if int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(i32(0))))).X13) != ((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(i32(0))))).X19))+1*uintptr(i32(5)))))) + 1*uintptr(i32(0)))))<= _nNew {
goto _268
}
-
_77_key = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i)))).X19))+1*uintptr(i32(8)))))
_ptrmapPut(tls, _pBt, _77_key, uint8(i32(5)), (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i)))).X4, &_rc)
_i += 1
goto _265
-
_268:
_264:
_262:
func() {
if (_pParent.X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(66833), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(86284)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(66833), unsafe.Pointer((*int8)(unsafe.Pointer(&_balance_nonrootØ00__func__Ø000))), unsafe.Pointer(str(84782)))
crt.X__builtin_abort(tls)
}
}()
@@ -72212,11 +64307,9 @@ _271:
if _i >= _nOld {
goto _274
}
-
_freePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_i))), &_rc)
_i += 1
goto _271
-
_274:
_balance_cleanup:
_sqlite3ScratchFree(tls, (unsafe.Pointer)(_b.X2))
@@ -72225,113 +64318,119 @@ _275:
if _i >= _nOld {
goto _278
}
-
_releasePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apOld)) + 4*uintptr(_i))))
_i += 1
goto _275
-
_278:
_i = i32(0)
_279:
if _i >= _nNew {
goto _282
}
-
_releasePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apNew)) + 4*uintptr(_i))))
_i += 1
goto _279
-
_282:
return _rc
+
+ _ = _apOld
+ _ = _apNew
+ _ = _apDiv
+ _ = _cntNew
+ _ = _cntOld
+ _ = _szNew
+ _ = _abDone
+ _ = _aPgno
+ _ = _aPgOrder
+ _ = _aPgFlags
+ _ = _b
+ _ = _68_info
+ panic(0)
}
-var _balance_nonrootØ00__func__Ø000 [16]int8 // -
+var _balance_nonrootØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_balance_nonrootØ00__func__Ø000[0], str(86300), 16)
+ crt.Xstrncpy(nil, &_balance_nonrootØ00__func__Ø000[0], str(84798), 16)
}
-func _sqlite3ScratchMalloc(tls *crt.TLS, _n int32) (r0 unsafe.Pointer) { // sqlite3.c:24540:1
- var _p unsafe.Pointer // sqlite3.c:24541:8
- _ = _p
+// Allocate memory that is to be used and released right away.
+// This routine is similar to alloca() in that it is not intended
+// for situations where the memory might be held long-term. This
+// routine is intended to get memory to old large transient data
+// structures that would not normally fit on the stack of an
+// embedded processor.
+func _sqlite3ScratchMalloc(tls *crt.TLS, _n int32) (r0 unsafe.Pointer) {
+ var _p unsafe.Pointer
func() {
if _n <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24542), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ScratchMallocØ00__func__Ø000))), unsafe.Pointer(str(1368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24542), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ScratchMallocØ00__func__Ø000))), unsafe.Pointer(str(1358)))
crt.X__builtin_abort(tls)
}
}()
Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
_sqlite3StatusHighwater(tls, i32(8), _n)
- if (_mem0.X4) == 0 || (_sqlite3Config.X20) < _n {
- goto _3
+ if ((_mem0.X4) != 0) && ((_sqlite3Config.X20) >= _n) {
+ _p = _mem0.X3
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(16 /* X3 */))))) = (*Xsqlite3_file)((*Xsqlite3_file)(_mem0.X3).X0)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(20 /* X4 */))) -= 1
+ _sqlite3StatusUp(tls, i32(3), i32(1))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ goto _4
}
-
- _p = _mem0.X3
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(16 /* X3 */))))) = (*Xsqlite3_file)((*Xsqlite3_file)(_mem0.X3).X0)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(20 /* X4 */))) -= 1
- _sqlite3StatusUp(tls, i32(3), i32(1))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
- goto _4
-
-_3:
Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
_p = _sqlite3Malloc(tls, uint64(_n))
- if (_sqlite3Config.X0) == 0 || _p == nil {
- goto _6
+ if (_sqlite3Config.X0) != 0 && (_p != nil) {
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ _sqlite3StatusUp(tls, i32(4), _sqlite3MallocSize(tls, _p))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
}
-
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
- _sqlite3StatusUp(tls, i32(4), _sqlite3MallocSize(tls, _p))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
-_6:
_4:
func() {
if Xsqlite3_mutex_notheld(tls, (*Xsqlite3_mutex)(_mem0.X0)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24562), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ScratchMallocØ00__func__Ø000))), unsafe.Pointer(str(86316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24562), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ScratchMallocØ00__func__Ø000))), unsafe.Pointer(str(84814)))
crt.X__builtin_abort(tls)
}
}()
return _p
}
-var _sqlite3ScratchMallocØ00__func__Ø000 [21]int8 // -
+var _sqlite3ScratchMallocØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ScratchMallocØ00__func__Ø000[0], str(86352), 21)
+ crt.Xstrncpy(nil, &_sqlite3ScratchMallocØ00__func__Ø000[0], str(84848), 21)
}
-func _cachedCellSize(tls *crt.TLS, _p *XCellArray, _N int32) (r0 uint16) { // sqlite3.c:65576:1
+func _cachedCellSize(tls *crt.TLS, _p *XCellArray, _N int32) (r0 uint16) {
func() {
if _N < i32(0) || _N >= (_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65577), unsafe.Pointer((*int8)(unsafe.Pointer(&_cachedCellSizeØ00__func__Ø000))), unsafe.Pointer(str(86376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65577), unsafe.Pointer((*int8)(unsafe.Pointer(&_cachedCellSizeØ00__func__Ø000))), unsafe.Pointer(str(84869)))
crt.X__builtin_abort(tls)
}
}()
- if (*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_N)))) == 0 {
- goto _3
+ if (*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_N)))) != 0 {
+ return *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_N)))
}
- return *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_N)))
-
-_3:
return _computeCellSize(tls, _p, _N)
}
-var _cachedCellSizeØ00__func__Ø000 [15]int8 // -
+var _cachedCellSizeØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_cachedCellSizeØ00__func__Ø000[0], str(86396), 15)
+ crt.Xstrncpy(nil, &_cachedCellSizeØ00__func__Ø000[0], str(84888), 15)
}
-func _computeCellSize(tls *crt.TLS, _p *XCellArray, _N int32) (r0 uint16) { // sqlite3.c:65570:1
+// Return the size of the Nth element of the cell array
+func _computeCellSize(tls *crt.TLS, _p *XCellArray, _N int32) (r0 uint16) {
func() {
if _N < i32(0) || _N >= (_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65571), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeCellSizeØ00__func__Ø000))), unsafe.Pointer(str(86376)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65571), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeCellSizeØ00__func__Ø000))), unsafe.Pointer(str(84869)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_N)))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65572), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeCellSizeØ00__func__Ø000))), unsafe.Pointer(str(86412)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65572), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeCellSizeØ00__func__Ø000))), unsafe.Pointer(str(84903)))
crt.X__builtin_abort(tls)
}
}()
@@ -72341,16 +64440,20 @@ func _computeCellSize(tls *crt.TLS, _p *XCellArray, _N int32) (r0 uint16) { // s
return *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_N)))
}
-var _computeCellSizeØ00__func__Ø000 [16]int8 // -
+var _computeCellSizeØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_computeCellSizeØ00__func__Ø000[0], str(86428), 16)
+ crt.Xstrncpy(nil, &_computeCellSizeØ00__func__Ø000[0], str(84919), 16)
}
-func _sqlite3PagerRekey(tls *crt.TLS, _pPg *XPgHdr, _iNew uint32, _flags uint16) { // sqlite3.c:54014:1
+// The page handle passed as the first argument refers to a dirty page
+// with a page number other than iNew. This function changes the page's
+// page number to iNew and sets the value of the PgHdr.flags field to
+// the value passed as the third parameter.
+func _sqlite3PagerRekey(tls *crt.TLS, _pPg *XPgHdr, _iNew uint32, _flags uint16) {
func() {
if (_pPg.X5) == _iNew {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54015), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRekeyØ00__func__Ø000))), unsafe.Pointer(str(86444)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54015), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerRekeyØ00__func__Ø000))), unsafe.Pointer(str(84935)))
crt.X__builtin_abort(tls)
}
}()
@@ -72358,43 +64461,25 @@ func _sqlite3PagerRekey(tls *crt.TLS, _pPg *XPgHdr, _iNew uint32, _flags uint16)
_sqlite3PcacheMove(tls, _pPg, _iNew)
}
-var _sqlite3PagerRekeyØ00__func__Ø000 [18]int8 // -
+var _sqlite3PagerRekeyØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerRekeyØ00__func__Ø000[0], str(86460), 18)
+ crt.Xstrncpy(nil, &_sqlite3PagerRekeyØ00__func__Ø000[0], str(84951), 18)
}
-func _editPage(tls *crt.TLS, _pPg *XMemPage, _iOld int32, _iNew int32, _nNew int32, _pCArray *XCellArray) (r0 int32) { // sqlite3.c:65767:1
- var _aData *uint8 // sqlite3.c:65774:6
- _ = _aData
- var _hdr int32 // sqlite3.c:65775:13
- _ = _hdr
- var _pBegin *uint8 // sqlite3.c:65776:6
- _ = _pBegin
- var _nCell int32 // sqlite3.c:65777:7
- _ = _nCell
- var _pData *uint8 // sqlite3.c:65778:6
- _ = _pData
- var _pCellptr *uint8 // sqlite3.c:65779:6
- _ = _pCellptr
- var _i int32 // sqlite3.c:65780:7
- _ = _i
- var _iOldEnd int32 // sqlite3.c:65781:7
- _ = _iOldEnd
- var _iNewEnd int32 // sqlite3.c:65782:7
- _ = _iNewEnd
- var _pTmp *uint8 // sqlite3.c:65785:6
- _ = _pTmp
- var _1_nShift int32 // sqlite3.c:65791:9
- _ = _1_nShift
- var _3_nAdd int32 // sqlite3.c:65804:9
- _ = _3_nAdd
- var _4_iCell int32 // sqlite3.c:65817:9
- _ = _4_iCell
- var _6_pCell *uint8 // sqlite3.c:65844:8
- _ = _6_pCell
- var _6_iOff int32 // sqlite3.c:65845:9
- _ = _6_iOff
+// apCell[] and szCell[] contains pointers to and sizes of all cells in the
+// pages being balanced. The current page, pPg, has pPg->nCell cells starting
+// with apCell[iOld]. After balancing, this page should hold nNew cells
+// starting at apCell[iNew].
+//
+// This routine makes the necessary adjustments to pPg so that it contains
+// the correct cells after being balanced.
+//
+// The pPg->nFree field is invalid when this function returns. It is the
+// responsibility of the caller to set it correctly.
+func _editPage(tls *crt.TLS, _pPg *XMemPage, _iOld int32, _iNew int32, _nNew int32, _pCArray *XCellArray) (r0 int32) {
+ var _hdr, _nCell, _i, _iOldEnd, _iNewEnd, _1_nShift, _3_nAdd, _4_iCell, _6_iOff int32
+ var _aData, _pBegin, _pData, _pCellptr, _pTmp, _6_pCell *uint8
_aData = _pPg.X19
_hdr = int32(_pPg.X6)
_pBegin = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg.X21)) + 1*uintptr(_nNew*i32(2))))
@@ -72403,40 +64488,29 @@ func _editPage(tls *crt.TLS, _pPg *XMemPage, _iOld int32, _iNew int32, _nNew int
_iNewEnd = _iNew + _nNew
_pTmp = (*uint8)(_sqlite3PagerTempSpace(tls, (*XPager)((*XBtShared)(_pPg.X18).X0)))
crt.Xmemcpy(tls, (unsafe.Pointer)(_pTmp), (unsafe.Pointer)(_aData), (*XBtShared)(_pPg.X18).X16)
- if _iOld >= _iNew {
- goto _0
- }
-
- _1_nShift = _pageFreeArray(tls, _pPg, _iOld, _iNew-_iOld, _pCArray)
- crt.Xmemmove(tls, (unsafe.Pointer)(_pPg.X21), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg.X21))+1*uintptr(_1_nShift*i32(2))))), uint32(_nCell*i32(2)))
- {
- p := &_nCell
- *p = (*p) - _1_nShift
- sink1 = *p
- }
-_0:
- if _iNewEnd >= _iOldEnd {
- goto _1
+ if _iOld < _iNew {
+ _1_nShift = _pageFreeArray(tls, _pPg, _iOld, _iNew-_iOld, _pCArray)
+ crt.Xmemmove(tls, (unsafe.Pointer)(_pPg.X21), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg.X21))+1*uintptr(_1_nShift*i32(2))))), uint32(_nCell*i32(2)))
+ {
+ p := &_nCell
+ *p = (*p) - _1_nShift
+ sink1 = *p
+ }
}
-
- {
- p := &_nCell
- *p = (*p) - _pageFreeArray(tls, _pPg, _iNewEnd, _iOldEnd-_iNewEnd, _pCArray)
- sink1 = *p
+ if _iNewEnd < _iOldEnd {
+ {
+ p := &_nCell
+ *p = (*p) - _pageFreeArray(tls, _pPg, _iNewEnd, _iOldEnd-_iNewEnd, _pCArray)
+ sink1 = *p
+ }
}
-_1:
_pData = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0)))))<= uintptr(unsafe.Pointer(_pBegin)) {
- goto _2
+ if uintptr(unsafe.Pointer(_pData)) < uintptr(unsafe.Pointer(_pBegin)) {
+ goto _editpage_fail
}
-
- goto _editpage_fail
-
-_2:
if _iNew >= _iOld {
goto _3
}
-
_3_nAdd = func() int32 {
if _nNew < (_iOld - _iNew) {
return _nNew
@@ -72445,19 +64519,15 @@ _2:
}()
func() {
if (_iOld-_iNew) >= _nNew && _nCell != i32(0) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65805), unsafe.Pointer((*int8)(unsafe.Pointer(&_editPageØ00__func__Ø000))), unsafe.Pointer(str(86480)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65805), unsafe.Pointer((*int8)(unsafe.Pointer(&_editPageØ00__func__Ø000))), unsafe.Pointer(str(84969)))
crt.X__builtin_abort(tls)
}
}()
_pCellptr = _pPg.X21
crt.Xmemmove(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCellptr))+1*uintptr(_3_nAdd*i32(2))))), (unsafe.Pointer)(_pCellptr), uint32(_nCell*i32(2)))
- if _pageInsertArray(tls, _pPg, _pBegin, &_pData, _pCellptr, _iNew, _3_nAdd, _pCArray) == 0 {
- goto _10
+ if _pageInsertArray(tls, _pPg, _pBegin, &_pData, _pCellptr, _iNew, _3_nAdd, _pCArray) != 0 {
+ goto _editpage_fail
}
-
- goto _editpage_fail
-
-_10:
{
p := &_nCell
*p = (*p) + _3_nAdd
@@ -72469,35 +64539,24 @@ _11:
if _i >= int32(_pPg.X9) {
goto _14
}
-
_4_iCell = (_iOld + int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[4]uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg))+uintptr(26 /* X16 */))))) + 2*uintptr(_i))))) - _iNew
if _4_iCell < i32(0) || _4_iCell >= _nNew {
goto _16
}
-
_pCellptr = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg.X21)) + 1*uintptr(_4_iCell*i32(2))))
crt.Xmemmove(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCellptr))+1*uintptr(i32(2))))), (unsafe.Pointer)(_pCellptr), uint32((_nCell-_4_iCell)*i32(2)))
_nCell += 1
- if _pageInsertArray(tls, _pPg, _pBegin, &_pData, _pCellptr, _4_iCell+_iNew, i32(1), _pCArray) == 0 {
- goto _17
+ if _pageInsertArray(tls, _pPg, _pBegin, &_pData, _pCellptr, _4_iCell+_iNew, i32(1), _pCArray) != 0 {
+ goto _editpage_fail
}
-
- goto _editpage_fail
-
-_17:
_16:
_i += 1
goto _11
-
_14:
_pCellptr = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg.X21)) + 1*uintptr(_nCell*i32(2))))
- if _pageInsertArray(tls, _pPg, _pBegin, &_pData, _pCellptr, _iNew+_nCell, _nNew-_nCell, _pCArray) == 0 {
- goto _18
+ if _pageInsertArray(tls, _pPg, _pBegin, &_pData, _pCellptr, _iNew+_nCell, _nNew-_nCell, _pCArray) != 0 {
+ goto _editpage_fail
}
-
- goto _editpage_fail
-
-_18:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(22 /* X14 */))) = uint16(_nNew)
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg)) + uintptr(12 /* X9 */))) = uint8(i32(0))
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(func() *uint8 {
@@ -72513,26 +64572,21 @@ _19:
if _i >= _nNew || (_sqlite3Config.X6) == i32(0) {
goto _23
}
-
_6_pCell = *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X2)) + 4*uintptr(_i+_iNew)))
_6_iOff = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg.X21))+1*uintptr(_i*i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPg.X21))+1*uintptr(_i*i32(2)))))) + 1*uintptr(i32(1)))))
- if uint32(uintptr(unsafe.Pointer(_6_pCell))) < uint32(uintptr(unsafe.Pointer(_aData))) || uint32(uintptr(unsafe.Pointer(_6_pCell))) >= uint32(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr((*XBtShared)(_pPg.X18).X16)))))) {
- goto _25
+ if (uint32(uintptr(unsafe.Pointer(_6_pCell))) >= uint32(uintptr(unsafe.Pointer(_aData)))) && (uint32(uintptr(unsafe.Pointer(_6_pCell))) < uint32(uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr((*XBtShared)(_pPg.X18).X16))))))) {
+ _6_pCell = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTmp)) + 1*uintptr(int32((uintptr(unsafe.Pointer(_6_pCell))-uintptr(unsafe.Pointer(_aData)))/1))))
}
-
- _6_pCell = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTmp)) + 1*uintptr(int32((uintptr(unsafe.Pointer(_6_pCell))-uintptr(unsafe.Pointer(_aData)))/1))))
-_25:
func() {
if i32(0) != crt.Xmemcmp(tls, (unsafe.Pointer)(_6_pCell), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData))+1*uintptr(_6_iOff)))), uint32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{((*XMemPage)(_pCArray.X1).X24)})))(tls, (*XMemPage)(_pCArray.X1), *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X2)) + 4*uintptr(_i+_iNew)))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65849), unsafe.Pointer((*int8)(unsafe.Pointer(&_editPageØ00__func__Ø000))), unsafe.Pointer(str(86524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65849), unsafe.Pointer((*int8)(unsafe.Pointer(&_editPageØ00__func__Ø000))), unsafe.Pointer(str(85012)))
crt.X__builtin_abort(tls)
}
}()
_i += 1
goto _19
-
_23:
return i32(0)
@@ -72541,27 +64595,16 @@ _editpage_fail:
return _rebuildPage(tls, _pPg, _nNew, (**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X2))+4*uintptr(_iNew))), (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X3))+2*uintptr(_iNew))))
}
-func _pageFreeArray(tls *crt.TLS, _pPg *XMemPage, _iFirst int32, _nCell int32, _pCArray *XCellArray) (r0 int32) { // sqlite3.c:65710:1
- var _aData *uint8 // sqlite3.c:65716:6
- _ = _aData
- var _pEnd *uint8 // sqlite3.c:65717:6
- _ = _pEnd
- var _pStart *uint8 // sqlite3.c:65718:6
- _ = _pStart
- var _nRet int32 // sqlite3.c:65719:7
- _ = _nRet
- var _i int32 // sqlite3.c:65720:7
- _ = _i
- var _iEnd int32 // sqlite3.c:65721:7
- _ = _iEnd
- var _pFree *uint8 // sqlite3.c:65722:6
- _ = _pFree
- var _szFree int32 // sqlite3.c:65723:7
- _ = _szFree
- var _1_pCell *uint8 // sqlite3.c:65726:8
- _ = _1_pCell
- var _2_sz int32 // sqlite3.c:65728:11
- _ = _2_sz
+// Array apCell[] contains nCell pointers to b-tree cells. Array szCell
+// contains the size in bytes of each such cell. This function adds the
+// space associated with each cell in the array that is currently stored
+// within the body of pPg to the pPg free-list. The cell-pointers and other
+// fields of the page are not updated.
+//
+// This function returns the total number of cells added to the free-list.
+func _pageFreeArray(tls *crt.TLS, _pPg *XMemPage, _iFirst int32, _nCell int32, _pCArray *XCellArray) (r0 int32) {
+ var _nRet, _i, _iEnd, _szFree, _2_sz int32
+ var _aData, _pEnd, _pStart, _pFree, _1_pCell *uint8
_aData = _pPg.X19
_pEnd = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr((*XBtShared)(_pPg.X18).X16)))
_pStart = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr((int32(_pPg.X6)+i32(8))+int32(_pPg.X7))))
@@ -72574,45 +64617,35 @@ _0:
if _i >= _iEnd {
goto _3
}
-
_1_pCell = *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X2)) + 4*uintptr(_i)))
if uint32(uintptr(unsafe.Pointer(_1_pCell))) < uint32(uintptr(unsafe.Pointer(_pStart))) || uint32(uintptr(unsafe.Pointer(_1_pCell))) >= uint32(uintptr(unsafe.Pointer(_pEnd))) {
goto _5
}
-
_2_sz = int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X3)) + 2*uintptr(_i))))
func() {
if _2_sz <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65732), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFreeArrayØ00__func__Ø000))), unsafe.Pointer(str(86624)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65732), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFreeArrayØ00__func__Ø000))), unsafe.Pointer(str(85109)))
crt.X__builtin_abort(tls)
}
}()
if _pFree == (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_1_pCell))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_2_sz))))))) {
goto _8
}
-
- if _pFree == nil {
- goto _9
+ if _pFree != nil {
+ func() {
+ if uintptr(unsafe.Pointer(_pFree)) <= uintptr(unsafe.Pointer(_aData)) || int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1) >= i32(65536) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65735), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFreeArrayØ00__func__Ø000))), unsafe.Pointer(str(85114)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _freeSpace(tls, _pPg, uint16(int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1)), uint16(_szFree))
}
-
- func() {
- if uintptr(unsafe.Pointer(_pFree)) <= uintptr(unsafe.Pointer(_aData)) || int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1) >= i32(65536) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65735), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFreeArrayØ00__func__Ø000))), unsafe.Pointer(str(86632)))
- crt.X__builtin_abort(tls)
- }
- }()
- _freeSpace(tls, _pPg, uint16(int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1)), uint16(_szFree))
-_9:
_pFree = _1_pCell
_szFree = _2_sz
- if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pFree))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_2_sz))))))))) <= uintptr(unsafe.Pointer(_pEnd)) {
- goto _13
+ if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pFree))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_2_sz))))))))) > uintptr(unsafe.Pointer(_pEnd)) {
+ return i32(0)
}
- return i32(0)
-
-_13:
goto _14
-
_8:
_pFree = _1_pCell
{
@@ -72625,56 +64658,63 @@ _14:
_5:
_i += 1
goto _0
-
_3:
- if _pFree == nil {
- goto _15
+ if _pFree != nil {
+ func() {
+ if uintptr(unsafe.Pointer(_pFree)) <= uintptr(unsafe.Pointer(_aData)) || int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1) >= i32(65536) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65749), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFreeArrayØ00__func__Ø000))), unsafe.Pointer(str(85114)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _freeSpace(tls, _pPg, uint16(int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1)), uint16(_szFree))
}
-
- func() {
- if uintptr(unsafe.Pointer(_pFree)) <= uintptr(unsafe.Pointer(_aData)) || int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1) >= i32(65536) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65749), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageFreeArrayØ00__func__Ø000))), unsafe.Pointer(str(86632)))
- crt.X__builtin_abort(tls)
- }
- }()
- _freeSpace(tls, _pPg, uint16(int32((uintptr(unsafe.Pointer(_pFree))-uintptr(unsafe.Pointer(_aData)))/1)), uint16(_szFree))
-_15:
return _nRet
}
-var _pageFreeArrayØ00__func__Ø000 [14]int8 // -
+var _pageFreeArrayØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_pageFreeArrayØ00__func__Ø000[0], str(86672), 14)
+ crt.Xstrncpy(nil, &_pageFreeArrayØ00__func__Ø000[0], str(85151), 14)
}
-var _editPageØ00__func__Ø000 [9]int8 // -
+var _editPageØ00__func__Ø000 [9]int8
func init() {
- crt.Xstrncpy(nil, &_editPageØ00__func__Ø000[0], str(86688), 9)
+ crt.Xstrncpy(nil, &_editPageØ00__func__Ø000[0], str(85165), 9)
}
-func _pageInsertArray(tls *crt.TLS, _pPg *XMemPage, _pBegin *uint8, _ppData **uint8, _pCellptr *uint8, _iFirst int32, _nCell int32, _pCArray *XCellArray) (r0 int32) { // sqlite3.c:65664:1
- var _i int32 // sqlite3.c:65673:7
- _ = _i
- var _aData *uint8 // sqlite3.c:65674:6
- _ = _aData
- var _pData *uint8 // sqlite3.c:65675:6
- _ = _pData
- var _iEnd int32 // sqlite3.c:65676:7
- _ = _iEnd
- var _1_sz int32 // sqlite3.c:65679:9
- _ = _1_sz
- var _1_rc int32 // sqlite3.c:65679:13
- _ = _1_rc
- var _1_pSlot *uint8 // sqlite3.c:65680:8
- _ = _1_pSlot
+// Array apCell[] contains nCell pointers to b-tree cells. Array szCell
+// contains the size in bytes of each such cell. This function attempts to
+// add the cells stored in the array to page pPg. If it cannot (because
+// the page needs to be defragmented before the cells will fit), non-zero
+// is returned. Otherwise, if the cells are added successfully, zero is
+// returned.
+//
+// Argument pCellptr points to the first entry in the cell-pointer array
+// (part of page pPg) to populate. After cell apCell[0] is written to the
+// page body, a 16-bit offset is written to pCellptr. And so on, for each
+// cell in the array. It is the responsibility of the caller to ensure
+// that it is safe to overwrite this part of the cell-pointer array.
+//
+// When this function is called, *ppData points to the start of the
+// content area on page pPg. If the size of the content area is extended,
+// *ppData is updated to point to the new start of the content area
+// before returning.
+//
+// Finally, argument pBegin points to the byte immediately following the
+// end of the space required by this page for the cell-pointer area (for
+// all cells - not just those inserted by the current call). If the content
+// area must be extended to before this point in order to accomodate all
+// cells in apCell[], then the cells do not fit and non-zero is returned.
+func _pageInsertArray(tls *crt.TLS, _pPg *XMemPage, _pBegin *uint8, _ppData **uint8, _pCellptr *uint8, _iFirst int32, _nCell int32, _pCArray *XCellArray) (r0 int32) {
+ var _i, _iEnd, _1_sz, _1_rc int32
+ var _aData, _pData, _1_pSlot *uint8
_aData = _pPg.X19
_pData = *_ppData
_iEnd = _iFirst + _nCell
func() {
if (_sqlite3Config.X6) != i32(0) && int32(_pPg.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65677), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageInsertArrayØ00__func__Ø000))), unsafe.Pointer(str(86700)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65677), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageInsertArrayØ00__func__Ø000))), unsafe.Pointer(str(85174)))
crt.X__builtin_abort(tls)
}
}()
@@ -72683,28 +64723,23 @@ _3:
if _i >= _iEnd {
goto _6
}
-
_1_sz = int32(_cachedCellSize(tls, _pCArray, _i))
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(1))))) != i32(0) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(2))))) != i32(0)) && store11(&_1_pSlot, _pageFindSlot(tls, _pPg, _1_sz, &_1_rc)) != nil {
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(1))))) != i32(0) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aData)) + 1*uintptr(i32(2))))) != i32(0)) && store13(&_1_pSlot, _pageFindSlot(tls, _pPg, _1_sz, &_1_rc)) != nil {
goto _9
}
-
- if int32((uintptr(unsafe.Pointer(_pData))-uintptr(unsafe.Pointer(_pBegin)))/1) >= _1_sz {
- goto _10
+ if int32((uintptr(unsafe.Pointer(_pData))-uintptr(unsafe.Pointer(_pBegin)))/1) < _1_sz {
+ return i32(1)
}
- return i32(1)
-
-_10:
{
p := &_pData
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(_1_sz)))
- sink11 = *p
+ sink13 = *p
}
_1_pSlot = _pData
_9:
func() {
if uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_1_pSlot))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_1_sz))))))))) > uintptr(unsafe.Pointer(*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X2)) + 4*uintptr(_i))))) && uintptr(unsafe.Pointer(_1_pSlot)) < uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCArray.X2)) + 4*uintptr(_i)))))+uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(_1_sz))))))))) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65690), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageInsertArrayØ00__func__Ø000))), unsafe.Pointer(str(86732)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65690), unsafe.Pointer((*int8)(unsafe.Pointer(&_pageInsertArrayØ00__func__Ø000))), unsafe.Pointer(str(85206)))
crt.X__builtin_abort(tls)
}
}()
@@ -72716,26 +64751,30 @@ _9:
{
p := &_pCellptr
*p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(i32(2))))
- sink11 = *p
+ sink13 = *p
}
_i += 1
goto _3
-
_6:
*_ppData = _pData
return i32(0)
+
+ _ = _1_rc
+ panic(0)
}
-var _pageInsertArrayØ00__func__Ø000 [16]int8 // -
+var _pageInsertArrayØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_pageInsertArrayØ00__func__Ø000[0], str(86812), 16)
+ crt.Xstrncpy(nil, &_pageInsertArrayØ00__func__Ø000[0], str(85285), 16)
}
-func _populateCellCache(tls *crt.TLS, _p *XCellArray, _idx int32, _N int32) { // sqlite3.c:65552:1
+// Make sure the cell sizes at idx, idx+1, ..., idx+N-1 have been
+// computed.
+func _populateCellCache(tls *crt.TLS, _p *XCellArray, _idx int32, _N int32) {
func() {
if _idx < i32(0) || (_idx+_N) > (_p.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65553), unsafe.Pointer((*int8)(unsafe.Pointer(&_populateCellCacheØ00__func__Ø000))), unsafe.Pointer(str(86828)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65553), unsafe.Pointer((*int8)(unsafe.Pointer(&_populateCellCacheØ00__func__Ø000))), unsafe.Pointer(str(85301)))
crt.X__builtin_abort(tls)
}
}()
@@ -72743,28 +64782,23 @@ _3:
if _N <= i32(0) {
goto _4
}
-
func() {
if (*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2)) + 4*uintptr(_idx)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65555), unsafe.Pointer((*int8)(unsafe.Pointer(&_populateCellCacheØ00__func__Ø000))), unsafe.Pointer(str(86856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65555), unsafe.Pointer((*int8)(unsafe.Pointer(&_populateCellCacheØ00__func__Ø000))), unsafe.Pointer(str(85327)))
crt.X__builtin_abort(tls)
}
}()
- if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_idx)))) != i32(0) {
- goto _7
+ if int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_idx)))) == i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_idx))) = (*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
+ }{((*XMemPage)(_p.X1).X24)})))(tls, (*XMemPage)(_p.X1), *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2)) + 4*uintptr(_idx))))
+ goto _8
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_idx))) = (*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
- }{((*XMemPage)(_p.X1).X24)})))(tls, (*XMemPage)(_p.X1), *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2)) + 4*uintptr(_idx))))
- goto _8
-
-_7:
func() {
if (_sqlite3Config.X6) != i32(0) && int32(*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X3)) + 2*uintptr(_idx)))) != int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{((*XMemPage)(_p.X1).X24)})))(tls, (*XMemPage)(_p.X1), *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X2)) + 4*uintptr(_idx))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(65559), unsafe.Pointer((*int8)(unsafe.Pointer(&_populateCellCacheØ00__func__Ø000))), unsafe.Pointer(str(86876)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(65559), unsafe.Pointer((*int8)(unsafe.Pointer(&_populateCellCacheØ00__func__Ø000))), unsafe.Pointer(str(85345)))
crt.X__builtin_abort(tls)
}
}()
@@ -72772,168 +64806,146 @@ _8:
_idx += 1
_N -= 1
goto _3
-
_4:
}
-var _populateCellCacheØ00__func__Ø000 [18]int8 // -
+var _populateCellCacheØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_populateCellCacheØ00__func__Ø000[0], str(86952), 18)
+ crt.Xstrncpy(nil, &_populateCellCacheØ00__func__Ø000[0], str(85419), 18)
}
-func _freePage(tls *crt.TLS, _pPage *XMemPage, _pRC *int32) { // sqlite3.c:65125:1
- if (*_pRC) != i32(0) {
- goto _0
+func _freePage(tls *crt.TLS, _pPage *XMemPage, _pRC *int32) {
+ if (*_pRC) == i32(0) {
+ *_pRC = _freePage2(tls, (*XBtShared)(_pPage.X18), _pPage, _pPage.X4)
}
-
- *_pRC = _freePage2(tls, (*XBtShared)(_pPage.X18), _pPage, _pPage.X4)
-_0:
}
-func _sqlite3ScratchFree(tls *crt.TLS, _p unsafe.Pointer) { // sqlite3.c:24577:1
- var _2_pSlot *Xsqlite3_file // sqlite3.c:24591:23
- _ = _2_pSlot
- var _4_iSize int32 // sqlite3.c:24606:13
- _ = _4_iSize
+func _sqlite3ScratchFree(tls *crt.TLS, _p unsafe.Pointer) {
+ var _4_iSize int32
+ var _2_pSlot *Xsqlite3_file
if _p == nil {
goto _0
}
-
- if uint32(uintptr(_p)) < uint32(uintptr(_sqlite3Config.X19)) || uint32(uintptr(_p)) >= uint32(uintptr(_mem0.X2)) {
- goto _2
+ if (uint32(uintptr(_p)) >= uint32(uintptr(_sqlite3Config.X19))) && (uint32(uintptr(_p)) < uint32(uintptr(_mem0.X2))) {
+ _2_pSlot = (*Xsqlite3_file)(_p)
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pSlot)) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)(_mem0.X3)
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(16 /* X3 */))))) = _2_pSlot
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(20 /* X4 */))) += 1
+ func() {
+ if (_mem0.X4) > uint32(_sqlite3Config.X21) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(24597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ScratchFreeØ00__func__Ø000))), unsafe.Pointer(str(85437)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3StatusDown(tls, i32(3), i32(1))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ goto _5
}
-
- _2_pSlot = (*Xsqlite3_file)(_p)
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pSlot)) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)(_mem0.X3)
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(16 /* X3 */))))) = _2_pSlot
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_mem0)) + uintptr(20 /* X4 */))) += 1
- func() {
- if (_mem0.X4) > uint32(_sqlite3Config.X21) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(24597), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ScratchFreeØ00__func__Ø000))), unsafe.Pointer(str(86972)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3StatusDown(tls, i32(3), i32(1))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
- goto _5
-
-_2:
i32(0)
i32(0)
- if (_sqlite3Config.X0) == 0 {
- goto _6
+ if (_sqlite3Config.X0) != 0 {
+ _4_iSize = _sqlite3MallocSize(tls, _p)
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ _sqlite3StatusDown(tls, i32(4), _4_iSize)
+ _sqlite3StatusDown(tls, i32(0), _4_iSize)
+ _sqlite3StatusDown(tls, i32(9), i32(1))
+ ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X1)(tls, _p)
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
+ goto _7
}
-
- _4_iSize = _sqlite3MallocSize(tls, _p)
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_mem0.X0))
- _sqlite3StatusDown(tls, i32(4), _4_iSize)
- _sqlite3StatusDown(tls, i32(0), _4_iSize)
- _sqlite3StatusDown(tls, i32(9), i32(1))
- ((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X1)(tls, _p)
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)(_mem0.X0))
- goto _7
-
-_6:
((*Xsqlite3_mem_methods)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Config)) + uintptr(40 /* X10 */))).X1)(tls, _p)
_7:
_5:
_0:
}
-var _sqlite3ScratchFreeØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ScratchFreeØ00__func__Ø000[0], str(87028), 19)
-}
-
-func _sqlite3BtreeDelete(tls *crt.TLS, _pCur *XBtCursor, _flags uint8) (r0 int32) { // sqlite3.c:67311:1
- var _p *XBtree // sqlite3.c:67312:9
- _ = _p
- var _pBt *XBtShared // sqlite3.c:67313:12
- _ = _pBt
- var _rc int32 // sqlite3.c:67314:7
- _ = _rc
- var _pPage *XMemPage // sqlite3.c:67315:11
- _ = _pPage
- var _pCell *uint8 // sqlite3.c:67316:17
- _ = _pCell
- var _iCellIdx int32 // sqlite3.c:67317:7
- _ = _iCellIdx
- var _iCellDepth int32 // sqlite3.c:67318:7
- _ = _iCellDepth
- var _info XCellInfo // sqlite3.c:67319:12
- _ = _info
- var _bSkipnext int32 // sqlite3.c:67320:7
- _ = _bSkipnext
- var _bPreserve uint8 // sqlite3.c:67321:6
- _ = _bPreserve
- var _4_notUsed int32 // sqlite3.c:67368:9
- _ = _4_notUsed
- var _7_pLeaf *XMemPage // sqlite3.c:67401:13
- _ = _7_pLeaf
- var _7_nCell int32 // sqlite3.c:67402:9
- _ = _7_nCell
- var _7_n uint32 // sqlite3.c:67403:10
- _ = _7_n
- var _7_pTmp *uint8 // sqlite3.c:67404:19
- _ = _7_pTmp
+var _sqlite3ScratchFreeØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ScratchFreeØ00__func__Ø000[0], str(85492), 19)
+}
+
+// Delete the entry that the cursor is pointing to.
+//
+// If the BTREE_SAVEPOSITION bit of the flags parameter is zero, then
+// the cursor is left pointing at an arbitrary location after the delete.
+// But if that bit is set, then the cursor is left in a state such that
+// the next call to BtreeNext() or BtreePrev() moves it to the same row
+// as it would have been on if the call to BtreeDelete() had been omitted.
+//
+// The BTREE_AUXDELETE bit of flags indicates that is one of several deletes
+// associated with a single table entry and its indexes. Only one of those
+// deletes is considered the "primary" delete. The primary delete occurs
+// on a cursor that is not a BTREE_FORDELETE cursor. All but one delete
+// operation on non-FORDELETE cursors is tagged with the AUXDELETE flag.
+// The BTREE_AUXDELETE bit is a hint that is not used by this implementation,
+// but which might be used by alternative storage engines.
+func _sqlite3BtreeDelete(tls *crt.TLS, _pCur *XBtCursor, _flags uint8) (r0 int32) {
+ var _rc, _iCellIdx, _iCellDepth, _bSkipnext, _4_notUsed, _7_nCell int32
+ var _7_n uint32
+ var _bPreserve uint8
+ var _pCell, _7_pTmp *uint8
+ var _p *XBtree
+ var _pBt *XBtShared
+ var _info XCellInfo
+ var _pPage, _7_pLeaf *XMemPage
_p = (*XBtree)(_pCur.X0)
_pBt = (*XBtShared)(_p.X1)
_bSkipnext = i32(0)
_bPreserve = uint8(int32(_flags) & i32(2))
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67323), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67323), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pBt.X8) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67324), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(58864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67324), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(56928)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pBt.X10) & i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67325), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(79004)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67325), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(77853)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_pCur.X10) & i32(1)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67326), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87048)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67326), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85511)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _hasSharedCacheTableLock(tls, _p, _pCur.X7, bool2int((*XKeyInfo)(_pCur.X18) != nil), i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67327), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(81572)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67327), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(80291)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _hasReadConflicts(tls, _p, _pCur.X7) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87080)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85543)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X16) >= int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67329), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(9452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67329), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(10597)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pCur.X12) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67330), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(9240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67330), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(10390)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (int32(_flags) & i32(-7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67331), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87120)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67331), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85580)))
crt.X__builtin_abort(tls)
}
}()
@@ -72944,20 +64956,14 @@ func _sqlite3BtreeDelete(tls *crt.TLS, _pCur *XBtCursor, _flags uint8) (r0 int32
if _bPreserve == 0 {
goto _18
}
-
if (_pPage.X5) != 0 && ((int32(_pPage.X13)+int32(_cellSizePtr(tls, _pPage, _pCell)))+i32(2)) <= int32(((_pBt.X16)*uint32(i32(2)))/uint32(i32(3))) {
goto _20
}
-
_rc = _saveCursorKey(tls, _pCur)
- if _rc == 0 {
- goto _21
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_21:
goto _22
-
_20:
_bSkipnext = i32(1)
_22:
@@ -72965,207 +64971,171 @@ _18:
if (_pPage.X5) != 0 {
goto _23
}
-
_4_notUsed = i32(0)
_rc = _sqlite3BtreePrevious(tls, _pCur, &_4_notUsed)
- if _rc == 0 {
- goto _24
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_24:
_23:
if (int32(_pCur.X10) & i32(32)) == 0 {
goto _25
}
-
_rc = _saveAllCursors(tls, _pBt, _pCur.X7, _pCur)
- if _rc == 0 {
- goto _26
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_26:
_25:
- if (*XKeyInfo)(_pCur.X18) != nil {
- goto _27
+ if (*XKeyInfo)(_pCur.X18) == nil {
+ _invalidateIncrblobCursors(tls, _p, _pCur.X7, (*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X0, i32(0))
}
-
- _invalidateIncrblobCursors(tls, _p, _pCur.X7, (*XCellInfo)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(16 /* X4 */))).X0, i32(0))
-_27:
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_pPage.X23))
- if _rc == 0 {
- goto _28
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_28:
_rc = _clearCell(tls, _pPage, _pCell, &_info)
_dropCell(tls, _pPage, _iCellIdx, int32(_info.X4), &_rc)
- if _rc == 0 {
- goto _29
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_29:
if (_pPage.X5) != 0 {
goto _30
}
-
_7_pLeaf = *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))
_7_n = (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_iCellDepth+i32(1))))).X4
_pCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_7_pLeaf.X19)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_7_pLeaf.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pLeaf.X21))+1*uintptr(i32(2)*(int32(_7_pLeaf.X14)-i32(1))))))) + 1*uintptr(i32(0)))))<= uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pLeaf.X19))+1*uintptr(i32(4)))))) {
- goto _31
+ if uintptr(unsafe.Pointer(_pCell)) < uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pLeaf.X19))+1*uintptr(i32(4)))))) {
+ return _sqlite3CorruptError(tls, i32(67407))
}
- return _sqlite3CorruptError(tls, i32(67407))
-
-_31:
_7_nCell = int32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
}{(_7_pLeaf.X24)})))(tls, _7_pLeaf, _pCell))
func() {
if int32((_pBt.X15)-uint32(i32(8))) < _7_nCell {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67409), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87176)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67409), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85633)))
crt.X__builtin_abort(tls)
}
}()
_7_pTmp = _pBt.X27
func() {
if _7_pTmp == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87204)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67411), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85660)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3PagerWrite(tls, (*XPgHdr)(_7_pLeaf.X23))
- if _rc != i32(0) {
- goto _36
+ if _rc == i32(0) {
+ _insertCell(tls, _pPage, _iCellIdx, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCell))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4)))))))), _7_nCell+i32(4), _7_pTmp, _7_n, &_rc)
}
-
- _insertCell(tls, _pPage, _iCellIdx, (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCell))-uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(i32(4)))))))), _7_nCell+i32(4), _7_pTmp, _7_n, &_rc)
-_36:
_dropCell(tls, _7_pLeaf, int32(_7_pLeaf.X14)-i32(1), _7_nCell, &_rc)
- if _rc == 0 {
- goto _37
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_37:
_30:
_rc = _balance(tls, _pCur)
if _rc != i32(0) || int32(_pCur.X14) <= _iCellDepth {
goto _39
}
-
_40:
- if int32(_pCur.X14) <= _iCellDepth {
- goto _41
+ if int32(_pCur.X14) > _iCellDepth {
+ _releasePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(postInc3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(64 /* X14 */))), int8(-1))))))
+ goto _40
}
-
- _releasePage(tls, *(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(postInc3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(64 /* X14 */))), int8(-1))))))
- goto _40
-
-_41:
_rc = _balance(tls, _pCur)
_39:
if _rc != i32(0) {
goto _42
}
-
if _bSkipnext == 0 {
goto _43
}
-
func() {
if _bPreserve == 0 || int32(_pCur.X14) != _iCellDepth && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67445), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87212)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67445), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85668)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _pPage != (*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))) && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87268)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85721)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pPage.X14) <= i32(0) && (_sqlite3Config.X6) != i32(0) || _iCellIdx > int32(_pPage.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(87316)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeDeleteØ00__func__Ø000))), unsafe.Pointer(str(85768)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(2))
- if _iCellIdx < int32(_pPage.X14) {
- goto _55
+ if _iCellIdx >= int32(_pPage.X14) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(-1)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(int32(_pPage.X14) - i32(1))
+ goto _56
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(-1)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(66 /* X16 */))) = uint16(int32(_pPage.X14) - i32(1))
- goto _56
-
-_55:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(56 /* X9 */))) = i32(1)
_56:
goto _57
-
_43:
_rc = _moveToRoot(tls, _pCur)
- if _bPreserve == 0 {
- goto _58
+ if _bPreserve != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(3))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur)) + uintptr(62 /* X12 */))) = uint8(i32(3))
-_58:
_57:
_42:
- r0 = _rc
- return
+ return _rc
+
+ _ = _info
+ _ = _4_notUsed
+ panic(0)
}
-var _sqlite3BtreeDeleteØ00__func__Ø000 [19]int8 // -
+var _sqlite3BtreeDeleteØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeDeleteØ00__func__Ø000[0], str(87376), 19)
+ crt.Xstrncpy(nil, &_sqlite3BtreeDeleteØ00__func__Ø000[0], str(85825), 19)
}
-func _sqlite3VdbeSorterCompare(tls *crt.TLS, _pCsr *XVdbeCursor, _pVal *XMem, _nKeyCol int32, _pRes *int32) (r0 int32) { // sqlite3.c:88728:1
- var _pSorter *XVdbeSorter // sqlite3.c:88734:14
- _ = _pSorter
- var _r2 *XUnpackedRecord // sqlite3.c:88735:18
- _ = _r2
- var _pKeyInfo *XKeyInfo // sqlite3.c:88736:11
- _ = _pKeyInfo
- var _i int32 // sqlite3.c:88737:7
- _ = _i
- var _pKey unsafe.Pointer // sqlite3.c:88738:8
- _ = _pKey
- var _nKey int32 // sqlite3.c:88738:19
- _ = _nKey
+// Compare the key in memory cell pVal with the key that the sorter cursor
+// passed as the first argument currently points to. For the purposes of
+// the comparison, ignore the rowid field at the end of each record.
+//
+// If the sorter cursor key contains any NULL values, consider it to be
+// less than pVal. Even if pVal also contains NULL values.
+//
+// If an error occurs, return an SQLite error code (i.e. SQLITE_NOMEM).
+// Otherwise, set *pRes to a negative, zero or positive value if the
+// key in pVal is smaller than, equal to or larger than the current sorter
+// key.
+//
+// This routine forms the core of the OP_SorterCompare opcode, which in
+// turn is used to verify uniqueness when constructing a UNIQUE INDEX.
+func _sqlite3VdbeSorterCompare(tls *crt.TLS, _pCsr *XVdbeCursor, _pVal *XMem, _nKeyCol int32, _pRes *int32) (r0 int32) {
+ var _i, _nKey int32
+ var _pKey unsafe.Pointer
+ var _r2 *XUnpackedRecord
+ var _pKeyInfo *XKeyInfo
+ var _pSorter *XVdbeSorter
func() {
if int32(_pCsr.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterCompareØ00__func__Ø000))), unsafe.Pointer(str(59856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterCompareØ00__func__Ø000))), unsafe.Pointer(str(57861)))
crt.X__builtin_abort(tls)
}
}()
- _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
+ _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
_r2 = (*XUnpackedRecord)(_pSorter.X8)
_pKeyInfo = (*XKeyInfo)(_pCsr.X15)
if _r2 != nil {
goto _2
}
-
- _r2 = store49((**XUnpackedRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(32 /* X8 */))))), _sqlite3VdbeAllocUnpackedRecord(tls, _pKeyInfo))
- if _r2 != nil {
- goto _3
+ _r2 = store51((**XUnpackedRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(32 /* X8 */))))), _sqlite3VdbeAllocUnpackedRecord(tls, _pKeyInfo))
+ if _r2 == nil {
+ return _sqlite3NomemError(tls, i32(88746))
}
- return _sqlite3NomemError(tls, i32(88746))
-
-_3:
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_r2)) + uintptr(8 /* X2 */))) = uint16(_nKeyCol)
_2:
func() {
if int32(_r2.X2) != _nKeyCol {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterCompareØ00__func__Ø000))), unsafe.Pointer(str(87396)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterCompareØ00__func__Ø000))), unsafe.Pointer(str(85844)))
crt.X__builtin_abort(tls)
}
}()
@@ -73176,142 +65146,127 @@ _6:
if _i >= _nKeyCol {
goto _9
}
-
- if (int32((*XMem)(unsafe.Pointer(uintptr(_r2.X1)+48*uintptr(_i))).X1) & i32(1)) == 0 {
- goto _10
+ if (int32((*XMem)(unsafe.Pointer(uintptr(_r2.X1)+48*uintptr(_i))).X1) & i32(1)) != 0 {
+ *_pRes = i32(-1)
+ return i32(0)
}
-
- *_pRes = i32(-1)
- return i32(0)
-
-_10:
_i += 1
goto _6
-
_9:
*_pRes = _sqlite3VdbeRecordCompare(tls, _pVal.X4, (unsafe.Pointer)(_pVal.X5), _r2)
return i32(0)
}
-var _sqlite3VdbeSorterCompareØ00__func__Ø000 [25]int8 // -
+var _sqlite3VdbeSorterCompareØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterCompareØ00__func__Ø000[0], str(87416), 25)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterCompareØ00__func__Ø000[0], str(85864), 25)
}
-func _vdbeSorterRowkey(tls *crt.TLS, _pSorter *XVdbeSorter, _pnKey *int32) (r0 unsafe.Pointer) { // sqlite3.c:88668:1
- var _pKey unsafe.Pointer // sqlite3.c:88672:8
- _ = _pKey
- var _1_pReader *XPmaReader // sqlite3.c:88674:15
- _ = _1_pReader
+// Return a pointer to a buffer owned by the sorter that contains the
+// current key.
+func _vdbeSorterRowkey(tls *crt.TLS, _pSorter *XVdbeSorter, _pnKey *int32) (r0 unsafe.Pointer) {
+ var _pKey unsafe.Pointer
+ var _1_pReader *XPmaReader
if (_pSorter.X12) == 0 {
goto _0
}
-
- if (_pSorter.X13) == 0 {
- goto _1
+ if (_pSorter.X13) != 0 {
+ _1_pReader = (*XPmaReader)(_pSorter.X4)
+ goto _2
}
-
- _1_pReader = (*XPmaReader)(_pSorter.X4)
- goto _2
-
-_1:
_1_pReader = (*XPmaReader)(unsafe.Pointer(uintptr((*XMergeEngine)(_pSorter.X5).X3) + 52*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMergeEngine)(_pSorter.X5).X2)) + 4*uintptr(i32(1)))))))
_2:
*_pnKey = _1_pReader.X3
_pKey = (unsafe.Pointer)(_1_pReader.X6)
goto _3
-
_0:
- *_pnKey = (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X0).X0
- _pKey = (unsafe.Pointer)((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer((*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))) + uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(8))))))))))))
+ *_pnKey = (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X0).X0
+ _pKey = (unsafe.Pointer)((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer((*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))) + uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(8))))))))))))
_3:
return _pKey
}
-func _sqlite3VdbeSorterRowkey(tls *crt.TLS, _pCsr *XVdbeCursor, _pOut *XMem) (r0 int32) { // sqlite3.c:88695:1
- var _pSorter *XVdbeSorter // sqlite3.c:88696:14
- _ = _pSorter
- var _pKey unsafe.Pointer // sqlite3.c:88697:8
- _ = _pKey
- var _nKey int32 // sqlite3.c:88697:19
- _ = _nKey
+// Copy the current sorter key into the memory cell pOut.
+func _sqlite3VdbeSorterRowkey(tls *crt.TLS, _pCsr *XVdbeCursor, _pOut *XMem) (r0 int32) {
+ var _nKey int32
+ var _pKey unsafe.Pointer
+ var _pSorter *XVdbeSorter
func() {
if int32(_pCsr.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88699), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRowkeyØ00__func__Ø000))), unsafe.Pointer(str(59856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88699), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRowkeyØ00__func__Ø000))), unsafe.Pointer(str(57861)))
crt.X__builtin_abort(tls)
}
}()
- _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
+ _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
_pKey = _vdbeSorterRowkey(tls, _pSorter, &_nKey)
- if _sqlite3VdbeMemClearAndResize(tls, _pOut, _nKey) == 0 {
- goto _2
+ if _sqlite3VdbeMemClearAndResize(tls, _pOut, _nKey) != 0 {
+ return _sqlite3NomemError(tls, i32(88703))
}
- return _sqlite3NomemError(tls, i32(88703))
-
-_2:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(12 /* X4 */))) = _nKey
*(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X1 */))) = uint16((int32(_pOut.X1) & i32(-49664)) | i32(16))
crt.Xmemcpy(tls, (unsafe.Pointer)(_pOut.X5), _pKey, uint32(_nKey))
return i32(0)
}
-var _sqlite3VdbeSorterRowkeyØ00__func__Ø000 [24]int8 // -
+var _sqlite3VdbeSorterRowkeyØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterRowkeyØ00__func__Ø000[0], str(87444), 24)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterRowkeyØ00__func__Ø000[0], str(85889), 24)
}
-func _sqlite3VdbeCursorRestore(tls *crt.TLS, _p *XVdbeCursor) (r0 int32) { // sqlite3.c:74513:1
+// Check to ensure that the cursor is valid. Restore the cursor
+// if need be. Return any I/O error from the restore operation.
+func _sqlite3VdbeCursorRestore(tls *crt.TLS, _p *XVdbeCursor) (r0 int32) {
func() {
if int32(_p.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(74514), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(74720)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(74514), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCursorRestoreØ00__func__Ø000))), unsafe.Pointer(str(73776)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3BtreeCursorHasMoved(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */))))))) == 0 {
- goto _2
+ if _sqlite3BtreeCursorHasMoved(tls, (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X14 */))))))) != 0 {
+ return _handleMovedCursor(tls, _p)
}
- return _handleMovedCursor(tls, _p)
-
-_2:
return i32(0)
}
-var _sqlite3VdbeCursorRestoreØ00__func__Ø000 [25]int8 // -
+var _sqlite3VdbeCursorRestoreØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeCursorRestoreØ00__func__Ø000[0], str(87468), 25)
+ crt.Xstrncpy(nil, &_sqlite3VdbeCursorRestoreØ00__func__Ø000[0], str(85913), 25)
}
-func _sqlite3BtreeCursorIsValidNN(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) { // sqlite3.c:63380:1
+// NDEBUG
+func _sqlite3BtreeCursorIsValidNN(tls *crt.TLS, _pCur *XBtCursor) (r0 int32) {
func() {
if _pCur == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(63381), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorIsValidNNØ00__func__Ø000))), unsafe.Pointer(str(78224)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(63381), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCursorIsValidNNØ00__func__Ø000))), unsafe.Pointer(str(77105)))
crt.X__builtin_abort(tls)
}
}()
return bool2int(int32(_pCur.X12) == i32(1))
}
-var _sqlite3BtreeCursorIsValidNNØ00__func__Ø000 [28]int8 // -
+var _sqlite3BtreeCursorIsValidNNØ00__func__Ø000 [28]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeCursorIsValidNNØ00__func__Ø000[0], str(87496), 28)
+ crt.Xstrncpy(nil, &_sqlite3BtreeCursorIsValidNNØ00__func__Ø000[0], str(85938), 28)
}
-func _sqlite3BtreeFirst(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) { // sqlite3.c:64076:1
- var _rc int32 // sqlite3.c:64077:7
- _ = _rc
+// Move the cursor to the first entry in the table. Return SQLITE_OK
+// on success. Set *pRes to 0 if the cursor actually points to something
+// or set *pRes to 1 if the table is empty.
+func _sqlite3BtreeFirst(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32) {
+ var _rc int32
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64079), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64079), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XBtree)(_pCur.X0).X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64080), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(74800)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64080), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(73849)))
crt.X__builtin_abort(tls)
}
}()
@@ -73319,24 +65274,19 @@ func _sqlite3BtreeFirst(tls *crt.TLS, _pCur *XBtCursor, _pRes *int32) (r0 int32)
if _rc != i32(0) {
goto _4
}
-
- if int32(_pCur.X12) != i32(0) {
- goto _5
+ if int32(_pCur.X12) == i32(0) {
+ func() {
+ if (_pCur.X7) != uint32(i32(0)) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64084), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(74242)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_pRes = i32(1)
+ goto _9
}
-
- func() {
- if (_pCur.X7) != uint32(i32(0)) && int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64084), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(75204)))
- crt.X__builtin_abort(tls)
- }
- }()
- *_pRes = i32(1)
- goto _9
-
-_5:
func() {
if int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X14) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64087), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(87524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64087), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeFirstØ00__func__Ø000))), unsafe.Pointer(str(85966)))
crt.X__builtin_abort(tls)
}
}()
@@ -73344,69 +65294,62 @@ _5:
_rc = _moveToLeftmost(tls, _pCur)
_9:
_4:
- r0 = _rc
- return
+ return _rc
}
-var _sqlite3BtreeFirstØ00__func__Ø000 [18]int8 // -
+var _sqlite3BtreeFirstØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeFirstØ00__func__Ø000[0], str(87560), 18)
+ crt.Xstrncpy(nil, &_sqlite3BtreeFirstØ00__func__Ø000[0], str(86001), 18)
}
-func _sqlite3BtreeRowCountEst(tls *crt.TLS, _pCur *XBtCursor) (r0 int64) { // sqlite3.c:64426:1
- var _n int64 // sqlite3.c:64427:7
- _ = _n
- var _i uint8 // sqlite3.c:64428:6
- _ = _i
+// Return an estimate for the number of rows in the table that pCur is
+// pointing to. Return a negative number if no estimate is currently
+// available.
+func _sqlite3BtreeRowCountEst(tls *crt.TLS, _pCur *XBtCursor) (r0 int64) {
+ var _n int64
+ var _i uint8
func() {
if _cursorOwnsBtShared(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(74772)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(73824)))
crt.X__builtin_abort(tls)
}
}()
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XBtree)(_pCur.X0).X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(74800)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(73849)))
crt.X__builtin_abort(tls)
}
}()
if func() int32 {
if int32(_pCur.X12) != i32(1) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _6
+ }() != 0 {
+ return int64(i32(-1))
}
- return int64(i32(-1))
-
-_6:
if func() int32 {
if int32((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_pCur.X14)))).X5) == i32(0) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(64437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(64437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeRowCountEstØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _9
+ }() != 0 {
+ return int64(i32(-1))
}
- return int64(i32(-1))
-
-_9:
*func() *uint8 { _n = int64(i32(1)); return &_i }() = uint8(i32(0))
_10:
if int32(_i) > int32(_pCur.X14) {
goto _13
}
-
{
p := &_n
*p = (*p) * int64((*(**XMemPage)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[20]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCur))+uintptr(112 /* X19 */))))) + 4*uintptr(_i)))).X14)
@@ -73414,57 +65357,52 @@ _10:
}
_i += 1
goto _10
-
_13:
return _n
}
-var _sqlite3BtreeRowCountEstØ00__func__Ø000 [24]int8 // -
+var _sqlite3BtreeRowCountEstØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeRowCountEstØ00__func__Ø000[0], str(87580), 24)
+ crt.Xstrncpy(nil, &_sqlite3BtreeRowCountEstØ00__func__Ø000[0], str(86019), 24)
}
-func _sqlite3VdbeSorterRewind(tls *crt.TLS, _pCsr *XVdbeCursor, _pbEof *int32) (r0 int32) { // sqlite3.c:88583:1
- var _pSorter *XVdbeSorter // sqlite3.c:88584:14
- _ = _pSorter
- var _rc int32 // sqlite3.c:88585:7
- _ = _rc
+// Once the sorter has been populated by calls to sqlite3VdbeSorterWrite,
+// this function is called to prepare for iterating through the records
+// in sorted order.
+func _sqlite3VdbeSorterRewind(tls *crt.TLS, _pCsr *XVdbeCursor, _pbEof *int32) (r0 int32) {
+ var _rc int32
+ var _pSorter *XVdbeSorter
_rc = i32(0)
func() {
if int32(_pCsr.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(59856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(57861)))
crt.X__builtin_abort(tls)
}
}()
- _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
+ _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
func() {
if _pSorter == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88589), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(87604)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88589), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(86043)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pSorter.X12) != i32(0) {
goto _4
}
-
- if (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) == nil {
- goto _5
+ if (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) != nil {
+ *_pbEof = i32(0)
+ _rc = _vdbeSorterSort(tls, (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))+60*uintptr(i32(0)))), (*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))
+ goto _6
}
-
- *_pbEof = i32(0)
- _rc = _vdbeSorterSort(tls, (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))+60*uintptr(i32(0)))), (*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))
- goto _6
-
-_5:
*_pbEof = i32(1)
_6:
return _rc
_4:
func() {
- if (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88608), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(87612)))
+ if (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88608), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(86051)))
crt.X__builtin_abort(tls)
}
}()
@@ -73472,100 +65410,77 @@ _4:
_rc = _vdbeSorterJoinAll(tls, _pSorter, _rc)
func() {
if (*XPmaReader)(_pSorter.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(87632)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88618), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterRewindØ00__func__Ø000))), unsafe.Pointer(str(86071)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(0) {
- goto _11
+ if _rc == i32(0) {
+ _rc = _vdbeSorterSetupMerge(tls, _pSorter)
+ *_pbEof = i32(0)
}
-
- _rc = _vdbeSorterSetupMerge(tls, _pSorter)
- *_pbEof = i32(0)
-_11:
return _rc
}
-var _sqlite3VdbeSorterRewindØ00__func__Ø000 [24]int8 // -
+var _sqlite3VdbeSorterRewindØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterRewindØ00__func__Ø000[0], str(87652), 24)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterRewindØ00__func__Ø000[0], str(86091), 24)
}
-func _vdbeSorterSort(tls *crt.TLS, _pTask *XSortSubtask, _pList *t45) (r0 int32) { // sqlite3.c:87411:1
- var _i int32 // sqlite3.c:87412:7
- _ = _i
- var _aSlot **XSorterRecord // sqlite3.c:87413:16
- _ = _aSlot
- var _p *XSorterRecord // sqlite3.c:87414:16
- _ = _p
- var _rc int32 // sqlite3.c:87415:7
- _ = _rc
- var _2_pNext *XSorterRecord // sqlite3.c:87429:18
- _ = _2_pNext
+// Sort the linked list of records headed at pTask->pList. Return
+// SQLITE_OK if successful, or an SQLite error code (i.e. SQLITE_NOMEM) if
+// an error occurs.
+func _vdbeSorterSort(tls *crt.TLS, _pTask *XSortSubtask, _pList *t47) (r0 int32) {
+ var _i, _rc int32
+ var _p, _2_pNext *XSorterRecord
+ var _aSlot **XSorterRecord
_rc = _vdbeSortAllocUnpacked(tls, _pTask)
- if _rc == i32(0) {
- goto _0
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_0:
_p = (*XSorterRecord)(_pList.X0)
*(*func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(32 /* X6 */))))) = _vdbeSorterGetCompare(tls, (*XVdbeSorter)(_pTask.X2))
_aSlot = (**XSorterRecord)(_sqlite3MallocZero(tls, uint64(u32(256))))
- if _aSlot != nil {
- goto _1
+ if _aSlot == nil {
+ return _sqlite3NomemError(tls, i32(87425))
}
- return _sqlite3NomemError(tls, i32(87425))
-
-_1:
_2:
if _p == nil {
goto _3
}
-
if (_pList.X1) == nil {
goto _4
}
-
- if (*uint8)(unsafe.Pointer(_p)) != (_pList.X1) {
- goto _5
+ if (*uint8)(unsafe.Pointer(_p)) == (_pList.X1) {
+ _2_pNext = nil
+ goto _6
}
-
- _2_pNext = nil
- goto _6
-
-_5:
func() {
- if (*(*int32)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */)))))) >= _sqlite3MallocSize(tls, (unsafe.Pointer)(_pList.X1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87434), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSortØ00__func__Ø000))), unsafe.Pointer(str(87676)))
+ if (*(*int32)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */)))))) >= _sqlite3MallocSize(tls, (unsafe.Pointer)(_pList.X1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87434), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSortØ00__func__Ø000))), unsafe.Pointer(str(86115)))
crt.X__builtin_abort(tls)
}
}()
- _2_pNext = (*XSorterRecord)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList.X1)) + 1*uintptr(*(*int32)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))))))
+ _2_pNext = (*XSorterRecord)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList.X1)) + 1*uintptr(*(*int32)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))))))
_6:
goto _9
-
_4:
- _2_pNext = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))
+ _2_pNext = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))
_9:
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))) = nil
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))))) = nil
_i = i32(0)
_10:
if (*(**XSorterRecord)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSlot)) + 4*uintptr(_i)))) == nil {
goto _13
}
-
_p = _vdbeSorterMerge(tls, _pTask, _p, *(**XSorterRecord)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSlot)) + 4*uintptr(_i))))
*(**XSorterRecord)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSlot)) + 4*uintptr(_i))) = nil
_i += 1
goto _10
-
_13:
*(**XSorterRecord)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSlot)) + 4*uintptr(_i))) = _p
_p = _2_pNext
goto _2
-
_3:
_p = nil
_i = i32(0)
@@ -73573,14 +65488,9 @@ _14:
if _i >= i32(64) {
goto _17
}
-
- if (*(**XSorterRecord)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSlot)) + 4*uintptr(_i)))) != nil {
- goto _18
+ if (*(**XSorterRecord)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSlot)) + 4*uintptr(_i)))) == nil {
+ goto _15
}
-
- goto _15
-
-_18:
_p = func() *XSorterRecord {
if _p != nil {
return _vdbeSorterMerge(tls, _pTask, _p, *(**XSorterRecord)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSlot)) + 4*uintptr(_i))))
@@ -73590,72 +65500,53 @@ _18:
_15:
_i += 1
goto _14
-
_17:
*(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(0 /* X0 */))))) = _p
Xsqlite3_free(tls, (unsafe.Pointer)(_aSlot))
func() {
if int32((*XUnpackedRecord)(_pTask.X3).X4) != i32(0) && int32((*XUnpackedRecord)(_pTask.X3).X4) != i32(7) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87458), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSortØ00__func__Ø000))), unsafe.Pointer(str(87724)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87458), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSortØ00__func__Ø000))), unsafe.Pointer(str(86160)))
crt.X__builtin_abort(tls)
}
}()
return int32((*XUnpackedRecord)(_pTask.X3).X4)
}
-func _vdbeSortAllocUnpacked(tls *crt.TLS, _pTask *XSortSubtask) (r0 int32) { // sqlite3.c:87341:1
+// If it has not already been allocated, allocate the UnpackedRecord
+// structure at pTask->pUnpacked. Return SQLITE_OK if successful (or
+// if no allocation was required), or SQLITE_NOMEM otherwise.
+func _vdbeSortAllocUnpacked(tls *crt.TLS, _pTask *XSortSubtask) (r0 int32) {
if (*XUnpackedRecord)(_pTask.X3) != nil {
goto _0
}
-
*(**XUnpackedRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(12 /* X3 */))))) = _sqlite3VdbeAllocUnpackedRecord(tls, (*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7))
- if (*XUnpackedRecord)(_pTask.X3) != nil {
- goto _1
+ if (*XUnpackedRecord)(_pTask.X3) == nil {
+ return _sqlite3NomemError(tls, i32(87344))
}
- return _sqlite3NomemError(tls, i32(87344))
-
-_1:
*(*uint16)(unsafe.Pointer(uintptr(_pTask.X3) + uintptr(8 /* X2 */))) = (*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X2
*(*uint8)(unsafe.Pointer(uintptr(_pTask.X3) + uintptr(11 /* X4 */))) = uint8(i32(0))
_0:
return i32(0)
}
-func _vdbeSorterGetCompare(tls *crt.TLS, _p *XVdbeSorter) (r0 func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32) { // sqlite3.c:87397:1
- if int32(_p.X16) != i32(1) {
- goto _0
+// Return the SorterCompare function to compare values collected by the
+// sorter object passed as the only argument.
+func _vdbeSorterGetCompare(tls *crt.TLS, _p *XVdbeSorter) (r0 func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32) {
+ if int32(_p.X16) == i32(1) {
+ return _vdbeSorterCompareInt
}
- return _vdbeSorterCompareInt
-
-_0:
- if int32(_p.X16) != i32(2) {
- goto _2
+ if int32(_p.X16) == i32(2) {
+ return _vdbeSorterCompareText
}
- return _vdbeSorterCompareText
-
-_2:
return _vdbeSorterCompare
}
-func _vdbeSorterCompareInt(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) { // sqlite3.c:86858:1
- var _p1 *uint8 // sqlite3.c:86864:12
- _ = _p1
- var _p2 *uint8 // sqlite3.c:86865:12
- _ = _p2
- var _s1 int32 // sqlite3.c:86866:13
- _ = _s1
- var _s2 int32 // sqlite3.c:86867:13
- _ = _s2
- var _v1 *uint8 // sqlite3.c:86868:12
- _ = _v1
- var _v2 *uint8 // sqlite3.c:86869:12
- _ = _v2
- var _res int32 // sqlite3.c:86870:7
- _ = _res
- var _1_n uint8 // sqlite3.c:86878:14
- _ = _1_n
- var _1_i int32 // sqlite3.c:86879:9
- _ = _1_i
+// A specially optimized version of vdbeSorterCompare() that assumes that
+// the first field of each key is an INTEGER value.
+func _vdbeSorterCompareInt(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) {
+ var _s1, _s2, _res, _1_i int32
+ var _1_n uint8
+ var _p1, _p2, _v1, _v2 *uint8
_p1 = (*uint8)(_pKey1)
_p2 = (*uint8)(_pKey2)
_s1 = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p1)) + 1*uintptr(i32(1)))))
@@ -73664,20 +65555,19 @@ func _vdbeSorterCompareInt(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *in
_v2 = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p2)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p2)) + 1*uintptr(i32(0)))))))
func() {
if (_s1 <= i32(0) || _s1 >= i32(7)) && _s1 != i32(8) && _s1 != i32(9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86872), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCompareIntØ00__func__Ø000))), unsafe.Pointer(str(87804)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86872), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCompareIntØ00__func__Ø000))), unsafe.Pointer(str(86240)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_s2 <= i32(0) || _s2 >= i32(7)) && _s2 != i32(8) && _s2 != i32(9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86873), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCompareIntØ00__func__Ø000))), unsafe.Pointer(str(87840)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86873), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCompareIntØ00__func__Ø000))), unsafe.Pointer(str(86273)))
crt.X__builtin_abort(tls)
}
}()
if _s1 != _s2 {
goto _10
}
-
_1_n = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_vdbeSorterCompareIntØ00aLenØ001)) + 1*uintptr(_s1)))
_res = i32(0)
_1_i = i32(0)
@@ -73685,152 +65575,105 @@ _11:
if _1_i >= int32(_1_n) {
goto _14
}
-
if store1(&_res, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v1)) + 1*uintptr(_1_i))))-int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v2)) + 1*uintptr(_1_i))))) == i32(0) {
goto _15
}
-
- if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v1)) + 1*uintptr(i32(0))))) ^ int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v2)) + 1*uintptr(i32(0)))))) & i32(128)) == i32(0) {
- goto _16
+ if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v1)) + 1*uintptr(i32(0))))) ^ int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v2)) + 1*uintptr(i32(0)))))) & i32(128)) != i32(0) {
+ _res = func() int32 {
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v1)) + 1*uintptr(i32(0))))) & i32(128)) != 0 {
+ return i32(-1)
+ }
+ return i32(1)
+ }()
}
-
- _res = func() int32 {
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v1)) + 1*uintptr(i32(0))))) & i32(128)) != 0 {
- return i32(-1)
- }
- return i32(1)
- }()
-_16:
goto _14
-
_15:
_1_i += 1
goto _11
-
_14:
goto _19
-
_10:
- if _s1 <= i32(7) || _s2 <= i32(7) {
- goto _21
+ if (_s1 > i32(7)) && (_s2 > i32(7)) {
+ _res = _s1 - _s2
+ goto _22
}
-
- _res = _s1 - _s2
- goto _22
-
-_21:
- if _s2 <= i32(7) {
- goto _23
+ if _s2 > i32(7) {
+ _res = i32(1)
+ goto _24
}
-
- _res = i32(1)
- goto _24
-
-_23:
- if _s1 <= i32(7) {
- goto _25
+ if _s1 > i32(7) {
+ _res = i32(-1)
+ goto _26
}
-
- _res = i32(-1)
- goto _26
-
-_25:
_res = _s1 - _s2
_26:
_24:
func() {
if _res == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86899), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCompareIntØ00__func__Ø000))), unsafe.Pointer(str(69012)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86899), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCompareIntØ00__func__Ø000))), unsafe.Pointer(str(68311)))
crt.X__builtin_abort(tls)
}
}()
if _res <= i32(0) {
goto _29
}
-
- if (int32(*_v1) & i32(128)) == 0 {
- goto _30
+ if (int32(*_v1) & i32(128)) != 0 {
+ _res = i32(-1)
}
-
- _res = i32(-1)
-_30:
goto _31
-
_29:
- if (int32(*_v2) & i32(128)) == 0 {
- goto _32
+ if (int32(*_v2) & i32(128)) != 0 {
+ _res = i32(1)
}
-
- _res = i32(1)
-_32:
_31:
_22:
_19:
if _res != i32(0) {
goto _33
}
-
- if int32((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X2) <= i32(1) {
- goto _34
+ if int32((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X2) > i32(1) {
+ _res = _vdbeSorterCompareTail(tls, _pTask, _pbKey2Cached, _pKey1, _nKey1, _pKey2, _nKey2)
}
-
- _res = _vdbeSorterCompareTail(tls, _pTask, _pbKey2Cached, _pKey1, _nKey1, _pKey2, _nKey2)
-_34:
goto _35
-
_33:
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X5)) + 1*uintptr(i32(0))))) == 0 {
- goto _36
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X5)) + 1*uintptr(i32(0))))) != 0 {
+ _res = _res * i32(-1)
}
-
- _res = _res * i32(-1)
-_36:
_35:
- r0 = _res
- return
+ return _res
}
-var _vdbeSorterCompareIntØ00__func__Ø000 [21]int8 // -
+var _vdbeSorterCompareIntØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterCompareIntØ00__func__Ø000[0], str(87876), 21)
+ crt.Xstrncpy(nil, &_vdbeSorterCompareIntØ00__func__Ø000[0], str(86306), 21)
}
-var _vdbeSorterCompareIntØ00aLenØ001 [10]uint8 // sqlite3.c:86877:21
+var _vdbeSorterCompareIntØ00aLenØ001 [10]uint8
func init() {
_vdbeSorterCompareIntØ00aLenØ001 = [10]uint8{0, 1, 2, 3, 4, 6, 8, 0, 0, 0}
}
-func _vdbeSorterCompareTail(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) { // sqlite3.c:86771:1
- var _r2 *XUnpackedRecord // sqlite3.c:86777:18
- _ = _r2
+// A version of vdbeSorterCompare() that assumes that it has already been
+// determined that the first field of key1 is equal to the first field of
+// key2.
+func _vdbeSorterCompareTail(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) {
+ var _r2 *XUnpackedRecord
_r2 = (*XUnpackedRecord)(_pTask.X3)
- if (*_pbKey2Cached) != i32(0) {
- goto _0
+ if (*_pbKey2Cached) == i32(0) {
+ _sqlite3VdbeRecordUnpack(tls, (*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7), _nKey2, _pKey2, _r2)
+ *_pbKey2Cached = i32(1)
}
-
- _sqlite3VdbeRecordUnpack(tls, (*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7), _nKey2, _pKey2, _r2)
- *_pbKey2Cached = i32(1)
-_0:
return _sqlite3VdbeRecordCompareWithSkip(tls, _nKey1, _pKey1, _r2, i32(1))
}
-func _vdbeSorterCompareText(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) { // sqlite3.c:86817:1
- var _p1 *uint8 // sqlite3.c:86823:12
- _ = _p1
- var _p2 *uint8 // sqlite3.c:86824:12
- _ = _p2
- var _v1 *uint8 // sqlite3.c:86825:12
- _ = _v1
- var _v2 *uint8 // sqlite3.c:86826:12
- _ = _v2
- var _n1 int32 // sqlite3.c:86828:7
- _ = _n1
- var _n2 int32 // sqlite3.c:86829:7
- _ = _n2
- var _res int32 // sqlite3.c:86830:7
- _ = _res
+// A specially optimized version of vdbeSorterCompare() that assumes that
+// the first field of each key is a TEXT value and that the collation
+// sequence to compare them with is BINARY.
+func _vdbeSorterCompareText(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) {
+ var _n1, _n2, _res int32
+ var _p1, _p2, _v1, _v2 *uint8
_p1 = (*uint8)(_pKey1)
_p2 = (*uint8)(_pKey2)
_v1 = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p1)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p1)) + 1*uintptr(i32(0)))))))
@@ -73853,71 +65696,62 @@ func _vdbeSorterCompareText(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *i
}
return _n2
}()))
- if _res != i32(0) {
- goto _6
+ if _res == i32(0) {
+ _res = _n1 - _n2
}
-
- _res = _n1 - _n2
-_6:
if _res != i32(0) {
goto _7
}
-
- if int32((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X2) <= i32(1) {
- goto _8
+ if int32((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X2) > i32(1) {
+ _res = _vdbeSorterCompareTail(tls, _pTask, _pbKey2Cached, _pKey1, _nKey1, _pKey2, _nKey2)
}
-
- _res = _vdbeSorterCompareTail(tls, _pTask, _pbKey2Cached, _pKey1, _nKey1, _pKey2, _nKey2)
-_8:
goto _9
-
_7:
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X5)) + 1*uintptr(i32(0))))) == 0 {
- goto _10
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7).X5)) + 1*uintptr(i32(0))))) != 0 {
+ _res = _res * i32(-1)
}
-
- _res = _res * i32(-1)
-_10:
_9:
- r0 = _res
- return
+ return _res
}
-func _vdbeSorterCompare(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) { // sqlite3.c:86798:1
- var _r2 *XUnpackedRecord // sqlite3.c:86804:18
- _ = _r2
+// Compare key1 (buffer pKey1, size nKey1 bytes) with key2 (buffer pKey2,
+// size nKey2 bytes). Use (pTask->pKeyInfo) for the collation sequences
+// used by the comparison. Return the result of the comparison.
+//
+// If IN/OUT parameter *pbKey2Cached is true when this function is called,
+// it is assumed that (pTask->pUnpacked) contains the unpacked version
+// of key2. If it is false, (pTask->pUnpacked) is populated with the unpacked
+// version of key2 and *pbKey2Cached set to true before returning.
+//
+// If an OOM error is encountered, (pTask->pUnpacked->error_rc) is set
+// to SQLITE_NOMEM.
+func _vdbeSorterCompare(tls *crt.TLS, _pTask *XSortSubtask, _pbKey2Cached *int32, _pKey1 unsafe.Pointer, _nKey1 int32, _pKey2 unsafe.Pointer, _nKey2 int32) (r0 int32) {
+ var _r2 *XUnpackedRecord
_r2 = (*XUnpackedRecord)(_pTask.X3)
- if (*_pbKey2Cached) != 0 {
- goto _0
+ if (*_pbKey2Cached) == 0 {
+ _sqlite3VdbeRecordUnpack(tls, (*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7), _nKey2, _pKey2, _r2)
+ *_pbKey2Cached = i32(1)
}
-
- _sqlite3VdbeRecordUnpack(tls, (*XKeyInfo)((*XVdbeSorter)(_pTask.X2).X7), _nKey2, _pKey2, _r2)
- *_pbKey2Cached = i32(1)
-_0:
return _sqlite3VdbeRecordCompare(tls, _nKey1, _pKey1, _r2)
}
-var _vdbeSorterSortØ00__func__Ø000 [15]int8 // -
+var _vdbeSorterSortØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterSortØ00__func__Ø000[0], str(87900), 15)
+ crt.Xstrncpy(nil, &_vdbeSorterSortØ00__func__Ø000[0], str(86327), 15)
}
-func _vdbeSorterMerge(tls *crt.TLS, _pTask *XSortSubtask, _p1 *XSorterRecord, _p2 *XSorterRecord) (r0 *XSorterRecord) { // sqlite3.c:87355:1
- var _pFinal *XSorterRecord // sqlite3.c:87360:16
- _ = _pFinal
- var _pp **XSorterRecord // sqlite3.c:87361:16
- _ = _pp
- var _bCached int32 // sqlite3.c:87362:7
- _ = _bCached
- var _1_res int32 // sqlite3.c:87366:9
- _ = _1_res
+// Merge the two sorted lists p1 and p2 into a single list.
+func _vdbeSorterMerge(tls *crt.TLS, _pTask *XSortSubtask, _p1 *XSorterRecord, _p2 *XSorterRecord) (r0 *XSorterRecord) {
+ var _bCached, _1_res int32
+ var _pFinal *XSorterRecord
+ var _pp **XSorterRecord
_pFinal = nil
_pp = &_pFinal
_bCached = i32(0)
func() {
if _p1 == nil || _p2 == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87364), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeØ00__func__Ø000))), unsafe.Pointer(str(87916)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87364), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeØ00__func__Ø000))), unsafe.Pointer(str(86342)))
crt.X__builtin_abort(tls)
}
}()
@@ -73928,61 +65762,45 @@ _3:
if _1_res > i32(0) {
goto _6
}
-
*_pp = _p1
- _pp = (**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p1)) + uintptr(4 /* X1 */)))))))
- _p1 = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p1)) + uintptr(4 /* X1 */))))))
- if _p1 != nil {
- goto _7
+ _pp = (**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p1)) + uintptr(4 /* X1 */)))))))
+ _p1 = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p1)) + uintptr(4 /* X1 */))))))
+ if _p1 == nil {
+ *_pp = _p2
+ goto _5
}
-
- *_pp = _p2
- goto _5
-
-_7:
goto _8
-
_6:
*_pp = _p2
- _pp = (**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p2)) + uintptr(4 /* X1 */)))))))
- _p2 = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p2)) + uintptr(4 /* X1 */))))))
+ _pp = (**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p2)) + uintptr(4 /* X1 */)))))))
+ _p2 = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p2)) + uintptr(4 /* X1 */))))))
_bCached = i32(0)
- if _p2 != nil {
- goto _9
+ if _p2 == nil {
+ *_pp = _p1
+ goto _5
}
-
- *_pp = _p1
- goto _5
-
-_9:
_8:
goto _3
-
_5:
return _pFinal
+
+ _ = _bCached
+ panic(0)
}
-var _vdbeSorterMergeØ00__func__Ø000 [16]int8 // -
+var _vdbeSorterMergeØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterMergeØ00__func__Ø000[0], str(87932), 16)
+ crt.Xstrncpy(nil, &_vdbeSorterMergeØ00__func__Ø000[0], str(86357), 16)
}
-func _vdbeSorterFlushPMA(tls *crt.TLS, _pSorter *XVdbeSorter) (r0 int32) { // sqlite3.c:87711:1
- var _rc int32 // sqlite3.c:87716:7
- _ = _rc
- var _i int32 // sqlite3.c:87717:7
- _ = _i
- var _pTask *XSortSubtask // sqlite3.c:87718:15
- _ = _pTask
- var _nWorker int32 // sqlite3.c:87719:7
- _ = _nWorker
- var _1_iTest int32 // sqlite3.c:87734:9
- _ = _1_iTest
- var _5_aMem *uint8 // sqlite3.c:87748:10
- _ = _5_aMem
- var _5_pCtx unsafe.Pointer // sqlite3.c:87749:12
- _ = _5_pCtx
+// Flush the current contents of VdbeSorter.list to a new PMA, possibly
+// using a background thread.
+func _vdbeSorterFlushPMA(tls *crt.TLS, _pSorter *XVdbeSorter) (r0 int32) {
+ var _rc, _i, _nWorker, _1_iTest int32
+ var _5_pCtx unsafe.Pointer
+ var _5_aMem *uint8
+ var _pTask *XSortSubtask
_rc = i32(0)
_pTask = nil
_nWorker = int32(_pSorter.X15) - i32(1)
@@ -73992,154 +65810,126 @@ _0:
if _i >= _nWorker {
goto _3
}
-
_1_iTest = ((int32(_pSorter.X14) + _i) + i32(1)) % _nWorker
_pTask = (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */))))) + 60*uintptr(_1_iTest)))
- if (_pTask.X1) == 0 {
- goto _4
+ if (_pTask.X1) != 0 {
+ _rc = _vdbeSorterJoinThread(tls, _pTask)
}
-
- _rc = _vdbeSorterJoinThread(tls, _pTask)
-_4:
- if _rc == i32(0) && (*XSQLiteThread)(_pTask.X0) != nil {
- goto _6
+ if (_rc != i32(0)) || ((*XSQLiteThread)(_pTask.X0) == nil) {
+ goto _3
}
-
- goto _3
-
-_6:
_i += 1
goto _0
-
_3:
if _rc != i32(0) {
goto _7
}
-
- if _i != _nWorker {
- goto _8
+ if _i == _nWorker {
+ _rc = _vdbeSorterListToPMA(tls, (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))+60*uintptr(_nWorker))), (*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))
+ goto _9
}
-
- _rc = _vdbeSorterListToPMA(tls, (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))+60*uintptr(_nWorker))), (*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))
- goto _9
-
-_8:
- _5_aMem = (*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))).X1
+ _5_aMem = (*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))).X1
_5_pCtx = (unsafe.Pointer)(_pTask)
func() {
if (*XSQLiteThread)(_pTask.X0) != nil || (_pTask.X1) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87751), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushPMAØ00__func__Ø000))), unsafe.Pointer(str(87948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87751), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushPMAØ00__func__Ø000))), unsafe.Pointer(str(86373)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87752), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushPMAØ00__func__Ø000))), unsafe.Pointer(str(87988)))
+ if (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87752), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushPMAØ00__func__Ø000))), unsafe.Pointer(str(86410)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X1) != nil && ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87753), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushPMAØ00__func__Ø000))), unsafe.Pointer(str(88012)))
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))).X1) != nil && ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87753), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushPMAØ00__func__Ø000))), unsafe.Pointer(str(86431)))
crt.X__builtin_abort(tls)
}
}()
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(58 /* X14 */))) = uint8(int32((uintptr(unsafe.Pointer(_pTask)) - uintptr(unsafe.Pointer((*XSortSubtask)(unsafe.Pointer((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))))) / 60))
- *(*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))) = _pSorter.X9
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */))) = i32(0)
- if _5_aMem == nil {
- goto _18
+ *(*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(16 /* X4 */))) = _pSorter.X9
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */))) = i32(0)
+ if _5_aMem != nil {
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = _5_aMem
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(52 /* X11 */))) = _sqlite3MallocSize(tls, (unsafe.Pointer)(_5_aMem))
+ goto _19
}
-
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = _5_aMem
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(52 /* X11 */))) = _sqlite3MallocSize(tls, (unsafe.Pointer)(_5_aMem))
- goto _19
-
-_18:
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
goto _20
}
-
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = (*uint8)(_sqlite3Malloc(tls, uint64(_pSorter.X11)))
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) != nil {
- goto _21
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = (*uint8)(_sqlite3Malloc(tls, uint64(_pSorter.X11)))
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
+ return _sqlite3NomemError(tls, i32(87764))
}
- return _sqlite3NomemError(tls, i32(87764))
-
-_21:
_20:
_19:
_rc = _vdbeSorterCreateThread(tls, _pTask, _vdbeSorterFlushThread, _5_pCtx)
_9:
_7:
- r0 = _rc
- return
+ return _rc
}
-func _vdbeSorterListToPMA(tls *crt.TLS, _pTask *XSortSubtask, _pList *t45) (r0 int32) { // sqlite3.c:87562:1
- var _db *Xsqlite3 // sqlite3.c:87563:11
- _ = _db
- var _rc int32 // sqlite3.c:87564:7
- _ = _rc
- var _writer XPmaWriter // sqlite3.c:87565:13
- _ = _writer
- var _iSz int64 // sqlite3.c:87570:7
- _ = _iSz
- var _4_p *XSorterRecord // sqlite3.c:87596:18
- _ = _4_p
- var _4_pNext *XSorterRecord // sqlite3.c:87597:18
- _ = _4_pNext
+// Write the current contents of in-memory linked-list pList to a level-0
+// PMA in the temp file belonging to sub-task pTask. Return SQLITE_OK if
+// successful, or an SQLite error code otherwise.
+//
+// The format of a PMA is:
+//
+// * A varint. This varint contains the total number of bytes of content
+// in the PMA (not including the varint itself).
+//
+// * One or more records packed end-to-end in order of ascending keys.
+// Each record consists of a varint followed by a blob of data (the
+// key). The varint is the number of bytes in the blob of data.
+func _vdbeSorterListToPMA(tls *crt.TLS, _pTask *XSortSubtask, _pList *t47) (r0 int32) {
+ var _rc int32
+ var _iSz int64
+ var _db *Xsqlite3
+ var _4_p, _4_pNext *XSorterRecord
+ var _writer XPmaWriter
_db = (*Xsqlite3)((*XVdbeSorter)(_pTask.X2).X6)
_rc = i32(0)
_iSz = int64((_pList.X2)+_sqlite3VarintLen(tls, uint64(_pList.X2))) + ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(36 /* X7 */))).X1)
crt.Xmemset(tls, (unsafe.Pointer)(&_writer), i32(0), u32(32))
func() {
if (_pList.X2) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87575), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(88064)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87575), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(86482)))
crt.X__builtin_abort(tls)
}
}()
- if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0) != nil {
- goto _2
+ if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0) == nil {
+ _rc = _vdbeSorterOpenTempFile(tls, _db, int64(i32(0)), (**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */)))))+uintptr(0 /* X0 */))))))
+ func() {
+ if _rc == i32(0) && (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87580), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(86497)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(36 /* X7 */))).X1) != int64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87581), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(86530)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pTask.X5) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87582), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(86550)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _rc = _vdbeSorterOpenTempFile(tls, _db, int64(i32(0)), (**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */)))))+uintptr(0 /* X0 */))))))
- func() {
- if _rc == i32(0) && (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87580), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(88080)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(36 /* X7 */))).X1) != int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87581), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(88116)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_pTask.X5) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87582), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(88136)))
- crt.X__builtin_abort(tls)
- }
- }()
-_2:
- if _rc != i32(0) {
- goto _10
+ if _rc == i32(0) {
+ _vdbeSorterExtendFile(tls, _db, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0), (((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X1)+int64(_pList.X2))+int64(i32(9)))
}
-
- _vdbeSorterExtendFile(tls, _db, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0), (((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X1)+int64(_pList.X2))+int64(i32(9)))
-_10:
- if _rc != i32(0) {
- goto _11
+ if _rc == i32(0) {
+ _rc = _vdbeSorterSort(tls, _pTask, _pList)
}
-
- _rc = _vdbeSorterSort(tls, _pTask, _pList)
-_11:
if _rc != i32(0) {
goto _12
}
-
_4_pNext = nil
_vdbePmaWriterInit(tls, (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X0), &_writer, (*XVdbeSorter)(_pTask.X2).X3, (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X1)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(28 /* X5 */))) += 1
@@ -74149,102 +65939,96 @@ _13:
if _4_p == nil {
goto _16
}
-
- _4_pNext = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_p)) + uintptr(4 /* X1 */))))))
+ _4_pNext = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_p)) + uintptr(4 /* X1 */))))))
_vdbePmaWriteVarint(tls, &_writer, uint64(_4_p.X0))
_vdbePmaWriteBlob(tls, &_writer, (*uint8)((unsafe.Pointer)((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer(_4_p))+uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(8))))))))))))), _4_p.X0)
- if (_pList.X1) != nil {
- goto _17
+ if (_pList.X1) == nil {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_4_p))
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_4_p))
-_17:
_4_p = _4_pNext
goto _13
-
_16:
*(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(0 /* X0 */))))) = _4_p
_rc = _vdbePmaWriterFinish(tls, &_writer, (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */)))))+uintptr(4 /* X1 */))))
_12:
func() {
if _rc == i32(0) && (*XSorterRecord)(_pList.X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87614), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(88152)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87614), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(86565)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _rc == i32(0) && ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))).X1) != _iSz {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87615), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(88188)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87615), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterListToPMAØ00__func__Ø000))), unsafe.Pointer(str(86598)))
crt.X__builtin_abort(tls)
}
}()
return _rc
+
+ _ = _writer
+ panic(0)
}
-var _vdbeSorterListToPMAØ00__func__Ø000 [20]int8 // -
+var _vdbeSorterListToPMAØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterListToPMAØ00__func__Ø000[0], str(88228), 20)
+ crt.Xstrncpy(nil, &_vdbeSorterListToPMAØ00__func__Ø000[0], str(86637), 20)
}
-func _vdbeSorterOpenTempFile(tls *crt.TLS, _db *Xsqlite3, _nExtend int64, _ppFd **Xsqlite3_file) (r0 int32) { // sqlite3.c:87314:1
- var _rc int32 // sqlite3.c:87319:7
- _ = _rc
- var _1_max int64 // sqlite3.c:87327:9
- _ = _1_max
- if _sqlite3FaultSim(tls, i32(202)) == 0 {
- goto _0
+// Allocate space for a file-handle and open a temporary file. If successful,
+// set *ppFd to point to the malloc'd file-handle and return SQLITE_OK.
+// Otherwise, set *ppFd to 0 and return an SQLite error code.
+func _vdbeSorterOpenTempFile(tls *crt.TLS, _db *Xsqlite3, _nExtend int64, _ppFd **Xsqlite3_file) (r0 int32) {
+ var _rc int32
+ var _1_max int64
+ if _sqlite3FaultSim(tls, i32(202)) != 0 {
+ return i32(3338)
}
- return i32(3338)
-
-_0:
_rc = _sqlite3OsOpenMalloc(tls, (*Xsqlite3_vfs)(_db.X0), nil, _ppFd, i32(4126), &_rc)
if _rc != i32(0) {
goto _1
}
-
_1_max = i64(2147418112)
_sqlite3OsFileControlHint(tls, *_ppFd, i32(18), (unsafe.Pointer)(&_1_max))
- if _nExtend <= int64(i32(0)) {
- goto _2
+ if _nExtend > int64(i32(0)) {
+ _vdbeSorterExtendFile(tls, _db, *_ppFd, _nExtend)
}
-
- _vdbeSorterExtendFile(tls, _db, *_ppFd, _nExtend)
-_2:
_1:
- r0 = _rc
- return
-}
+ return _rc
-func _vdbeSorterExtendFile(tls *crt.TLS, _db *Xsqlite3, _pFd *Xsqlite3_file, _nByte int64) { // sqlite3.c:87295:1
- var _1_p unsafe.Pointer // sqlite3.c:87297:10
- _ = _1_p
- var _1_chunksize int32 // sqlite3.c:87298:9
- _ = _1_chunksize
- if _nByte > int64(_db.X32) || ((*Xsqlite3_io_methods)(_pFd.X0).X0) < i32(3) {
- goto _1
+ _ = _1_max
+ panic(0)
+}
+
+// The first argument is a file-handle open on a temporary file. The file
+// is guaranteed to be nByte bytes or smaller in size. This function
+// attempts to extend the file to nByte bytes in size and to ensure that
+// the VFS has memory mapped it.
+//
+// Whether or not the file does end up memory mapped of course depends on
+// the specific VFS implementation.
+func _vdbeSorterExtendFile(tls *crt.TLS, _db *Xsqlite3, _pFd *Xsqlite3_file, _nByte int64) {
+ var _1_chunksize int32
+ var _1_p unsafe.Pointer
+ if (_nByte <= int64(_db.X32)) && (((*Xsqlite3_io_methods)(_pFd.X0).X0) >= i32(3)) {
+ _1_p = nil
+ _1_chunksize = i32(4096)
+ _sqlite3OsFileControlHint(tls, _pFd, i32(6), (unsafe.Pointer)(&_1_chunksize))
+ _sqlite3OsFileControlHint(tls, _pFd, i32(5), (unsafe.Pointer)(&_nByte))
+ _sqlite3OsFetch(tls, _pFd, int64(i32(0)), int32(_nByte), &_1_p)
+ _sqlite3OsUnfetch(tls, _pFd, int64(i32(0)), _1_p)
}
-
- _1_p = nil
- _1_chunksize = i32(4096)
- _sqlite3OsFileControlHint(tls, _pFd, i32(6), (unsafe.Pointer)(&_1_chunksize))
- _sqlite3OsFileControlHint(tls, _pFd, i32(5), (unsafe.Pointer)(&_nByte))
- _sqlite3OsFetch(tls, _pFd, int64(i32(0)), int32(_nByte), &_1_p)
- _sqlite3OsUnfetch(tls, _pFd, int64(i32(0)), _1_p)
-_1:
+ _ = _1_chunksize
}
-func _vdbePmaWriterInit(tls *crt.TLS, _pFd *Xsqlite3_file, _p *XPmaWriter, _nBuf int32, _iStart int64) { // sqlite3.c:87467:1
+// Initialize a PMA-writer object.
+func _vdbePmaWriterInit(tls *crt.TLS, _pFd *Xsqlite3_file, _p *XPmaWriter, _nBuf int32, _iStart int64) {
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(32))
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = (*uint8)(_sqlite3Malloc(tls, uint64(_nBuf)))
- if (_p.X1) != nil {
- goto _0
+ if (_p.X1) == nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3NomemError(tls, i32(87476))
+ goto _1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3NomemError(tls, i32(87476))
- goto _1
-
-_0:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(12 /* X3 */))), int32(_iStart%int64(_nBuf)))
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = _iStart - int64(_p.X3)
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = _nBuf
@@ -74252,54 +66036,47 @@ _0:
_1:
}
-func _vdbePmaWriteVarint(tls *crt.TLS, _p *XPmaWriter, _iVal uint64) { // sqlite3.c:87541:1
- var _nByte int32 // sqlite3.c:87542:7
- _ = _nByte
- var _aByte [10]uint8 // sqlite3.c:87543:6
- _ = _aByte
+// Write value iVal encoded as a varint to the PMA. Return
+// SQLITE_OK if successful, or an SQLite error code if an error occurs.
+func _vdbePmaWriteVarint(tls *crt.TLS, _p *XPmaWriter, _iVal uint64) {
+ var _nByte int32
+ var _aByte [10]uint8
_nByte = _sqlite3PutVarint(tls, (*uint8)(unsafe.Pointer(&_aByte)), _iVal)
_vdbePmaWriteBlob(tls, _p, (*uint8)(unsafe.Pointer(&_aByte)), _nByte)
+ _ = _aByte
}
-func _vdbePmaWriteBlob(tls *crt.TLS, _p *XPmaWriter, _pData *uint8, _nData int32) { // sqlite3.c:87489:1
- var _nRem int32 // sqlite3.c:87490:7
- _ = _nRem
- var _1_nCopy int32 // sqlite3.c:87492:9
- _ = _1_nCopy
+// Write nData bytes of data to the PMA. Return SQLITE_OK
+// if successful, or an SQLite error code if an error occurs.
+func _vdbePmaWriteBlob(tls *crt.TLS, _p *XPmaWriter, _pData *uint8, _nData int32) {
+ var _nRem, _1_nCopy int32
_nRem = _nData
_0:
if _nRem <= i32(0) || (_p.X0) != i32(0) {
goto _1
}
-
_1_nCopy = _nRem
- if _1_nCopy <= ((_p.X2) - (_p.X4)) {
- goto _3
+ if _1_nCopy > ((_p.X2) - (_p.X4)) {
+ _1_nCopy = (_p.X2) - (_p.X4)
}
-
- _1_nCopy = (_p.X2) - (_p.X4)
-_3:
crt.Xmemcpy(tls, (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1))+1*uintptr(_p.X4)))), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pData))+1*uintptr(_nData-_nRem)))), uint32(_1_nCopy))
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */)))
*p = (*p) + _1_nCopy
sink1 = *p
}
- if (_p.X4) != (_p.X2) {
- goto _4
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_p.X6), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1))+1*uintptr(_p.X3)))), (_p.X4)-(_p.X3), (_p.X5)+int64(_p.X3))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(16 /* X4 */))), i32(0))
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */)))
- *p = (*p) + int64(_p.X2)
- sink6 = *p
+ if (_p.X4) == (_p.X2) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_p.X6), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1))+1*uintptr(_p.X3)))), (_p.X4)-(_p.X3), (_p.X5)+int64(_p.X3))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(16 /* X4 */))), i32(0))
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */)))
+ *p = (*p) + int64(_p.X2)
+ sink6 = *p
+ }
}
-_4:
func() {
if (_p.X4) >= (_p.X2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87507), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaWriteBlobØ00__func__Ø000))), unsafe.Pointer(str(88248)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87507), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaWriteBlobØ00__func__Ø000))), unsafe.Pointer(str(86657)))
crt.X__builtin_abort(tls)
}
}()
@@ -74309,34 +66086,36 @@ _4:
sink1 = *p
}
goto _0
-
_1:
}
-var _vdbePmaWriteBlobØ00__func__Ø000 [17]int8 // -
+var _vdbePmaWriteBlobØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_vdbePmaWriteBlobØ00__func__Ø000[0], str(88272), 17)
+ crt.Xstrncpy(nil, &_vdbePmaWriteBlobØ00__func__Ø000[0], str(86679), 17)
}
-func _vdbePmaWriterFinish(tls *crt.TLS, _p *XPmaWriter, _piEof *int64) (r0 int32) { // sqlite3.c:87522:1
- var _rc int32 // sqlite3.c:87523:7
- _ = _rc
- if (_p.X0) != i32(0) || func() int32 {
+// Flush any buffered data to disk and clean up the PMA-writer object.
+// The results of using the PMA-writer after this call are undefined.
+// Return SQLITE_OK if flushing the buffered data succeeds or is not
+// required. Otherwise, return an SQLite error code.
+//
+// Before returning, set *piEof to the offset immediately following the
+// last byte written to the file.
+func _vdbePmaWriterFinish(tls *crt.TLS, _p *XPmaWriter, _piEof *int64) (r0 int32) {
+ var _rc int32
+ if (((_p.X0) == i32(0)) && func() int32 {
if (_p.X1) != nil {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87524), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaWriterFinishØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87524), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaWriterFinishØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 || (_p.X4) <= (_p.X3) {
- goto _4
+ }() != 0) && ((_p.X4) > (_p.X3)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_p.X6), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1))+1*uintptr(_p.X3)))), (_p.X4)-(_p.X3), (_p.X5)+int64(_p.X3))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _sqlite3OsWrite(tls, (*Xsqlite3_file)(_p.X6), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X1))+1*uintptr(_p.X3)))), (_p.X4)-(_p.X3), (_p.X5)+int64(_p.X3))
-_4:
*_piEof = (_p.X5) + int64(_p.X4)
Xsqlite3_free(tls, (unsafe.Pointer)(_p.X1))
_rc = _p.X0
@@ -74344,22 +66123,23 @@ _4:
return _rc
}
-var _vdbePmaWriterFinishØ00__func__Ø000 [20]int8 // -
+var _vdbePmaWriterFinishØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_vdbePmaWriterFinishØ00__func__Ø000[0], str(88292), 20)
+ crt.Xstrncpy(nil, &_vdbePmaWriterFinishØ00__func__Ø000[0], str(86696), 20)
}
-var _vdbeSorterFlushPMAØ00__func__Ø000 [19]int8 // -
+var _vdbeSorterFlushPMAØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterFlushPMAØ00__func__Ø000[0], str(88312), 19)
+ crt.Xstrncpy(nil, &_vdbeSorterFlushPMAØ00__func__Ø000[0], str(86716), 19)
}
-func _vdbeSorterCreateThread(tls *crt.TLS, _pTask *XSortSubtask, _xTask func(*crt.TLS, unsafe.Pointer) unsafe.Pointer, _pIn unsafe.Pointer) (r0 int32) { // sqlite3.c:87143:1
+// Launch a background thread to run xTask(pIn).
+func _vdbeSorterCreateThread(tls *crt.TLS, _pTask *XSortSubtask, _xTask func(*crt.TLS, unsafe.Pointer) unsafe.Pointer, _pIn unsafe.Pointer) (r0 int32) {
func() {
if (*XSQLiteThread)(_pTask.X0) != nil || (_pTask.X1) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87148), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCreateThreadØ00__func__Ø000))), unsafe.Pointer(str(87948)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87148), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterCreateThreadØ00__func__Ø000))), unsafe.Pointer(str(86373)))
crt.X__builtin_abort(tls)
}
}()
@@ -74367,20 +66147,19 @@ func _vdbeSorterCreateThread(tls *crt.TLS, _pTask *XSortSubtask, _xTask func(*cr
return _sqlite3ThreadCreate(tls, (**XSQLiteThread)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(0))))), _xTask, _pIn)
}
-var _vdbeSorterCreateThreadØ00__func__Ø000 [23]int8 // -
+var _vdbeSorterCreateThreadØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterCreateThreadØ00__func__Ø000[0], str(88332), 23)
+ crt.Xstrncpy(nil, &_vdbeSorterCreateThreadØ00__func__Ø000[0], str(86735), 23)
}
-func _sqlite3ThreadCreate(tls *crt.TLS, _ppThread **XSQLiteThread, _xTask func(*crt.TLS, unsafe.Pointer) unsafe.Pointer, _pIn unsafe.Pointer) (r0 int32) { // sqlite3.c:26897:1
- var _p *XSQLiteThread // sqlite3.c:26902:16
- _ = _p
- var _rc int32 // sqlite3.c:26903:7
- _ = _rc
+// Create a new thread
+func _sqlite3ThreadCreate(tls *crt.TLS, _ppThread **XSQLiteThread, _xTask func(*crt.TLS, unsafe.Pointer) unsafe.Pointer, _pIn unsafe.Pointer) (r0 int32) {
+ var _rc int32
+ var _p *XSQLiteThread
func() {
if _ppThread == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26905), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadCreateØ00__func__Ø000))), unsafe.Pointer(str(88356)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26905), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadCreateØ00__func__Ø000))), unsafe.Pointer(str(86758)))
crt.X__builtin_abort(tls)
}
}()
@@ -74390,100 +66169,81 @@ func _sqlite3ThreadCreate(tls *crt.TLS, _ppThread **XSQLiteThread, _xTask func(*
}{_xTask})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer) unsafe.Pointer
}{nil})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadCreateØ00__func__Ø000))), unsafe.Pointer(str(88368)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26906), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadCreateØ00__func__Ø000))), unsafe.Pointer(str(86770)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_sqlite3Config.X1) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(26908), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadCreateØ00__func__Ø000))), unsafe.Pointer(str(88380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(26908), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ThreadCreateØ00__func__Ø000))), unsafe.Pointer(str(86779)))
crt.X__builtin_abort(tls)
}
}()
*_ppThread = nil
_p = (*XSQLiteThread)(_sqlite3Malloc(tls, uint64(u32(20))))
- if _p != nil {
- goto _6
+ if _p == nil {
+ return _sqlite3NomemError(tls, i32(26912))
}
- return _sqlite3NomemError(tls, i32(26912))
-
-_6:
crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(20))
*(*func(*crt.TLS, unsafe.Pointer) unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = _xTask
*(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = _pIn
- if _sqlite3FaultSim(tls, i32(200)) == 0 {
- goto _7
+ if _sqlite3FaultSim(tls, i32(200)) != 0 {
+ _rc = i32(1)
+ goto _8
}
-
- _rc = i32(1)
- goto _8
-
-_7:
_rc = crt.Xpthread_create(tls, (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))), nil, _xTask, _pIn)
_8:
- if _rc == 0 {
- goto _9
+ if _rc != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = i32(1)
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = _xTask(tls, _pIn)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = i32(1)
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = _xTask(tls, _pIn)
-_9:
*_ppThread = _p
return i32(0)
}
-var _sqlite3ThreadCreateØ00__func__Ø000 [20]int8 // -
+var _sqlite3ThreadCreateØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ThreadCreateØ00__func__Ø000[0], str(88416), 20)
+ crt.Xstrncpy(nil, &_sqlite3ThreadCreateØ00__func__Ø000[0], str(86813), 20)
}
-func _vdbeSorterFlushThread(tls *crt.TLS, _pCtx unsafe.Pointer) (r0 unsafe.Pointer) { // sqlite3.c:87697:1
- var _pTask *XSortSubtask // sqlite3.c:87698:15
- _ = _pTask
- var _rc int32 // sqlite3.c:87699:7
- _ = _rc
+// The main routine for background threads that write level-0 PMAs.
+func _vdbeSorterFlushThread(tls *crt.TLS, _pCtx unsafe.Pointer) (r0 unsafe.Pointer) {
+ var _rc int32
+ var _pTask *XSortSubtask
_pTask = (*XSortSubtask)(_pCtx)
func() {
if (_pTask.X1) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87700), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushThreadØ00__func__Ø000))), unsafe.Pointer(str(88436)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87700), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterFlushThreadØ00__func__Ø000))), unsafe.Pointer(str(86833)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _vdbeSorterListToPMA(tls, _pTask, (*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))))
+ _rc = _vdbeSorterListToPMA(tls, _pTask, (*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(16 /* X4 */))))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(4 /* X1 */))) = i32(1)
return (unsafe.Pointer)(uintptr(_rc))
}
-var _vdbeSorterFlushThreadØ00__func__Ø000 [22]int8 // -
+var _vdbeSorterFlushThreadØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterFlushThreadØ00__func__Ø000[0], str(88452), 22)
+ crt.Xstrncpy(nil, &_vdbeSorterFlushThreadØ00__func__Ø000[0], str(86849), 22)
}
-func _vdbeSorterSetupMerge(tls *crt.TLS, _pSorter *XVdbeSorter) (r0 int32) { // sqlite3.c:88501:1
- var _rc int32 // sqlite3.c:88502:7
- _ = _rc
- var _pTask0 *XSortSubtask // sqlite3.c:88503:15
- _ = _pTask0
- var _pMain *XMergeEngine // sqlite3.c:88504:15
- _ = _pMain
- var _db *Xsqlite3 // sqlite3.c:88506:11
- _ = _db
- var _i int32 // sqlite3.c:88507:7
- _ = _i
- var _xCompare func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32 // sqlite3.c:88508:17
- _ = _xCompare
- var _3_iTask int32 // sqlite3.c:88519:11
- _ = _3_iTask
- var _3_pReadr *XPmaReader // sqlite3.c:88520:17
- _ = _3_pReadr
- var _3_pLast *XSortSubtask // sqlite3.c:88521:19
- _ = _3_pLast
- var _7_pIncr *XIncrMerger // sqlite3.c:88533:24
- _ = _7_pIncr
- var _9_p *XPmaReader // sqlite3.c:88549:23
- _ = _9_p
+// This function is called as part of an sqlite3VdbeSorterRewind() operation
+// on a sorter that has written two or more PMAs to temporary files. It sets
+// up either VdbeSorter.pMerger (for single threaded sorters) or pReader
+// (for multi-threaded sorters) so that it can be used to iterate through
+// all records stored in the sorter.
+//
+// SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+func _vdbeSorterSetupMerge(tls *crt.TLS, _pSorter *XVdbeSorter) (r0 int32) {
+ var _rc, _i, _3_iTask int32
+ var _db *Xsqlite3
+ var _3_pReadr, _9_p *XPmaReader
+ var _7_pIncr *XIncrMerger
+ var _pTask0, _3_pLast *XSortSubtask
+ var _xCompare func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32
+ var _pMain *XMergeEngine
_pTask0 = (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */))))) + 60*uintptr(i32(0))))
_pMain = nil
_db = (*Xsqlite3)((*XVdbeSorter)(_pTask0.X2).X6)
@@ -74493,204 +66253,157 @@ _0:
if _i >= int32(_pSorter.X15) {
goto _3
}
-
*(*func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))+60*uintptr(_i))))) + uintptr(32 /* X6 */))))) = _xCompare
_i += 1
goto _0
-
_3:
_rc = _vdbeSorterMergeTreeBuild(tls, _pSorter, &_pMain)
if _rc != i32(0) {
goto _4
}
-
func() {
if int32(_pSorter.X13) != i32(0) && int32(_pSorter.X15) <= i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88517), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSetupMergeØ00__func__Ø000))), unsafe.Pointer(str(88476)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88517), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSetupMergeØ00__func__Ø000))), unsafe.Pointer(str(86871)))
crt.X__builtin_abort(tls)
}
}()
if (_pSorter.X13) == 0 {
goto _8
}
-
_3_pReadr = nil
_3_pLast = (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */))))) + 60*uintptr(int32(_pSorter.X15)-i32(1))))
_rc = _vdbeSortAllocUnpacked(tls, _3_pLast)
if _rc != i32(0) {
goto _9
}
-
_3_pReadr = (*XPmaReader)(_sqlite3DbMallocZero(tls, _db, uint64(u32(52))))
*(**XPmaReader)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(16 /* X4 */))))) = _3_pReadr
- if _3_pReadr != nil {
- goto _10
+ if _3_pReadr == nil {
+ _rc = _sqlite3NomemError(tls, i32(88526))
}
-
- _rc = _sqlite3NomemError(tls, i32(88526))
-_10:
_9:
if _rc != i32(0) {
goto _11
}
-
_rc = _vdbeIncrMergerNew(tls, _3_pLast, _pMain, (**XIncrMerger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pReadr))+uintptr(48 /* X10 */))))))
if _rc != i32(0) {
goto _12
}
-
_vdbeIncrMergerSetThreads(tls, (*XIncrMerger)(_3_pReadr.X10))
_3_iTask = i32(0)
_13:
if _3_iTask >= (int32(_pSorter.X15) - i32(1)) {
goto _16
}
-
- if store53(&_7_pIncr, (*XIncrMerger)((*XPmaReader)(unsafe.Pointer(uintptr(_pMain.X3)+52*uintptr(_3_iTask))).X10)) == nil {
- goto _17
+ if store55(&_7_pIncr, (*XIncrMerger)((*XPmaReader)(unsafe.Pointer(uintptr(_pMain.X3)+52*uintptr(_3_iTask))).X10)) != nil {
+ _vdbeIncrMergerSetThreads(tls, _7_pIncr)
+ func() {
+ if (*XSortSubtask)(_7_pIncr.X0) == _3_pLast {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88536), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSetupMergeØ00__func__Ø000))), unsafe.Pointer(str(86915)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _vdbeIncrMergerSetThreads(tls, _7_pIncr)
- func() {
- if (*XSortSubtask)(_7_pIncr.X0) == _3_pLast {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88536), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSetupMergeØ00__func__Ø000))), unsafe.Pointer(str(88520)))
- crt.X__builtin_abort(tls)
- }
- }()
-_17:
_3_iTask += 1
goto _13
-
_16:
_3_iTask = i32(0)
_20:
if _rc != i32(0) || _3_iTask >= int32(_pSorter.X15) {
goto _24
}
-
_9_p = (*XPmaReader)(unsafe.Pointer(uintptr(_pMain.X3) + 52*uintptr(_3_iTask)))
func() {
if (*XIncrMerger)(_9_p.X10) != nil && ((*XSortSubtask)((*XIncrMerger)(_9_p.X10).X0) != (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))+60*uintptr(_3_iTask))) || _3_iTask == (int32(_pSorter.X15)-i32(1)) && ((*XIncrMerger)(_9_p.X10).X5) != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88550), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSetupMergeØ00__func__Ø000))), unsafe.Pointer(str(88540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88550), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterSetupMergeØ00__func__Ø000))), unsafe.Pointer(str(86935)))
crt.X__builtin_abort(tls)
}
}()
_rc = _vdbePmaReaderIncrInit(tls, _9_p, i32(1))
_3_iTask += 1
goto _20
-
_24:
_12:
_pMain = nil
_11:
- if _rc != i32(0) {
- goto _30
+ if _rc == i32(0) {
+ _rc = _vdbePmaReaderIncrMergeInit(tls, _3_pReadr, i32(2))
}
-
- _rc = _vdbePmaReaderIncrMergeInit(tls, _3_pReadr, i32(2))
-_30:
goto _31
-
_8:
_rc = _vdbeMergeEngineInit(tls, _pTask0, _pMain, i32(0))
*(**XMergeEngine)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(20 /* X5 */))))) = _pMain
_pMain = nil
_31:
_4:
- if _rc == i32(0) {
- goto _32
+ if _rc != i32(0) {
+ _vdbeMergeEngineFree(tls, _pMain)
}
-
- _vdbeMergeEngineFree(tls, _pMain)
-_32:
return _rc
}
-func _vdbeSorterMergeTreeBuild(tls *crt.TLS, _pSorter *XVdbeSorter, _ppOut **XMergeEngine) (r0 int32) { // sqlite3.c:88422:1
- var _pMain *XMergeEngine // sqlite3.c:88426:15
- _ = _pMain
- var _rc int32 // sqlite3.c:88427:7
- _ = _rc
- var _iTask int32 // sqlite3.c:88428:7
- _ = _iTask
- var _2_pTask *XSortSubtask // sqlite3.c:88442:17
- _ = _2_pTask
- var _3_pRoot *XMergeEngine // sqlite3.c:88445:19
- _ = _3_pRoot
- var _3_nDepth int32 // sqlite3.c:88446:11
- _ = _3_nDepth
- var _3_iReadOff int64 // sqlite3.c:88447:11
- _ = _3_iReadOff
- var _5_i int32 // sqlite3.c:88452:13
- _ = _5_i
- var _5_iSeq int32 // sqlite3.c:88453:13
- _ = _5_iSeq
- var _6_pMerger *XMergeEngine // sqlite3.c:88457:23
- _ = _6_pMerger
- var _6_nReader int32 // sqlite3.c:88458:15
- _ = _6_nReader
+// This function is called as part of a SorterRewind() operation on a sorter
+// that has already written two or more level-0 PMAs to one or more temp
+// files. It builds a tree of MergeEngine/IncrMerger/PmaReader objects that
+// can be used to incrementally merge all PMAs on disk.
+//
+// If successful, SQLITE_OK is returned and *ppOut set to point to the
+// MergeEngine object at the root of the tree before returning. Or, if an
+// error occurs, an SQLite error code is returned and the final value
+// of *ppOut is undefined.
+func _vdbeSorterMergeTreeBuild(tls *crt.TLS, _pSorter *XVdbeSorter, _ppOut **XMergeEngine) (r0 int32) {
+ var _rc, _iTask, _3_nDepth, _5_i, _5_iSeq, _6_nReader int32
+ var _3_iReadOff int64
+ var _2_pTask *XSortSubtask
+ var _pMain, _3_pRoot, _6_pMerger *XMergeEngine
_pMain = nil
_rc = i32(0)
func() {
if (_pSorter.X13) == 0 && int32(_pSorter.X15) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88434), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeTreeBuildØ00__func__Ø000))), unsafe.Pointer(str(88660)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88434), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeTreeBuildØ00__func__Ø000))), unsafe.Pointer(str(87052)))
crt.X__builtin_abort(tls)
}
}()
if int32(_pSorter.X15) <= i32(1) {
goto _3
}
-
_pMain = _vdbeMergeEngineNew(tls, int32(_pSorter.X15))
- if _pMain != nil {
- goto _4
+ if _pMain == nil {
+ _rc = _sqlite3NomemError(tls, i32(88437))
}
-
- _rc = _sqlite3NomemError(tls, i32(88437))
-_4:
_3:
_iTask = i32(0)
_5:
if _rc != i32(0) || _iTask >= int32(_pSorter.X15) {
goto _9
}
-
_2_pTask = (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */))))) + 60*uintptr(_iTask)))
func() {
if (_2_pTask.X5) <= i32(0) && i32(1) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88443), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeTreeBuildØ00__func__Ø000))), unsafe.Pointer(str(88704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88443), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeTreeBuildØ00__func__Ø000))), unsafe.Pointer(str(87094)))
crt.X__builtin_abort(tls)
}
}()
if i32(0) == 0 && (_2_pTask.X5) == 0 {
goto _14
}
-
_3_pRoot = nil
_3_nDepth = _vdbeSorterTreeDepth(tls, _2_pTask.X5)
_3_iReadOff = int64(i32(0))
- if (_2_pTask.X5) > i32(16) {
- goto _15
+ if (_2_pTask.X5) <= i32(16) {
+ _rc = _vdbeMergeEngineLevel0(tls, _2_pTask, _2_pTask.X5, &_3_iReadOff, &_3_pRoot)
+ goto _16
}
-
- _rc = _vdbeMergeEngineLevel0(tls, _2_pTask, _2_pTask.X5, &_3_iReadOff, &_3_pRoot)
- goto _16
-
-_15:
_5_iSeq = i32(0)
_3_pRoot = _vdbeMergeEngineNew(tls, i32(16))
- if _3_pRoot != nil {
- goto _17
+ if _3_pRoot == nil {
+ _rc = _sqlite3NomemError(tls, i32(88455))
}
-
- _rc = _sqlite3NomemError(tls, i32(88455))
-_17:
_5_i = i32(0)
_18:
if _5_i >= (_2_pTask.X5) || _rc != i32(0) {
goto _22
}
-
_6_pMerger = nil
_6_nReader = func() int32 {
if ((_2_pTask.X5) - _5_i) < i32(16) {
@@ -74699,95 +66412,82 @@ _18:
return i32(16)
}()
_rc = _vdbeMergeEngineLevel0(tls, _2_pTask, _6_nReader, &_3_iReadOff, &_6_pMerger)
- if _rc != i32(0) {
- goto _25
+ if _rc == i32(0) {
+ _rc = _vdbeSorterAddToTree(tls, _2_pTask, _3_nDepth, postInc1(&_5_iSeq, int32(1)), _3_pRoot, _6_pMerger)
}
-
- _rc = _vdbeSorterAddToTree(tls, _2_pTask, _3_nDepth, postInc1(&_5_iSeq, int32(1)), _3_pRoot, _6_pMerger)
-_25:
{
p := &_5_i
*p = (*p) + i32(16)
sink1 = *p
}
goto _18
-
_22:
_16:
if _rc != i32(0) {
goto _26
}
-
- if _pMain == nil {
- goto _27
+ if _pMain != nil {
+ _rc = _vdbeIncrMergerNew(tls, _2_pTask, _3_pRoot, (**XIncrMerger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPmaReader)(unsafe.Pointer(uintptr(_pMain.X3)+52*uintptr(_iTask)))))+uintptr(48 /* X10 */))))))
+ goto _28
}
-
- _rc = _vdbeIncrMergerNew(tls, _2_pTask, _3_pRoot, (**XIncrMerger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPmaReader)(unsafe.Pointer(uintptr(_pMain.X3)+52*uintptr(_iTask)))))+uintptr(48 /* X10 */))))))
- goto _28
-
-_27:
func() {
if _pMain != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88475), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeTreeBuildØ00__func__Ø000))), unsafe.Pointer(str(88752)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88475), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeSorterMergeTreeBuildØ00__func__Ø000))), unsafe.Pointer(str(87139)))
crt.X__builtin_abort(tls)
}
}()
_pMain = _3_pRoot
_28:
goto _31
-
_26:
_vdbeMergeEngineFree(tls, _3_pRoot)
_31:
_14:
_iTask += 1
goto _5
-
_9:
- if _rc == i32(0) {
- goto _32
+ if _rc != i32(0) {
+ _vdbeMergeEngineFree(tls, _pMain)
+ _pMain = nil
}
-
- _vdbeMergeEngineFree(tls, _pMain)
- _pMain = nil
-_32:
*_ppOut = _pMain
return _rc
+
+ _ = _3_iReadOff
+ _ = _5_iSeq
+ panic(0)
}
-var _vdbeSorterMergeTreeBuildØ00__func__Ø000 [25]int8 // -
+var _vdbeSorterMergeTreeBuildØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterMergeTreeBuildØ00__func__Ø000[0], str(88764), 25)
+ crt.Xstrncpy(nil, &_vdbeSorterMergeTreeBuildØ00__func__Ø000[0], str(87148), 25)
}
-func _vdbeMergeEngineNew(tls *crt.TLS, _nReader int32) (r0 *XMergeEngine) { // sqlite3.c:87186:1
- var _N int32 // sqlite3.c:87187:7
- _ = _N
- var _nByte int32 // sqlite3.c:87188:7
- _ = _nByte
- var _pNew *XMergeEngine // sqlite3.c:87189:15
- _ = _pNew
+// Allocate a new MergeEngine object capable of handling up to
+// nReader PmaReader inputs.
+//
+// nReader is automatically rounded up to the next power of two.
+// nReader may not exceed SORTER_MAX_MERGE_COUNT even after rounding up.
+func _vdbeMergeEngineNew(tls *crt.TLS, _nReader int32) (r0 *XMergeEngine) {
+ var _N, _nByte int32
+ var _pNew *XMergeEngine
_N = i32(2)
func() {
if _nReader > i32(16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87191), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineNewØ00__func__Ø000))), unsafe.Pointer(str(88792)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87191), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineNewØ00__func__Ø000))), unsafe.Pointer(str(87173)))
crt.X__builtin_abort(tls)
}
}()
_2:
- if _N >= _nReader {
- goto _3
- }
-
- {
- p := &_N
- *p = (*p) + _N
- sink1 = *p
+ if _N < _nReader {
+ {
+ p := &_N
+ *p = (*p) + _N
+ sink1 = *p
+ }
+ goto _2
}
- goto _2
-
-_3:
_nByte = int32(u32(16) + (uint32(_N) * u32(56)))
_pNew = func() *XMergeEngine {
if _sqlite3FaultSim(tls, i32(100)) != 0 {
@@ -74795,178 +66495,163 @@ _3:
}
return (*XMergeEngine)(_sqlite3MallocZero(tls, uint64(_nByte)))
}()
- if _pNew == nil {
- goto _6
+ if _pNew != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _N
+ *(**XSortSubtask)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))) = nil
+ *(**XPmaReader)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X3 */))))) = (*XPmaReader)(unsafe.Pointer((*XMergeEngine)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + 16*uintptr(i32(1))))))
+ *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X2 */))) = (*int32)(unsafe.Pointer((*XPmaReader)(unsafe.Pointer(uintptr(_pNew.X3) + 52*uintptr(_N)))))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _N
- *(**XSortSubtask)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))) = nil
- *(**XPmaReader)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X3 */))))) = (*XPmaReader)(unsafe.Pointer((*XMergeEngine)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + 16*uintptr(i32(1))))))
- *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X2 */))) = (*int32)(unsafe.Pointer((*XPmaReader)(unsafe.Pointer(uintptr(_pNew.X3) + 52*uintptr(_N)))))
-_6:
return _pNew
}
-var _vdbeMergeEngineNewØ00__func__Ø000 [19]int8 // -
+var _vdbeMergeEngineNewØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeMergeEngineNewØ00__func__Ø000[0], str(88824), 19)
+ crt.Xstrncpy(nil, &_vdbeMergeEngineNewØ00__func__Ø000[0], str(87205), 19)
}
-func _vdbeSorterTreeDepth(tls *crt.TLS, _nPMA int32) (r0 int32) { // sqlite3.c:88348:1
- var _nDepth int32 // sqlite3.c:88349:7
- _ = _nDepth
- var _nDiv int64 // sqlite3.c:88350:7
- _ = _nDiv
+// Return the depth of a tree comprising nPMA PMAs, assuming a fanout of
+// SORTER_MAX_MERGE_COUNT. The returned value does not include leaf nodes.
+//
+// i.e.
+//
+// nPMA<=16 -> TreeDepth() == 0
+// nPMA<=256 -> TreeDepth() == 1
+// nPMA<=65536 -> TreeDepth() == 2
+func _vdbeSorterTreeDepth(tls *crt.TLS, _nPMA int32) (r0 int32) {
+ var _nDepth int32
+ var _nDiv int64
_nDepth = i32(0)
_nDiv = i64(16)
_0:
- if _nDiv >= int64(_nPMA) {
- goto _1
+ if _nDiv < int64(_nPMA) {
+ _nDiv = _nDiv * int64(i32(16))
+ _nDepth += 1
+ goto _0
}
-
- _nDiv = _nDiv * int64(i32(16))
- _nDepth += 1
- goto _0
-
-_1:
return _nDepth
}
-func _vdbeMergeEngineLevel0(tls *crt.TLS, _pTask *XSortSubtask, _nPMA int32, _piOffset *int64, _ppOut **XMergeEngine) (r0 int32) { // sqlite3.c:88309:1
- var _pNew *XMergeEngine // sqlite3.c:88315:15
- _ = _pNew
- var _iOff int64 // sqlite3.c:88316:7
- _ = _iOff
- var _i int32 // sqlite3.c:88317:7
- _ = _i
- var _rc int32 // sqlite3.c:88318:7
- _ = _rc
- var _1_nDummy int64 // sqlite3.c:88324:9
- _ = _1_nDummy
- var _1_pReadr *XPmaReader // sqlite3.c:88325:15
- _ = _1_pReadr
+// Allocate a new MergeEngine object to merge the contents of nPMA level-0
+// PMAs from pTask->file. If no error occurs, set *ppOut to point to
+// the new object and return SQLITE_OK. Or, if an error does occur, set *ppOut
+// to NULL and return an SQLite error code.
+//
+// When this function is called, *piOffset is set to the offset of the
+// first PMA to read from pTask->file. Assuming no error occurs, it is
+// set to the offset immediately following the last byte of the last
+// PMA before returning. If an error does occur, then the final value of
+// *piOffset is undefined.
+func _vdbeMergeEngineLevel0(tls *crt.TLS, _pTask *XSortSubtask, _nPMA int32, _piOffset *int64, _ppOut **XMergeEngine) (r0 int32) {
+ var _i, _rc int32
+ var _iOff, _1_nDummy int64
+ var _1_pReadr *XPmaReader
+ var _pNew *XMergeEngine
_iOff = *_piOffset
_rc = i32(0)
- *_ppOut = store54(&_pNew, _vdbeMergeEngineNew(tls, _nPMA))
- if _pNew != nil {
- goto _0
+ *_ppOut = store56(&_pNew, _vdbeMergeEngineNew(tls, _nPMA))
+ if _pNew == nil {
+ _rc = _sqlite3NomemError(tls, i32(88321))
}
-
- _rc = _sqlite3NomemError(tls, i32(88321))
-_0:
_i = i32(0)
_1:
if _i >= _nPMA || _rc != i32(0) {
goto _5
}
-
_1_nDummy = int64(i32(0))
_1_pReadr = (*XPmaReader)(unsafe.Pointer(uintptr(_pNew.X3) + 52*uintptr(_i)))
_rc = _vdbePmaReaderInit(tls, _pTask, (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(36 /* X7 */))), _iOff, _1_pReadr, &_1_nDummy)
_iOff = _1_pReadr.X1
_i += 1
goto _1
-
_5:
- if _rc == i32(0) {
- goto _6
+ if _rc != i32(0) {
+ _vdbeMergeEngineFree(tls, _pNew)
+ *_ppOut = nil
}
-
- _vdbeMergeEngineFree(tls, _pNew)
- *_ppOut = nil
-_6:
*_piOffset = _iOff
return _rc
+
+ _ = _1_nDummy
+ panic(0)
}
-func _vdbePmaReaderInit(tls *crt.TLS, _pTask *XSortSubtask, _pFile *XSorterFile, _iStart int64, _pReadr *XPmaReader, _pnByte *int64) (r0 int32) { // sqlite3.c:86738:1
- var _rc int32 // sqlite3.c:86745:7
- _ = _rc
- var _1_nByte uint64 // sqlite3.c:86754:9
- _ = _1_nByte
+// Initialize PmaReader pReadr to scan through the PMA stored in file pFile
+// starting at offset iStart and ending at offset iEof-1. This function
+// leaves the PmaReader pointing to the first key in the PMA (or EOF if the
+// PMA is empty).
+//
+// If the pnByte parameter is NULL, then it is assumed that the file
+// contains a single PMA, and that that PMA omits the initial length varint.
+func _vdbePmaReaderInit(tls *crt.TLS, _pTask *XSortSubtask, _pFile *XSorterFile, _iStart int64, _pReadr *XPmaReader, _pnByte *int64) (r0 int32) {
+ var _rc int32
+ var _1_nByte uint64
func() {
if (_pFile.X1) <= _iStart {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86747), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(88844)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86747), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(87224)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pReadr.X5) != nil || (_pReadr.X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86748), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(88864)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86748), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(87243)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pReadr.X7) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86749), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(88904)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86749), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(87282)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (_pReadr.X9) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86750), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(88924)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86750), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderInitØ00__func__Ø000))), unsafe.Pointer(str(87301)))
crt.X__builtin_abort(tls)
}
}()
_rc = _vdbePmaReaderSeek(tls, _pTask, _pReadr, _pFile, _iStart)
- if _rc != i32(0) {
- goto _9
- }
-
- _1_nByte = u64(0)
- _rc = _vdbePmaReadVarint(tls, _pReadr, &_1_nByte)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(8 /* X1 */))) = int64(uint64(_pReadr.X0) + _1_nByte)
- {
- p := _pnByte
- *p = int64(uint64(*p) + _1_nByte)
- sink6 = *p
+ if _rc == i32(0) {
+ _1_nByte = u64(0)
+ _rc = _vdbePmaReadVarint(tls, _pReadr, &_1_nByte)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(8 /* X1 */))) = int64(uint64(_pReadr.X0) + _1_nByte)
+ {
+ p := _pnByte
+ *p = int64(uint64(*p) + _1_nByte)
+ sink6 = *p
+ }
}
-_9:
- if _rc != i32(0) {
- goto _10
+ if _rc == i32(0) {
+ _rc = _vdbePmaReaderNext(tls, _pReadr)
}
-
- _rc = _vdbePmaReaderNext(tls, _pReadr)
-_10:
return _rc
}
-var _vdbePmaReaderInitØ00__func__Ø000 [18]int8 // -
+var _vdbePmaReaderInitØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_vdbePmaReaderInitØ00__func__Ø000[0], str(88940), 18)
+ crt.Xstrncpy(nil, &_vdbePmaReaderInitØ00__func__Ø000[0], str(87317), 18)
}
-func _vdbePmaReaderSeek(tls *crt.TLS, _pTask *XSortSubtask, _pReadr *XPmaReader, _pFile *XSorterFile, _iOff int64) (r0 int32) { // sqlite3.c:86644:1
- var _rc int32 // sqlite3.c:86650:7
- _ = _rc
- var _2_pgsz int32 // sqlite3.c:86665:9
- _ = _2_pgsz
- var _2_iBuf int32 // sqlite3.c:86666:9
- _ = _2_iBuf
- var _4_nRead int32 // sqlite3.c:86673:11
- _ = _4_nRead
+// Attach PmaReader pReadr to file pFile (if it is not already attached to
+// that file) and seek it to offset iOff within the file. Return SQLITE_OK
+// if successful, or an SQLite error code if an error occurs.
+func _vdbePmaReaderSeek(tls *crt.TLS, _pTask *XSortSubtask, _pReadr *XPmaReader, _pFile *XSorterFile, _iOff int64) (r0 int32) {
+ var _rc, _2_pgsz, _2_iBuf, _4_nRead int32
_rc = i32(0)
func() {
if (*XIncrMerger)(_pReadr.X10) != nil && ((*XIncrMerger)(_pReadr.X10).X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86652), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderSeekØ00__func__Ø000))), unsafe.Pointer(str(88960)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86652), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderSeekØ00__func__Ø000))), unsafe.Pointer(str(87335)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3FaultSim(tls, i32(201)) == 0 {
- goto _3
+ if _sqlite3FaultSim(tls, i32(201)) != 0 {
+ return i32(266)
}
- return i32(266)
-
-_3:
- if (_pReadr.X9) == nil {
- goto _4
+ if (_pReadr.X9) != nil {
+ _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pReadr.X4), int64(i32(0)), (unsafe.Pointer)(_pReadr.X9))
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(44 /* X9 */))) = nil
}
-
- _sqlite3OsUnfetch(tls, (*Xsqlite3_file)(_pReadr.X4), int64(i32(0)), (unsafe.Pointer)(_pReadr.X9))
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(44 /* X9 */))) = nil
-_4:
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(0 /* X0 */))) = _iOff
*(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(8 /* X1 */))) = _pFile.X1
*(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(24 /* X4 */))))) = (*Xsqlite3_file)(_pFile.X0)
@@ -74974,162 +66659,123 @@ _4:
if _rc != i32(0) || (_pReadr.X9) != nil {
goto _6
}
-
_2_pgsz = (*XVdbeSorter)(_pTask.X2).X3
_2_iBuf = int32((_pReadr.X0) % int64(_2_pgsz))
if (_pReadr.X7) != nil {
goto _7
}
-
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(36 /* X7 */))) = (*uint8)(_sqlite3Malloc(tls, uint64(_2_pgsz)))
- if (_pReadr.X7) != nil {
- goto _8
+ if (_pReadr.X7) == nil {
+ _rc = _sqlite3NomemError(tls, i32(86669))
}
-
- _rc = _sqlite3NomemError(tls, i32(86669))
-_8:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(40 /* X8 */))) = _2_pgsz
_7:
if _rc != i32(0) || _2_iBuf == 0 {
goto _10
}
-
_4_nRead = _2_pgsz - _2_iBuf
- if ((_pReadr.X0) + int64(_4_nRead)) <= (_pReadr.X1) {
- goto _11
+ if ((_pReadr.X0) + int64(_4_nRead)) > (_pReadr.X1) {
+ _4_nRead = int32((_pReadr.X1) - (_pReadr.X0))
}
-
- _4_nRead = int32((_pReadr.X1) - (_pReadr.X0))
-_11:
_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_pReadr.X4), (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr.X7))+1*uintptr(_2_iBuf)))), _4_nRead, _pReadr.X0)
_10:
_6:
- r0 = _rc
- return
+ return _rc
}
-var _vdbePmaReaderSeekØ00__func__Ø000 [18]int8 // -
+var _vdbePmaReaderSeekØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_vdbePmaReaderSeekØ00__func__Ø000[0], str(89004), 18)
+ crt.Xstrncpy(nil, &_vdbePmaReaderSeekØ00__func__Ø000[0], str(87378), 18)
}
-func _vdbeSorterMapFile(tls *crt.TLS, _pTask *XSortSubtask, _pFile *XSorterFile, _pp **uint8) (r0 int32) { // sqlite3.c:86627:1
- var _rc int32 // sqlite3.c:86628:7
- _ = _rc
- var _1_pFd *Xsqlite3_file // sqlite3.c:86630:18
- _ = _1_pFd
+// Attempt to memory map file pFile. If successful, set *pp to point to the
+// new mapping and return SQLITE_OK. If the mapping is not attempted
+// (because the file is too large or the VFS layer is configured not to use
+// mmap), return SQLITE_OK and set *pp to NULL.
+//
+// Or, if an error occurs, return an SQLite error code. The final value of
+// *pp is undefined in this case.
+func _vdbeSorterMapFile(tls *crt.TLS, _pTask *XSortSubtask, _pFile *XSorterFile, _pp **uint8) (r0 int32) {
+ var _rc int32
+ var _1_pFd *Xsqlite3_file
_rc = i32(0)
if (_pFile.X1) > int64((*Xsqlite3)((*XVdbeSorter)(_pTask.X2).X6).X32) {
goto _0
}
-
_1_pFd = (*Xsqlite3_file)(_pFile.X0)
- if ((*Xsqlite3_io_methods)(_1_pFd.X0).X0) < i32(3) {
- goto _1
+ if ((*Xsqlite3_io_methods)(_1_pFd.X0).X0) >= i32(3) {
+ _rc = _sqlite3OsFetch(tls, _1_pFd, int64(i32(0)), int32(_pFile.X1), (*unsafe.Pointer)(unsafe.Pointer(_pp)))
}
-
- _rc = _sqlite3OsFetch(tls, _1_pFd, int64(i32(0)), int32(_pFile.X1), (*unsafe.Pointer)(unsafe.Pointer(_pp)))
-_1:
_0:
- r0 = _rc
- return
+ return _rc
}
-func _vdbePmaReadVarint(tls *crt.TLS, _p *XPmaReader, _pnOut *uint64) (r0 int32) { // sqlite3.c:86594:1
- var _iBuf int32 // sqlite3.c:86595:7
- _ = _iBuf
- var _4_aVarint [16]uint8 // sqlite3.c:86604:10
- _ = _4_aVarint
- var _4_a *uint8 // sqlite3.c:86604:23
- _ = _4_a
- var _4_i int32 // sqlite3.c:86605:11
- _ = _4_i
- var _4_rc int32 // sqlite3.c:86605:18
- _ = _4_rc
- if (_p.X9) == nil {
- goto _0
- }
-
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + int64(_sqlite3GetVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X9))+1*uintptr(_p.X0))), _pnOut))
- sink6 = *p
+// Read a varint from the stream of data accessed by p. Set *pnOut to
+// the value read.
+func _vdbePmaReadVarint(tls *crt.TLS, _p *XPmaReader, _pnOut *uint64) (r0 int32) {
+ var _iBuf, _4_i, _4_rc int32
+ var _4_a *uint8
+ var _4_aVarint [16]uint8
+ if (_p.X9) != nil {
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + int64(_sqlite3GetVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X9))+1*uintptr(_p.X0))), _pnOut))
+ sink6 = *p
+ }
+ goto _1
}
- goto _1
-
-_0:
_iBuf = int32((_p.X0) % int64(_p.X8))
- if _iBuf == 0 || ((_p.X8)-_iBuf) < i32(9) {
- goto _3
- }
-
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + int64(_sqlite3GetVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X7))+1*uintptr(_iBuf))), _pnOut))
- sink6 = *p
+ if _iBuf != 0 && (((_p.X8) - _iBuf) >= i32(9)) {
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + int64(_sqlite3GetVarint(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X7))+1*uintptr(_iBuf))), _pnOut))
+ sink6 = *p
+ }
+ goto _4
}
- goto _4
-
-_3:
_4_i = i32(0)
_5:
_4_rc = _vdbePmaReadBlob(tls, _p, i32(1), &_4_a)
- if _4_rc == 0 {
- goto _6
+ if _4_rc != 0 {
+ return _4_rc
}
- return _4_rc
-
-_6:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_4_aVarint)) + 1*uintptr(postInc1(&_4_i, int32(1))&i32(15)))) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_a)) + 1*uintptr(i32(0))))
if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_a)) + 1*uintptr(i32(0))))) & i32(128)) != i32(0) {
goto _5
}
-
_sqlite3GetVarint(tls, (*uint8)(unsafe.Pointer(&_4_aVarint)), _pnOut)
_4:
_1:
- r0 = i32(0)
- return
-}
-
-func _vdbePmaReadBlob(tls *crt.TLS, _p *XPmaReader, _nByte int32, _ppOut **uint8) (r0 int32) { // sqlite3.c:86500:1
- var _iBuf int32 // sqlite3.c:86505:7
- _ = _iBuf
- var _nAvail int32 // sqlite3.c:86506:7
- _ = _nAvail
- var _2_nRead int32 // sqlite3.c:86521:9
- _ = _2_nRead
- var _2_rc int32 // sqlite3.c:86522:9
- _ = _2_rc
- var _6_nRem int32 // sqlite3.c:86549:9
- _ = _6_nRem
- var _7_aNew *uint8 // sqlite3.c:86553:10
- _ = _7_aNew
- var _7_nNew int32 // sqlite3.c:86554:11
- _ = _7_nNew
- var _8_rc int32 // sqlite3.c:86571:11
- _ = _8_rc
- var _8_nCopy int32 // sqlite3.c:86572:11
- _ = _8_nCopy
- var _8_aNext *uint8 // sqlite3.c:86573:10
- _ = _8_aNext
- if (_p.X9) == nil {
- goto _0
- }
-
- *_ppOut = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X9)) + 1*uintptr(_p.X0)))
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + int64(_nByte)
- sink6 = *p
- }
return i32(0)
-_0:
+ _ = _4_aVarint
+ _ = _4_i
+ panic(0)
+}
+
+// Read the next nByte bytes of data from the PMA p.
+// If successful, set *ppOut to point to a buffer containing the data
+// and return SQLITE_OK. Otherwise, if an error occurs, return an SQLite
+// error code.
+//
+// The buffer returned in *ppOut is only valid until the
+// next call to this function.
+func _vdbePmaReadBlob(tls *crt.TLS, _p *XPmaReader, _nByte int32, _ppOut **uint8) (r0 int32) {
+ var _iBuf, _nAvail, _2_nRead, _2_rc, _6_nRem, _7_nNew, _8_rc, _8_nCopy int32
+ var _7_aNew, _8_aNext *uint8
+ if (_p.X9) != nil {
+ *_ppOut = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X9)) + 1*uintptr(_p.X0)))
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + int64(_nByte)
+ sink6 = *p
+ }
+ return i32(0)
+ }
func() {
if (_p.X7) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86514), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(89024)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86514), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(87396)))
crt.X__builtin_abort(tls)
}
}()
@@ -75137,55 +66783,42 @@ _0:
if _iBuf != i32(0) {
goto _3
}
-
- if ((_p.X1) - (_p.X0)) <= int64(_p.X8) {
- goto _4
+ if ((_p.X1) - (_p.X0)) > int64(_p.X8) {
+ _2_nRead = _p.X8
+ goto _5
}
-
- _2_nRead = _p.X8
- goto _5
-
-_4:
_2_nRead = int32((_p.X1) - (_p.X0))
_5:
func() {
if _2_nRead <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86530), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(89036)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86530), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(87407)))
crt.X__builtin_abort(tls)
}
}()
_2_rc = _sqlite3OsRead(tls, (*Xsqlite3_file)(_p.X4), (unsafe.Pointer)(_p.X7), _2_nRead, _p.X0)
func() {
if _2_rc == i32(522) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86534), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(89044)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86534), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(87415)))
crt.X__builtin_abort(tls)
}
}()
- if _2_rc == i32(0) {
- goto _10
+ if _2_rc != i32(0) {
+ return _2_rc
}
- return _2_rc
-
-_10:
_3:
_nAvail = (_p.X8) - _iBuf
- if _nByte > _nAvail {
- goto _11
+ if _nByte <= _nAvail {
+ *_ppOut = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X7)) + 1*uintptr(_iBuf)))
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
+ *p = (*p) + int64(_nByte)
+ sink6 = *p
+ }
+ goto _12
}
-
- *_ppOut = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X7)) + 1*uintptr(_iBuf)))
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */)))
- *p = (*p) + int64(_nByte)
- sink6 = *p
- }
- goto _12
-
-_11:
if (_p.X2) >= _nByte {
goto _13
}
-
_7_nNew = func() int32 {
if i32(128) > ((_p.X2) * i32(2)) {
return i32(128)
@@ -75193,21 +66826,14 @@ _11:
return ((_p.X2) * i32(2))
}()
_16:
- if _nByte <= _7_nNew {
- goto _17
+ if _nByte > _7_nNew {
+ _7_nNew = _7_nNew * i32(2)
+ goto _16
}
-
- _7_nNew = _7_nNew * i32(2)
- goto _16
-
-_17:
_7_aNew = (*uint8)(_sqlite3Realloc(tls, (unsafe.Pointer)(_p.X5), uint64(_7_nNew)))
- if _7_aNew != nil {
- goto _18
+ if _7_aNew == nil {
+ return _sqlite3NomemError(tls, i32(86557))
}
- return _sqlite3NomemError(tls, i32(86557))
-
-_18:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X2 */))) = _7_nNew
*(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X5 */))) = _7_aNew
_13:
@@ -75222,24 +66848,17 @@ _19:
if _6_nRem <= i32(0) {
goto _20
}
-
_8_nCopy = _6_nRem
- if _6_nRem <= (_p.X8) {
- goto _21
+ if _6_nRem > (_p.X8) {
+ _8_nCopy = _p.X8
}
-
- _8_nCopy = _p.X8
-_21:
_8_rc = _vdbePmaReadBlob(tls, _p, _8_nCopy, &_8_aNext)
- if _8_rc == i32(0) {
- goto _22
+ if _8_rc != i32(0) {
+ return _8_rc
}
- return _8_rc
-
-_22:
func() {
if _8_aNext == (_p.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(86579), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(89072)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(86579), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReadBlobØ00__func__Ø000))), unsafe.Pointer(str(87443)))
crt.X__builtin_abort(tls)
}
}()
@@ -75250,177 +66869,145 @@ _22:
sink1 = *p
}
goto _19
-
_20:
*_ppOut = _p.X5
_12:
return i32(0)
}
-var _vdbePmaReadBlobØ00__func__Ø000 [16]int8 // -
+var _vdbePmaReadBlobØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_vdbePmaReadBlobØ00__func__Ø000[0], str(89092), 16)
+ crt.Xstrncpy(nil, &_vdbePmaReadBlobØ00__func__Ø000[0], str(87460), 16)
}
-func _vdbePmaReaderNext(tls *crt.TLS, _pReadr *XPmaReader) (r0 int32) { // sqlite3.c:86691:1
- var _rc int32 // sqlite3.c:86692:7
- _ = _rc
- var _nRec uint64 // sqlite3.c:86693:7
- _ = _nRec
- var _1_pIncr *XIncrMerger // sqlite3.c:86697:16
- _ = _1_pIncr
- var _1_bEof int32 // sqlite3.c:86698:9
- _ = _1_bEof
+// Advance PmaReader pReadr to the next key in its PMA. Return SQLITE_OK if
+// no error occurs, or an SQLite error code if one does.
+func _vdbePmaReaderNext(tls *crt.TLS, _pReadr *XPmaReader) (r0 int32) {
+ var _rc, _1_bEof int32
+ var _nRec uint64
+ var _1_pIncr *XIncrMerger
_rc = i32(0)
_nRec = u64(0)
if (_pReadr.X0) < (_pReadr.X1) {
goto _0
}
-
_1_pIncr = (*XIncrMerger)(_pReadr.X10)
_1_bEof = i32(1)
if _1_pIncr == nil {
goto _1
}
-
_rc = _vdbeIncrSwap(tls, _1_pIncr)
- if _rc != i32(0) || (_1_pIncr.X4) != i32(0) {
- goto _3
+ if (_rc == i32(0)) && ((_1_pIncr.X4) == i32(0)) {
+ _rc = _vdbePmaReaderSeek(tls, (*XSortSubtask)(_1_pIncr.X0), _pReadr, (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(0)))), _1_pIncr.X2)
+ _1_bEof = i32(0)
}
-
- _rc = _vdbePmaReaderSeek(tls, (*XSortSubtask)(_1_pIncr.X0), _pReadr, (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(0)))), _1_pIncr.X2)
- _1_bEof = i32(0)
-_3:
_1:
- if _1_bEof == 0 {
- goto _4
+ if _1_bEof != 0 {
+ _vdbePmaReaderClear(tls, _pReadr)
+ return _rc
}
-
- _vdbePmaReaderClear(tls, _pReadr)
- return _rc
-
-_4:
_0:
- if _rc != i32(0) {
- goto _5
+ if _rc == i32(0) {
+ _rc = _vdbePmaReadVarint(tls, _pReadr, &_nRec)
}
-
- _rc = _vdbePmaReadVarint(tls, _pReadr, &_nRec)
-_5:
- if _rc != i32(0) {
- goto _6
+ if _rc == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(20 /* X3 */))) = int32(_nRec)
+ _rc = _vdbePmaReadBlob(tls, _pReadr, int32(_nRec), (**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr))+uintptr(32 /* X6 */))))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr)) + uintptr(20 /* X3 */))) = int32(_nRec)
- _rc = _vdbePmaReadBlob(tls, _pReadr, int32(_nRec), (**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pReadr))+uintptr(32 /* X6 */))))
-_6:
return _rc
}
-func _vdbeIncrSwap(tls *crt.TLS, _pIncr *XIncrMerger) (r0 int32) { // sqlite3.c:87962:1
- var _rc int32 // sqlite3.c:87963:7
- _ = _rc
- var _2_f0 XSorterFile // sqlite3.c:87970:18
- _ = _2_f0
+// This function is called when the PmaReader corresponding to pIncr has
+// finished reading the contents of aFile[0]. Its purpose is to "refill"
+// aFile[0] such that the PmaReader should start rereading it from the
+// beginning.
+//
+// For single-threaded objects, this is accomplished by literally reading
+// keys from pIncr->pMerger and repopulating aFile[0].
+//
+// For multi-threaded objects, all that is required is to wait until the
+// background thread is finished (if it is not already) and then swap
+// aFile[0] and aFile[1] in place. If the contents of pMerger have not
+// been exhausted, this function also launches a new background thread
+// to populate the new aFile[1].
+//
+// SQLITE_OK is returned on success, or an SQLite error code otherwise.
+func _vdbeIncrSwap(tls *crt.TLS, _pIncr *XIncrMerger) (r0 int32) {
+ var _rc int32
+ var _2_f0 XSorterFile
_rc = i32(0)
if (_pIncr.X5) == 0 {
goto _0
}
-
_rc = _vdbeSorterJoinThread(tls, (*XSortSubtask)(_pIncr.X0))
- if _rc != i32(0) {
- goto _1
+ if _rc == i32(0) {
+ _2_f0 = *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0))))
+ *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0)))) = *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(1))))
+ *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(1)))) = _2_f0
}
-
- _2_f0 = *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0))))
- *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0)))) = *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(1))))
- *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(1)))) = _2_f0
-_1:
if _rc != i32(0) {
goto _2
}
-
- if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0)))).X1) != (_pIncr.X2) {
- goto _3
+ if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0)))).X1) == (_pIncr.X2) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(20 /* X4 */))) = i32(1)
+ goto _4
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(20 /* X4 */))) = i32(1)
- goto _4
-
-_3:
_rc = _vdbeIncrBgPopulate(tls, _pIncr)
_4:
_2:
goto _5
-
_0:
_rc = _vdbeIncrPopulate(tls, _pIncr)
*(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0)))) = *(*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(1))))
- if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0)))).X1) != (_pIncr.X2) {
- goto _6
+ if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(0)))).X1) == (_pIncr.X2) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(20 /* X4 */))) = i32(1)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(20 /* X4 */))) = i32(1)
-_6:
_5:
- r0 = _rc
- return
+ return _rc
}
-func _vdbeIncrBgPopulate(tls *crt.TLS, _pIncr *XIncrMerger) (r0 int32) { // sqlite3.c:87938:1
- var _p unsafe.Pointer // sqlite3.c:87939:8
- _ = _p
+// Launch a background thread to populate aFile[1] of pIncr.
+func _vdbeIncrBgPopulate(tls *crt.TLS, _pIncr *XIncrMerger) (r0 int32) {
+ var _p unsafe.Pointer
_p = (unsafe.Pointer)(_pIncr)
func() {
if (_pIncr.X5) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87940), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeIncrBgPopulateØ00__func__Ø000))), unsafe.Pointer(str(89108)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87940), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeIncrBgPopulateØ00__func__Ø000))), unsafe.Pointer(str(87476)))
crt.X__builtin_abort(tls)
}
}()
return _vdbeSorterCreateThread(tls, (*XSortSubtask)(_pIncr.X0), _vdbeIncrPopulateThread, _p)
}
-var _vdbeIncrBgPopulateØ00__func__Ø000 [19]int8 // -
+var _vdbeIncrBgPopulateØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeIncrBgPopulateØ00__func__Ø000[0], str(89128), 19)
+ crt.Xstrncpy(nil, &_vdbeIncrBgPopulateØ00__func__Ø000[0], str(87494), 19)
}
-func _vdbeIncrPopulateThread(tls *crt.TLS, _pCtx unsafe.Pointer) (r0 unsafe.Pointer) { // sqlite3.c:87928:1
- var _pIncr *XIncrMerger // sqlite3.c:87929:14
- _ = _pIncr
- var _pRet unsafe.Pointer // sqlite3.c:87930:8
- _ = _pRet
+// The main routine for background threads that populate aFile[1] of
+// multi-threaded IncrMerger objects.
+func _vdbeIncrPopulateThread(tls *crt.TLS, _pCtx unsafe.Pointer) (r0 unsafe.Pointer) {
+ var _pRet unsafe.Pointer
+ var _pIncr *XIncrMerger
_pIncr = (*XIncrMerger)(_pCtx)
_pRet = (unsafe.Pointer)(uintptr(_vdbeIncrPopulate(tls, _pIncr)))
*(*int32)(unsafe.Pointer(uintptr(_pIncr.X0) + uintptr(4 /* X1 */))) = i32(1)
return _pRet
}
-func _vdbeIncrPopulate(tls *crt.TLS, _pIncr *XIncrMerger) (r0 int32) { // sqlite3.c:87886:1
- var _rc int32 // sqlite3.c:87887:7
- _ = _rc
- var _rc2 int32 // sqlite3.c:87888:7
- _ = _rc2
- var _iStart int64 // sqlite3.c:87889:7
- _ = _iStart
- var _pOut *XSorterFile // sqlite3.c:87890:14
- _ = _pOut
- var _pTask *XSortSubtask // sqlite3.c:87891:15
- _ = _pTask
- var _pMerger *XMergeEngine // sqlite3.c:87892:15
- _ = _pMerger
- var _writer XPmaWriter // sqlite3.c:87893:13
- _ = _writer
- var _1_dummy int32 // sqlite3.c:87900:9
- _ = _1_dummy
- var _1_pReader *XPmaReader // sqlite3.c:87901:15
- _ = _1_pReader
- var _1_nKey int32 // sqlite3.c:87902:9
- _ = _1_nKey
- var _1_iEof int64 // sqlite3.c:87903:9
- _ = _1_iEof
+// Read keys from pIncr->pMerger and populate pIncr->aFile[1]. The format
+// of the data stored in aFile[1] is the same as that used by regular PMAs,
+// except that the number-of-bytes varint is omitted from the start.
+func _vdbeIncrPopulate(tls *crt.TLS, _pIncr *XIncrMerger) (r0 int32) {
+ var _rc, _rc2, _1_dummy, _1_nKey int32
+ var _iStart, _1_iEof int64
+ var _1_pReader *XPmaReader
+ var _pTask *XSortSubtask
+ var _pOut *XSorterFile
+ var _pMerger *XMergeEngine
+ var _writer XPmaWriter
_rc = i32(0)
_iStart = _pIncr.X2
_pOut = (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */))))) + 12*uintptr(i32(1))))
@@ -75428,7 +67015,7 @@ func _vdbeIncrPopulate(tls *crt.TLS, _pIncr *XIncrMerger) (r0 int32) { // sqlite
_pMerger = (*XMergeEngine)(_pIncr.X1)
func() {
if (_pIncr.X4) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87894), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeIncrPopulateØ00__func__Ø000))), unsafe.Pointer(str(89148)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87894), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeIncrPopulateØ00__func__Ø000))), unsafe.Pointer(str(87513)))
crt.X__builtin_abort(tls)
}
}()
@@ -75437,76 +67024,58 @@ _2:
if _rc != i32(0) {
goto _3
}
-
_1_pReader = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(i32(1)))))))
_1_nKey = _1_pReader.X3
_1_iEof = (_writer.X5) + int64(_writer.X4)
- if (*Xsqlite3_file)(_1_pReader.X4) != nil {
- goto _4
+ if (*Xsqlite3_file)(_1_pReader.X4) == nil {
+ goto _3
}
-
- goto _3
-
-_4:
- if ((_1_iEof + int64(_1_nKey)) + int64(_sqlite3VarintLen(tls, uint64(_1_nKey)))) <= (_iStart + int64(_pIncr.X3)) {
- goto _5
+ if ((_1_iEof + int64(_1_nKey)) + int64(_sqlite3VarintLen(tls, uint64(_1_nKey)))) > (_iStart + int64(_pIncr.X3)) {
+ goto _3
}
-
- goto _3
-
-_5:
_vdbePmaWriteVarint(tls, &_writer, uint64(_1_nKey))
_vdbePmaWriteBlob(tls, &_writer, _1_pReader.X6, _1_nKey)
func() {
if (*XSortSubtask)((*XMergeEngine)(_pIncr.X1).X1) != _pTask {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87913), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeIncrPopulateØ00__func__Ø000))), unsafe.Pointer(str(89164)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87913), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeIncrPopulateØ00__func__Ø000))), unsafe.Pointer(str(87528)))
crt.X__builtin_abort(tls)
}
}()
_rc = _vdbeMergeEngineStep(tls, (*XMergeEngine)(_pIncr.X1), &_1_dummy)
goto _2
-
_3:
_rc2 = _vdbePmaWriterFinish(tls, &_writer, (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut))+uintptr(4 /* X1 */))))
- if _rc != i32(0) {
- goto _8
+ if _rc == i32(0) {
+ _rc = _rc2
}
-
- _rc = _rc2
-_8:
return _rc
+
+ _ = _writer
+ _ = _1_dummy
+ panic(0)
}
-var _vdbeIncrPopulateØ00__func__Ø000 [17]int8 // -
+var _vdbeIncrPopulateØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeIncrPopulateØ00__func__Ø000[0], str(89196), 17)
+ crt.Xstrncpy(nil, &_vdbeIncrPopulateØ00__func__Ø000[0], str(87557), 17)
}
-func _vdbeMergeEngineStep(tls *crt.TLS, _pMerger *XMergeEngine, _pbEof *int32) (r0 int32) { // sqlite3.c:87626:1
- var _rc int32 // sqlite3.c:87630:7
- _ = _rc
- var _iPrev int32 // sqlite3.c:87631:7
- _ = _iPrev
- var _pTask *XSortSubtask // sqlite3.c:87632:15
- _ = _pTask
- var _1_i int32 // sqlite3.c:87639:9
- _ = _1_i
- var _1_pReadr1 *XPmaReader // sqlite3.c:87640:15
- _ = _1_pReadr1
- var _1_pReadr2 *XPmaReader // sqlite3.c:87641:15
- _ = _1_pReadr2
- var _1_bCached int32 // sqlite3.c:87642:9
- _ = _1_bCached
- var _2_iRes int32 // sqlite3.c:87651:11
- _ = _2_iRes
+// Advance the MergeEngine to its next entry.
+// Set *pbEof to true there is no next entry because
+// the MergeEngine has reached the end of all its inputs.
+//
+// Return SQLITE_OK if successful or an error code if an error occurs.
+func _vdbeMergeEngineStep(tls *crt.TLS, _pMerger *XMergeEngine, _pbEof *int32) (r0 int32) {
+ var _rc, _iPrev, _1_i, _1_bCached, _2_iRes int32
+ var _1_pReadr1, _1_pReadr2 *XPmaReader
+ var _pTask *XSortSubtask
_iPrev = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(i32(1))))
_pTask = (*XSortSubtask)(_pMerger.X1)
_rc = _vdbePmaReaderNext(tls, (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3)+52*uintptr(_iPrev))))
if _rc != i32(0) {
goto _0
}
-
_1_bCached = i32(0)
_1_pReadr1 = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(_iPrev&i32(65534))))
_1_pReadr2 = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(_iPrev|i32(1))))
@@ -75515,50 +67084,33 @@ _1:
if _1_i <= i32(0) {
goto _4
}
-
- if (*Xsqlite3_file)(_1_pReadr1.X4) != nil {
- goto _5
+ if (*Xsqlite3_file)(_1_pReadr1.X4) == nil {
+ _2_iRes = i32(1)
+ goto _6
}
-
- _2_iRes = i32(1)
- goto _6
-
-_5:
- if (*Xsqlite3_file)(_1_pReadr2.X4) != nil {
- goto _7
+ if (*Xsqlite3_file)(_1_pReadr2.X4) == nil {
+ _2_iRes = i32(-1)
+ goto _8
}
-
- _2_iRes = i32(-1)
- goto _8
-
-_7:
_2_iRes = (*(*func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32
}{(_pTask.X6)})))(tls, _pTask, &_1_bCached, (unsafe.Pointer)(_1_pReadr1.X6), _1_pReadr1.X3, (unsafe.Pointer)(_1_pReadr2.X6), _1_pReadr2.X3)
_8:
_6:
- if _2_iRes >= i32(0) && (_2_iRes != i32(0) || uintptr(unsafe.Pointer(_1_pReadr1)) >= uintptr(unsafe.Pointer(_1_pReadr2))) {
- goto _11
+ if (_2_iRes < i32(0)) || ((_2_iRes == i32(0)) && (uintptr(unsafe.Pointer(_1_pReadr1)) < uintptr(unsafe.Pointer(_1_pReadr2)))) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_1_i))) = int32((uintptr(unsafe.Pointer(_1_pReadr1)) - uintptr(unsafe.Pointer((*XPmaReader)(_pMerger.X3)))) / 52)
+ _1_pReadr2 = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_1_i^i32(1)))))))
+ _1_bCached = i32(0)
+ goto _12
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_1_i))) = int32((uintptr(unsafe.Pointer(_1_pReadr1)) - uintptr(unsafe.Pointer((*XPmaReader)(_pMerger.X3)))) / 52)
- _1_pReadr2 = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_1_i^i32(1)))))))
- _1_bCached = i32(0)
- goto _12
-
-_11:
- if (*Xsqlite3_file)(_1_pReadr1.X4) == nil {
- goto _13
+ if (*Xsqlite3_file)(_1_pReadr1.X4) != nil {
+ _1_bCached = i32(0)
}
-
- _1_bCached = i32(0)
-_13:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_1_i))) = int32((uintptr(unsafe.Pointer(_1_pReadr2)) - uintptr(unsafe.Pointer((*XPmaReader)(_pMerger.X3)))) / 52)
_1_pReadr1 = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_1_i^i32(1)))))))
_12:
_1_i = _1_i / i32(2)
goto _1
-
_4:
*_pbEof = bool2int((*Xsqlite3_file)((*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3)+52*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(i32(1))))))).X4) == nil)
_0:
@@ -75568,25 +67120,22 @@ _0:
}
return _rc
}()
-}
-func _vdbeSorterAddToTree(tls *crt.TLS, _pTask *XSortSubtask, _nDepth int32, _iSeq int32, _pRoot *XMergeEngine, _pLeaf *XMergeEngine) (r0 int32) { // sqlite3.c:88366:1
- var _rc int32 // sqlite3.c:88373:7
- _ = _rc
- var _nDiv int32 // sqlite3.c:88374:7
- _ = _nDiv
- var _i int32 // sqlite3.c:88375:7
- _ = _i
- var _p *XMergeEngine // sqlite3.c:88376:15
- _ = _p
- var _pIncr *XIncrMerger // sqlite3.c:88377:14
- _ = _pIncr
- var _2_iIter int32 // sqlite3.c:88386:9
- _ = _2_iIter
- var _2_pReadr *XPmaReader // sqlite3.c:88387:15
- _ = _2_pReadr
- var _3_pNew *XMergeEngine // sqlite3.c:88390:19
- _ = _3_pNew
+ _ = _1_bCached
+ panic(0)
+}
+
+// pRoot is the root of an incremental merge-tree with depth nDepth (according
+// to vdbeSorterTreeDepth()). pLeaf is the iSeq'th leaf to be added to the
+// tree, counting from zero. This function adds pLeaf to the tree.
+//
+// If successful, SQLITE_OK is returned. If an error occurs, an SQLite error
+// code is returned and pLeaf is freed.
+func _vdbeSorterAddToTree(tls *crt.TLS, _pTask *XSortSubtask, _nDepth int32, _iSeq int32, _pRoot *XMergeEngine, _pLeaf *XMergeEngine) (r0 int32) {
+ var _rc, _nDiv, _i, _2_iIter int32
+ var _2_pReadr *XPmaReader
+ var _pIncr *XIncrMerger
+ var _p, _3_pNew *XMergeEngine
_rc = i32(0)
_nDiv = i32(1)
_p = _pRoot
@@ -75596,105 +67145,88 @@ _0:
if _i >= _nDepth {
goto _3
}
-
_nDiv = _nDiv * i32(16)
_i += 1
goto _0
-
_3:
_i = i32(1)
_4:
if _i >= _nDepth || _rc != i32(0) {
goto _8
}
-
_2_iIter = (_iSeq / _nDiv) % i32(16)
_2_pReadr = (*XPmaReader)(unsafe.Pointer(uintptr(_p.X3) + 52*uintptr(_2_iIter)))
if (*XIncrMerger)(_2_pReadr.X10) != nil {
goto _9
}
-
_3_pNew = _vdbeMergeEngineNew(tls, i32(16))
- if _3_pNew != nil {
- goto _10
+ if _3_pNew == nil {
+ _rc = _sqlite3NomemError(tls, i32(88392))
+ goto _11
}
-
- _rc = _sqlite3NomemError(tls, i32(88392))
- goto _11
-
-_10:
_rc = _vdbeIncrMergerNew(tls, _pTask, _3_pNew, (**XIncrMerger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pReadr))+uintptr(48 /* X10 */))))))
_11:
_9:
- if _rc != i32(0) {
- goto _12
+ if _rc == i32(0) {
+ _p = (*XMergeEngine)((*XIncrMerger)(_2_pReadr.X10).X1)
+ _nDiv = _nDiv / i32(16)
}
-
- _p = (*XMergeEngine)((*XIncrMerger)(_2_pReadr.X10).X1)
- _nDiv = _nDiv / i32(16)
-_12:
_i += 1
goto _4
-
_8:
- if _rc != i32(0) {
- goto _13
+ if _rc == i32(0) {
+ *(**XIncrMerger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPmaReader)(unsafe.Pointer(uintptr(_p.X3)+52*uintptr(_iSeq%i32(16)))))) + uintptr(48 /* X10 */))))) = _pIncr
+ goto _14
}
-
- *(**XIncrMerger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XPmaReader)(unsafe.Pointer(uintptr(_p.X3)+52*uintptr(_iSeq%i32(16)))))) + uintptr(48 /* X10 */))))) = _pIncr
- goto _14
-
-_13:
_vdbeIncrFree(tls, _pIncr)
_14:
return _rc
}
-func _vdbeIncrMergerNew(tls *crt.TLS, _pTask *XSortSubtask, _pMerger *XMergeEngine, _ppOut **XIncrMerger) (r0 int32) { // sqlite3.c:88001:1
- var _rc int32 // sqlite3.c:88006:7
- _ = _rc
- var _pIncr *XIncrMerger // sqlite3.c:88007:14
- _ = _pIncr
+// Allocate and return a new IncrMerger object to read data from pMerger.
+//
+// If an OOM condition is encountered, return NULL. In this case free the
+// pMerger argument before returning.
+func _vdbeIncrMergerNew(tls *crt.TLS, _pTask *XSortSubtask, _pMerger *XMergeEngine, _ppOut **XIncrMerger) (r0 int32) {
+ var _rc int32
+ var _pIncr *XIncrMerger
_rc = i32(0)
- _pIncr = store53(_ppOut, (*XIncrMerger)(func() unsafe.Pointer {
+ _pIncr = store55(_ppOut, (*XIncrMerger)(func() unsafe.Pointer {
if _sqlite3FaultSim(tls, i32(100)) != 0 {
return unsafe.Pointer(nil)
}
return _sqlite3MallocZero(tls, uint64(u32(52)))
}()))
- if _pIncr == nil {
- goto _2
- }
-
- *(**XMergeEngine)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(4 /* X1 */))))) = _pMerger
- *(**XSortSubtask)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(0 /* X0 */))))) = _pTask
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(16 /* X3 */))) = func() int32 {
- if (((*XVdbeSorter)(_pTask.X2).X2) + i32(9)) > (((*XVdbeSorter)(_pTask.X2).X1) / i32(2)) {
- return (((*XVdbeSorter)(_pTask.X2).X2) + i32(9))
+ if _pIncr != nil {
+ *(**XMergeEngine)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(4 /* X1 */))))) = _pMerger
+ *(**XSortSubtask)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(0 /* X0 */))))) = _pTask
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(16 /* X3 */))) = func() int32 {
+ if (((*XVdbeSorter)(_pTask.X2).X2) + i32(9)) > (((*XVdbeSorter)(_pTask.X2).X1) / i32(2)) {
+ return (((*XVdbeSorter)(_pTask.X2).X2) + i32(9))
+ }
+ return (((*XVdbeSorter)(_pTask.X2).X1) / i32(2))
+ }()
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))))) + uintptr(4 /* X1 */)))
+ *p = (*p) + int64(_pIncr.X3)
+ sink6 = *p
}
- return (((*XVdbeSorter)(_pTask.X2).X1) / i32(2))
- }()
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))))) + uintptr(4 /* X1 */)))
- *p = (*p) + int64(_pIncr.X3)
- sink6 = *p
+ goto _5
}
- goto _5
-
-_2:
_vdbeMergeEngineFree(tls, _pMerger)
_rc = _sqlite3NomemError(tls, i32(88016))
_5:
return _rc
}
-var _vdbeSorterSetupMergeØ00__func__Ø000 [21]int8 // -
+var _vdbeSorterSetupMergeØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeSorterSetupMergeØ00__func__Ø000[0], str(89216), 21)
+ crt.Xstrncpy(nil, &_vdbeSorterSetupMergeØ00__func__Ø000[0], str(87574), 21)
}
-func _vdbeIncrMergerSetThreads(tls *crt.TLS, _pIncr *XIncrMerger) { // sqlite3.c:88025:1
+// Set the "use-threads" flag on object pIncr.
+func _vdbeIncrMergerSetThreads(tls *crt.TLS, _pIncr *XIncrMerger) {
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(24 /* X5 */))) = i32(1)
{
p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr(_pIncr.X0)+uintptr(48 /* X8 */))))) + uintptr(4 /* X1 */)))
@@ -75703,69 +67235,94 @@ func _vdbeIncrMergerSetThreads(tls *crt.TLS, _pIncr *XIncrMerger) { // sqlite3.c
}
}
-func _vdbePmaReaderIncrInit(tls *crt.TLS, _pReadr *XPmaReader, _eMode int32) (r0 int32) { // sqlite3.c:88279:1
- var _pIncr *XIncrMerger // sqlite3.c:88280:14
- _ = _pIncr
- var _rc int32 // sqlite3.c:88281:7
- _ = _rc
- var _2_pCtx unsafe.Pointer // sqlite3.c:88286:12
- _ = _2_pCtx
+// If the PmaReader passed as the first argument is not an incremental-reader
+// (if pReadr->pIncr==0), then this function is a no-op. Otherwise, it invokes
+// the vdbePmaReaderIncrMergeInit() function with the parameters passed to
+// this routine to initialize the incremental merge.
+//
+// If the IncrMerger object is multi-threaded (IncrMerger.bUseThread==1),
+// then a background thread is launched to call vdbePmaReaderIncrMergeInit().
+// Or, if the IncrMerger is single threaded, the same function is called
+// using the current thread.
+func _vdbePmaReaderIncrInit(tls *crt.TLS, _pReadr *XPmaReader, _eMode int32) (r0 int32) {
+ var _rc int32
+ var _2_pCtx unsafe.Pointer
+ var _pIncr *XIncrMerger
_pIncr = (*XIncrMerger)(_pReadr.X10)
_rc = i32(0)
if _pIncr == nil {
goto _0
}
-
func() {
if (_pIncr.X5) != i32(0) && _eMode != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88284), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderIncrInitØ00__func__Ø000))), unsafe.Pointer(str(89240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88284), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderIncrInitØ00__func__Ø000))), unsafe.Pointer(str(87595)))
crt.X__builtin_abort(tls)
}
}()
- if (_pIncr.X5) == 0 {
- goto _4
+ if (_pIncr.X5) != 0 {
+ _2_pCtx = (unsafe.Pointer)(_pReadr)
+ _rc = _vdbeSorterCreateThread(tls, (*XSortSubtask)(_pIncr.X0), _vdbePmaReaderBgIncrInit, _2_pCtx)
+ goto _5
}
-
- _2_pCtx = (unsafe.Pointer)(_pReadr)
- _rc = _vdbeSorterCreateThread(tls, (*XSortSubtask)(_pIncr.X0), _vdbePmaReaderBgIncrInit, _2_pCtx)
- goto _5
-
-_4:
_rc = _vdbePmaReaderIncrMergeInit(tls, _pReadr, _eMode)
_5:
_0:
- r0 = _rc
- return
+ return _rc
}
-var _vdbePmaReaderIncrInitØ00__func__Ø000 [22]int8 // -
+var _vdbePmaReaderIncrInitØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_vdbePmaReaderIncrInitØ00__func__Ø000[0], str(89288), 22)
+ crt.Xstrncpy(nil, &_vdbePmaReaderIncrInitØ00__func__Ø000[0], str(87640), 22)
}
-func _vdbePmaReaderBgIncrInit(tls *crt.TLS, _pCtx unsafe.Pointer) (r0 unsafe.Pointer) { // sqlite3.c:88258:1
- var _pReader *XPmaReader // sqlite3.c:88259:13
- _ = _pReader
- var _pRet unsafe.Pointer // sqlite3.c:88260:8
- _ = _pRet
+// The main routine for vdbePmaReaderIncrMergeInit() operations run in
+// background threads.
+func _vdbePmaReaderBgIncrInit(tls *crt.TLS, _pCtx unsafe.Pointer) (r0 unsafe.Pointer) {
+ var _pRet unsafe.Pointer
+ var _pReader *XPmaReader
_pReader = (*XPmaReader)(_pCtx)
_pRet = (unsafe.Pointer)(uintptr(_vdbePmaReaderIncrMergeInit(tls, _pReader, i32(1))))
*(*int32)(unsafe.Pointer(uintptr((*XIncrMerger)(_pReader.X10).X0) + uintptr(4 /* X1 */))) = i32(1)
return _pRet
}
-func _vdbePmaReaderIncrMergeInit(tls *crt.TLS, _pReadr *XPmaReader, _eMode int32) (r0 int32) { // sqlite3.c:88191:1
- var _rc int32 // sqlite3.c:88192:7
- _ = _rc
- var _pIncr *XIncrMerger // sqlite3.c:88193:14
- _ = _pIncr
- var _pTask *XSortSubtask // sqlite3.c:88194:15
- _ = _pTask
- var _db *Xsqlite3 // sqlite3.c:88195:11
- _ = _db
- var _1_mxSz int32 // sqlite3.c:88206:9
- _ = _1_mxSz
+// The PmaReader passed as the first argument is guaranteed to be an
+// incremental-reader (pReadr->pIncr!=0). This function serves to open
+// and/or initialize the temp file related fields of the IncrMerge
+// object at (pReadr->pIncr).
+//
+// If argument eMode is set to INCRINIT_NORMAL, then all PmaReaders
+// in the sub-tree headed by pReadr are also initialized. Data is then
+// loaded into the buffers belonging to pReadr and it is set to point to
+// the first key in its range.
+//
+// If argument eMode is set to INCRINIT_TASK, then pReadr is guaranteed
+// to be a multi-threaded PmaReader and this function is being called in a
+// background thread. In this case all PmaReaders in the sub-tree are
+// initialized as for INCRINIT_NORMAL and the aFile[1] buffer belonging to
+// pReadr is populated. However, pReadr itself is not set up to point
+// to its first key. A call to vdbePmaReaderNext() is still required to do
+// that.
+//
+// The reason this function does not call vdbePmaReaderNext() immediately
+// in the INCRINIT_TASK case is that vdbePmaReaderNext() assumes that it has
+// to block on thread (pTask->thread) before accessing aFile[1]. But, since
+// this entire function is being run by thread (pTask->thread), that will
+// lead to the current background thread attempting to join itself.
+//
+// Finally, if argument eMode is set to INCRINIT_ROOT, it may be assumed
+// that pReadr->pIncr is a multi-threaded IncrMerge objects, and that all
+// child-trees have already been initialized using IncrInit(INCRINIT_TASK).
+// In this case vdbePmaReaderNext() is called on all child PmaReaders and
+// the current PmaReader set to point to the first key in its range.
+//
+// SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+func _vdbePmaReaderIncrMergeInit(tls *crt.TLS, _pReadr *XPmaReader, _eMode int32) (r0 int32) {
+ var _rc, _1_mxSz int32
+ var _db *Xsqlite3
+ var _pIncr *XIncrMerger
+ var _pTask *XSortSubtask
_rc = i32(0)
_pIncr = (*XIncrMerger)(_pReadr.X10)
_pTask = (*XSortSubtask)(_pIncr.X0)
@@ -75775,83 +67332,76 @@ func _vdbePmaReaderIncrMergeInit(tls *crt.TLS, _pReadr *XPmaReader, _eMode int32
if _rc != i32(0) {
goto _0
}
-
_1_mxSz = _pIncr.X3
if (_pIncr.X5) == 0 {
goto _1
}
-
_rc = _vdbeSorterOpenTempFile(tls, _db, int64(_1_mxSz), (**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(0))))))+uintptr(0 /* X0 */))))))
- if _rc != i32(0) {
- goto _2
+ if _rc == i32(0) {
+ _rc = _vdbeSorterOpenTempFile(tls, _db, int64(_1_mxSz), (**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1))))))+uintptr(0 /* X0 */))))))
}
-
- _rc = _vdbeSorterOpenTempFile(tls, _db, int64(_1_mxSz), (**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1))))))+uintptr(0 /* X0 */))))))
-_2:
goto _3
-
_1:
- if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X0) != nil {
- goto _4
+ if (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X0) == nil {
+ func() {
+ if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(48 /* X8 */))).X1) <= int64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88217), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderIncrMergeInitØ00__func__Ø000))), unsafe.Pointer(str(87662)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _vdbeSorterOpenTempFile(tls, _db, (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X1, (**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */)))))+uintptr(0 /* X0 */))))))
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))))) + uintptr(4 /* X1 */))) = int64(i32(0))
}
-
- func() {
- if ((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(48 /* X8 */))).X1) <= int64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88217), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderIncrMergeInitØ00__func__Ø000))), unsafe.Pointer(str(89312)))
- crt.X__builtin_abort(tls)
+ if _rc == i32(0) {
+ *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1)))))) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(48 /* X8 */))).X0)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(8 /* X2 */))) = (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(48 /* X8 */))).X1
+ {
+ p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))))) + uintptr(4 /* X1 */)))
+ *p = (*p) + int64(_1_mxSz)
+ sink6 = *p
}
- }()
- _rc = _vdbeSorterOpenTempFile(tls, _db, (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))).X1, (**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */)))))+uintptr(0 /* X0 */))))))
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))))) + uintptr(4 /* X1 */))) = int64(i32(0))
-_4:
- if _rc != i32(0) {
- goto _7
- }
-
- *(**Xsqlite3_file)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr))+uintptr(28 /* X6 */)))))+12*uintptr(i32(1)))))) + uintptr(0 /* X0 */))))) = (*Xsqlite3_file)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(48 /* X8 */))).X0)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIncr)) + uintptr(8 /* X2 */))) = (*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask)) + uintptr(48 /* X8 */))).X1
- {
- p := (*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XSorterFile)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTask))+uintptr(48 /* X8 */))))) + uintptr(4 /* X1 */)))
- *p = (*p) + int64(_1_mxSz)
- sink6 = *p
}
-_7:
_3:
_0:
- if _rc != i32(0) || (_pIncr.X5) == 0 {
- goto _9
+ if (_rc == i32(0)) && (_pIncr.X5) != 0 {
+ func() {
+ if _eMode != i32(2) && _eMode != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88241), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderIncrMergeInitØ00__func__Ø000))), unsafe.Pointer(str(87682)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _vdbeIncrPopulate(tls, _pIncr)
}
-
- func() {
- if _eMode != i32(2) && _eMode != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88241), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbePmaReaderIncrMergeInitØ00__func__Ø000))), unsafe.Pointer(str(89332)))
- crt.X__builtin_abort(tls)
- }
- }()
- _rc = _vdbeIncrPopulate(tls, _pIncr)
-_9:
- if _rc != i32(0) || i32(0) == 0 && _eMode == i32(1) {
- goto _15
+ if (_rc == i32(0)) && (i32(0) != 0 || (_eMode != i32(1))) {
+ _rc = _vdbePmaReaderNext(tls, _pReadr)
}
-
- _rc = _vdbePmaReaderNext(tls, _pReadr)
-_15:
return _rc
}
-func _vdbeMergeEngineInit(tls *crt.TLS, _pTask *XSortSubtask, _pMerger *XMergeEngine, _eMode int32) (r0 int32) { // sqlite3.c:88120:1
- var _rc int32 // sqlite3.c:88125:7
- _ = _rc
- var _i int32 // sqlite3.c:88126:7
- _ = _i
- var _nTree int32 // sqlite3.c:88127:7
- _ = _nTree
+// Initialize the MergeEngine object passed as the second argument. Once this
+// function returns, the first key of merged data may be read from the
+// MergeEngine object in the usual fashion.
+//
+// If argument eMode is INCRINIT_ROOT, then it is assumed that any IncrMerge
+// objects attached to the PmaReader objects that the merger reads from have
+// already been populated, but that they have not yet populated aFile[0] and
+// set the PmaReader objects up to read from it. In this case all that is
+// required is to call vdbePmaReaderNext() on each PmaReader to point it at
+// its first key.
+//
+// Otherwise, if eMode is any value other than INCRINIT_ROOT, then use
+// vdbePmaReaderIncrMergeInit() to initialize each PmaReader that feeds data
+// to pMerger.
+//
+// SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+func _vdbeMergeEngineInit(tls *crt.TLS, _pTask *XSortSubtask, _pMerger *XMergeEngine, _eMode int32) (r0 int32) {
+ var _rc, _i, _nTree int32
_rc = i32(0)
_nTree = _pMerger.X0
i32(0)
func() {
if (*XSortSubtask)(_pMerger.X1) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88133), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineInitØ00__func__Ø000))), unsafe.Pointer(str(89380)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88133), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineInitØ00__func__Ø000))), unsafe.Pointer(str(87727)))
crt.X__builtin_abort(tls)
}
}()
@@ -75861,293 +67411,221 @@ _2:
if _i >= _nTree {
goto _5
}
-
- if i32(1) == 0 || _eMode != i32(2) {
- goto _7
+ if i32(1) != 0 && (_eMode == i32(2)) {
+ _rc = _vdbePmaReaderNext(tls, (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3)+52*uintptr((_nTree-_i)-i32(1)))))
+ goto _8
}
-
- _rc = _vdbePmaReaderNext(tls, (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3)+52*uintptr((_nTree-_i)-i32(1)))))
- goto _8
-
-_7:
_rc = _vdbePmaReaderIncrInit(tls, (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3)+52*uintptr(_i))), i32(0))
_8:
- if _rc == i32(0) {
- goto _9
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_9:
_i += 1
goto _2
-
_5:
_i = (_pMerger.X0) - i32(1)
_10:
if _i <= i32(0) {
goto _13
}
-
_vdbeMergeEngineCompare(tls, _pMerger, _i)
_i -= 1
goto _10
-
_13:
return int32((*XUnpackedRecord)(_pTask.X3).X4)
}
-var _vdbeMergeEngineInitØ00__func__Ø000 [20]int8 // -
+var _vdbeMergeEngineInitØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeMergeEngineInitØ00__func__Ø000[0], str(89400), 20)
+ crt.Xstrncpy(nil, &_vdbeMergeEngineInitØ00__func__Ø000[0], str(87745), 20)
}
-func _vdbeMergeEngineCompare(tls *crt.TLS, _pMerger *XMergeEngine, _iOut int32) { // sqlite3.c:88038:1
- var _i1 int32 // sqlite3.c:88042:7
- _ = _i1
- var _i2 int32 // sqlite3.c:88043:7
- _ = _i2
- var _iRes int32 // sqlite3.c:88044:7
- _ = _iRes
- var _p1 *XPmaReader // sqlite3.c:88045:13
- _ = _p1
- var _p2 *XPmaReader // sqlite3.c:88046:13
- _ = _p2
- var _5_pTask *XSortSubtask // sqlite3.c:88066:17
- _ = _5_pTask
- var _5_bCached int32 // sqlite3.c:88067:9
- _ = _5_bCached
- var _5_res int32 // sqlite3.c:88068:9
- _ = _5_res
+// Recompute pMerger->aTree[iOut] by comparing the next keys on the
+// two PmaReaders that feed that entry. Neither of the PmaReaders
+// are advanced. This routine merely does the comparison.
+func _vdbeMergeEngineCompare(tls *crt.TLS, _pMerger *XMergeEngine, _iOut int32) {
+ var _i1, _i2, _iRes, _5_bCached, _5_res int32
+ var _p1, _p2 *XPmaReader
+ var _5_pTask *XSortSubtask
func() {
if _iOut >= (_pMerger.X0) || _iOut <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88048), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineCompareØ00__func__Ø000))), unsafe.Pointer(str(89420)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88048), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineCompareØ00__func__Ø000))), unsafe.Pointer(str(87765)))
crt.X__builtin_abort(tls)
}
}()
- if _iOut < ((_pMerger.X0) / i32(2)) {
- goto _3
+ if _iOut >= ((_pMerger.X0) / i32(2)) {
+ _i1 = (_iOut - ((_pMerger.X0) / i32(2))) * i32(2)
+ _i2 = _i1 + i32(1)
+ goto _4
}
-
- _i1 = (_iOut - ((_pMerger.X0) / i32(2))) * i32(2)
- _i2 = _i1 + i32(1)
- goto _4
-
-_3:
_i1 = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_iOut*i32(2))))
_i2 = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr((_iOut*i32(2))+i32(1))))
_4:
_p1 = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(_i1)))
_p2 = (*XPmaReader)(unsafe.Pointer(uintptr(_pMerger.X3) + 52*uintptr(_i2)))
- if (*Xsqlite3_file)(_p1.X4) != nil {
- goto _5
+ if (*Xsqlite3_file)(_p1.X4) == nil {
+ _iRes = _i2
+ goto _6
}
-
- _iRes = _i2
- goto _6
-
-_5:
- if (*Xsqlite3_file)(_p2.X4) != nil {
- goto _7
+ if (*Xsqlite3_file)(_p2.X4) == nil {
+ _iRes = _i1
+ goto _8
}
-
- _iRes = _i1
- goto _8
-
-_7:
_5_pTask = (*XSortSubtask)(_pMerger.X1)
_5_bCached = i32(0)
func() {
if (*XUnpackedRecord)(_5_pTask.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88069), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineCompareØ00__func__Ø000))), unsafe.Pointer(str(89452)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88069), unsafe.Pointer((*int8)(unsafe.Pointer(&_vdbeMergeEngineCompareØ00__func__Ø000))), unsafe.Pointer(str(87795)))
crt.X__builtin_abort(tls)
}
}()
_5_res = (*(*func(*crt.TLS, *XSortSubtask, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32)(unsafe.Pointer(&struct {
f func(*crt.TLS, unsafe.Pointer, *int32, unsafe.Pointer, int32, unsafe.Pointer, int32) int32
}{(_5_pTask.X6)})))(tls, _5_pTask, &_5_bCached, (unsafe.Pointer)(_p1.X6), _p1.X3, (unsafe.Pointer)(_p2.X6), _p2.X3)
- if _5_res > i32(0) {
- goto _11
+ if _5_res <= i32(0) {
+ _iRes = _i1
+ goto _12
}
-
- _iRes = _i1
- goto _12
-
-_11:
_iRes = _i2
_12:
_8:
_6:
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMerger.X2)) + 4*uintptr(_iOut))) = _iRes
+ _ = _5_bCached
}
-var _vdbeMergeEngineCompareØ00__func__Ø000 [23]int8 // -
+var _vdbeMergeEngineCompareØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_vdbeMergeEngineCompareØ00__func__Ø000[0], str(89472), 23)
+ crt.Xstrncpy(nil, &_vdbeMergeEngineCompareØ00__func__Ø000[0], str(87815), 23)
}
-var _vdbePmaReaderIncrMergeInitØ00__func__Ø000 [27]int8 // -
+var _vdbePmaReaderIncrMergeInitØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_vdbePmaReaderIncrMergeInitØ00__func__Ø000[0], str(89496), 27)
+ crt.Xstrncpy(nil, &_vdbePmaReaderIncrMergeInitØ00__func__Ø000[0], str(87838), 27)
}
-func _sqlite3VdbeSorterNext(tls *crt.TLS, _db *Xsqlite3, _pCsr *XVdbeCursor, _pbEof *int32) (r0 int32) { // sqlite3.c:88631:1
- var _pSorter *XVdbeSorter // sqlite3.c:88632:14
- _ = _pSorter
- var _rc int32 // sqlite3.c:88633:7
- _ = _rc
- var _4_pFree *XSorterRecord // sqlite3.c:88654:18
- _ = _4_pFree
+// Advance to the next element in the sorter.
+func _sqlite3VdbeSorterNext(tls *crt.TLS, _db *Xsqlite3, _pCsr *XVdbeCursor, _pbEof *int32) (r0 int32) {
+ var _rc int32
+ var _pSorter *XVdbeSorter
+ var _4_pFree *XSorterRecord
func() {
if int32(_pCsr.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88635), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(59856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88635), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(57861)))
crt.X__builtin_abort(tls)
}
}()
- _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
+ _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
func() {
if (_pSorter.X12) == 0 && ((*XPmaReader)(_pSorter.X4) != nil || (*XMergeEngine)(_pSorter.X5) != nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(89524)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88637), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(87865)))
crt.X__builtin_abort(tls)
}
}()
if (_pSorter.X12) == 0 {
goto _6
}
-
func() {
if (*XPmaReader)(_pSorter.X4) != nil && (*XMergeEngine)(_pSorter.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(89592)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(87930)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pSorter.X13) != i32(0) && (*XPmaReader)(_pSorter.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88640), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(89636)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88640), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(87973)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_pSorter.X13) != i32(1) && (*XMergeEngine)(_pSorter.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88641), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(89680)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88641), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(88017)))
crt.X__builtin_abort(tls)
}
}()
- if (_pSorter.X13) == 0 {
- goto _16
+ if (_pSorter.X13) != 0 {
+ _rc = _vdbePmaReaderNext(tls, (*XPmaReader)(_pSorter.X4))
+ *_pbEof = bool2int((*Xsqlite3_file)((*XPmaReader)(_pSorter.X4).X4) == nil)
+ goto _17
}
-
- _rc = _vdbePmaReaderNext(tls, (*XPmaReader)(_pSorter.X4))
- *_pbEof = bool2int((*Xsqlite3_file)((*XPmaReader)(_pSorter.X4).X4) == nil)
- goto _17
-
-_16:
func() {
if (*XMergeEngine)(_pSorter.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(89724)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88649), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(88061)))
crt.X__builtin_abort(tls)
}
}()
func() {
if (*XSortSubtask)((*XMergeEngine)(_pSorter.X5).X1) != (*XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XSortSubtask)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(64 /* X17 */)))))+60*uintptr(i32(0)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(88650), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(89744)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(88650), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterNextØ00__func__Ø000))), unsafe.Pointer(str(88081)))
crt.X__builtin_abort(tls)
}
}()
_rc = _vdbeMergeEngineStep(tls, (*XMergeEngine)(_pSorter.X5), _pbEof)
_17:
goto _22
-
_6:
- _4_pFree = (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X0)
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFree)) + uintptr(4 /* X1 */))))))
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFree)) + uintptr(4 /* X1 */))))))) = nil
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) != nil {
- goto _23
+ _4_pFree = (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X0)
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = (*XSorterRecord)(*(*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFree)) + uintptr(4 /* X1 */))))))
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFree)) + uintptr(4 /* X1 */))))))) = nil
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
+ _vdbeSorterRecordFree(tls, _db, _4_pFree)
}
-
- _vdbeSorterRecordFree(tls, _db, _4_pFree)
-_23:
- *_pbEof = bool2int((*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) == nil)
+ *_pbEof = bool2int((*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) == nil)
_rc = i32(0)
_22:
return _rc
}
-var _sqlite3VdbeSorterNextØ00__func__Ø000 [22]int8 // -
+var _sqlite3VdbeSorterNextØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterNextØ00__func__Ø000[0], str(89792), 22)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterNextØ00__func__Ø000[0], str(88127), 22)
}
-func _sqlite3VdbeSorterWrite(tls *crt.TLS, _pCsr *XVdbeCursor, _pVal *XMem) (r0 int32) { // sqlite3.c:87778:1
- var _pSorter *XVdbeSorter // sqlite3.c:87782:14
- _ = _pSorter
- var _rc int32 // sqlite3.c:87783:7
- _ = _rc
- var _pNew *XSorterRecord // sqlite3.c:87784:16
- _ = _pNew
- var _bFlush int32 // sqlite3.c:87785:7
- _ = _bFlush
- var _nReq int32 // sqlite3.c:87786:7
- _ = _nReq
- var _nPMA int32 // sqlite3.c:87787:7
- _ = _nPMA
- var _t int32 // sqlite3.c:87788:7
- _ = _t
- var _9_nMin int32 // sqlite3.c:87844:9
- _ = _9_nMin
- var _10_aNew *uint8 // sqlite3.c:87847:10
- _ = _10_aNew
- var _10_iListOff int32 // sqlite3.c:87848:11
- _ = _10_iListOff
- var _10_nNew int32 // sqlite3.c:87849:11
- _ = _10_nNew
+// Add a record to the sorter.
+func _sqlite3VdbeSorterWrite(tls *crt.TLS, _pCsr *XVdbeCursor, _pVal *XMem) (r0 int32) {
+ var _rc, _bFlush, _nReq, _nPMA, _t, _9_nMin, _10_iListOff, _10_nNew int32
+ var _10_aNew *uint8
+ var _pSorter *XVdbeSorter
+ var _pNew *XSorterRecord
_rc = i32(0)
func() {
if int32(_pCsr.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87790), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterWriteØ00__func__Ø000))), unsafe.Pointer(str(59856)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87790), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterWriteØ00__func__Ø000))), unsafe.Pointer(str(57861)))
crt.X__builtin_abort(tls)
}
}()
- _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
+ _pSorter = (*XVdbeSorter)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(36 /* X14 */))))))
func() {
if int32(*(*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal.X5)) + 1*uintptr(i32(1))))))) >= int32(u8(128)) {
_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVal.X5))+1*uintptr(i32(1)))))), (*uint32)(unsafe.Pointer(&_t)))
}
}()
- if _t <= i32(0) || _t >= i32(10) || _t == i32(7) {
- goto _6
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(60 /* X16 */)))
- *p = uint8(int32(*p) & i32(1))
- sink2 = *p
- }
- goto _7
-
-_6:
- if _t <= i32(10) || (_t&i32(1)) == 0 {
- goto _9
+ if ((_t > i32(0)) && (_t < i32(10))) && (_t != i32(7)) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(60 /* X16 */)))
+ *p = uint8(int32(*p) & i32(1))
+ sink2 = *p
+ }
+ goto _7
}
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(60 /* X16 */)))
- *p = uint8(int32(*p) & i32(2))
- sink2 = *p
+ if (_t > i32(10)) && (_t&i32(1)) != 0 {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(60 /* X16 */)))
+ *p = uint8(int32(*p) & i32(2))
+ sink2 = *p
+ }
+ goto _10
}
- goto _10
-
-_9:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(60 /* X16 */))) = uint8(i32(0))
_10:
_7:
func() {
if _pSorter == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterWriteØ00__func__Ø000))), unsafe.Pointer(str(87604)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterWriteØ00__func__Ø000))), unsafe.Pointer(str(86043)))
crt.X__builtin_abort(tls)
}
}()
@@ -76156,386 +67634,319 @@ _7:
if (_pSorter.X1) == 0 {
goto _13
}
-
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
- goto _14
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) != nil {
+ _bFlush = bool2int((_pSorter.X10) != 0 && (((_pSorter.X10) + _nReq) > (_pSorter.X1)))
+ goto _16
}
-
- _bFlush = bool2int((_pSorter.X10) != 0 && (((_pSorter.X10) + _nReq) > (_pSorter.X1)))
- goto _16
-
-_14:
- _bFlush = bool2int((((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X2) > (_pSorter.X1)) || ((((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X2) > (_pSorter.X0)) && _sqlite3HeapNearlyFull(tls) != 0))
+ _bFlush = bool2int((((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X2) > (_pSorter.X1)) || ((((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X2) > (_pSorter.X0)) && _sqlite3HeapNearlyFull(tls) != 0))
_16:
- if _bFlush == 0 {
- goto _19
+ if _bFlush != 0 {
+ _rc = _vdbeSorterFlushPMA(tls, _pSorter)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(48 /* X10 */))) = i32(0)
+ func() {
+ if _rc == i32(0) && (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(87834), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterWriteØ00__func__Ø000))), unsafe.Pointer(str(88149)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _rc = _vdbeSorterFlushPMA(tls, _pSorter)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(48 /* X10 */))) = i32(0)
- func() {
- if _rc == i32(0) && (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(87834), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSorterWriteØ00__func__Ø000))), unsafe.Pointer(str(89816)))
- crt.X__builtin_abort(tls)
- }
- }()
-_19:
_13:
{
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */)))
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(8 /* X2 */)))
*p = (*p) + _nPMA
sink1 = *p
}
- if _nPMA <= (_pSorter.X2) {
- goto _23
+ if _nPMA > (_pSorter.X2) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(8 /* X2 */))) = _nPMA
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(8 /* X2 */))) = _nPMA
-_23:
- if ((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
+ if ((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X1) == nil {
goto _24
}
-
_9_nMin = (_pSorter.X10) + _nReq
if _9_nMin <= (_pSorter.X11) {
goto _25
}
-
- _10_iListOff = int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))))) - uintptr(unsafe.Pointer((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1))) / 1)
+ _10_iListOff = int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))))) - uintptr(unsafe.Pointer((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1))) / 1)
_10_nNew = (_pSorter.X11) * i32(2)
_26:
- if _10_nNew >= _9_nMin {
- goto _27
+ if _10_nNew < _9_nMin {
+ _10_nNew = _10_nNew * i32(2)
+ goto _26
}
-
- _10_nNew = _10_nNew * i32(2)
- goto _26
-
-_27:
- if _10_nNew <= (_pSorter.X1) {
- goto _28
+ if _10_nNew > (_pSorter.X1) {
+ _10_nNew = _pSorter.X1
}
-
- _10_nNew = _pSorter.X1
-_28:
- if _10_nNew >= _9_nMin {
- goto _29
+ if _10_nNew < _9_nMin {
+ _10_nNew = _9_nMin
}
-
- _10_nNew = _9_nMin
-_29:
- _10_aNew = (*uint8)(_sqlite3Realloc(tls, (unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1), uint64(_10_nNew)))
- if _10_aNew != nil {
- goto _30
+ _10_aNew = (*uint8)(_sqlite3Realloc(tls, (unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1), uint64(_10_nNew)))
+ if _10_aNew == nil {
+ return _sqlite3NomemError(tls, i32(87855))
}
- return _sqlite3NomemError(tls, i32(87855))
-
-_30:
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = (*XSorterRecord)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_aNew)) + 1*uintptr(_10_iListOff)))))
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = _10_aNew
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = (*XSorterRecord)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_aNew)) + 1*uintptr(_10_iListOff)))))
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(4 /* X1 */))) = _10_aNew
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(52 /* X11 */))) = _10_nNew
_25:
- _pNew = (*XSorterRecord)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1)) + 1*uintptr(_pSorter.X10)))))
+ _pNew = (*XSorterRecord)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1)) + 1*uintptr(_pSorter.X10)))))
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(48 /* X10 */)))
*p = (*p) + ((_nReq + i32(7)) & i32(-8))
sink1 = *p
}
- if (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) == nil {
- goto _31
+ if (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0) != nil {
+ *(*int32)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))) = int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))))) - uintptr(unsafe.Pointer((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1))) / 1)
}
-
- *(*int32)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))) = int32((uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer((*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X0))))) - uintptr(unsafe.Pointer((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))).X1))) / 1)
-_31:
goto _32
-
_24:
_pNew = (*XSorterRecord)(_sqlite3Malloc(tls, uint64(_nReq)))
- if _pNew != nil {
- goto _33
+ if _pNew == nil {
+ return _sqlite3NomemError(tls, i32(87869))
}
- return _sqlite3NomemError(tls, i32(87869))
-
-_33:
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))))) = (*XSorterRecord)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X0)
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t48)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))))))) = (*XSorterRecord)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter)) + uintptr(36 /* X9 */))).X0)
_32:
crt.Xmemcpy(tls, (unsafe.Pointer)((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer(_pNew))+uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(i32(1))))))*uintptr(unsafe.Pointer((*XSorterRecord)(unsafe.Pointer(uintptr(8)))))))))))), (unsafe.Pointer)(_pVal.X5), uint32(_pVal.X4))
*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _pVal.X4
- *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t45)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = _pNew
+ *(**XSorterRecord)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t47)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSorter))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))))) = _pNew
return _rc
}
-var _sqlite3VdbeSorterWriteØ00__func__Ø000 [23]int8 // -
+var _sqlite3VdbeSorterWriteØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSorterWriteØ00__func__Ø000[0], str(89856), 23)
+ crt.Xstrncpy(nil, &_sqlite3VdbeSorterWriteØ00__func__Ø000[0], str(88189), 23)
}
-func _sqlite3HeapNearlyFull(tls *crt.TLS) (r0 int32) { // sqlite3.c:24386:1
- return _mem0.X5
-}
-
-func _sqlite3VdbeIdxRowid(tls *crt.TLS, _db *Xsqlite3, _pCur *XBtCursor, _rowid *int64) (r0 int32) { // sqlite3.c:75801:1
- var _nCellKey int64 // sqlite3.c:75802:7
- _ = _nCellKey
- var _rc int32 // sqlite3.c:75803:7
- _ = _rc
- var _szHdr uint32 // sqlite3.c:75804:7
- _ = _szHdr
- var _typeRowid uint32 // sqlite3.c:75805:7
- _ = _typeRowid
- var _lenRowid uint32 // sqlite3.c:75806:7
- _ = _lenRowid
- var _m XMem // sqlite3.c:75807:7
- _ = _m
- var _v XMem // sqlite3.c:75807:10
- _ = _v
+// pCur points at an index entry created using the OP_MakeRecord opcode.
+// Read the rowid (the last field in the record) and store it in *rowid.
+// Return SQLITE_OK if everything works, or an error code otherwise.
+//
+// pCur might be pointing to text obtained from a corrupt database file.
+// So the content cannot be trusted. Do appropriate checks on the content.
+func _sqlite3VdbeIdxRowid(tls *crt.TLS, _db *Xsqlite3, _pCur *XBtCursor, _rowid *int64) (r0 int32) {
+ var _rc int32
+ var _nCellKey int64
+ var _szHdr, _typeRowid, _lenRowid uint32
+ var _m, _v XMem
_nCellKey = i64(0)
func() {
if _sqlite3BtreeCursorIsValid(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxRowidØ00__func__Ø000))), unsafe.Pointer(str(78540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75814), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxRowidØ00__func__Ø000))), unsafe.Pointer(str(77407)))
crt.X__builtin_abort(tls)
}
}()
_nCellKey = int64(_sqlite3BtreePayloadSize(tls, _pCur))
func() {
if (uint64(_nCellKey) & u64(4294967295)) != uint64(_nCellKey) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75816), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxRowidØ00__func__Ø000))), unsafe.Pointer(str(89880)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75816), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxRowidØ00__func__Ø000))), unsafe.Pointer(str(88212)))
crt.X__builtin_abort(tls)
}
}()
_sqlite3VdbeMemInit(tls, &_m, _db, uint16(i32(0)))
_rc = _sqlite3VdbeMemFromBtree(tls, _pCur, uint32(i32(0)), uint32(_nCellKey), &_m)
- if _rc == 0 {
- goto _4
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_4:
func() {
if int32(*(*uint8)(unsafe.Pointer(_m.X5))) >= int32(u8(128)) {
_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer(_m.X5)), &_szHdr)
}
}()
- if _szHdr >= uint32(i32(3)) && int32(_szHdr) <= (_m.X4) {
- goto _8
+ if (_szHdr < uint32(i32(3))) || (int32(_szHdr) > (_m.X4)) {
+ goto _idx_rowid_corruption
}
-
- goto _idx_rowid_corruption
-
-_8:
func() {
if int32(*(*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_m.X5)) + 1*uintptr(_szHdr-uint32(i32(1)))))))) >= int32(u8(128)) {
_sqlite3GetVarint32(tls, (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_m.X5))+1*uintptr(_szHdr-uint32(i32(1))))))), &_typeRowid)
}
}()
- if _typeRowid >= uint32(i32(1)) && _typeRowid <= uint32(i32(9)) && _typeRowid != uint32(i32(7)) {
- goto _13
+ if ((_typeRowid < uint32(i32(1))) || (_typeRowid > uint32(i32(9)))) || (_typeRowid == uint32(i32(7))) {
+ goto _idx_rowid_corruption
}
-
- goto _idx_rowid_corruption
-
-_13:
_lenRowid = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3SmallTypeSizes)) + 1*uintptr(_typeRowid))))
- if uint32(_m.X4) >= (_szHdr + _lenRowid) {
- goto _14
+ if uint32(_m.X4) < (_szHdr + _lenRowid) {
+ goto _idx_rowid_corruption
}
-
- goto _idx_rowid_corruption
-
-_14:
_sqlite3VdbeSerialGet(tls, (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_m.X5))+1*uintptr(uint32(_m.X4)-_lenRowid))))), _typeRowid, &_v)
- *_rowid = *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_v)) + uintptr(0 /* X0 */)))))
+ *_rowid = *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_v)) + uintptr(0 /* X0 */)))))
_sqlite3VdbeMemRelease(tls, &_m)
return i32(0)
_idx_rowid_corruption:
_sqlite3VdbeMemRelease(tls, &_m)
return _sqlite3CorruptError(tls, i32(75864))
+
+ _ = _m
+ _ = _v
+ panic(0)
}
-var _sqlite3VdbeIdxRowidØ00__func__Ø000 [20]int8 // -
+var _sqlite3VdbeIdxRowidØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeIdxRowidØ00__func__Ø000[0], str(89924), 20)
+ crt.Xstrncpy(nil, &_sqlite3VdbeIdxRowidØ00__func__Ø000[0], str(88255), 20)
}
-func _sqlite3VdbeIdxKeyCompare(tls *crt.TLS, _db *Xsqlite3, _pC *XVdbeCursor, _pUnpacked *XUnpackedRecord, _res *int32) (r0 int32) { // sqlite3.c:75878:1
- var _nCellKey int64 // sqlite3.c:75884:7
- _ = _nCellKey
- var _rc int32 // sqlite3.c:75885:7
- _ = _rc
- var _pCur *XBtCursor // sqlite3.c:75886:12
- _ = _pCur
- var _m XMem // sqlite3.c:75887:7
- _ = _m
+// Compare the key of the index entry that cursor pC is pointing to against
+// the key string in pUnpacked. Write into *pRes a number
+// that is negative, zero, or positive if pC is less than, equal to,
+// or greater than pUnpacked. Return SQLITE_OK on success.
+//
+// pUnpacked is either created without a rowid or is truncated so that it
+// omits the rowid at the end. The rowid at the end of the index entry
+// is ignored as well. Hence, this routine only compares the prefixes
+// of the keys prior to the final rowid, not the entire key.
+func _sqlite3VdbeIdxKeyCompare(tls *crt.TLS, _db *Xsqlite3, _pC *XVdbeCursor, _pUnpacked *XUnpackedRecord, _res *int32) (r0 int32) {
+ var _rc int32
+ var _nCellKey int64
+ var _m XMem
+ var _pCur *XBtCursor
_nCellKey = i64(0)
func() {
if int32(_pC.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75889), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxKeyCompareØ00__func__Ø000))), unsafe.Pointer(str(66312)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75889), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxKeyCompareØ00__func__Ø000))), unsafe.Pointer(str(65779)))
crt.X__builtin_abort(tls)
}
}()
- _pCur = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t44)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pC)) + uintptr(36 /* X14 */))))))
+ _pCur = (*XBtCursor)(*(*unsafe.Pointer)(unsafe.Pointer((*t46)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pC)) + uintptr(36 /* X14 */))))))
func() {
if _sqlite3BtreeCursorIsValid(tls, _pCur) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxKeyCompareØ00__func__Ø000))), unsafe.Pointer(str(78540)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75891), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeIdxKeyCompareØ00__func__Ø000))), unsafe.Pointer(str(77407)))
crt.X__builtin_abort(tls)
}
}()
_nCellKey = int64(_sqlite3BtreePayloadSize(tls, _pCur))
- if _nCellKey > int64(i32(0)) && _nCellKey <= int64(i32(2147483647)) {
- goto _5
+ if (_nCellKey <= int64(i32(0))) || (_nCellKey > int64(i32(2147483647))) {
+ *_res = i32(0)
+ return _sqlite3CorruptError(tls, i32(75897))
}
-
- *_res = i32(0)
- return _sqlite3CorruptError(tls, i32(75897))
-
-_5:
_sqlite3VdbeMemInit(tls, &_m, _db, uint16(i32(0)))
_rc = _sqlite3VdbeMemFromBtree(tls, _pCur, uint32(i32(0)), uint32(_nCellKey), &_m)
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_6:
*_res = _sqlite3VdbeRecordCompare(tls, _m.X4, (unsafe.Pointer)(_m.X5), _pUnpacked)
_sqlite3VdbeMemRelease(tls, &_m)
return i32(0)
+
+ _ = _m
+ panic(0)
}
-var _sqlite3VdbeIdxKeyCompareØ00__func__Ø000 [25]int8 // -
+var _sqlite3VdbeIdxKeyCompareØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeIdxKeyCompareØ00__func__Ø000[0], str(89944), 25)
+ crt.Xstrncpy(nil, &_sqlite3VdbeIdxKeyCompareØ00__func__Ø000[0], str(88275), 25)
}
-func _sqlite3BtreeDropTable(tls *crt.TLS, _p *XBtree, _iTable int32, _piMoved *int32) (r0 int32) { // sqlite3.c:67828:1
- var _rc int32 // sqlite3.c:67829:7
- _ = _rc
+func _sqlite3BtreeDropTable(tls *crt.TLS, _p *XBtree, _iTable int32, _piMoved *int32) (r0 int32) {
+ var _rc int32
_sqlite3BtreeEnter(tls, _p)
_rc = _btreeDropTable(tls, _p, uint32(_iTable), _piMoved)
_sqlite3BtreeLeave(tls, _p)
return _rc
}
-func _btreeDropTable(tls *crt.TLS, _p *XBtree, _iTable uint32, _piMoved *int32) (r0 int32) { // sqlite3.c:67746:1
- var _rc int32 // sqlite3.c:67747:7
- _ = _rc
- var _pPage *XMemPage // sqlite3.c:67748:11
- _ = _pPage
- var _pBt *XBtShared // sqlite3.c:67749:12
- _ = _pBt
- var _2_maxRootPgno uint32 // sqlite3.c:67770:10
- _ = _2_maxRootPgno
- var _5_pMove *XMemPage // sqlite3.c:67787:15
- _ = _5_pMove
+// Erase all information in a table and add the root of the table to
+// the freelist. Except, the root of the principle table (the one on
+// page 1) is never added to the freelist.
+//
+// This routine will fail with SQLITE_LOCKED if there are any open
+// cursors on the table.
+//
+// If AUTOVACUUM is enabled and the page at iTable is not the last
+// root page in the database file, then the last root page
+// in the database file is moved into the slot formerly occupied by
+// iTable and that last slot formerly occupied by the last root page
+// is added to the freelist instead of iTable. In this say, all
+// root pages are kept at the beginning of the database file, which
+// is necessary for AUTOVACUUM to work right. *piMoved is set to the
+// page number that used to be the last root page in the file before
+// the move. If no page gets moved, *piMoved is set to 0.
+// The last root page is recorded in meta[3] and the value of
+// meta[3] is updated by this procedure.
+func _btreeDropTable(tls *crt.TLS, _p *XBtree, _iTable uint32, _piMoved *int32) (r0 int32) {
+ var _rc int32
+ var _2_maxRootPgno uint32
+ var _pBt *XBtShared
+ var _pPage, _5_pMove *XMemPage
_pPage = nil
_pBt = (*XBtShared)(_p.X1)
func() {
if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67751), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67751), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
func() {
if int32(_p.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67752), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(78980)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67752), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(77829)))
crt.X__builtin_abort(tls)
}
}()
func() {
if _iTable < uint32(i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67753), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(89972)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67753), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(88300)))
crt.X__builtin_abort(tls)
}
}()
_rc = _btreeGetPage(tls, _pBt, _iTable, &_pPage, i32(0))
- if _rc == 0 {
- goto _6
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_6:
_rc = _sqlite3BtreeClearTable(tls, _p, int32(_iTable), nil)
- if _rc == 0 {
- goto _7
+ if _rc != 0 {
+ _releasePage(tls, _pPage)
+ return _rc
}
-
- _releasePage(tls, _pPage)
- return _rc
-
-_7:
*_piMoved = i32(0)
if (_pBt.X5) == 0 {
goto _8
}
-
_sqlite3BtreeGetMeta(tls, _p, i32(4), &_2_maxRootPgno)
if _iTable != _2_maxRootPgno {
goto _9
}
-
_freePage(tls, _pPage, &_rc)
_releasePage(tls, _pPage)
- if _rc == i32(0) {
- goto _10
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_10:
goto _11
-
_9:
_releasePage(tls, _pPage)
_rc = _btreeGetPage(tls, _pBt, _2_maxRootPgno, &_5_pMove, i32(0))
- if _rc == i32(0) {
- goto _12
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_12:
_rc = _relocatePage(tls, _pBt, _5_pMove, uint8(i32(1)), uint32(i32(0)), _iTable, i32(0))
_releasePage(tls, _5_pMove)
- if _rc == i32(0) {
- goto _13
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_13:
_5_pMove = nil
_rc = _btreeGetPage(tls, _pBt, _2_maxRootPgno, &_5_pMove, i32(0))
_freePage(tls, _5_pMove, &_rc)
_releasePage(tls, _5_pMove)
- if _rc == i32(0) {
- goto _14
+ if _rc != i32(0) {
+ return _rc
}
- return _rc
-
-_14:
*_piMoved = int32(_2_maxRootPgno)
_11:
_2_maxRootPgno -= 1
_15:
- if _2_maxRootPgno != ((uint32(_sqlite3PendingByte)/(_pBt.X15))+uint32(i32(1))) && _ptrmapPageno(tls, _pBt, _2_maxRootPgno) != _2_maxRootPgno {
- goto _16
+ if (_2_maxRootPgno == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1)))) || (_ptrmapPageno(tls, _pBt, _2_maxRootPgno) == _2_maxRootPgno) {
+ _2_maxRootPgno -= 1
+ goto _15
}
-
- _2_maxRootPgno -= 1
- goto _15
-
-_16:
func() {
if _2_maxRootPgno == ((uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67818), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(89984)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67818), unsafe.Pointer((*int8)(unsafe.Pointer(&_btreeDropTableØ00__func__Ø000))), unsafe.Pointer(str(88310)))
crt.X__builtin_abort(tls)
}
}()
_rc = _sqlite3BtreeUpdateMeta(tls, _p, i32(4), _2_maxRootPgno)
goto _20
-
_8:
_freePage(tls, _pPage, &_rc)
_releasePage(tls, _pPage)
@@ -76543,83 +67954,73 @@ _20:
return _rc
}
-var _btreeDropTableØ00__func__Ø000 [15]int8 // -
+var _btreeDropTableØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_btreeDropTableØ00__func__Ø000[0], str(90020), 15)
+ crt.Xstrncpy(nil, &_btreeDropTableØ00__func__Ø000[0], str(88346), 15)
}
-func _sqlite3BtreeClearTable(tls *crt.TLS, _p *XBtree, _iTable int32, _pnChange *int32) (r0 int32) { // sqlite3.c:67698:1
- var _rc int32 // sqlite3.c:67699:7
- _ = _rc
- var _pBt *XBtShared // sqlite3.c:67700:12
- _ = _pBt
+// Delete all information from a single table in the database. iTable is
+// the page number of the root of the table. After this routine returns,
+// the root page is empty, but still exists.
+//
+// This routine will fail with SQLITE_LOCKED if there are any open
+// read cursors on the table. Open write cursors are moved to the
+// root of the table.
+//
+// If pnChange is not NULL, then table iTable must be an intkey table. The
+// integer value pointed to by pnChange is incremented by the number of
+// entries in the table.
+func _sqlite3BtreeClearTable(tls *crt.TLS, _p *XBtree, _iTable int32, _pnChange *int32) (r0 int32) {
+ var _rc int32
+ var _pBt *XBtShared
_pBt = (*XBtShared)(_p.X1)
_sqlite3BtreeEnter(tls, _p)
func() {
if int32(_p.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67702), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeClearTableØ00__func__Ø000))), unsafe.Pointer(str(78980)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67702), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeClearTableØ00__func__Ø000))), unsafe.Pointer(str(77829)))
crt.X__builtin_abort(tls)
}
}()
_rc = _saveAllCursors(tls, _pBt, uint32(_iTable), nil)
- if i32(0) != _rc {
- goto _2
+ if i32(0) == _rc {
+ _invalidateIncrblobCursors(tls, _p, uint32(_iTable), int64(i32(0)), i32(1))
+ _rc = _clearDatabasePage(tls, _pBt, uint32(_iTable), i32(0), _pnChange)
}
-
- _invalidateIncrblobCursors(tls, _p, uint32(_iTable), int64(i32(0)), i32(1))
- _rc = _clearDatabasePage(tls, _pBt, uint32(_iTable), i32(0), _pnChange)
-_2:
_sqlite3BtreeLeave(tls, _p)
return _rc
}
-var _sqlite3BtreeClearTableØ00__func__Ø000 [23]int8 // -
+var _sqlite3BtreeClearTableØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeClearTableØ00__func__Ø000[0], str(90036), 23)
+ crt.Xstrncpy(nil, &_sqlite3BtreeClearTableØ00__func__Ø000[0], str(88361), 23)
}
-func _clearDatabasePage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _freePageFlag int32, _pnChange *int32) (r0 int32) { // sqlite3.c:67631:1
- var _pPage *XMemPage // sqlite3.c:67637:11
- _ = _pPage
- var _rc int32 // sqlite3.c:67638:7
- _ = _rc
- var _pCell *uint8 // sqlite3.c:67639:17
- _ = _pCell
- var _i int32 // sqlite3.c:67640:7
- _ = _i
- var _hdr int32 // sqlite3.c:67641:7
- _ = _hdr
- var _info XCellInfo // sqlite3.c:67642:12
- _ = _info
+// Erase the given database page and all its children. Return
+// the page to the freelist.
+func _clearDatabasePage(tls *crt.TLS, _pBt *XBtShared, _pgno uint32, _freePageFlag int32, _pnChange *int32) (r0 int32) {
+ var _rc, _i, _hdr int32
+ var _pCell *uint8
+ var _info XCellInfo
+ var _pPage *XMemPage
func() {
if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_pBt.X21)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(67644), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearDatabasePageØ00__func__Ø000))), unsafe.Pointer(str(7988)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(67644), unsafe.Pointer((*int8)(unsafe.Pointer(&_clearDatabasePageØ00__func__Ø000))), unsafe.Pointer(str(9280)))
crt.X__builtin_abort(tls)
}
}()
- if _pgno <= _btreePagecount(tls, _pBt) {
- goto _2
+ if _pgno > _btreePagecount(tls, _pBt) {
+ return _sqlite3CorruptError(tls, i32(67646))
}
- return _sqlite3CorruptError(tls, i32(67646))
-
-_2:
_rc = _getAndInitPage(tls, _pBt, _pgno, &_pPage, nil, i32(0))
- if _rc == 0 {
- goto _3
+ if _rc != 0 {
+ return _rc
}
- return _rc
-
-_3:
- if (_pPage.X1) == 0 {
- goto _4
+ if (_pPage.X1) != 0 {
+ _rc = _sqlite3CorruptError(tls, i32(67651))
+ goto _cleardatabasepage_out
}
-
- _rc = _sqlite3CorruptError(tls, i32(67651))
- goto _cleardatabasepage_out
-
-_4:
*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(1 /* X1 */))) = uint8(i32(1))
_hdr = int32(_pPage.X6)
_i = i32(0)
@@ -76627,106 +68028,77 @@ _5:
if _i >= int32(_pPage.X14) {
goto _8
}
-
_pCell = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pPage.X19)) + uintptr(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr(int32(_pPage.X15)&((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage.X21))+1*uintptr(i32(2)*_i))))) + 1*uintptr(i32(0)))))<= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98771), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ if _db == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98772), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(67796)))
+ if _iDb < i32(0) || _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100357), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98775), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ if _zTabName == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100358), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(88451)))
crt.X__builtin_abort(tls)
}
}()
- _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(8 /* X2 */))).X2)
-_7:
- if _i == nil {
- goto _10
- }
-
- _1_pTab = (*XTable)(_i.X2)
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(36 /* X9 */)))
- *p = (*p) & uint32(i32(-17))
- sink5 = *p
- }
- _i = (*XHashElem)(_i.X0)
- goto _7
-
-_10:
- _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(24 /* X3 */))).X2)
-_11:
- if _i == nil {
- goto _14
- }
-
- _2_pIdx = (*XIndex)(_i.X2)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx))+uintptr(55 /* X16 */))), int8(i32(0)), 128, 7)
- _i = (*XHashElem)(_i.X0)
- goto _11
-
-_14:
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sInfo)) + uintptr(0 /* X0 */))))) = _db
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sInfo)) + uintptr(4 /* X1 */))) = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- if _sqlite3FindTable(tls, _db, str(90132), _sInfo.X1) == nil {
- goto _15
- }
-
- _zSql = _sqlite3MPrintf(tls, _db, str(90148), unsafe.Pointer(_sInfo.X1))
- if _zSql != nil {
- goto _16
- }
-
- _rc = _sqlite3NomemError(tls, i32(98796))
- goto _17
-
-_16:
- _rc = Xsqlite3_exec(tls, _db, _zSql, _analysisLoader, (unsafe.Pointer)(&_sInfo), nil)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zSql))
-_17:
-_15:
func() {
if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98804), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AnalysisLoadØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100359), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
- _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSchema)) + uintptr(24 /* X3 */))).X2)
-_20:
- if _i == nil {
- goto _23
- }
-
- _6_pIdx = (*XIndex)(_i.X2)
- if ((uint32((_6_pIdx.X16)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) != 0 {
- goto _24
- }
-
- _sqlite3DefaultRowEst(tls, _6_pIdx)
-_24:
- _i = (*XHashElem)(_i.X0)
- goto _20
-
-_23:
- if _rc != i32(7) {
- goto _25
+ _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
+ _p = (*XTable)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_pDb.X4)+uintptr(8 /* X2 */))), _zTabName, nil))
+ _sqlite3DeleteTable(tls, _db, _p)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(2)
+ sink1 = *p
}
-
- _sqlite3OomFault(tls, _db)
-_25:
- return _rc
}
-var _sqlite3AnalysisLoadØ00__func__Ø000 [20]int8 // -
+var _sqlite3UnlinkAndDeleteTableØ00__func__Ø000 [28]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3AnalysisLoadØ00__func__Ø000[0], str(90192), 20)
+ crt.Xstrncpy(nil, &_sqlite3UnlinkAndDeleteTableØ00__func__Ø000[0], str(88460), 28)
}
-func _sqlite3FindTable(tls *crt.TLS, _db *Xsqlite3, _zName *int8, _zDatabase *int8) (r0 *XTable) { // sqlite3.c:99994:1
- var _p *XTable // sqlite3.c:99995:9
- _ = _p
- var _i int32 // sqlite3.c:99996:7
- _ = _i
- var _2_j int32 // sqlite3.c:100009:11
- _ = _2_j
- _p = nil
+// For the index called zIdxName which is found in the database iDb,
+// unlike that index from its Table then remove the index from
+// the index hash table and free all memory structures associated
+// with the index.
+func _sqlite3UnlinkAndDeleteIndex(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zIdxName *int8) {
+ var _pHash *XHash
+ var _pIndex, _3_p *XIndex
func() {
- if _zDatabase == nil && _sqlite3BtreeHoldsAllMutexes(tls, _db) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99999), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindTableØ00__func__Ø000))), unsafe.Pointer(str(90212)))
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
-_3:
- _i = i32(0)
-_5:
- if _i >= (_db.X5) {
- goto _8
- }
-
- _2_j = func() int32 {
- if _i < i32(2) {
- return (_i ^ i32(1))
+ _pHash = (*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(24 /* X3 */)))
+ _pIndex = (*XIndex)(_sqlite3HashInsert(tls, _pHash, _zIdxName, nil))
+ if func() int32 {
+ if _pIndex != nil {
+ return i32(1)
}
- return _i
- }()
- if _zDatabase != nil && _sqlite3StrICmp(tls, _zDatabase, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_2_j))).X0) != i32(0) {
- goto _12
- }
-
- func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _2_j, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindTableØ00__func__Ø000))), unsafe.Pointer(str(62100)))
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100163), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
- }
- }()
- _p = (*XTable)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_2_j))).X4)+uintptr(8 /* X2 */))), _zName))
- if _p == nil {
- goto _15
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _4
}
- return _p
-
-_15:
-_12:
- _i += 1
- goto _5
-
-_8:
- if _sqlite3StrICmp(tls, _zName, str(51616)) == i32(0) {
- goto _16
+ if (*XIndex)((*XTable)(_pIndex.X3).X2) == _pIndex {
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pIndex.X3) + uintptr(8 /* X2 */))))) = (*XIndex)(_pIndex.X5)
+ goto _6
}
-
- goto _4
-
-_16:
- if Xsqlite3_stricmp(tls, _zDatabase, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X0) == i32(0) {
- goto _17
+ _3_p = (*XIndex)((*XTable)(_pIndex.X3).X2)
+_7:
+ if func() int32 {
+ if _3_p != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100171), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 && ((*XIndex)(_3_p.X5) != _pIndex) {
+ _3_p = (*XIndex)(_3_p.X5)
+ goto _7
}
-
- goto _4
-
-_17:
- _zName = str(51596)
- goto _3
-
+ if func() int32 {
+ if (_3_p != nil) && ((*XIndex)(_3_p.X5) == _pIndex) {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100172), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 {
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_p)) + uintptr(20 /* X5 */))))) = (*XIndex)(_pIndex.X5)
+ }
+_6:
+ _freeIndex(tls, _db, _pIndex)
_4:
- return nil
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(2)
+ sink1 = *p
+ }
}
-var _sqlite3FindTableØ00__func__Ø000 [17]int8 // -
+var _sqlite3UnlinkAndDeleteIndexØ00__func__Ø000 [28]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FindTableØ00__func__Ø000[0], str(90260), 17)
+ crt.Xstrncpy(nil, &_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000[0], str(88488), 28)
}
-func _analysisLoader(tls *crt.TLS, _pData unsafe.Pointer, _argc int32, _argv **int8, _NotUsed **int8) (r0 int32) { // sqlite3.c:98421:1
- var _pInfo *XanalysisInfo // sqlite3.c:98422:16
- _ = _pInfo
- var _pIndex *XIndex // sqlite3.c:98423:9
- _ = _pIndex
- var _pTable *XTable // sqlite3.c:98424:9
- _ = _pTable
- var _z *int8 // sqlite3.c:98425:14
- _ = _z
- var _6_aiRowEst *uint32 // sqlite3.c:98447:13
- _ = _6_aiRowEst
- var _6_nCol int32 // sqlite3.c:98448:9
- _ = _6_nCol
- var _8_fakeIdx XIndex // sqlite3.c:98467:11
- _ = _8_fakeIdx
- _pInfo = (*XanalysisInfo)(_pData)
+// Remove a trigger from the hash tables of the sqlite* pointer.
+func _sqlite3UnlinkAndDeleteTrigger(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zName *int8) {
+ var _pHash *XHash
+ var _pTrigger *XTrigger
+ var _2_pTab *XTable
+ var _2_pp **XTrigger
func() {
- if _argc != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98427), unsafe.Pointer((*int8)(unsafe.Pointer(&_analysisLoaderØ00__func__Ø000))), unsafe.Pointer(str(51892)))
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123220), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
- _ = _argc
-
- if _argv != nil && (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0))))) != nil && (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2))))) != nil {
+ _pHash = (*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(40 /* X4 */)))
+ _pTrigger = (*XTrigger)(_sqlite3HashInsert(tls, _pHash, _zName, nil))
+ if func() int32 {
+ if _pTrigger != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
goto _4
}
- return i32(0)
-
-_4:
- _pTable = _sqlite3FindTable(tls, (*Xsqlite3)(_pInfo.X0), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), _pInfo.X1)
- if _pTable != nil {
+ if (*XSchema)(_pTrigger.X6) != (*XSchema)(_pTrigger.X7) {
goto _5
}
- return i32(0)
-
-_5:
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1))))) != nil {
- goto _6
- }
-
- _pIndex = nil
- goto _7
-
+ _2_pTab = _tableOfTrigger(tls, _pTrigger)
+ _2_pp = (**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pTab)) + uintptr(68 /* X19 */)))))
_6:
- if Xsqlite3_stricmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(0)))), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1))))) != i32(0) {
- goto _8
+ if (*_2_pp) == _pTrigger {
+ goto _9
}
-
- _pIndex = _sqlite3PrimaryKeyIndex(tls, _pTable)
- goto _9
-
-_8:
- _pIndex = _sqlite3FindIndex(tls, (*Xsqlite3)(_pInfo.X0), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(1)))), _pInfo.X1)
+ _2_pp = (**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_2_pp)) + uintptr(32 /* X9 */)))))
+ goto _6
_9:
-_7:
- _z = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(i32(2))))
- if _pIndex == nil {
- goto _10
- }
-
- _6_aiRowEst = nil
- _6_nCol = int32(_pIndex.X13) + i32(1)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 4, 2)
- _decodeIntArray(tls, _z, _6_nCol, _6_aiRowEst, _pIndex.X2, _pIndex)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 128, 7)
- if (*XExpr)(_pIndex.X9) != nil {
- goto _11
- }
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(44 /* X12 */))) = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X2)) + 2*uintptr(i32(0))))
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(16))
- sink5 = *p
- }
-_11:
- goto _12
-
-_10:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_fakeIdx)) + uintptr(48 /* X12 */))) = _pTable.X13
- _decodeIntArray(tls, _z, i32(1), nil, (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(44 /* X12 */))), &_8_fakeIdx)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(46 /* X13 */))) = _8_fakeIdx.X12
+ *_2_pp = (*XTrigger)((*_2_pp).X9)
+_5:
+ _sqlite3DeleteTrigger(tls, _db, _pTrigger)
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(16))
- sink5 = *p
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(2)
+ sink1 = *p
}
-_12:
- return i32(0)
+_4:
}
-var _analysisLoaderØ00__func__Ø000 [15]int8 // -
+var _sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000 [30]int8
func init() {
- crt.Xstrncpy(nil, &_analysisLoaderØ00__func__Ø000[0], str(90280), 15)
+ crt.Xstrncpy(nil, &_sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000[0], str(88516), 30)
}
-func _decodeIntArray(tls *crt.TLS, _zIntArray *int8, _nOut int32, _aOut *uint32, _aLog *int16, _pIndex *XIndex) { // sqlite3.c:98350:1
- var _z *int8 // sqlite3.c:98357:8
- _ = _z
- var _c int32 // sqlite3.c:98358:7
- _ = _c
- var _i int32 // sqlite3.c:98359:7
- _ = _i
- var _v uint32 // sqlite3.c:98360:11
- _ = _v
- _z = _zIntArray
- func() {
- if _z == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98365), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(45664)))
- crt.X__builtin_abort(tls)
- }
- }()
- _i = i32(0)
-_2:
- if (*_z) == 0 || _i >= _nOut {
- goto _6
- }
-
- _v = uint32(i32(0))
-_7:
- if store1(&_c, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))) < i32(48) || _c > i32(57) {
- goto _8
- }
-
- _v = ((_v * uint32(i32(10))) + uint32(_c)) - uint32(i32(48))
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
- goto _7
+// Return a pointer to the Table structure for the table that a trigger
+// is set on.
+func _tableOfTrigger(tls *crt.TLS, _pTrigger *XTrigger) (r0 *XTable) {
+ /* X2 */
+ return (*XTable)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr(_pTrigger.X7)+uintptr(8))), _pTrigger.X1))
+}
-_8:
+// This routine does a complete check of the given BTree file. aRoot[] is
+// an array of pages numbers were each page number is the root page of
+// a table. nRoot is the number of entries in aRoot.
+//
+// A read-only or read-write transaction must be opened before calling
+// this function.
+//
+// Write the number of error seen in *pnErr. Except for some memory
+// allocation errors, an error message held in memory obtained from
+// malloc is returned if *pnErr is non-zero. If *pnErr==0 then NULL is
+// returned. If a memory allocation error occurs, NULL is returned.
+func _sqlite3BtreeIntegrityCheck(tls *crt.TLS, _p *XBtree, _aRoot *int32, _nRoot int32, _mxErr int32, _pnErr *int32) (r0 *int8) {
+ var _savedDbFlags, _nRef int32
+ var _4_notUsed int64
+ var _i uint32
+ var _zErr [100]int8
+ var _pBt *XBtShared
+ var _sCheck XIntegrityCk
+ _pBt = (*XBtShared)(_p.X1)
+ _savedDbFlags = (*Xsqlite3)(_pBt.X1).X6
+ _sqlite3BtreeEnter(tls, _p)
func() {
- if _aOut != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98377), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(90296)))
+ if int32(_p.X2) <= i32(0) || int32(_pBt.X8) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68515), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegrityCheckØ00__func__Ø000))), unsafe.Pointer(str(88546)))
crt.X__builtin_abort(tls)
}
}()
-
+ _nRef = _sqlite3PagerRefcount(tls, (*XPager)(_pBt.X0))
func() {
- if _aLog == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98379), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(90304)))
+ if _nRef < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68517), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegrityCheckØ00__func__Ø000))), unsafe.Pointer(str(88601)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLog)) + 2*uintptr(_i))) = _sqlite3LogEst(tls, uint64(_v))
- if int32(*_z) != i32(32) {
- goto _14
+ *(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(0 /* X0 */))))) = _pBt
+ *(**XPager)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(4 /* X1 */))))) = (*XPager)(_pBt.X0)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(12 /* X3 */))) = _btreePagecount(tls, (*XBtShared)(_sCheck.X0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(16 /* X4 */))) = _mxErr
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(20 /* X5 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(24 /* X6 */))) = i32(0)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(28 /* X7 */))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(32 /* X8 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(36 /* X9 */))) = i32(0)
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(8 /* X2 */))) = nil
+ *(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(68 /* X11 */))) = nil
+ _sqlite3StrAccumInit(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))), nil, (*int8)(unsafe.Pointer(&_zErr)), int32(u32(100)), i32(1000000000))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))))) + uintptr(25 /* X7 */))) = uint8(i32(1))
+ if (_sCheck.X3) == uint32(i32(0)) {
+ goto _integrity_ck_cleanup
}
-
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
-_14:
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(8 /* X2 */))) = (*uint8)(_sqlite3MallocZero(tls, uint64(((_sCheck.X3)/uint32(i32(8)))+uint32(i32(1)))))
+ if (_sCheck.X2) == nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(24 /* X6 */))) = i32(1)
+ goto _integrity_ck_cleanup
+ }
+ *(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(68 /* X11 */))) = (*uint32)(_sqlite3PageMalloc(tls, int32(_pBt.X15)))
+ if (_sCheck.X11) == nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(24 /* X6 */))) = i32(1)
+ goto _integrity_ck_cleanup
+ }
+ _i = (uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))
+ if _i <= (_sCheck.X3) {
+ _setPageReferenced(tls, &_sCheck, _i)
+ }
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(28 /* X7 */))) = str(88609)
+ _checkList(tls, &_sCheck, i32(1), int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(32)))))), int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))))))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(28 /* X7 */))) = nil
+ {
+ p := (*int32)(unsafe.Pointer(uintptr(_pBt.X1) + uintptr(24 /* X6 */)))
+ *p = (*p) & i32(-536870913)
+ sink1 = *p
+ }
+ _i = uint32(i32(0))
+_9:
+ if int32(_i) >= _nRoot || (_sCheck.X4) == 0 {
+ goto _13
+ }
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i)))) == i32(0) {
+ goto _10
+ }
+ if ((_pBt.X5) != 0) && ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i)))) > i32(1)) {
+ _checkPtrmap(tls, &_sCheck, uint32(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i)))), uint8(i32(1)), uint32(i32(0)))
+ }
+ _checkTreePage(tls, &_sCheck, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i))), &_4_notUsed, i64(9223372036854775807))
+_10:
_i += 1
- goto _2
-
-_6:
- func() {
- if _pIndex == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(98385), unsafe.Pointer((*int8)(unsafe.Pointer(&_decodeIntArrayØ00__func__Ø000))), unsafe.Pointer(str(90312)))
- crt.X__builtin_abort(tls)
- }
- }()
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 4, 2)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 64, 6)
+ goto _9
+_13:
+ *(*int32)(unsafe.Pointer(uintptr(_pBt.X1) + uintptr(24 /* X6 */))) = _savedDbFlags
+ _i = uint32(i32(1))
_17:
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) == 0 {
- goto _18
+ if _i > (_sCheck.X3) || (_sCheck.X4) == 0 {
+ goto _21
}
-
- if Xsqlite3_strglob(tls, str(90324), _z) != i32(0) {
- goto _19
+ if (_getPageReferenced(tls, &_sCheck, _i) == i32(0)) && ((_ptrmapPageno(tls, _pBt, _i) != _i) || ((_pBt.X5) == 0)) {
+ _checkAppendMsg(tls, &_sCheck, str(88625), _i)
}
-
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 4, 2)
- goto _20
-
-_19:
- if Xsqlite3_strglob(tls, str(90336), _z) != i32(0) {
- goto _21
+ if (_getPageReferenced(tls, &_sCheck, _i) != i32(0)) && ((_ptrmapPageno(tls, _pBt, _i) == _i) && ((_pBt.X5) != 0)) {
+ _checkAppendMsg(tls, &_sCheck, str(88647), _i)
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(48 /* X12 */))) = _sqlite3LogEst(tls, uint64(_sqlite3Atoi(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(3)))))))))))
- goto _22
-
+ _i += 1
+ goto _17
_21:
- if Xsqlite3_strglob(tls, str(90348), _z) != i32(0) {
- goto _23
+_integrity_ck_cleanup:
+ _sqlite3PageFree(tls, (unsafe.Pointer)(_sCheck.X11))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_sCheck.X2))
+ if (_sCheck.X6) != 0 {
+ _sqlite3StrAccumReset(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(20 /* X5 */))) += 1
}
-
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 64, 6)
-_23:
-_22:
-_20:
-_24:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) == i32(0) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) == i32(32) {
- goto _25
+ *_pnErr = _sCheck.X5
+ if (_sCheck.X5) == i32(0) {
+ _sqlite3StrAccumReset(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))))
}
+ func() {
+ if _nRef != _sqlite3PagerRefcount(tls, (*XPager)(_pBt.X0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68606), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegrityCheckØ00__func__Ø000))), unsafe.Pointer(str(88681)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3BtreeLeave(tls, _p)
+ /* X10 */
+ return _sqlite3StrAccumFinish(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40))))
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
- goto _24
-
-_25:
-_27:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(32) {
- goto _28
- }
+ _ = _sCheck
+ _ = _zErr
+ _ = _4_notUsed
+ panic(0)
+}
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
- goto _27
+var _sqlite3BtreeIntegrityCheckØ00__func__Ø000 [27]int8
-_28:
- goto _17
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeIntegrityCheckØ00__func__Ø000[0], str(88721), 27)
+}
-_18:
+// Set the bit in the IntegrityCk.aPgRef[] array that corresponds to page iPg.
+func _setPageReferenced(tls *crt.TLS, _pCheck *XIntegrityCk, _iPg uint32) {
+ func() {
+ if _iPg > (_pCheck.X3) || i32(1) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68037), unsafe.Pointer((*int8)(unsafe.Pointer(&_setPageReferencedØ00__func__Ø000))), unsafe.Pointer(str(88748)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck.X2)) + 1*uintptr(_iPg/uint32(i32(8)))))
+ *p = uint8(int32(*p) | (i32(1) << uint(int32(_iPg&uint32(i32(7))))))
+ sink2 = *p
+ }
}
-var _decodeIntArrayØ00__func__Ø000 [15]int8 // -
+var _setPageReferencedØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_decodeIntArrayØ00__func__Ø000[0], str(90360), 15)
+ crt.Xstrncpy(nil, &_setPageReferencedØ00__func__Ø000[0], str(88799), 18)
}
-func Xsqlite3_strglob(tls *crt.TLS, _zGlobPattern *int8, _zString *int8) (r0 int32) { // sqlite3.c:106314:12
- return _patternCompare(tls, (*uint8)(unsafe.Pointer(_zGlobPattern)), (*uint8)(unsafe.Pointer(_zString)), &_globInfo, uint32(i32(91)))
-}
-
-func _patternCompare(tls *crt.TLS, _zPattern *uint8, _zString *uint8, _pInfo *TcompareInfo, _matchOther uint32) (r0 int32) { // sqlite3.c:106186:1
- var _c uint32 // sqlite3.c:106192:7
- _ = _c
- var _c2 uint32 // sqlite3.c:106192:10
- _ = _c2
- var _matchOne uint32 // sqlite3.c:106193:7
- _ = _matchOne
- var _matchAll uint32 // sqlite3.c:106194:7
- _ = _matchAll
- var _noCase uint8 // sqlite3.c:106195:6
- _ = _noCase
- var _zEscaped *uint8 // sqlite3.c:106196:12
- _ = _zEscaped
- var _9_bMatch int32 // sqlite3.c:106219:17
- _ = _9_bMatch
- var _13_cx uint32 // sqlite3.c:106237:13
- _ = _13_cx
- var _13_bMatch int32 // sqlite3.c:106238:13
- _ = _13_bMatch
- var _17_bMatch int32 // sqlite3.c:106251:13
- _ = _17_bMatch
- var _21_prior_c uint32 // sqlite3.c:106266:13
- _ = _21_prior_c
- var _21_seen int32 // sqlite3.c:106267:13
- _ = _21_seen
- var _21_invert int32 // sqlite3.c:106268:13
- _ = _21_invert
- _matchOne = uint32(_pInfo.X1)
- _matchAll = uint32(_pInfo.X0)
- _noCase = _pInfo.X3
- _zEscaped = nil
+// Check the integrity of the freelist or of an overflow page list.
+// Verify that the number of pages on the list is N.
+func _checkList(tls *crt.TLS, _pCheck *XIntegrityCk, _isFreeList int32, _iPage int32, _N int32) {
+ var _i, _expected, _iFirst, _4_n int32
+ var _8_iFreePage uint32
+ var _1_pOvflData *uint8
+ var _1_pOvflPage *XPgHdr
+ _expected = _N
+ _iFirst = _iPage
_0:
- if store5(&_c, func() uint32 {
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) < i32(128) {
- return uint32(*postInc11(&_zPattern, 1))
- }
- return _sqlite3Utf8Read(tls, &_zPattern)
- }()) == uint32(i32(0)) {
+ if postInc1(&_N, int32(-1)) <= i32(0) || (_pCheck.X4) == 0 {
goto _1
}
-
- if _c != _matchAll {
- goto _4
+ if _iPage < i32(1) {
+ _checkAppendMsg(tls, _pCheck, str(88817), _N+i32(1), _expected, _iFirst)
+ goto _1
}
-
-_5:
- if store5(&_c, func() uint32 {
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) < i32(128) {
- return uint32(*postInc11(&_zPattern, 1))
- }
- return _sqlite3Utf8Read(tls, &_zPattern)
- }()) != _matchAll && _c != _matchOne {
+ if _checkRef(tls, _pCheck, uint32(_iPage)) != 0 {
+ goto _1
+ }
+ if _sqlite3PagerGet(tls, (*XPager)(_pCheck.X1), uint32(_iPage), &_1_pOvflPage, i32(0)) != 0 {
+ _checkAppendMsg(tls, _pCheck, str(88874), _iPage)
+ goto _1
+ }
+ _1_pOvflData = (*uint8)(_sqlite3PagerGetData(tls, _1_pOvflPage))
+ if _isFreeList == 0 {
goto _6
}
-
- if _c != _matchOne || _sqlite3Utf8Read(tls, &_zString) != uint32(i32(0)) {
- goto _11
+ _4_n = int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOvflData))+1*uintptr(i32(4))))))
+ if ((*XBtShared)(_pCheck.X0).X5) != 0 {
+ _checkPtrmap(tls, _pCheck, uint32(_iPage), uint8(i32(2)), uint32(i32(0)))
}
- return i32(2)
-
-_11:
- goto _5
-
+ if _4_n > ((int32((*XBtShared)(_pCheck.X0).X16) / i32(4)) - i32(2)) {
+ _checkAppendMsg(tls, _pCheck, str(88896), _iPage)
+ _N -= 1
+ goto _9
+ }
+ _i = i32(0)
+_10:
+ if _i >= _4_n {
+ goto _13
+ }
+ _8_iFreePage = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOvflData))+1*uintptr(i32(8)+(_i*i32(4))))))
+ if ((*XBtShared)(_pCheck.X0).X5) != 0 {
+ _checkPtrmap(tls, _pCheck, _8_iFreePage, uint8(i32(2)), uint32(i32(0)))
+ }
+ _checkRef(tls, _pCheck, _8_iFreePage)
+ _i += 1
+ goto _10
+_13:
+ {
+ p := &_N
+ *p = (*p) - _4_n
+ sink1 = *p
+ }
+_9:
+ goto _15
_6:
- if _c != uint32(i32(0)) {
- goto _12
+ if (((*XBtShared)(_pCheck.X0).X5) != 0) && (_N > i32(0)) {
+ _i = int32(_sqlite3Get4byte(tls, _1_pOvflData))
+ _checkPtrmap(tls, _pCheck, uint32(_i), uint8(i32(4)), uint32(_iPage))
}
- return i32(0)
-
-_12:
- if _c != _matchOther {
- goto _14
+_15:
+ _iPage = int32(_sqlite3Get4byte(tls, _1_pOvflData))
+ _sqlite3PagerUnref(tls, _1_pOvflPage)
+ if _isFreeList != 0 && (_N < bool2int(_iPage != i32(0))) {
+ _checkAppendMsg(tls, _pCheck, str(88935))
}
+ goto _0
+_1:
+}
- if int32(_pInfo.X2) != i32(0) {
- goto _15
+// Append a message to the error message string.
+func _checkAppendMsg(tls *crt.TLS, _pCheck *XIntegrityCk, _zFormat *int8, args ...interface{}) {
+ var _ap []interface{}
+ if (_pCheck.X4) == 0 {
+ return
}
-
- _c = _sqlite3Utf8Read(tls, &_zPattern)
- if _c != uint32(i32(0)) {
- goto _16
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(16 /* X4 */))) -= 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(20 /* X5 */))) += 1
+ _ap = args
+ if ((*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(40 /* X10 */))).X3) != 0 {
+ _sqlite3StrAccumAppend(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))), str(37700), i32(1))
}
- return i32(2)
+ if (_pCheck.X7) != nil {
+ _sqlite3XPrintf(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))), _pCheck.X7, _pCheck.X8, _pCheck.X9)
+ }
+ _sqlite3VXPrintf(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))), _zFormat, _ap)
+ _ap = nil
+ if int32((*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))).X6) == i32(1) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(24 /* X6 */))) = i32(1)
+ }
+}
-_16:
- goto _17
+// Add 1 to the reference count for page iPage. If this is the second
+// reference to the page, add an error message to pCheck->zErrMsg.
+// Return 1 if there are 2 or more references to the page and 0 if
+// if this is the first reference to the page.
+//
+// Also check that the page number is in bounds.
+func _checkRef(tls *crt.TLS, _pCheck *XIntegrityCk, _iPage uint32) (r0 int32) {
+ if _iPage == uint32(i32(0)) {
+ return i32(1)
+ }
+ if _iPage > (_pCheck.X3) {
+ _checkAppendMsg(tls, _pCheck, str(88974), _iPage)
+ return i32(1)
+ }
+ if _getPageReferenced(tls, _pCheck, _iPage) != 0 {
+ _checkAppendMsg(tls, _pCheck, str(88997), _iPage)
+ return i32(1)
+ }
+ _setPageReferenced(tls, _pCheck, _iPage)
+ return i32(0)
+}
-_15:
+// Return non-zero if the bit in the IntegrityCk.aPgRef[] array that
+// corresponds to page iPg is already set.
+func _getPageReferenced(tls *crt.TLS, _pCheck *XIntegrityCk, _iPg uint32) (r0 int32) {
func() {
- if _matchOther >= uint32(i32(128)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(106217), unsafe.Pointer((*int8)(unsafe.Pointer(&_patternCompareØ00__func__Ø000))), unsafe.Pointer(str(90376)))
+ if _iPg > (_pCheck.X3) || i32(1) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68029), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageReferencedØ00__func__Ø000))), unsafe.Pointer(str(88748)))
crt.X__builtin_abort(tls)
}
}()
-_20:
- if (*_zString) == 0 {
- goto _21
- }
+ return int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck.X2)) + 1*uintptr(_iPg/uint32(i32(8)))))) & (i32(1) << uint(int32(_iPg&uint32(i32(7)))))
+}
- _9_bMatch = _patternCompare(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern))+1*uintptr(i32(-1)))), _zString, _pInfo, _matchOther)
- if _9_bMatch == i32(1) {
- goto _22
- }
- return _9_bMatch
+var _getPageReferencedØ00__func__Ø000 [18]int8
-_22:
- if int32(*postInc11(&_zString, 1)) < i32(192) {
- goto _23
- }
+func init() {
+ crt.Xstrncpy(nil, &_getPageReferencedØ00__func__Ø000[0], str(89022), 18)
+}
-_24:
- if (int32(*_zString) & i32(192)) != i32(128) {
- goto _25
+// Check that the entry in the pointer-map for page iChild maps to
+// page iParent, pointer type ptrType. If not, append an error message
+// to pCheck.
+func _checkPtrmap(tls *crt.TLS, _pCheck *XIntegrityCk, _iChild uint32, _eType uint8, _iParent uint32) {
+ var _rc int32
+ var _iPtrmapParent uint32
+ var _ePtrmapType uint8
+ _rc = _ptrmapGet(tls, (*XBtShared)(_pCheck.X0), _iChild, &_ePtrmapType, &_iPtrmapParent)
+ if _rc == i32(0) {
+ goto _0
}
-
- *(*uintptr)(unsafe.Pointer(&_zString)) += uintptr(1)
- goto _24
-
-_25:
-_23:
- goto _20
-
-_21:
- return i32(2)
-
-_17:
-_14:
- if _c > uint32(i32(128)) {
- goto _26
+ if (_rc == i32(7)) || (_rc == i32(3082)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(24 /* X6 */))) = i32(1)
}
-
- if _noCase == 0 {
- goto _27
+ _checkAppendMsg(tls, _pCheck, str(89040), _iChild)
+ return
+_0:
+ if (int32(_ePtrmapType) != int32(_eType)) || (_iPtrmapParent != _iParent) {
+ _checkAppendMsg(tls, _pCheck, str(89069), _iChild, int32(_eType), _iParent, int32(_ePtrmapType), _iPtrmapParent)
+ }
+}
+
+// Do various sanity checks on a single page of a tree. Return
+// the tree depth. Root pages return 0. Parents of root pages
+// return 1, and so forth.
+//
+// These checks are done:
+//
+// 1. Make sure that cells and freeblocks do not overlap
+// but combine to completely cover the page.
+// 2. Make sure integer cell keys are in order.
+// 3. Check the integrity of overflow pages.
+// 4. Recursively call checkTreePage on all children.
+// 5. Verify that the depth of all children is the same.
+func _checkTreePage(tls *crt.TLS, _pCheck *XIntegrityCk, _iPage int32, _piMinKey *int64, _maxKey int64) (r0 int32) {
+ var _i, _rc, _depth, _d2, _pgno, _nFrag, _hdr, _cellStart, _nCell, _doCoverageCheck, _keyCanBeEqual, _saved_v1, _saved_v2, _11_nPage, _20_size, _20_j int32
+ var _pc, _usableSize, _contentOffset, _x, _prev, _11_pgnoOvfl, _19_size uint32
+ var _saved_zPfx *int8
+ var _savedIsInit uint8
+ var _data, _pCell, _pCellIdx *uint8
+ var _heap *uint32
+ var _pBt *XBtShared
+ var _6_info XCellInfo
+ var _pPage *XMemPage
+ _pPage = nil
+ _depth = i32(-1)
+ _doCoverageCheck = i32(1)
+ _keyCanBeEqual = i32(1)
+ _heap = nil
+ _prev = u32(0)
+ _saved_zPfx = _pCheck.X7
+ _saved_v1 = _pCheck.X8
+ _saved_v2 = _pCheck.X9
+ _savedIsInit = u8(0)
+ _pBt = (*XBtShared)(_pCheck.X0)
+ _usableSize = _pBt.X16
+ if _iPage == i32(0) {
+ return i32(0)
}
-
- _13_cx = _c & uint32(^(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_c))))) & i32(32)))
- _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_c)))))
- goto _28
-
-_27:
- _13_cx = _c
-_28:
-_29:
- if store5(&_c2, uint32(*postInc11(&_zString, 1))) == uint32(i32(0)) {
- goto _30
+ if _checkRef(tls, _pCheck, uint32(_iPage)) != 0 {
+ return i32(0)
}
-
- if _c2 == _c || _c2 == _13_cx {
- goto _32
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = str(89123)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(32 /* X8 */))) = _iPage
+ if store1(&_rc, _btreeGetPage(tls, _pBt, uint32(_iPage), &_pPage, i32(0))) != i32(0) {
+ _checkAppendMsg(tls, _pCheck, str(89133), _rc)
+ goto _end_of_check
}
-
- goto _29
-
-_32:
- _13_bMatch = _patternCompare(tls, _zPattern, _zString, _pInfo, _matchOther)
- if _13_bMatch == i32(1) {
- goto _33
+ _savedIsInit = _pPage.X0
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = uint8(i32(0))
+ if store1(&_rc, _btreeInitPage(tls, _pPage)) != i32(0) {
+ func() {
+ if _rc != i32(11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68286), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89171)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _checkAppendMsg(tls, _pCheck, str(89190), _rc)
+ goto _end_of_check
}
- return _13_bMatch
-
-_33:
- goto _29
-
-_30:
- goto _34
-
-_26:
-_35:
- if store5(&_c2, func() uint32 {
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zString)) + 1*uintptr(i32(0))))) < i32(128) {
- return uint32(*postInc11(&_zString, 1))
+ _data = _pPage.X19
+ _hdr = int32(_pPage.X6)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = str(89228)
+ _contentOffset = uint32(((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))))) - i32(1)) & i32(65535)) + i32(1))
+ func() {
+ if _contentOffset > _usableSize {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68297), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89254)))
+ crt.X__builtin_abort(tls)
}
- return _sqlite3Utf8Read(tls, &_zString)
- }()) == uint32(i32(0)) {
- goto _36
+ }()
+ _nCell = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(3)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(3)))))) + 1*uintptr(i32(1)))))
+ func() {
+ if int32(_pPage.X14) != _nCell {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68302), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89280)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _cellStart = (_hdr + i32(12)) - (i32(4) * int32(_pPage.X5))
+ func() {
+ if (_pPage.X21) != (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_cellStart))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68307), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89300)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pCellIdx = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_cellStart+(i32(2)*(_nCell-i32(1))))))
+ if (_pPage.X5) != 0 {
+ goto _12
}
-
- if _c2 == _c {
- goto _39
+ _pgno = int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(8))))))
+ if (_pBt.X5) != 0 {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = str(89334)
+ _checkPtrmap(tls, _pCheck, uint32(_pgno), uint8(i32(5)), uint32(_iPage))
}
-
- goto _35
-
-_39:
- _17_bMatch = _patternCompare(tls, _zPattern, _zString, _pInfo, _matchOther)
- if _17_bMatch == i32(1) {
- goto _40
+ _depth = _checkTreePage(tls, _pCheck, _pgno, &_maxKey, _maxKey)
+ _keyCanBeEqual = i32(0)
+ goto _14
+_12:
+ _heap = _pCheck.X11
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_heap)) + 4*uintptr(i32(0)))) = uint32(i32(0))
+_14:
+ _i = _nCell - i32(1)
+_15:
+ if _i < i32(0) || (_pCheck.X4) == 0 {
+ goto _19
}
- return _17_bMatch
-
-_40:
- goto _35
-
-_36:
-_34:
- r0 = i32(2)
- return
-
-_4:
- if _c != _matchOther {
- goto _41
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(36 /* X9 */))) = _i
+ func() {
+ if _pCellIdx != (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_cellStart+(_i*i32(2))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68335), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89362)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pc = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCellIdx)) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCellIdx)) + 1*uintptr(i32(1))))))
+ {
+ p := &_pCellIdx
+ *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(i32(2))))
+ sink13 = *p
}
-
- if int32(_pInfo.X2) != i32(0) {
- goto _42
+ if (_pc < _contentOffset) || (_pc > (_usableSize - uint32(i32(4)))) {
+ _checkAppendMsg(tls, _pCheck, str(89395), _pc, _contentOffset, _usableSize-uint32(i32(4)))
+ _doCoverageCheck = i32(0)
+ goto _16
}
-
- _c = _sqlite3Utf8Read(tls, &_zPattern)
- if _c != uint32(i32(0)) {
- goto _43
+ _pCell = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_pc)))
+ (*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
+ }{(_pPage.X25)})))(tls, _pPage, _pCell, &_6_info)
+ if (_pc + uint32(_6_info.X4)) > _usableSize {
+ _checkAppendMsg(tls, _pCheck, str(89425))
+ _doCoverageCheck = i32(0)
+ goto _16
}
- return i32(1)
-
-_43:
- _zEscaped = _zPattern
- goto _44
-
-_42:
- _21_prior_c = uint32(i32(0))
- _21_seen = i32(0)
- _21_invert = i32(0)
- _c = _sqlite3Utf8Read(tls, &_zString)
- if _c != uint32(i32(0)) {
- goto _45
+ if (_pPage.X2) == 0 {
+ goto _25
}
- return i32(1)
-
-_45:
- _c2 = _sqlite3Utf8Read(tls, &_zPattern)
- if _c2 != uint32(i32(94)) {
- goto _46
+ if func() int32 {
+ if _keyCanBeEqual != 0 {
+ return bool2int((_6_info.X0) > _maxKey)
+ }
+ return bool2int((_6_info.X0) >= _maxKey)
+ }() != 0 {
+ _checkAppendMsg(tls, _pCheck, str(89449), _6_info.X0)
}
-
- _21_invert = i32(1)
- _c2 = _sqlite3Utf8Read(tls, &_zPattern)
-_46:
- if _c2 != uint32(i32(93)) {
- goto _47
+ _maxKey = _6_info.X0
+ _keyCanBeEqual = i32(0)
+_25:
+ if (_6_info.X2) <= uint32(_6_info.X3) {
+ goto _29
}
-
- if _c != uint32(i32(93)) {
- goto _48
+ func() {
+ if ((_pc + uint32(_6_info.X4)) - uint32(i32(4))) > _usableSize {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68365), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89473)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _11_nPage = int32(((((_6_info.X2) - uint32(_6_info.X3)) + _usableSize) - uint32(i32(5))) / (_usableSize - uint32(i32(4))))
+ _11_pgnoOvfl = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(int32(_6_info.X4)-i32(4)))))
+ if (_pBt.X5) != 0 {
+ _checkPtrmap(tls, _pCheck, _11_pgnoOvfl, uint8(i32(3)), uint32(_iPage))
}
-
- _21_seen = i32(1)
-_48:
- _c2 = _sqlite3Utf8Read(tls, &_zPattern)
-_47:
-_49:
- if _c2 == 0 || _c2 == uint32(i32(93)) {
- goto _50
+ _checkList(tls, _pCheck, i32(0), int32(_11_pgnoOvfl), _11_nPage)
+_29:
+ if (_pPage.X5) != 0 {
+ goto _33
}
-
- if _c2 != uint32(i32(45)) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) == i32(93) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zPattern)) + 1*uintptr(i32(0))))) == i32(0) || _21_prior_c <= uint32(i32(0)) {
- goto _55
+ _pgno = int32(_sqlite3Get4byte(tls, _pCell))
+ if (_pBt.X5) != 0 {
+ _checkPtrmap(tls, _pCheck, uint32(_pgno), uint8(i32(5)), uint32(_iPage))
}
-
- _c2 = _sqlite3Utf8Read(tls, &_zPattern)
- if _c < _21_prior_c || _c > _c2 {
- goto _57
+ _d2 = _checkTreePage(tls, _pCheck, _pgno, &_maxKey, _maxKey)
+ _keyCanBeEqual = i32(0)
+ if _d2 != _depth {
+ _checkAppendMsg(tls, _pCheck, str(89507))
+ _depth = _d2
}
-
- _21_seen = i32(1)
-_57:
- _21_prior_c = uint32(i32(0))
- goto _58
-
-_55:
- if _c != _c2 {
- goto _59
+ goto _36
+_33:
+ _btreeHeapInsert(tls, _heap, (_pc< i32(0) {
+ func() {
+ if uint32(_i) > (_usableSize - uint32(i32(4))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68423), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89532)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _20_size = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_i+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_i+i32(2)))))) + 1*uintptr(i32(1)))))
+ func() {
+ if uint32(_i+_20_size) > _usableSize {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68425), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89553)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _btreeHeapInsert(tls, _heap, (uint32(_i)< (_usableSize - uint32(i32(4))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68435), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(89596)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _i = _20_j
+ goto _44
}
-
- goto _0
-
-_64:
- if _noCase == 0 || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_c))))) != int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_c2))))) || _c >= uint32(i32(128)) || _c2 >= uint32(i32(128)) {
- goto _68
+ _nFrag = i32(0)
+ _prev = _contentOffset - uint32(i32(1))
+_55:
+ if _btreeHeapPull(tls, _heap, &_x) == 0 {
+ goto _56
}
-
- goto _0
-
-_68:
- if _c != _matchOne || _zPattern == _zEscaped || _c2 == uint32(i32(0)) {
- goto _71
+ if (_prev & uint32(i32(65535))) >= (_x >> uint(i32(16))) {
+ _checkAppendMsg(tls, _pCheck, str(89617), _x>>uint(i32(16)), _iPage)
+ goto _56
}
+ {
+ p := &_nFrag
+ *p = int32(uint32(*p) + (((_x >> uint(i32(16))) - (_prev & uint32(i32(65535)))) - uint32(i32(1))))
+ sink1 = *p
+ }
+ _prev = _x
+ goto _55
+_56:
+ {
+ p := &_nFrag
+ *p = int32(uint32(*p) + ((_usableSize - (_prev & uint32(i32(65535)))) - uint32(i32(1))))
+ sink1 = *p
+ }
+ if ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_heap)) + 4*uintptr(i32(0))))) == uint32(i32(0))) && (_nFrag != int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7)))))) {
+ _checkAppendMsg(tls, _pCheck, str(89654), _nFrag, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7))))), _iPage)
+ }
+_38:
+_end_of_check:
+ if _doCoverageCheck == 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = _savedIsInit
+ }
+ _releasePage(tls, _pPage)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = _saved_zPfx
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(32 /* X8 */))) = _saved_v1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(36 /* X9 */))) = _saved_v2
+ return _depth + i32(1)
- goto _0
-
-_71:
- return i32(1)
-
-_1:
- return func() int32 {
- if int32(*_zString) == i32(0) {
- return i32(0)
- }
- return i32(1)
- }()
-}
-
-func _sqlite3Utf8Read(tls *crt.TLS, _pz **uint8) (r0 uint32) { // sqlite3.c:27289:1
- var _c uint32 // sqlite3.c:27292:16
- _ = _c
- _c = uint32(*postInc11(_pz, 1))
- if _c < uint32(i32(192)) {
+ _ = _6_info
+ panic(0)
+}
+
+var _checkTreePageØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_checkTreePageØ00__func__Ø000[0], str(89706), 14)
+}
+
+// An implementation of a min-heap.
+//
+// aHeap[0] is the number of elements on the heap. aHeap[1] is the
+// root element. The daughter nodes of aHeap[N] are aHeap[N*2]
+// and aHeap[N*2+1].
+//
+// The heap property is this: Every node is less than or equal to both
+// of its daughter nodes. A consequence of the heap property is that the
+// root node aHeap[1] is always the minimum value currently in the heap.
+//
+// The btreeHeapInsert() routine inserts an unsigned 32-bit number onto
+// the heap, preserving the heap property. The btreeHeapPull() routine
+// removes the root element from the heap (the minimum value in the heap)
+// and then moves other nodes around as necessary to preserve the heap
+// property.
+//
+// This heap is used for cell overlap and coverage testing. Each u32
+// entry represents the span of a cell or freeblock on a btree page.
+// The upper 16 bits are the index of the first byte of a range and the
+// lower 16 bits are the index of the last byte of that range.
+func _btreeHeapInsert(tls *crt.TLS, _aHeap *uint32, _x uint32) {
+ var _j, _i uint32
+ _i = preInc5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap))+4*uintptr(i32(0)))), uint32(1))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i))) = _x
+_0:
+ if (store5(&_j, _i/uint32(i32(2))) > uint32(i32(0))) && ((*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))) > (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i))))) {
+ _x = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i)))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i))) = _x
+ _i = _j
goto _0
}
+}
- _c = uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3Utf8Trans1)) + 1*uintptr(_c-uint32(i32(192))))))
+func _btreeHeapPull(tls *crt.TLS, _aHeap *uint32, _pOut *uint32) (r0 int32) {
+ var _j, _i, _x uint32
+ if store5(&_x, *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(0))))) == uint32(i32(0)) {
+ return i32(0)
+ }
+ *_pOut = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(1))))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_x)))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_x))) = u32(4294967295)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(0)))) -= 1
+ _i = uint32(i32(1))
_1:
- if (int32(*(*_pz)) & i32(192)) != i32(128) {
+ if store5(&_j, _i*uint32(i32(2))) > (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(0))))) {
goto _2
}
-
- _c = (_c << uint(i32(6))) + uint32(i32(63)&int32(*postInc11(_pz, 1)))
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))) > (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j+uint32(i32(1)))))) {
+ _j += 1
+ }
+ if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i)))) < (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))) {
+ goto _2
+ }
+ _x = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i)))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j))) = _x
+ _i = _j
goto _1
-
_2:
- if _c >= uint32(i32(128)) && (_c&u32(4294965248)) != uint32(i32(55296)) && (_c&u32(4294967294)) != uint32(i32(65534)) {
- goto _5
- }
-
- _c = uint32(i32(65533))
-_5:
-_0:
- r0 = _c
- return
-}
-
-var _patternCompareØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_patternCompareØ00__func__Ø000[0], str(90392), 15)
-}
-
-var _globInfo TcompareInfo // sqlite3.c:106133:33
-
-func init() {
- _globInfo = TcompareInfo{X0: u8(42), X1: u8(63), X2: u8(91), X3: u8(0)}
+ return i32(1)
}
-func _sqlite3DefaultRowEst(tls *crt.TLS, _pIdx *XIndex) { // sqlite3.c:103147:1
- var _aVal [5]int16 // sqlite3.c:103149:10
- _ = _aVal
- var _a *int16 // sqlite3.c:103150:10
- _ = _a
- var _nCopy int32 // sqlite3.c:103151:7
- _ = _nCopy
- var _i int32 // sqlite3.c:103152:7
- _ = _i
- _aVal = [5]int16{i16(33), i16(32), i16(30), i16(28), i16(26)}
- _a = _pIdx.X2
- _nCopy = func() int32 {
- if i32(5) < int32(_pIdx.X13) {
- return i32(5)
- }
- return int32(_pIdx.X13)
- }()
+// Delete any previous value and set the value of pMem to be an
+// empty boolean index.
+func _sqlite3VdbeMemSetRowSet(tls *crt.TLS, _pMem *XMem) {
+ var _db *Xsqlite3
+ _db = (*Xsqlite3)(_pMem.X9)
func() {
- if ((uint32((_pIdx.X16)>>uint(i32(7))) << uint(i32(31))) >> uint(i32(31))) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103155), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(90408)))
+ if _db == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70429), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(1201)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0)))) = (*XTable)(_pIdx.X3).X12
- if (*XExpr)(_pIdx.X9) == nil {
- goto _4
- }
-
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0))))
- *p = int16(int32(*p) - i32(10))
- sink16 = *p
- }
-_4:
func() {
- if i32(10) != int32(_sqlite3LogEst(tls, uint64(i32(2)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103161), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(90424)))
+ if (int32(_pMem.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(6728)))
crt.X__builtin_abort(tls)
}
}()
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0))))) >= i32(33) {
- goto _7
+ _sqlite3VdbeMemRelease(tls, _pMem)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = (*int8)(_sqlite3DbMallocRawNN(tls, _db, uint64(i32(64))))
+ if (_db.X17) != 0 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = i32(0)
+ goto _5
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(i32(0)))) = int16(i32(33))
-_7:
func() {
- if i32(33) != int32(_sqlite3LogEst(tls, uint64(i32(10)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103162), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(90448)))
+ if (_pMem.X6) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(89720)))
crt.X__builtin_abort(tls)
}
}()
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a))+2*uintptr(i32(1))))), (unsafe.Pointer)(&_aVal), uint32(_nCopy)*u32(2))
- _i = _nCopy + i32(1)
-_10:
- if _i > int32(_pIdx.X13) {
- goto _13
- }
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(_i))) = int16(i32(23))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, _db, (unsafe.Pointer)(_pMem.X6))
+ *(**XRowSet)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))) = _sqlite3RowSetInit(tls, _db, (unsafe.Pointer)(_pMem.X6), uint32(_pMem.X7))
func() {
- if i32(23) != int32(_sqlite3LogEst(tls, uint64(i32(5)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103168), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(90472)))
+ if (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70440), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(89734)))
crt.X__builtin_abort(tls)
}
}()
- _i += 1
- goto _10
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(32))
+_5:
+}
-_13:
+var _sqlite3VdbeMemSetRowSetØ00__func__Ø000 [24]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemSetRowSetØ00__func__Ø000[0], str(89753), 24)
+}
+
+// Turn bulk memory into a RowSet object. N bytes of memory
+// are available at pSpace. The db pointer is used as a memory context
+// for any subsequent allocations that need to occur.
+// Return a pointer to the new RowSet object.
+//
+// It must be the case that N is sufficient to make a Rowset. If not
+// an assertion fault occurs.
+//
+// If N is larger than the minimum, use the surplus as an initial
+// allocation of entries available to be filled.
+func _sqlite3RowSetInit(tls *crt.TLS, _db *Xsqlite3, _pSpace unsafe.Pointer, _N uint32) (r0 *XRowSet) {
+ var _p *XRowSet
func() {
- if i32(0) != int32(_sqlite3LogEst(tls, uint64(i32(1)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103171), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DefaultRowEstØ00__func__Ø000))), unsafe.Pointer(str(47696)))
+ if _N < u32(32) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetInitØ00__func__Ø000))), unsafe.Pointer(str(89777)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pIdx.X15) == i32(0) {
- goto _18
- }
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 2*uintptr(_pIdx.X13))) = int16(i32(0))
-_18:
+ _p = (*XRowSet)(_pSpace)
+ *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = nil
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = _db
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = nil
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = nil
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))))) = nil
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = (*TRowSetEntry)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(32)))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p))))))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = uint16((_N - u32(32)) / u32(16))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */))) = uint16(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))) = i32(0)
+ return _p
}
-var _sqlite3DefaultRowEstØ00__func__Ø000 [21]int8 // -
+var _sqlite3RowSetInitØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DefaultRowEstØ00__func__Ø000[0], str(90496), 21)
+ crt.Xstrncpy(nil, &_sqlite3RowSetInitØ00__func__Ø000[0], str(89801), 18)
}
-func _sqlite3UnlinkAndDeleteTable(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zTabName *int8) { // sqlite3.c:100352:1
- var _p *XTable // sqlite3.c:100353:9
- _ = _p
- var _pDb *XDb // sqlite3.c:100354:6
- _ = _pDb
- func() {
- if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(1200)))
- crt.X__builtin_abort(tls)
- }
- }()
+// Insert a new value into a RowSet.
+//
+// The mallocFailed flag of the database connection is set if a
+// memory allocation fails.
+func _sqlite3RowSetInsert(tls *crt.TLS, _p *XRowSet, _rowid int64) {
+ var _pEntry, _pLast *TRowSetEntry
func() {
- if _iDb < i32(0) || _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100357), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ if _p == nil || (int32(_p.X7)&i32(2)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46475), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetInsertØ00__func__Ø000))), unsafe.Pointer(str(89819)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if _zTabName == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100358), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(90520)))
- crt.X__builtin_abort(tls)
+ _pEntry = _rowSetEntryAlloc(tls, _p)
+ if _pEntry == nil {
+ return
+ }
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(0 /* X0 */))) = _rowid
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(8 /* X1 */))))) = nil
+ _pLast = (*TRowSetEntry)(_p.X3)
+ if _pLast == nil {
+ goto _4
+ }
+ if _rowid <= (_pLast.X0) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */)))
+ *p = uint16(int32(*p) & i32(-2))
+ sink14 = *p
}
- }()
+ }
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLast)) + uintptr(8 /* X1 */))))) = _pEntry
+ goto _6
+_4:
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = _pEntry
+_6:
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = _pEntry
+}
+
+var _sqlite3RowSetInsertØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3RowSetInsertØ00__func__Ø000[0], str(89857), 20)
+}
+
+// Allocate a new RowSetEntry object that is associated with the
+// given RowSet. Return a pointer to the new and completely uninitialized
+// objected.
+//
+// In an OOM situation, the RowSet.db->mallocFailed flag is set and this
+// routine returns NULL.
+func _rowSetEntryAlloc(tls *crt.TLS, _p *XRowSet) (r0 *TRowSetEntry) {
+ var _1_pNew *TRowSetChunk
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100359), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTableØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46446), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryAllocØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
- _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
- _p = (*XTable)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_pDb.X4)+uintptr(8 /* X2 */))), _zTabName, nil))
- _sqlite3DeleteTable(tls, _db, _p)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(2)
- sink1 = *p
+ if int32(_p.X6) != i32(0) {
+ goto _2
+ }
+ _1_pNew = (*TRowSetChunk)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_p.X1), uint64(u32(1012))))
+ if _1_pNew == nil {
+ return nil
}
+ *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(0 /* X0 */))))) = (*TRowSetChunk)(_p.X0)
+ *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _1_pNew
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = (*TRowSetEntry)(unsafe.Pointer((*[63]TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(4 /* X1 */)))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = uint16(u32(63))
+_2:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) -= 1
+ /* X4 */
+ return postInc57((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(16))))), 16)
}
-var _sqlite3UnlinkAndDeleteTableØ00__func__Ø000 [28]int8 // -
+var _rowSetEntryAllocØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3UnlinkAndDeleteTableØ00__func__Ø000[0], str(90532), 28)
+ crt.Xstrncpy(nil, &_rowSetEntryAllocØ00__func__Ø000[0], str(89877), 17)
}
-func _sqlite3UnlinkAndDeleteIndex(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zIdxName *int8) { // sqlite3.c:100156:1
- var _pIndex *XIndex // sqlite3.c:100157:9
- _ = _pIndex
- var _pHash *XHash // sqlite3.c:100158:8
- _ = _pHash
- var _3_p *XIndex // sqlite3.c:100167:13
- _ = _3_p
+// Extract the smallest element from the RowSet.
+// Write the element into *pRowid. Return 1 on success. Return
+// 0 if the RowSet is already empty.
+//
+// After this routine has been called, the sqlite3RowSetInsert()
+// routine may not be called again.
+//
+// This routine may not be called after sqlite3RowSetTest() has
+// been used. Older versions of RowSet allowed that, but as the
+// capability was not used by the code generator, it was removed
+// for code economy.
+func _sqlite3RowSetNext(tls *crt.TLS, _p *XRowSet, _pRowid *int64) (r0 int32) {
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46669), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetNextØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
- _pHash = (*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(24 /* X3 */)))
- _pIndex = (*XIndex)(_sqlite3HashInsert(tls, _pHash, _zIdxName, nil))
- if func() int32 {
- if _pIndex != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100163), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ func() {
+ if (*TRowSetEntry)(_p.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46670), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetNextØ00__func__Ø000))), unsafe.Pointer(str(89894)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
+ }
+ }()
+ if (int32(_p.X7) & i32(2)) != i32(0) {
goto _4
}
-
- if (*XIndex)((*XTable)(_pIndex.X3).X2) != _pIndex {
- goto _5
+ if (int32(_p.X7) & i32(1)) == i32(0) {
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = _rowSetEntrySort(tls, (*TRowSetEntry)(_p.X2))
}
-
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pIndex.X3) + uintptr(8 /* X2 */))))) = (*XIndex)(_pIndex.X5)
- goto _6
-
-_5:
- _3_p = (*XIndex)((*XTable)(_pIndex.X3).X2)
-_7:
- if func() int32 {
- if _3_p != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100171), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 || (*XIndex)(_3_p.X5) == _pIndex {
- goto _8
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */)))
+ *p = uint16(int32(*p) | i32(3))
+ sink14 = *p
}
-
- _3_p = (*XIndex)(_3_p.X5)
- goto _7
-
-_8:
- if func() int32 {
- if (_3_p != nil) && ((*XIndex)(_3_p.X5) == _pIndex) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100172), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _15
+_4:
+ if (*TRowSetEntry)(_p.X2) == nil {
+ goto _6
+ }
+ *_pRowid = (*TRowSetEntry)(_p.X2).X0
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = (*TRowSetEntry)((*TRowSetEntry)(_p.X2).X1)
+ if (*TRowSetEntry)(_p.X2) == nil {
+ _sqlite3RowSetClear(tls, _p)
}
+ return i32(1)
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_p)) + uintptr(20 /* X5 */))))) = (*XIndex)(_pIndex.X5)
-_15:
_6:
- _freeIndex(tls, _db, _pIndex)
-_4:
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(2)
- sink1 = *p
- }
+ return i32(0)
}
-var _sqlite3UnlinkAndDeleteIndexØ00__func__Ø000 [28]int8 // -
+var _sqlite3RowSetNextØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3UnlinkAndDeleteIndexØ00__func__Ø000[0], str(90560), 28)
+ crt.Xstrncpy(nil, &_sqlite3RowSetNextØ00__func__Ø000[0], str(89908), 18)
}
-func _sqlite3UnlinkAndDeleteTrigger(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zName *int8) { // sqlite3.c:123216:1
- var _pTrigger *XTrigger // sqlite3.c:123217:11
- _ = _pTrigger
- var _pHash *XHash // sqlite3.c:123218:8
- _ = _pHash
- var _2_pTab *XTable // sqlite3.c:123225:13
- _ = _2_pTab
- var _2_pp **XTrigger // sqlite3.c:123226:15
- _ = _2_pp
- func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123220), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000))), unsafe.Pointer(str(52808)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pHash = (*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) + uintptr(40 /* X4 */)))
- _pTrigger = (*XTrigger)(_sqlite3HashInsert(tls, _pHash, _zName, nil))
- if func() int32 {
- if _pTrigger != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123223), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _4
+func _rowSetEntrySort(tls *crt.TLS, _pIn *TRowSetEntry) (r0 *TRowSetEntry) {
+ var _i uint32
+ var _pNext *TRowSetEntry
+ var _aBucket [40]*TRowSetEntry
+ crt.Xmemset(tls, (unsafe.Pointer)(&_aBucket), i32(0), u32(160))
+_0:
+ if _pIn == nil {
+ goto _1
}
-
- if (*XSchema)(_pTrigger.X6) != (*XSchema)(_pTrigger.X7) {
+ _pNext = (*TRowSetEntry)(_pIn.X1)
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(8 /* X1 */))))) = nil
+ _i = uint32(i32(0))
+_2:
+ if (*(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i)))) == nil {
goto _5
}
-
- _2_pTab = _tableOfTrigger(tls, _pTrigger)
- _2_pp = (**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pTab)) + uintptr(68 /* X19 */)))))
+ _pIn = _rowSetEntryMerge(tls, *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))), _pIn)
+ *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))) = nil
+ _i += 1
+ goto _2
+_5:
+ *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))) = _pIn
+ _pIn = _pNext
+ goto _0
+_1:
+ _pIn = *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(i32(0))))
+ _i = uint32(i32(1))
_6:
- if (*_2_pp) == _pTrigger {
+ if _i >= u32(40) {
goto _9
}
-
- _2_pp = (**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_2_pp)) + uintptr(32 /* X9 */)))))
+ if (*(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i)))) == nil {
+ goto _7
+ }
+ _pIn = func() *TRowSetEntry {
+ if _pIn != nil {
+ return _rowSetEntryMerge(tls, _pIn, *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))))
+ }
+ return (*(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))))
+ }()
+_7:
+ _i += 1
goto _6
-
_9:
- *_2_pp = (*XTrigger)((*_2_pp).X9)
-_5:
- _sqlite3DeleteTrigger(tls, _db, _pTrigger)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(2)
- sink1 = *p
- }
-_4:
-}
-
-var _sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000 [30]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3UnlinkAndDeleteTriggerØ00__func__Ø000[0], str(90588), 30)
-}
+ return _pIn
-func _tableOfTrigger(tls *crt.TLS, _pTrigger *XTrigger) (r0 *XTable) { // sqlite3.c:123168:1
- /* X2 */
- return (*XTable)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr(_pTrigger.X7)+uintptr(8))), _pTrigger.X1))
+ _ = _aBucket
+ panic(0)
}
-func _sqlite3BtreeIntegrityCheck(tls *crt.TLS, _p *XBtree, _aRoot *int32, _nRoot int32, _mxErr int32, _pnErr *int32) (r0 *int8) { // sqlite3.c:68500:1
- var _i uint32 // sqlite3.c:68507:8
- _ = _i
- var _sCheck XIntegrityCk // sqlite3.c:68508:15
- _ = _sCheck
- var _pBt *XBtShared // sqlite3.c:68509:12
- _ = _pBt
- var _savedDbFlags int32 // sqlite3.c:68510:7
- _ = _savedDbFlags
- var _zErr [100]int8 // sqlite3.c:68511:8
- _ = _zErr
- var _nRef int32 // sqlite3.c:68512:17
- _ = _nRef
- var _4_notUsed int64 // sqlite3.c:68561:9
- _ = _4_notUsed
- _pBt = (*XBtShared)(_p.X1)
- _savedDbFlags = (*Xsqlite3)(_pBt.X1).X6
- _sqlite3BtreeEnter(tls, _p)
+// Merge two lists of RowSetEntry objects. Remove duplicates.
+//
+// The input lists are connected via pRight pointers and are
+// assumed to each already be in sorted order.
+func _rowSetEntryMerge(tls *crt.TLS, _pA *TRowSetEntry, _pB *TRowSetEntry) (r0 *TRowSetEntry) {
+ var _head TRowSetEntry
+ var _pTail *TRowSetEntry
+ _pTail = &_head
func() {
- if int32(_p.X2) <= i32(0) || int32(_pBt.X8) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68515), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegrityCheckØ00__func__Ø000))), unsafe.Pointer(str(90620)))
+ if _pA == nil || _pB == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46509), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryMergeØ00__func__Ø000))), unsafe.Pointer(str(16619)))
crt.X__builtin_abort(tls)
}
}()
- _nRef = _sqlite3PagerRefcount(tls, (*XPager)(_pBt.X0))
+_3:
func() {
- if _nRef < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68517), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegrityCheckØ00__func__Ø000))), unsafe.Pointer(str(90676)))
+ if (*TRowSetEntry)(_pA.X1) != nil && (_pA.X0) > ((*TRowSetEntry)(_pA.X1).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46511), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryMergeØ00__func__Ø000))), unsafe.Pointer(str(89926)))
crt.X__builtin_abort(tls)
}
}()
- *(**XBtShared)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(0 /* X0 */))))) = _pBt
- *(**XPager)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(4 /* X1 */))))) = (*XPager)(_pBt.X0)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(12 /* X3 */))) = _btreePagecount(tls, (*XBtShared)(_sCheck.X0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(16 /* X4 */))) = _mxErr
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(20 /* X5 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(24 /* X6 */))) = i32(0)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(28 /* X7 */))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(32 /* X8 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(36 /* X9 */))) = i32(0)
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(8 /* X2 */))) = nil
- *(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(68 /* X11 */))) = nil
- _sqlite3StrAccumInit(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))), nil, (*int8)(unsafe.Pointer(&_zErr)), int32(u32(100)), i32(1000000000))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))))) + uintptr(25 /* X7 */))) = uint8(i32(1))
- if (_sCheck.X3) != uint32(i32(0)) {
+ func() {
+ if (*TRowSetEntry)(_pB.X1) != nil && (_pB.X0) > ((*TRowSetEntry)(_pB.X1).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46512), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryMergeØ00__func__Ø000))), unsafe.Pointer(str(89964)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pA.X0) > (_pB.X0) {
+ goto _12
+ }
+ if (_pA.X0) < (_pB.X0) {
+ _pTail = store57((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail))+uintptr(8 /* X1 */))))), _pA)
+ }
+ _pA = (*TRowSetEntry)(_pA.X1)
+ if _pA == nil {
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(8 /* X1 */))))) = _pB
goto _5
}
-
- goto _integrity_ck_cleanup
-
-_5:
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(8 /* X2 */))) = (*uint8)(_sqlite3MallocZero(tls, uint64(((_sCheck.X3)/uint32(i32(8)))+uint32(i32(1)))))
- if (_sCheck.X2) != nil {
- goto _6
+ goto _15
+_12:
+ _pTail = store57((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail))+uintptr(8 /* X1 */))))), _pB)
+ _pB = (*TRowSetEntry)(_pB.X1)
+ if _pB == nil {
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(8 /* X1 */))))) = _pA
+ goto _5
}
+_15:
+ goto _3
+_5:
+ return (*TRowSetEntry)(_head.X1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(24 /* X6 */))) = i32(1)
- goto _integrity_ck_cleanup
+ _ = _head
+ panic(0)
+}
-_6:
- *(**uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(68 /* X11 */))) = (*uint32)(_sqlite3PageMalloc(tls, int32(_pBt.X15)))
- if (_sCheck.X11) != nil {
- goto _7
- }
+var _rowSetEntryMergeØ00__func__Ø000 [17]int8
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(24 /* X6 */))) = i32(1)
- goto _integrity_ck_cleanup
+func init() {
+ crt.Xstrncpy(nil, &_rowSetEntryMergeØ00__func__Ø000[0], str(90002), 17)
+}
-_7:
- _i = (uint32(_sqlite3PendingByte) / (_pBt.X15)) + uint32(i32(1))
- if _i > (_sCheck.X3) {
- goto _8
+// Check to see if element iRowid was inserted into the rowset as
+// part of any insert batch prior to iBatch. Return 1 or 0.
+//
+// If this is the first test of a new batch and if there exist entries
+// on pRowSet->pEntry, then sort those entries into the forest at
+// pRowSet->pForest so that they can be tested.
+func _sqlite3RowSetTest(tls *crt.TLS, _pRowSet *XRowSet, _iBatch int32, _iRowid int64) (r0 int32) {
+ var _p, _pTree, _6_pAux, _6_pTail *TRowSetEntry
+ var _2_ppPrevTree **TRowSetEntry
+ func() {
+ if _pRowSet == nil || (int32(_pRowSet.X7)&i32(2)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46706), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetTestØ00__func__Ø000))), unsafe.Pointer(str(90019)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _iBatch == (_pRowSet.X8) {
+ goto _3
}
-
- _setPageReferenced(tls, &_sCheck, _i)
-_8:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(28 /* X7 */))) = str(90684)
- _checkList(tls, &_sCheck, i32(1), int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(32)))))), int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))))))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(28 /* X7 */))) = nil
- {
- p := (*int32)(unsafe.Pointer(uintptr(_pBt.X1) + uintptr(24 /* X6 */)))
- *p = (*p) & i32(-536870913)
- sink1 = *p
+ _p = (*TRowSetEntry)(_pRowSet.X2)
+ if _p == nil {
+ goto _4
}
- _i = uint32(i32(0))
+ _2_ppPrevTree = (**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(20 /* X5 */)))))
+ if (int32(_pRowSet.X7) & i32(1)) == i32(0) {
+ _p = _rowSetEntrySort(tls, _p)
+ }
+ _pTree = (*TRowSetEntry)(_pRowSet.X5)
+_6:
+ if _pTree == nil {
+ goto _9
+ }
+ _2_ppPrevTree = (**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(8 /* X1 */)))))
+ if (*TRowSetEntry)(_pTree.X2) == nil {
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(12 /* X2 */))))) = _rowSetListToTree(tls, _p)
+ goto _9
+ }
+ _rowSetTreeToList(tls, (*TRowSetEntry)(_pTree.X2), &_6_pAux, &_6_pTail)
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(12 /* X2 */))))) = nil
+ _p = _rowSetEntryMerge(tls, _6_pAux, _p)
+ _pTree = (*TRowSetEntry)(_pTree.X1)
+ goto _6
_9:
- if int32(_i) >= _nRoot || (_sCheck.X4) == 0 {
- goto _13
+ if _pTree != nil {
+ goto _12
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i)))) != i32(0) {
- goto _14
+ *_2_ppPrevTree = store57(&_pTree, _rowSetEntryAlloc(tls, _pRowSet))
+ if _pTree != nil {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(0 /* X0 */))) = int64(i32(0))
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(8 /* X1 */))))) = nil
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(12 /* X2 */))))) = _rowSetListToTree(tls, _p)
}
-
- goto _10
-
+_12:
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(8 /* X2 */))))) = nil
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(12 /* X3 */))))) = nil
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(26 /* X7 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
+ }
+_4:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(28 /* X8 */))) = _iBatch
+_3:
+ _pTree = (*TRowSetEntry)(_pRowSet.X5)
_14:
- if (_pBt.X5) == 0 || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i)))) <= i32(1) {
- goto _16
+ if _pTree == nil {
+ goto _17
}
-
- _checkPtrmap(tls, &_sCheck, uint32(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i)))), uint8(i32(1)), uint32(i32(0)))
-_16:
- _checkTreePage(tls, &_sCheck, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRoot)) + 4*uintptr(_i))), &_4_notUsed, i64(9223372036854775807))
-_10:
- _i += 1
- goto _9
-
-_13:
- *(*int32)(unsafe.Pointer(uintptr(_pBt.X1) + uintptr(24 /* X6 */))) = _savedDbFlags
- _i = uint32(i32(1))
-_17:
- if _i > (_sCheck.X3) || (_sCheck.X4) == 0 {
- goto _21
+ _p = (*TRowSetEntry)(_pTree.X2)
+_18:
+ if _p == nil {
+ goto _19
}
-
- if _getPageReferenced(tls, &_sCheck, _i) != i32(0) || _ptrmapPageno(tls, _pBt, _i) == _i && (_pBt.X5) != 0 {
- goto _24
+ if (_p.X0) < _iRowid {
+ _p = (*TRowSetEntry)(_p.X1)
+ goto _21
}
-
- _checkAppendMsg(tls, &_sCheck, str(90700), _i)
-_24:
- if _getPageReferenced(tls, &_sCheck, _i) == i32(0) || (_ptrmapPageno(tls, _pBt, _i) != _i || (_pBt.X5) == 0) {
- goto _27
+ if (_p.X0) > _iRowid {
+ _p = (*TRowSetEntry)(_p.X2)
+ goto _23
}
+ return i32(1)
- _checkAppendMsg(tls, &_sCheck, str(90724), _i)
-_27:
- _i += 1
- goto _17
-
+_23:
_21:
-_integrity_ck_cleanup:
- _sqlite3PageFree(tls, (unsafe.Pointer)(_sCheck.X11))
- Xsqlite3_free(tls, (unsafe.Pointer)(_sCheck.X2))
- if (_sCheck.X6) == 0 {
- goto _28
- }
-
- _sqlite3StrAccumReset(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck)) + uintptr(20 /* X5 */))) += 1
-_28:
- *_pnErr = _sCheck.X5
- if (_sCheck.X5) != i32(0) {
- goto _29
- }
+ goto _18
+_19:
+ _pTree = (*TRowSetEntry)(_pTree.X1)
+ goto _14
+_17:
+ return i32(0)
- _sqlite3StrAccumReset(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40 /* X10 */))))
-_29:
- func() {
- if _nRef != _sqlite3PagerRefcount(tls, (*XPager)(_pBt.X0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68606), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIntegrityCheckØ00__func__Ø000))), unsafe.Pointer(str(90760)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3BtreeLeave(tls, _p)
- /* X10 */
- return _sqlite3StrAccumFinish(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCheck))+uintptr(40))))
+ _ = _6_pTail
+ panic(0)
}
-var _sqlite3BtreeIntegrityCheckØ00__func__Ø000 [27]int8 // -
+var _sqlite3RowSetTestØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeIntegrityCheckØ00__func__Ø000[0], str(90800), 27)
+ crt.Xstrncpy(nil, &_sqlite3RowSetTestØ00__func__Ø000[0], str(90069), 18)
}
-func _setPageReferenced(tls *crt.TLS, _pCheck *XIntegrityCk, _iPg uint32) { // sqlite3.c:68036:1
+// Convert a sorted list of elements into a binary tree. Make the tree
+// as deep as it needs to be in order to contain the entire list.
+func _rowSetListToTree(tls *crt.TLS, _pList *TRowSetEntry) (r0 *TRowSetEntry) {
+ var _iDepth int32
+ var _p, _pLeft *TRowSetEntry
func() {
- if _iPg > (_pCheck.X3) || i32(1) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68037), unsafe.Pointer((*int8)(unsafe.Pointer(&_setPageReferencedØ00__func__Ø000))), unsafe.Pointer(str(90828)))
+ if _pList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46641), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetListToTreeØ00__func__Ø000))), unsafe.Pointer(str(90087)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck.X2)) + 1*uintptr(_iPg/uint32(i32(8)))))
- *p = uint8(int32(*p) | (i32(1) << uint(int32(_iPg&uint32(i32(7))))))
- sink2 = *p
+ _p = _pList
+ _pList = (*TRowSetEntry)(_p.X1)
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = store57((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X1 */))))), nil)
+ _iDepth = i32(1)
+_2:
+ if _pList == nil {
+ goto _5
}
+ _pLeft = _p
+ _p = _pList
+ _pList = (*TRowSetEntry)(_p.X1)
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = _pLeft
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))))) = _rowSetNDeepTree(tls, &_pList, _iDepth)
+ _iDepth += 1
+ goto _2
+_5:
+ return _p
}
-var _setPageReferencedØ00__func__Ø000 [18]int8 // -
+var _rowSetListToTreeØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_setPageReferencedØ00__func__Ø000[0], str(90880), 18)
+ crt.Xstrncpy(nil, &_rowSetListToTreeØ00__func__Ø000[0], str(90096), 17)
}
-func _checkList(tls *crt.TLS, _pCheck *XIntegrityCk, _isFreeList int32, _iPage int32, _N int32) { // sqlite3.c:68099:1
- var _i int32 // sqlite3.c:68105:7
- _ = _i
- var _expected int32 // sqlite3.c:68106:7
- _ = _expected
- var _iFirst int32 // sqlite3.c:68107:7
- _ = _iFirst
- var _1_pOvflPage *XPgHdr // sqlite3.c:68109:12
- _ = _1_pOvflPage
- var _1_pOvflData *uint8 // sqlite3.c:68110:19
- _ = _1_pOvflData
- var _4_n int32 // sqlite3.c:68124:11
- _ = _4_n
- var _8_iFreePage uint32 // sqlite3.c:68136:16
- _ = _8_iFreePage
- _expected = _N
- _iFirst = _iPage
-_0:
- if postInc1(&_N, int32(-1)) <= i32(0) || (_pCheck.X4) == 0 {
+// Convert a sorted list of elements (connected by pRight) into a binary
+// tree with depth of iDepth. A depth of 1 means the tree contains a single
+// node taken from the head of *ppList. A depth of 2 means a tree with
+// three nodes. And so forth.
+//
+// Use as many entries from the input list as required and update the
+// *ppList to point to the unused elements of the list. If the input
+// list contains too few elements, then construct an incomplete tree
+// and leave *ppList set to NULL.
+//
+// Return a pointer to the root of the constructed binary tree.
+func _rowSetNDeepTree(tls *crt.TLS, _ppList **TRowSetEntry, _iDepth int32) (r0 *TRowSetEntry) {
+ var _p, _pLeft *TRowSetEntry
+ if (*_ppList) == nil {
+ return nil
+ }
+ if _iDepth <= i32(1) {
goto _1
}
+ _pLeft = _rowSetNDeepTree(tls, _ppList, _iDepth-i32(1))
+ _p = *_ppList
+ if _p == nil {
+ return _pLeft
+ }
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = _pLeft
+ *_ppList = (*TRowSetEntry)(_p.X1)
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))))) = _rowSetNDeepTree(tls, _ppList, _iDepth-i32(1))
+ goto _3
+_1:
+ _p = *_ppList
+ *_ppList = (*TRowSetEntry)(_p.X1)
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = store57((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X1 */))))), nil)
+_3:
+ return _p
+}
- if _iPage >= i32(1) {
+// The input, pIn, is a binary tree (or subtree) of RowSetEntry objects.
+// Convert this tree into a linked list connected by the pRight pointers
+// and return pointers to the first and last elements of the new list.
+func _rowSetTreeToList(tls *crt.TLS, _pIn *TRowSetEntry, _ppFirst **TRowSetEntry, _ppLast **TRowSetEntry) {
+ var _1_p *TRowSetEntry
+ func() {
+ if _pIn == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46570), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetTreeToListØ00__func__Ø000))), unsafe.Pointer(str(90113)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (*TRowSetEntry)(_pIn.X2) != nil {
+ _rowSetTreeToList(tls, (*TRowSetEntry)(_pIn.X2), _ppFirst, &_1_p)
+ *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(8 /* X1 */))))) = _pIn
goto _3
}
-
- _checkAppendMsg(tls, _pCheck, str(90900), _N+i32(1), _expected, _iFirst)
- goto _1
-
+ *_ppFirst = _pIn
_3:
- if _checkRef(tls, _pCheck, uint32(_iPage)) == 0 {
- goto _4
- }
-
- goto _1
-
-_4:
- if _sqlite3PagerGet(tls, (*XPager)(_pCheck.X1), uint32(_iPage), &_1_pOvflPage, i32(0)) == 0 {
+ if (*TRowSetEntry)(_pIn.X1) != nil {
+ _rowSetTreeToList(tls, (*TRowSetEntry)(_pIn.X1), (**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn))+uintptr(8 /* X1 */))))), _ppLast)
goto _5
}
-
- _checkAppendMsg(tls, _pCheck, str(90960), _iPage)
- goto _1
-
+ *_ppLast = _pIn
_5:
- _1_pOvflData = (*uint8)(_sqlite3PagerGetData(tls, _1_pOvflPage))
- if _isFreeList == 0 {
- goto _6
- }
-
- _4_n = int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOvflData))+1*uintptr(i32(4))))))
- if ((*XBtShared)(_pCheck.X0).X5) == 0 {
- goto _7
- }
+ func() {
+ if (*TRowSetEntry)((*_ppLast).X1) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(46583), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetTreeToListØ00__func__Ø000))), unsafe.Pointer(str(90120)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+}
- _checkPtrmap(tls, _pCheck, uint32(_iPage), uint8(i32(2)), uint32(i32(0)))
-_7:
- if _4_n <= ((int32((*XBtShared)(_pCheck.X0).X16) / i32(4)) - i32(2)) {
- goto _8
- }
+var _rowSetTreeToListØ00__func__Ø000 [17]int8
- _checkAppendMsg(tls, _pCheck, str(90984), _iPage)
- _N -= 1
- goto _9
+func init() {
+ crt.Xstrncpy(nil, &_rowSetTreeToListØ00__func__Ø000[0], str(90141), 17)
+}
-_8:
+// Run a checkpoint on database iDb. This is a no-op if database iDb is
+// not currently open in WAL mode.
+//
+// If a transaction is open on the database being checkpointed, this
+// function returns SQLITE_LOCKED and a checkpoint is not attempted. If
+// an error occurs while running the checkpoint, an SQLite error code is
+// returned (i.e. SQLITE_IOERR). Otherwise, SQLITE_OK.
+//
+// The mutex on database handle db should be held by the caller. The mutex
+// associated with the specific b-tree being checkpointed is taken by
+// this function while the checkpoint is running.
+//
+// If iDb is passed SQLITE_MAX_ATTACHED, then all attached databases are
+// checkpointed. If an error is encountered it is returned immediately -
+// no attempt is made to checkpoint any remaining databases.
+//
+// Parameter eMode is one of SQLITE_CHECKPOINT_PASSIVE, FULL or RESTART.
+func _sqlite3Checkpoint(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _eMode int32, _pnLog *int32, _pnCkpt *int32) (r0 int32) {
+ var _rc, _i, _bBusy int32
+ _rc = i32(0)
+ _bBusy = i32(0)
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142642), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckpointØ00__func__Ø000))), unsafe.Pointer(str(863)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _pnLog != nil && (*_pnLog) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckpointØ00__func__Ø000))), unsafe.Pointer(str(90158)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _pnCkpt != nil && (*_pnCkpt) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(142644), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckpointØ00__func__Ø000))), unsafe.Pointer(str(90179)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
_i = i32(0)
-_10:
- if _i >= _4_n {
- goto _13
+_8:
+ if _i >= (_db.X5) || _rc != i32(0) {
+ goto _12
}
-
- _8_iFreePage = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOvflData))+1*uintptr(i32(8)+(_i*i32(4))))))
- if ((*XBtShared)(_pCheck.X0).X5) == 0 {
+ if _i != _iDb && _iDb != i32(10) {
goto _14
}
-
- _checkPtrmap(tls, _pCheck, _8_iFreePage, uint8(i32(2)), uint32(i32(0)))
+ _rc = _sqlite3BtreeCheckpoint(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X1), _eMode, _pnLog, _pnCkpt)
+ _pnLog = nil
+ _pnCkpt = nil
+ if _rc == i32(5) {
+ _bBusy = i32(1)
+ _rc = i32(0)
+ }
_14:
- _checkRef(tls, _pCheck, _8_iFreePage)
_i += 1
- goto _10
-
-_13:
- {
- p := &_N
- *p = (*p) - _4_n
- sink1 = *p
- }
-_9:
- goto _15
-
-_6:
- if ((*XBtShared)(_pCheck.X0).X5) == 0 || _N <= i32(0) {
- goto _17
- }
-
- _i = int32(_sqlite3Get4byte(tls, _1_pOvflData))
- _checkPtrmap(tls, _pCheck, uint32(_i), uint8(i32(4)), uint32(_iPage))
-_17:
-_15:
- _iPage = int32(_sqlite3Get4byte(tls, _1_pOvflData))
- _sqlite3PagerUnref(tls, _1_pOvflPage)
- if _isFreeList == 0 || _N >= bool2int(_iPage != i32(0)) {
- goto _19
- }
+ goto _8
+_12:
+ return func() int32 {
+ if (_rc == i32(0)) && _bBusy != 0 {
+ return i32(5)
+ }
+ return _rc
+ }()
+}
- _checkAppendMsg(tls, _pCheck, str(91024))
-_19:
- goto _0
+var _sqlite3CheckpointØ00__func__Ø000 [18]int8
-_1:
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3CheckpointØ00__func__Ø000[0], str(90202), 18)
}
-func _checkAppendMsg(tls *crt.TLS, _pCheck *XIntegrityCk, _zFormat *int8, args ...interface{}) { // sqlite3.c:67998:1
- var _ap []interface{} // sqlite3.c:68003:11
- _ = _ap
- if (_pCheck.X4) != 0 {
+// Run a checkpoint on the Btree passed as the first argument.
+//
+// Return SQLITE_LOCKED if this or any other connection has an open
+// transaction on the shared-cache the argument Btree is connected to.
+//
+// Parameter eMode is one of SQLITE_CHECKPOINT_PASSIVE, FULL or RESTART.
+func _sqlite3BtreeCheckpoint(tls *crt.TLS, _p *XBtree, _eMode int32, _pnLog *int32, _pnCkpt *int32) (r0 int32) {
+ var _rc int32
+ var _1_pBt *XBtShared
+ _rc = i32(0)
+ if _p == nil {
goto _0
}
- return
-
-_0:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(16 /* X4 */))) -= 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(20 /* X5 */))) += 1
- _ap = args
- if ((*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(40 /* X10 */))).X3) == 0 {
- goto _1
- }
-
- _sqlite3StrAccumAppend(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))), str(38408), i32(1))
-_1:
- if (_pCheck.X7) == nil {
+ _1_pBt = (*XBtShared)(_p.X1)
+ _sqlite3BtreeEnter(tls, _p)
+ if int32(_1_pBt.X8) != i32(0) {
+ _rc = i32(6)
goto _2
}
-
- _sqlite3XPrintf(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))), _pCheck.X7, _pCheck.X8, _pCheck.X9)
+ _rc = _sqlite3PagerCheckpoint(tls, (*XPager)(_1_pBt.X0), (*Xsqlite3)(_p.X0), _eMode, _pnLog, _pnCkpt)
_2:
- _sqlite3VXPrintf(tls, (*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))), _zFormat, _ap)
- _ap = nil
- if int32((*XStrAccum)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck))+uintptr(40 /* X10 */))).X6) != i32(1) {
- goto _3
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(24 /* X6 */))) = i32(1)
-_3:
+ _sqlite3BtreeLeave(tls, _p)
+_0:
+ return _rc
}
-func _checkRef(tls *crt.TLS, _pCheck *XIntegrityCk, _iPage uint32) (r0 int32) { // sqlite3.c:68050:1
- if _iPage != uint32(i32(0)) {
- goto _0
+// This function is called when the user invokes "PRAGMA wal_checkpoint",
+// "PRAGMA wal_blocking_checkpoint" or calls the sqlite3_wal_checkpoint()
+// or wal_blocking_checkpoint() API functions.
+//
+// Parameter eMode is one of SQLITE_CHECKPOINT_PASSIVE, FULL or RESTART.
+func _sqlite3PagerCheckpoint(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3, _eMode int32, _pnLog *int32, _pnCkpt *int32) (r0 int32) {
+ var _rc int32
+ _rc = i32(0)
+ if (*XWal)(_pPager.X60) != nil {
+ _rc = _sqlite3WalCheckpoint(tls, (*XWal)(_pPager.X60), _db, _eMode, func() func(*crt.TLS, unsafe.Pointer) int32 {
+ if _eMode == i32(0) {
+ return nil
+ }
+ return (_pPager.X53)
+ }(), _pPager.X54, int32(_pPager.X7), _pPager.X48, (*uint8)(unsafe.Pointer(_pPager.X58)), _pnLog, _pnCkpt)
}
- return i32(1)
+ return _rc
+}
-_0:
- if _iPage <= (_pCheck.X3) {
- goto _1
+// Return TRUE if the pager is in a state where it is OK to change the
+// journalmode. Journalmode changes can only happen when the database
+// is unmodified.
+func _sqlite3PagerOkToChangeJournalMode(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ func() {
+ if _assert_pager_state(tls, _pPager) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54187), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOkToChangeJournalModeØ00__func__Ø000))), unsafe.Pointer(str(11016)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_pPager.X14) >= i32(3) {
+ return i32(0)
}
-
- _checkAppendMsg(tls, _pCheck, str(91064), _iPage)
- return i32(1)
-
-_1:
- if _getPageReferenced(tls, _pCheck, _iPage) == 0 {
- goto _2
+ if func() int32 {
+ if ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil) && ((_pPager.X34) > int64(i32(0))) {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54189), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOkToChangeJournalModeØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return i32(0)
}
-
- _checkAppendMsg(tls, _pCheck, str(91088), _iPage)
return i32(1)
+}
-_2:
- _setPageReferenced(tls, _pCheck, _iPage)
- return i32(0)
+var _sqlite3PagerOkToChangeJournalModeØ00__func__Ø000 [34]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerOkToChangeJournalModeØ00__func__Ø000[0], str(90220), 34)
}
-func _getPageReferenced(tls *crt.TLS, _pCheck *XIntegrityCk, _iPg uint32) (r0 int32) { // sqlite3.c:68028:1
+// This function is called to close the connection to the log file prior
+// to switching from WAL to rollback mode.
+//
+// Before closing the log file, this function attempts to take an
+// EXCLUSIVE lock on the database file. If this cannot be obtained, an
+// error (SQLITE_BUSY) is returned and the log connection is not closed.
+// If successful, the EXCLUSIVE lock is not released before returning.
+func _sqlite3PagerCloseWal(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3) (r0 int32) {
+ var _rc, _1_logexists int32
+ _rc = i32(0)
func() {
- if _iPg > (_pCheck.X3) || i32(1) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68029), unsafe.Pointer((*int8)(unsafe.Pointer(&_getPageReferencedØ00__func__Ø000))), unsafe.Pointer(str(90828)))
+ if int32(_pPager.X2) != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54380), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseWalØ00__func__Ø000))), unsafe.Pointer(str(90254)))
crt.X__builtin_abort(tls)
}
}()
- return int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck.X2)) + 1*uintptr(_iPg/uint32(i32(8)))))) & (i32(1) << uint(int32(_iPg&uint32(i32(7)))))
-}
-
-var _getPageReferencedØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_getPageReferencedØ00__func__Ø000[0], str(91116), 18)
-}
-
-func _checkPtrmap(tls *crt.TLS, _pCheck *XIntegrityCk, _iChild uint32, _eType uint8, _iParent uint32) { // sqlite3.c:68070:1
- var _rc int32 // sqlite3.c:68076:7
- _ = _rc
- var _ePtrmapType uint8 // sqlite3.c:68077:6
- _ = _ePtrmapType
- var _iPtrmapParent uint32 // sqlite3.c:68078:8
- _ = _iPtrmapParent
- _rc = _ptrmapGet(tls, (*XBtShared)(_pCheck.X0), _iChild, &_ePtrmapType, &_iPtrmapParent)
+ if (*XWal)(_pPager.X60) != nil {
+ goto _2
+ }
+ _1_logexists = i32(0)
+ _rc = _pagerLockDb(tls, _pPager, i32(1))
if _rc == i32(0) {
- goto _0
+ _rc = _sqlite3OsAccess(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X61, i32(0), &_1_logexists)
}
-
- if _rc != i32(7) && _rc != i32(3082) {
- goto _2
+ if (_rc == i32(0)) && _1_logexists != 0 {
+ _rc = _pagerOpenWal(tls, _pPager)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(24 /* X6 */))) = i32(1)
_2:
- _checkAppendMsg(tls, _pCheck, str(91136), _iChild)
- return
-
-_0:
- if int32(_ePtrmapType) == int32(_eType) && _iPtrmapParent == _iParent {
- goto _4
+ if _rc != i32(0) || (*XWal)(_pPager.X60) == nil {
+ goto _7
}
-
- _checkAppendMsg(tls, _pCheck, str(91168), _iChild, int32(_eType), _iParent, int32(_ePtrmapType), _iPtrmapParent)
-_4:
-}
-
-func _checkTreePage(tls *crt.TLS, _pCheck *XIntegrityCk, _iPage int32, _piMinKey *int64, _maxKey int64) (r0 int32) { // sqlite3.c:68235:1
- var _pPage *XMemPage // sqlite3.c:68241:11
- _ = _pPage
- var _i int32 // sqlite3.c:68242:7
- _ = _i
- var _rc int32 // sqlite3.c:68243:7
- _ = _rc
- var _depth int32 // sqlite3.c:68244:7
- _ = _depth
- var _d2 int32 // sqlite3.c:68244:19
- _ = _d2
- var _pgno int32 // sqlite3.c:68245:7
- _ = _pgno
- var _nFrag int32 // sqlite3.c:68246:7
- _ = _nFrag
- var _hdr int32 // sqlite3.c:68247:7
- _ = _hdr
- var _cellStart int32 // sqlite3.c:68248:7
- _ = _cellStart
- var _nCell int32 // sqlite3.c:68249:7
- _ = _nCell
- var _doCoverageCheck int32 // sqlite3.c:68250:7
- _ = _doCoverageCheck
- var _keyCanBeEqual int32 // sqlite3.c:68251:7
- _ = _keyCanBeEqual
- var _data *uint8 // sqlite3.c:68253:6
- _ = _data
- var _pCell *uint8 // sqlite3.c:68254:6
- _ = _pCell
- var _pCellIdx *uint8 // sqlite3.c:68255:6
- _ = _pCellIdx
- var _pBt *XBtShared // sqlite3.c:68256:12
- _ = _pBt
- var _pc uint32 // sqlite3.c:68257:7
- _ = _pc
- var _usableSize uint32 // sqlite3.c:68258:7
- _ = _usableSize
- var _contentOffset uint32 // sqlite3.c:68259:7
- _ = _contentOffset
- var _heap *uint32 // sqlite3.c:68260:7
- _ = _heap
- var _x uint32 // sqlite3.c:68261:7
- _ = _x
- var _prev uint32 // sqlite3.c:68261:10
- _ = _prev
- var _saved_zPfx *int8 // sqlite3.c:68262:14
- _ = _saved_zPfx
- var _saved_v1 int32 // sqlite3.c:68263:7
- _ = _saved_v1
- var _saved_v2 int32 // sqlite3.c:68264:7
- _ = _saved_v2
- var _savedIsInit uint8 // sqlite3.c:68265:6
- _ = _savedIsInit
- var _6_info XCellInfo // sqlite3.c:68331:14
- _ = _6_info
- var _11_nPage int32 // sqlite3.c:68363:11
- _ = _11_nPage
- var _11_pgnoOvfl uint32 // sqlite3.c:68364:12
- _ = _11_pgnoOvfl
- var _19_size uint32 // sqlite3.c:68408:13
- _ = _19_size
- var _20_size int32 // sqlite3.c:68422:11
- _ = _20_size
- var _20_j int32 // sqlite3.c:68422:17
- _ = _20_j
- _pPage = nil
- _depth = i32(-1)
- _doCoverageCheck = i32(1)
- _keyCanBeEqual = i32(1)
- _heap = nil
- _prev = u32(0)
- _saved_zPfx = _pCheck.X7
- _saved_v1 = _pCheck.X8
- _saved_v2 = _pCheck.X9
- _savedIsInit = u8(0)
- _pBt = (*XBtShared)(_pCheck.X0)
- _usableSize = _pBt.X16
- if _iPage != i32(0) {
- goto _0
+ _rc = _pagerExclusiveLock(tls, _pPager)
+ if _rc != i32(0) {
+ goto _8
}
- return i32(0)
-
-_0:
- if _checkRef(tls, _pCheck, uint32(_iPage)) == 0 {
- goto _1
+ _rc = _sqlite3WalClose(tls, (*XWal)(_pPager.X60), _db, int32(_pPager.X7), _pPager.X48, (*uint8)(unsafe.Pointer(_pPager.X58)))
+ *(**XWal)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(212 /* X60 */))))) = nil
+ _pagerFixMaplimit(tls, _pPager)
+ if _rc != 0 && ((_pPager.X1) == 0) {
+ _pagerUnlockDb(tls, _pPager, i32(1))
}
- return i32(0)
+_8:
+_7:
+ return _rc
+}
-_1:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = str(91224)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(32 /* X8 */))) = _iPage
- if store1(&_rc, _btreeGetPage(tls, _pBt, uint32(_iPage), &_pPage, i32(0))) == i32(0) {
- goto _2
+var _sqlite3PagerCloseWalØ00__func__Ø000 [21]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerCloseWalØ00__func__Ø000[0], str(90297), 21)
+}
+
+// Set the journal-mode for this pager. Parameter eMode must be one of:
+//
+// PAGER_JOURNALMODE_DELETE
+// PAGER_JOURNALMODE_TRUNCATE
+// PAGER_JOURNALMODE_PERSIST
+// PAGER_JOURNALMODE_OFF
+// PAGER_JOURNALMODE_MEMORY
+// PAGER_JOURNALMODE_WAL
+//
+// The journalmode is set to the value specified if the change is allowed.
+// The change may be disallowed for the following reasons:
+//
+// * An in-memory database can only have its journal_mode set to _OFF
+// or _MEMORY.
+//
+// * Temporary databases cannot have _WAL journalmode.
+//
+// The returned indicate the current (possibly updated) journal-mode.
+func _sqlite3PagerSetJournalMode(tls *crt.TLS, _pPager *XPager, _eMode int32) (r0 int32) {
+ var _6_rc, _6_state int32
+ var _eOld uint8
+ _eOld = _pPager.X2
+ _print_pager_state(tls, _pPager)
+ func() {
+ if _eMode != i32(0) && _eMode != i32(3) && _eMode != i32(1) && _eMode != i32(2) && _eMode != i32(5) && _eMode != i32(4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54090), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(90318)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pPager.X10) != i32(0) && _eMode == i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54101), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(90522)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pPager.X13) == 0 {
+ goto _10
}
-
- _checkAppendMsg(tls, _pCheck, str(91236), _rc)
- goto _end_of_check
-
-_2:
- _savedIsInit = _pPage.X0
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = uint8(i32(0))
- if store1(&_rc, _btreeInitPage(tls, _pPage)) == i32(0) {
- goto _3
+ func() {
+ if int32(_eOld) != i32(4) && int32(_eOld) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54107), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(90574)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_eMode != i32(4)) && (_eMode != i32(2)) {
+ _eMode = int32(_eOld)
+ }
+_10:
+ if _eMode == int32(_eOld) {
+ goto _16
}
-
func() {
- if _rc != i32(11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68286), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91276)))
+ if int32(_pPager.X14) == i32(6) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(15064)))
crt.X__builtin_abort(tls)
}
}()
- _checkAppendMsg(tls, _pCheck, str(91296), _rc)
- goto _end_of_check
-
-_3:
- _data = _pPage.X19
- _hdr = int32(_pPage.X6)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = str(91336)
- _contentOffset = uint32(((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(5)))))) + 1*uintptr(i32(1)))))) - i32(1)) & i32(65535)) + i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(_eMode)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
func() {
- if _contentOffset > _usableSize {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68297), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91364)))
+ if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && (_pPager.X1) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54130), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(90636)))
crt.X__builtin_abort(tls)
}
}()
- _nCell = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(3)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(3)))))) + 1*uintptr(i32(1)))))
+ if (_pPager.X1) != 0 || (int32(_eOld)&i32(5)) != i32(1) || (_eMode&i32(1)) != i32(0) {
+ goto _24
+ }
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
+ if int32(_pPager.X15) >= i32(2) {
+ _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X52, i32(0))
+ goto _26
+ }
+ _6_rc = i32(0)
+ _6_state = int32(_pPager.X14)
func() {
- if int32(_pPage.X14) != _nCell {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68302), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91392)))
+ if _6_state != i32(0) && _6_state != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54147), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(90680)))
crt.X__builtin_abort(tls)
}
}()
- _cellStart = (_hdr + i32(12)) - (i32(4) * int32(_pPage.X5))
+ if _6_state == i32(0) {
+ _6_rc = _sqlite3PagerSharedLock(tls, _pPager)
+ }
+ if int32(_pPager.X14) == i32(1) {
+ func() {
+ if _6_rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54152), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(15012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _6_rc = _pagerLockDb(tls, _pPager, i32(2))
+ }
+ if _6_rc == i32(0) {
+ _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X52, i32(0))
+ }
+ if (_6_rc == i32(0)) && (_6_state == i32(1)) {
+ _pagerUnlockDb(tls, _pPager, i32(1))
+ goto _37
+ }
+ if _6_state == i32(0) {
+ _pager_unlock(tls, _pPager)
+ }
+_37:
func() {
- if (_pPage.X21) != (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_cellStart))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68307), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91412)))
+ if _6_state != int32(_pPager.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54163), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(90721)))
crt.X__builtin_abort(tls)
}
}()
- _pCellIdx = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_cellStart+(i32(2)*(_nCell-i32(1))))))
- if (_pPage.X5) != 0 {
- goto _12
+_26:
+ goto _41
+_24:
+ if _eMode == i32(2) {
+ _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
}
+_41:
+_16:
+ return int32(_pPager.X2)
+}
- _pgno = int32(_sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_hdr+i32(8))))))
- if (_pBt.X5) == 0 {
- goto _13
- }
+// Return a pointer to a human readable string in a static buffer
+// containing the state of the Pager object passed as an argument. This
+// is intended to be used within debuggers. For example, as an alternative
+// to "print *pPager" in gdb:
+//
+// (gdb) printf "%s", print_pager_state(pPager)
+func _print_pager_state(tls *crt.TLS, _p *XPager) (r0 *int8) {
+ Xsqlite3_snprintf(tls, i32(1024), (*int8)(unsafe.Pointer(&_print_pager_stateØ00zRetØ001)), str(90743), unsafe.Pointer(_p.X51), unsafe.Pointer(func() *int8 {
+ if int32(_p.X14) == i32(0) {
+ return str(91021)
+ }
+ return func() *int8 {
+ if int32(_p.X14) == i32(1) {
+ return str(91026)
+ }
+ return func() *int8 {
+ if int32(_p.X14) == i32(2) {
+ return str(91033)
+ }
+ return func() *int8 {
+ if int32(_p.X14) == i32(3) {
+ return str(91047)
+ }
+ return func() *int8 {
+ if int32(_p.X14) == i32(4) {
+ return str(91063)
+ }
+ return func() *int8 {
+ if int32(_p.X14) == i32(5) {
+ return str(91076)
+ }
+ return func() *int8 {
+ if int32(_p.X14) == i32(6) {
+ return str(91092)
+ }
+ return str(91098)
+ }()
+ }()
+ }()
+ }()
+ }()
+ }()
+ }()), _p.X26, unsafe.Pointer(func() *int8 {
+ if int32(_p.X15) == i32(0) {
+ return str(91106)
+ }
+ return func() *int8 {
+ if int32(_p.X15) == i32(2) {
+ return str(91114)
+ }
+ return func() *int8 {
+ if int32(_p.X15) == i32(4) {
+ return str(25020)
+ }
+ return func() *int8 {
+ if int32(_p.X15) == i32(1) {
+ return str(91123)
+ }
+ return func() *int8 {
+ if int32(_p.X15) == i32(5) {
+ return str(91130)
+ }
+ return str(91098)
+ }()
+ }()
+ }()
+ }()
+ }()), unsafe.Pointer(func() *int8 {
+ if (_p.X1) != 0 {
+ return str(91138)
+ }
+ return str(91148)
+ }()), unsafe.Pointer(func() *int8 {
+ if int32(_p.X2) == i32(4) {
+ return str(91155)
+ }
+ return func() *int8 {
+ if int32(_p.X2) == i32(2) {
+ return str(91162)
+ }
+ return func() *int8 {
+ if int32(_p.X2) == i32(0) {
+ return str(91166)
+ }
+ return func() *int8 {
+ if int32(_p.X2) == i32(1) {
+ return str(91173)
+ }
+ return func() *int8 {
+ if int32(_p.X2) == i32(3) {
+ return str(91181)
+ }
+ return func() *int8 {
+ if int32(_p.X2) == i32(5) {
+ return str(91190)
+ }
+ return str(91098)
+ }()
+ }()
+ }()
+ }()
+ }()
+ }()), int32(_p.X10), int32(_p.X13), int32(_p.X3), _p.X34, _p.X35, int32(_p.X22), int32(_p.X23), int32(_p.X24))
+ return (*int8)(unsafe.Pointer(&_print_pager_stateØ00zRetØ001))
+}
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = str(91448)
- _checkPtrmap(tls, _pCheck, uint32(_pgno), uint8(i32(5)), uint32(_iPage))
-_13:
- _depth = _checkTreePage(tls, _pCheck, _pgno, &_maxKey, _maxKey)
- _keyCanBeEqual = i32(0)
- goto _14
+var _print_pager_stateØ00zRetØ001 [1024]int8
-_12:
- _heap = _pCheck.X11
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_heap)) + 4*uintptr(i32(0)))) = uint32(i32(0))
-_14:
- _i = _nCell - i32(1)
-_15:
- if _i < i32(0) || (_pCheck.X4) == 0 {
- goto _19
- }
+var _sqlite3PagerSetJournalModeØ00__func__Ø000 [27]int8
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(36 /* X9 */))) = _i
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerSetJournalModeØ00__func__Ø000[0], str(91194), 27)
+}
+
+// Set both the "read version" (single byte at byte offset 18) and
+// "write version" (single byte at byte offset 19) fields in the database
+// header to iVersion.
+func _sqlite3BtreeSetVersion(tls *crt.TLS, _pBtree *XBtree, _iVersion int32) (r0 int32) {
+ var _rc int32
+ var _1_aData *uint8
+ var _pBt *XBtShared
+ _pBt = (*XBtShared)(_pBtree.X1)
func() {
- if _pCellIdx != (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_cellStart+(_i*i32(2))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68335), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91476)))
+ if _iVersion != i32(1) && _iVersion != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68831), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetVersionØ00__func__Ø000))), unsafe.Pointer(str(91221)))
crt.X__builtin_abort(tls)
}
}()
- _pc = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCellIdx)) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCellIdx)) + 1*uintptr(i32(1))))))
{
- p := &_pCellIdx
- *p = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) - 1*uintptr(i32(2))))
- sink11 = *p
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) & i32(-17))
+ sink14 = *p
}
- if _pc >= _contentOffset && _pc <= (_usableSize-uint32(i32(4))) {
- goto _23
+ if _iVersion == i32(1) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) | i32(16))
+ sink14 = *p
+ }
}
-
- _checkAppendMsg(tls, _pCheck, str(91512), _pc, _contentOffset, _usableSize-uint32(i32(4)))
- _doCoverageCheck = i32(0)
- goto _16
-
-_23:
- _pCell = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_pc)))
- (*(*func(*crt.TLS, *XMemPage, *uint8, *XCellInfo))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *uint8, unsafe.Pointer)
- }{(_pPage.X25)})))(tls, _pPage, _pCell, &_6_info)
- if (_pc + uint32(_6_info.X4)) <= _usableSize {
- goto _24
+ _rc = _sqlite3BtreeBeginTrans(tls, _pBtree, i32(0))
+ if _rc != i32(0) {
+ goto _4
}
-
- _checkAppendMsg(tls, _pCheck, str(91544))
- _doCoverageCheck = i32(0)
- goto _16
-
-_24:
- if (_pPage.X2) == 0 {
- goto _25
+ _1_aData = (*XMemPage)(_pBt.X3).X19
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(18))))) == int32(uint8(_iVersion)) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(19))))) == int32(uint8(_iVersion)) {
+ goto _6
}
-
- if func() int32 {
- if _keyCanBeEqual != 0 {
- return bool2int((_6_info.X0) > _maxKey)
- }
- return bool2int((_6_info.X0) >= _maxKey)
- }() == 0 {
- goto _28
+ _rc = _sqlite3BtreeBeginTrans(tls, _pBtree, i32(2))
+ if _rc != i32(0) {
+ goto _7
}
-
- _checkAppendMsg(tls, _pCheck, str(91568), _6_info.X0)
-_28:
- _maxKey = _6_info.X0
- _keyCanBeEqual = i32(0)
-_25:
- if (_6_info.X2) <= uint32(_6_info.X3) {
- goto _29
+ _rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23))
+ if _rc == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(18)))) = uint8(_iVersion)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(19)))) = uint8(_iVersion)
+ }
+_7:
+_6:
+_4:
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) & i32(-17))
+ sink14 = *p
}
+ return _rc
+}
+
+var _sqlite3BtreeSetVersionØ00__func__Ø000 [23]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeSetVersionØ00__func__Ø000[0], str(91248), 23)
+}
+// Parameter eMode must be one of the PAGER_JOURNALMODE_XXX constants
+// defined in pager.h. This function returns the associated lowercase
+// journal-mode name.
+func _sqlite3JournalModename(tls *crt.TLS, _eMode int32) (r0 *int8) {
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
func() {
- if ((_pc + uint32(_6_info.X4)) - uint32(i32(4))) > _usableSize {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68365), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91592)))
+ if _eMode < i32(0) || _eMode > i32(6) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3JournalModenameØ00__func__Ø000))), unsafe.Pointer(str(91271)))
crt.X__builtin_abort(tls)
}
}()
- _11_nPage = int32(((((_6_info.X2) - uint32(_6_info.X3)) + _usableSize) - uint32(i32(5))) / (_usableSize - uint32(i32(4))))
- _11_pgnoOvfl = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCell))+1*uintptr(int32(_6_info.X4)-i32(4)))))
- if (_pBt.X5) == 0 {
- goto _32
- }
-
- _checkPtrmap(tls, _pCheck, _11_pgnoOvfl, uint8(i32(3)), uint32(_iPage))
-_32:
- _checkList(tls, _pCheck, i32(0), int32(_11_pgnoOvfl), _11_nPage)
-_29:
- if (_pPage.X5) != 0 {
- goto _33
+ if _eMode == i32(6) {
+ return nil
}
+ return *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3JournalModenameØ00azModeNameØ001)) + 4*uintptr(_eMode)))
+}
- _pgno = int32(_sqlite3Get4byte(tls, _pCell))
- if (_pBt.X5) == 0 {
- goto _34
- }
+var _sqlite3JournalModenameØ00__func__Ø000 [23]int8
- _checkPtrmap(tls, _pCheck, uint32(_pgno), uint8(i32(5)), uint32(_iPage))
-_34:
- _d2 = _checkTreePage(tls, _pCheck, _pgno, &_maxKey, _maxKey)
- _keyCanBeEqual = i32(0)
- if _d2 == _depth {
- goto _35
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3JournalModenameØ00__func__Ø000[0], str(91312), 23)
+}
- _checkAppendMsg(tls, _pCheck, str(91628))
- _depth = _d2
-_35:
- goto _36
+var _sqlite3JournalModenameØ00azModeNameØ001 [6]*int8
-_33:
- _btreeHeapInsert(tls, _heap, (_pc< i32(1) {
+ _sqlite3SetString(tls, _pzErrMsg, _db, str(91375))
+ return i32(1)
}
-
- _heap = _pCheck.X11
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_heap)) + 4*uintptr(i32(0)))) = uint32(i32(0))
- _i = _nCell - i32(1)
-_40:
- if _i < i32(0) {
- goto _43
+ _saved_flags = _db.X6
+ _saved_nChange = _db.X29
+ _saved_nTotalChange = _db.X30
+ _saved_mTrace = _db.X24
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(270542848)
+ sink1 = *p
}
-
- _pc = uint32((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_cellStart+(_i*i32(2))))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_cellStart+(_i*i32(2))))))) + 1*uintptr(i32(1))))))
- _19_size = uint32((*(*func(*crt.TLS, *XMemPage, *uint8) uint16)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, *uint8) uint16
- }{(_pPage.X24)})))(tls, _pPage, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_pc)))))
- _btreeHeapInsert(tls, _heap, (_pc< (_usableSize - uint32(i32(4))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68423), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91656)))
+ if crt.Xstrcmp(tls, _pDb.X0, str(91456)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(91466)))
crt.X__builtin_abort(tls)
}
}()
- _20_size = (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_i+i32(2)))))) + 1*uintptr(i32(0))))) << uint(i32(8))) | int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data))+1*uintptr(_i+i32(2)))))) + 1*uintptr(i32(1)))))
+ _pTemp = (*XBtree)(_pDb.X1)
+ _sqlite3BtreeCommit(tls, _pTemp)
+ _nRes = _sqlite3BtreeGetOptimalReserve(tls, _pMain)
+ _sqlite3BtreeSetCacheSize(tls, _pTemp, (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4).X10)
+ _sqlite3BtreeSetSpillSize(tls, _pTemp, _sqlite3BtreeSetSpillSize(tls, _pMain, i32(0)))
+ _sqlite3BtreeSetPagerFlags(tls, _pTemp, uint32(i32(33)))
+ _rc = _execSql(tls, _db, _pzErrMsg, str(24983))
+ if _rc != i32(0) {
+ goto _end_of_vacuum
+ }
+ _rc = _sqlite3BtreeBeginTrans(tls, _pMain, i32(2))
+ if _rc != i32(0) {
+ goto _end_of_vacuum
+ }
+ if _sqlite3PagerGetJournalMode(tls, _sqlite3BtreePager(tls, _pMain)) == i32(5) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(76 /* X27 */))) = i32(0)
+ }
+ if (_sqlite3BtreeSetPageSize(tls, _pTemp, _sqlite3BtreeGetPageSize(tls, _pMain), _nRes, i32(0)) != 0 || ((_isMemDb == 0) && _sqlite3BtreeSetPageSize(tls, _pTemp, _db.X27, _nRes, i32(0)) != 0)) || func() int32 {
+ if (_db.X17) != 0 {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124846), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ _rc = _sqlite3NomemError(tls, i32(124848))
+ goto _end_of_vacuum
+ }
+ _sqlite3BtreeSetAutoVacuum(tls, _pTemp, func() int32 {
+ if int32(_db.X20) >= i32(0) {
+ return int32(_db.X20)
+ }
+ return _sqlite3BtreeGetAutoVacuum(tls, _pMain)
+ }())
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(_nDb)
+ _rc = _execSqlF(tls, _db, _pzErrMsg, str(91503), unsafe.Pointer(_zDbMain))
+ if _rc != i32(0) {
+ goto _end_of_vacuum
+ }
+ _rc = _execSqlF(tls, _db, _pzErrMsg, str(91611), unsafe.Pointer(_zDbMain))
+ if _rc != i32(0) {
+ goto _end_of_vacuum
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
+ _rc = _execSqlF(tls, _db, _pzErrMsg, str(91684), unsafe.Pointer(_zDbMain))
func() {
- if uint32(_i+_20_size) > _usableSize {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68425), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91680)))
+ if ((_db.X6) & i32(268435456)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(91835)))
crt.X__builtin_abort(tls)
}
}()
- _btreeHeapInsert(tls, _heap, (uint32(_i)< (_usableSize - uint32(i32(4))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68435), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkTreePageØ00__func__Ø000))), unsafe.Pointer(str(91728)))
+ if i32(1) != _sqlite3BtreeIsInTrans(tls, _pMain) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(92028)))
crt.X__builtin_abort(tls)
}
}()
- _i = _20_j
- goto _44
-
-_45:
- _nFrag = i32(0)
- _prev = _contentOffset - uint32(i32(1))
-_55:
- if _btreeHeapPull(tls, _heap, &_x) == 0 {
- goto _56
+ _5_i = i32(0)
+_28:
+ if _5_i >= i32(10) {
+ goto _31
}
-
- if (_prev & uint32(i32(65535))) < (_x >> uint(i32(16))) {
- goto _57
+ _sqlite3BtreeGetMeta(tls, _pMain, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3RunVacuumØ00aCopyØ001)) + 1*uintptr(_5_i)))), &_5_meta)
+ _rc = _sqlite3BtreeUpdateMeta(tls, _pTemp, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3RunVacuumØ00aCopyØ001)) + 1*uintptr(_5_i)))), _5_meta+uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3RunVacuumØ00aCopyØ001)) + 1*uintptr(_5_i+i32(1))))))
+ if func() int32 {
+ if _rc != i32(0) {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ goto _end_of_vacuum
}
-
- _checkAppendMsg(tls, _pCheck, str(91752), _x>>uint(i32(16)), _iPage)
- goto _56
-
-_57:
{
- p := &_nFrag
- *p = int32(uint32(*p) + (((_x >> uint(i32(16))) - (_prev & uint32(i32(65535)))) - uint32(i32(1))))
+ p := &_5_i
+ *p = (*p) + i32(2)
sink1 = *p
}
- _prev = _x
- goto _55
-
-_56:
- {
- p := &_nFrag
- *p = int32(uint32(*p) + ((_usableSize - (_prev & uint32(i32(65535)))) - uint32(i32(1))))
- sink1 = *p
+ goto _28
+_31:
+ _rc = _sqlite3BtreeCopyFile(tls, _pMain, _pTemp)
+ if _rc != i32(0) {
+ goto _end_of_vacuum
}
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_heap)) + 4*uintptr(i32(0))))) != uint32(i32(0)) || _nFrag == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7))))) {
- goto _60
- }
-
- _checkAppendMsg(tls, _pCheck, str(91792), _nFrag, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_data)) + 1*uintptr(_hdr+i32(7))))), _iPage)
-_60:
-_38:
-_end_of_check:
- if _doCoverageCheck != 0 {
- goto _61
+ _rc = _sqlite3BtreeCommit(tls, _pTemp)
+ if _rc != i32(0) {
+ goto _end_of_vacuum
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPage)) + uintptr(0 /* X0 */))) = _savedIsInit
-_61:
- _releasePage(tls, _pPage)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(28 /* X7 */))) = _saved_zPfx
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(32 /* X8 */))) = _saved_v1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCheck)) + uintptr(36 /* X9 */))) = _saved_v2
- return _depth + i32(1)
-}
-
-var _checkTreePageØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_checkTreePageØ00__func__Ø000[0], str(91844), 14)
-}
-
-func _btreeHeapInsert(tls *crt.TLS, _aHeap *uint32, _x uint32) { // sqlite3.c:68191:1
- var _j uint32 // sqlite3.c:68192:7
- _ = _j
- var _i uint32 // sqlite3.c:68192:10
- _ = _i
- _i = preInc5((*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap))+4*uintptr(i32(0)))), uint32(1))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i))) = _x
-_0:
- if store5(&_j, _i/uint32(i32(2))) <= uint32(i32(0)) || (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))) <= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i)))) {
- goto _1
+ _sqlite3BtreeSetAutoVacuum(tls, _pMain, _sqlite3BtreeGetAutoVacuum(tls, _pTemp))
+ func() {
+ if _rc != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124950), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(15012)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3BtreeSetPageSize(tls, _pMain, _sqlite3BtreeGetPageSize(tls, _pTemp), _nRes, i32(1))
+_end_of_vacuum:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */))) = _saved_flags
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(84 /* X29 */))) = _saved_nChange
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(88 /* X30 */))) = _saved_nTotalChange
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(72 /* X24 */))) = _saved_mTrace
+ _sqlite3BtreeSetPageSize(tls, _pMain, i32(-1), i32(-1), i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
+ if _pDb != nil {
+ _sqlite3BtreeClose(tls, (*XBtree)(_pDb.X1))
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDb)) + uintptr(4 /* X1 */))))) = nil
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDb)) + uintptr(12 /* X4 */))))) = nil
}
-
- _x = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i)))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i))) = _x
- _i = _j
- goto _0
-
-_1:
+ _sqlite3ResetAllSchemasOfConnection(tls, _db)
+ return _rc
}
-func _btreeHeapPull(tls *crt.TLS, _aHeap *uint32, _pOut *uint32) (r0 int32) { // sqlite3.c:68201:1
- var _j uint32 // sqlite3.c:68202:7
- _ = _j
- var _i uint32 // sqlite3.c:68202:10
- _ = _i
- var _x uint32 // sqlite3.c:68202:13
- _ = _x
- if store5(&_x, *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(0))))) != uint32(i32(0)) {
- goto _0
+// Execute zSql on database db.
+//
+// If zSql returns rows, then each row will have exactly one
+// column. (This will only happen if zSql begins with "SELECT".)
+// Take each row of result and call execSql() again recursively.
+//
+// The execSqlF() routine does the same thing, except it accepts
+// a format string as its third argument
+func _execSql(tls *crt.TLS, _db *Xsqlite3, _pzErrMsg **int8, _zSql *int8) (r0 int32) {
+ var _rc int32
+ var _1_zSubSql *int8
+ var _pStmt unsafe.Pointer
+ _rc = Xsqlite3_prepare_v2(tls, _db, _zSql, i32(-1), &_pStmt, nil)
+ if _rc != i32(0) {
+ return _rc
}
- return i32(0)
-
-_0:
- *_pOut = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(1))))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(1)))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_x)))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_x))) = u32(4294967295)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(0)))) -= 1
- _i = uint32(i32(1))
_1:
- if store5(&_j, _i*uint32(i32(2))) > (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(i32(0))))) {
+ if i32(100) != store1(&_rc, Xsqlite3_step(tls, _pStmt)) {
goto _2
}
-
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))) <= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j+uint32(i32(1)))))) {
- goto _3
- }
-
- _j += 1
-_3:
- if (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i)))) >= (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))) {
- goto _4
- }
-
- goto _2
-
-_4:
- _x = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i)))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_i))) = *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j)))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aHeap)) + 4*uintptr(_j))) = _x
- _i = _j
- goto _1
-
-_2:
- return i32(1)
-}
-
-func _sqlite3VdbeMemSetRowSet(tls *crt.TLS, _pMem *XMem) { // sqlite3.c:70427:1
- var _db *Xsqlite3 // sqlite3.c:70428:11
- _ = _db
- _db = (*Xsqlite3)(_pMem.X9)
- func() {
- if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70429), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(1200)))
- crt.X__builtin_abort(tls)
- }
- }()
+ _1_zSubSql = (*int8)(unsafe.Pointer(Xsqlite3_column_text(tls, _pStmt, i32(0))))
func() {
- if (int32(_pMem.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(5148)))
+ if Xsqlite3_strnicmp(tls, _zSql, str(25702), i32(6)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124657), unsafe.Pointer((*int8)(unsafe.Pointer(&_execSqlØ00__func__Ø000))), unsafe.Pointer(str(92060)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeMemRelease(tls, _pMem)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(20 /* X6 */))) = (*int8)(_sqlite3DbMallocRawNN(tls, _db, uint64(i32(64))))
- if (_db.X17) == 0 {
- goto _4
+ if _1_zSubSql == nil {
+ goto _5
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = i32(0)
- goto _5
-
-_4:
func() {
- if (_pMem.X6) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70437), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(91860)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_zSubSql)) + 1*uintptr(i32(0))))) == i32(83) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124659), unsafe.Pointer((*int8)(unsafe.Pointer(&_execSqlØ00__func__Ø000))), unsafe.Pointer(str(92097)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(24 /* X7 */))) = _sqlite3DbMallocSize(tls, _db, (unsafe.Pointer)(_pMem.X6))
- *(**XRowSet)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */))))))) = _sqlite3RowSetInit(tls, _db, (unsafe.Pointer)(_pMem.X6), uint32(_pMem.X7))
+ _rc = _execSql(tls, _db, _pzErrMsg, _1_zSubSql)
+ if _rc != i32(0) {
+ goto _2
+ }
+_5:
+ goto _1
+_2:
func() {
- if (*XRowSet)(*(*unsafe.Pointer)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(0 /* X0 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70440), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemSetRowSetØ00__func__Ø000))), unsafe.Pointer(str(91876)))
+ if _rc == i32(100) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124664), unsafe.Pointer((*int8)(unsafe.Pointer(&_execSqlØ00__func__Ø000))), unsafe.Pointer(str(92113)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMem)) + uintptr(8 /* X1 */))) = uint16(i32(32))
-_5:
+ if _rc == i32(101) {
+ _rc = i32(0)
+ }
+ if _rc != 0 {
+ _sqlite3SetString(tls, _pzErrMsg, _db, Xsqlite3_errmsg(tls, _db))
+ }
+ Xsqlite3_finalize(tls, _pStmt)
+ return _rc
}
-var _sqlite3VdbeMemSetRowSetØ00__func__Ø000 [24]int8 // -
+var _execSqlØ00__func__Ø000 [8]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemSetRowSetØ00__func__Ø000[0], str(91896), 24)
-}
-
-func _sqlite3RowSetInit(tls *crt.TLS, _db *Xsqlite3, _pSpace unsafe.Pointer, _N uint32) (r0 *XRowSet) { // sqlite3.c:46402:1
- var _p *XRowSet // sqlite3.c:46403:10
- _ = _p
- func() {
- if _N < u32(32) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetInitØ00__func__Ø000))), unsafe.Pointer(str(91920)))
- crt.X__builtin_abort(tls)
- }
- }()
- _p = (*XRowSet)(_pSpace)
- *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = nil
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = _db
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = nil
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = nil
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))))) = nil
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = (*TRowSetEntry)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(32)))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p))))))))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = uint16((_N - u32(32)) / u32(16))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */))) = uint16(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))) = i32(0)
- return _p
+ crt.Xstrncpy(nil, &_execSqlØ00__func__Ø000[0], str(92128), 8)
}
-var _sqlite3RowSetInitØ00__func__Ø000 [18]int8 // -
+var _sqlite3RunVacuumØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3RowSetInitØ00__func__Ø000[0], str(91944), 18)
+ crt.Xstrncpy(nil, &_sqlite3RunVacuumØ00__func__Ø000[0], str(92136), 17)
+}
+
+// Return the number of bytes of space at the end of every page that
+// are intentually left unused. This is the "reserved" space that is
+// sometimes used by extensions.
+//
+// If SQLITE_HAS_MUTEX is defined then the number returned is the
+// greater of the current reserved space and the maximum requested
+// reserve space.
+func _sqlite3BtreeGetOptimalReserve(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _n int32
+ _sqlite3BtreeEnter(tls, _p)
+ _n = _sqlite3BtreeGetReserveNoMutex(tls, _p)
+ _sqlite3BtreeLeave(tls, _p)
+ return _n
}
-func _sqlite3RowSetInsert(tls *crt.TLS, _p *XRowSet, _rowid int64) { // sqlite3.c:46470:1
- var _pEntry *TRowSetEntry // sqlite3.c:46471:22
- _ = _pEntry
- var _pLast *TRowSetEntry // sqlite3.c:46472:22
- _ = _pLast
+// Change the "spill" limit on the number of pages in the cache.
+// If the number of pages exceeds this limit during a write transaction,
+// the pager might attempt to "spill" pages to the journal early in
+// order to free up memory.
+//
+// The value returned is the current spill size. If zero is passed
+// as an argument, no changes are made to the spill size setting, so
+// using mxPage of 0 is a way to query the current spill size.
+func _sqlite3BtreeSetSpillSize(tls *crt.TLS, _p *XBtree, _mxPage int32) (r0 int32) {
+ var _res int32
+ var _pBt *XBtShared
+ _pBt = (*XBtShared)(_p.X1)
func() {
- if _p == nil || (int32(_p.X7)&i32(2)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46475), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetInsertØ00__func__Ø000))), unsafe.Pointer(str(91964)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetSpillSizeØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
- _pEntry = _rowSetEntryAlloc(tls, _p)
- if _pEntry != nil {
- goto _3
- }
- return
-
-_3:
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(0 /* X0 */))) = _rowid
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEntry)) + uintptr(8 /* X1 */))))) = nil
- _pLast = (*TRowSetEntry)(_p.X3)
- if _pLast == nil {
- goto _4
- }
-
- if _rowid > (_pLast.X0) {
- goto _5
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */)))
- *p = uint16(int32(*p) & i32(-2))
- sink12 = *p
- }
-_5:
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLast)) + uintptr(8 /* X1 */))))) = _pEntry
- goto _6
-
-_4:
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = _pEntry
-_6:
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = _pEntry
+ _sqlite3BtreeEnter(tls, _p)
+ _res = _sqlite3PagerSetSpillsize(tls, (*XPager)(_pBt.X0), _mxPage)
+ _sqlite3BtreeLeave(tls, _p)
+ return _res
}
-var _sqlite3RowSetInsertØ00__func__Ø000 [20]int8 // -
+var _sqlite3BtreeSetSpillSizeØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3RowSetInsertØ00__func__Ø000[0], str(92004), 20)
+ crt.Xstrncpy(nil, &_sqlite3BtreeSetSpillSizeØ00__func__Ø000[0], str(92153), 25)
+}
+
+// Change the maximum number of in-memory pages that are allowed
+// before attempting to spill pages to journal.
+func _sqlite3PagerSetSpillsize(tls *crt.TLS, _pPager *XPager, _mxPage int32) (r0 int32) {
+ return _sqlite3PcacheSetSpillsize(tls, (*XPCache)(_pPager.X59), _mxPage)
}
-func _rowSetEntryAlloc(tls *crt.TLS, _p *XRowSet) (r0 *TRowSetEntry) { // sqlite3.c:46445:1
- var _1_pNew *TRowSetChunk // sqlite3.c:46450:24
- _ = _1_pNew
+// Set the suggested cache-spill value. Make no changes if if the
+// argument is zero. Return the effective cache-spill size, which will
+// be the larger of the szSpill and szCache.
+func _sqlite3PcacheSetSpillsize(tls *crt.TLS, _p *XPCache, _mxPage int32) (r0 int32) {
+ var _res int32
func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46446), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryAllocØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ if (_p.X12) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(44952), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheSetSpillsizeØ00__func__Ø000))), unsafe.Pointer(str(92178)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_p.X6) != i32(0) {
+ if _mxPage == 0 {
goto _2
}
-
- _1_pNew = (*TRowSetChunk)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_p.X1), uint64(u32(1012))))
- if _1_pNew != nil {
- goto _3
+ if _mxPage < i32(0) {
+ _mxPage = int32((int64(i32(-1024)) * int64(_mxPage)) / int64((_p.X6)+(_p.X7)))
}
- return nil
-
-_3:
- *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(0 /* X0 */))))) = (*TRowSetChunk)(_p.X0)
- *(**TRowSetChunk)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))))) = _1_pNew
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = (*TRowSetEntry)(unsafe.Pointer((*[63]TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(4 /* X1 */)))))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = uint16(u32(63))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = _mxPage
_2:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) -= 1
- /* X4 */
- return postInc55((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(16))))), 16)
+ _res = _numberOfCachePages(tls, _p)
+ if _res < (_p.X5) {
+ _res = _p.X5
+ }
+ return _res
}
-var _rowSetEntryAllocØ00__func__Ø000 [17]int8 // -
+var _sqlite3PcacheSetSpillsizeØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_rowSetEntryAllocØ00__func__Ø000[0], str(92024), 17)
+ crt.Xstrncpy(nil, &_sqlite3PcacheSetSpillsizeØ00__func__Ø000[0], str(92191), 26)
}
-func _sqlite3RowSetNext(tls *crt.TLS, _p *XRowSet, _pRowid *int64) (r0 int32) { // sqlite3.c:46668:1
- func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46669), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetNextØ00__func__Ø000))), unsafe.Pointer(str(768)))
- crt.X__builtin_abort(tls)
- }
- }()
+func _sqlite3BtreeSetPagerFlags(tls *crt.TLS, _p *XBtree, _pgFlags uint32) (r0 int32) {
+ var _pBt *XBtShared
+ _pBt = (*XBtShared)(_p.X1)
func() {
- if (*TRowSetEntry)(_p.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46670), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetNextØ00__func__Ø000))), unsafe.Pointer(str(92044)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61718), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPagerFlagsØ00__func__Ø000))), unsafe.Pointer(str(8984)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_p.X7) & i32(2)) != i32(0) {
- goto _4
- }
-
- if (int32(_p.X7) & i32(1)) != i32(0) {
- goto _5
- }
-
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = _rowSetEntrySort(tls, (*TRowSetEntry)(_p.X2))
-_5:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(26 /* X7 */)))
- *p = uint16(int32(*p) | i32(3))
- sink12 = *p
- }
-_4:
- if (*TRowSetEntry)(_p.X2) == nil {
- goto _6
- }
-
- *_pRowid = (*TRowSetEntry)(_p.X2).X0
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))))) = (*TRowSetEntry)((*TRowSetEntry)(_p.X2).X1)
- if (*TRowSetEntry)(_p.X2) != nil {
- goto _7
- }
-
- _sqlite3RowSetClear(tls, _p)
-_7:
- return i32(1)
-
-_6:
+ _sqlite3BtreeEnter(tls, _p)
+ _sqlite3PagerSetFlags(tls, (*XPager)(_pBt.X0), _pgFlags)
+ _sqlite3BtreeLeave(tls, _p)
return i32(0)
}
-var _sqlite3RowSetNextØ00__func__Ø000 [18]int8 // -
+var _sqlite3BtreeSetPagerFlagsØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3RowSetNextØ00__func__Ø000[0], str(92060), 18)
+ crt.Xstrncpy(nil, &_sqlite3BtreeSetPagerFlagsØ00__func__Ø000[0], str(92217), 26)
}
-func _rowSetEntrySort(tls *crt.TLS, _pIn *TRowSetEntry) (r0 *TRowSetEntry) { // sqlite3.c:46536:1
- var _i uint32 // sqlite3.c:46537:16
- _ = _i
- var _pNext *TRowSetEntry // sqlite3.c:46538:22
- _ = _pNext
- var _aBucket [40]*TRowSetEntry // sqlite3.c:46538:30
- _ = _aBucket
- crt.Xmemset(tls, (unsafe.Pointer)(&_aBucket), i32(0), u32(160))
-_0:
- if _pIn == nil {
+func _sqlite3PagerSetFlags(tls *crt.TLS, _pPager *XPager, _pgFlags uint32) {
+ var _level uint32
+ _level = _pgFlags & uint32(i32(7))
+ if (_pPager.X10) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(7 /* X4 */))) = uint8(i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(8 /* X5 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(9 /* X6 */))) = uint8(i32(0))
goto _1
}
-
- _pNext = (*TRowSetEntry)(_pIn.X1)
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(8 /* X1 */))))) = nil
- _i = uint32(i32(0))
-_2:
- if (*(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i)))) == nil {
- goto _5
- }
-
- _pIn = _rowSetEntryMerge(tls, *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))), _pIn)
- *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))) = nil
- _i += 1
- goto _2
-
-_5:
- *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))) = _pIn
- _pIn = _pNext
- goto _0
-
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(7 /* X4 */))) = uint8(func() int32 {
+ if _level == uint32(i32(1)) {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(8 /* X5 */))) = uint8(func() int32 {
+ if _level >= uint32(i32(3)) {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(9 /* X6 */))) = uint8(func() int32 {
+ if _level == uint32(i32(4)) {
+ return i32(1)
+ }
+ return i32(0)
+ }())
_1:
- _pIn = *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(i32(0))))
- _i = uint32(i32(1))
-_6:
- if _i >= u32(40) {
+ if (_pPager.X4) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(0))
goto _9
}
-
- if (*(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i)))) != nil {
- goto _10
+ if (_pgFlags & uint32(i32(8))) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(3))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(3))
+ goto _11
}
-
- goto _7
-
-_10:
- _pIn = func() *TRowSetEntry {
- if _pIn != nil {
- return _rowSetEntryMerge(tls, _pIn, *(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))))
- }
- return (*(**TRowSetEntry)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aBucket)) + 4*uintptr(_i))))
- }()
-_7:
- _i += 1
- goto _6
-
+ if (_pgFlags & uint32(i32(16))) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(2))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(3))
+ goto _13
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(2))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(2))
+_13:
+_11:
_9:
- return _pIn
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(11 /* X8 */))) = _pPager.X9
+ if (_pPager.X5) != 0 {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(11 /* X8 */)))
+ *p = uint8(int32(*p) | i32(32))
+ sink2 = *p
+ }
+ }
+ if (_pgFlags & uint32(i32(32))) != 0 {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(21 /* X18 */)))
+ *p = uint8(int32(*p) & i32(-2))
+ sink2 = *p
+ }
+ goto _16
+ }
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(21 /* X18 */)))
+ *p = uint8(int32(*p) | i32(1))
+ sink2 = *p
+ }
+_16:
}
-func _rowSetEntryMerge(tls *crt.TLS, _pA *TRowSetEntry, _pB *TRowSetEntry) (r0 *TRowSetEntry) { // sqlite3.c:46501:1
- var _head TRowSetEntry // sqlite3.c:46505:22
- _ = _head
- var _pTail *TRowSetEntry // sqlite3.c:46506:22
- _ = _pTail
- _pTail = &_head
- func() {
- if _pA == nil || _pB == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46509), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryMergeØ00__func__Ø000))), unsafe.Pointer(str(15780)))
- crt.X__builtin_abort(tls)
- }
- }()
-_3:
+// Change the default pages size and the number of reserved bytes per page.
+// Or, if the page size has already been fixed, return SQLITE_READONLY
+// without changing anything.
+//
+// The page size must be a power of 2 between 512 and 65536. If the page
+// size supplied does not meet this constraint then the page size is not
+// changed.
+//
+// Page sizes are constrained to be a power of two so that the region
+// of the database file used for locking (beginning at PENDING_BYTE,
+// the first byte past the 1GB boundary, 0x40000000) needs to occur
+// at the beginning of a page.
+//
+// If parameter nReserve is less than zero, then the number of reserved
+// bytes per page is left unchanged.
+//
+// If the iFix!=0 then the BTS_PAGESIZE_FIXED flag is set so that the page size
+// and autovacuum mode can no longer be changed.
+func _sqlite3BtreeSetPageSize(tls *crt.TLS, _p *XBtree, _pageSize int32, _nReserve int32, _iFix int32) (r0 int32) {
+ var _rc int32
+ var _pBt *XBtShared
+ _rc = i32(0)
+ _pBt = (*XBtShared)(_p.X1)
func() {
- if (*TRowSetEntry)(_pA.X1) != nil && (_pA.X0) > ((*TRowSetEntry)(_pA.X1).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46511), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryMergeØ00__func__Ø000))), unsafe.Pointer(str(92080)))
+ if _nReserve < i32(-1) || _nReserve > i32(255) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(92243)))
crt.X__builtin_abort(tls)
}
}()
+ _sqlite3BtreeEnter(tls, _p)
+ if (int32(_pBt.X10) & i32(2)) != 0 {
+ _sqlite3BtreeLeave(tls, _p)
+ return i32(8)
+ }
+ if _nReserve < i32(0) {
+ _nReserve = int32((_pBt.X15) - (_pBt.X16))
+ }
func() {
- if (*TRowSetEntry)(_pB.X1) != nil && (_pB.X0) > ((*TRowSetEntry)(_pB.X1).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46512), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetEntryMergeØ00__func__Ø000))), unsafe.Pointer(str(92120)))
+ if _nReserve < i32(0) || _nReserve > i32(255) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61761), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(92273)))
crt.X__builtin_abort(tls)
}
}()
- if (_pA.X0) > (_pB.X0) {
- goto _12
- }
-
- if (_pA.X0) >= (_pB.X0) {
- goto _13
+ if ((_pageSize >= i32(512)) && (_pageSize <= i32(65536))) && (((_pageSize - i32(1)) & _pageSize) == i32(0)) {
+ func() {
+ if (_pageSize & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61764), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(51388)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XBtCursor)(_pBt.X2) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(61765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(22109)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(32 /* X15 */))) = uint32(_pageSize)
+ _freeTempSpace(tls, _pBt)
}
-
- _pTail = store55((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail))+uintptr(8 /* X1 */))))), _pA)
-_13:
- _pA = (*TRowSetEntry)(_pA.X1)
- if _pA != nil {
- goto _14
+ _rc = _sqlite3PagerSetPagesize(tls, (*XPager)(_pBt.X0), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(32 /* X15 */))), _nReserve)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(36 /* X16 */))) = (_pBt.X15) - uint32(uint16(_nReserve))
+ if _iFix != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) | i32(2))
+ sink14 = *p
+ }
}
+ _sqlite3BtreeLeave(tls, _p)
+ return _rc
+}
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(8 /* X1 */))))) = _pB
- goto _5
+var _sqlite3BtreeSetPageSizeØ00__func__Ø000 [24]int8
-_14:
- goto _15
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeSetPageSizeØ00__func__Ø000[0], str(92302), 24)
+}
-_12:
- _pTail = store55((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail))+uintptr(8 /* X1 */))))), _pB)
- _pB = (*TRowSetEntry)(_pB.X1)
- if _pB != nil {
- goto _16
+// Change the 'auto-vacuum' property of the database. If the 'autoVacuum'
+// parameter is non-zero, then auto-vacuum mode is enabled. If zero, it
+// is disabled. The default value for the auto-vacuum property is
+// determined by the SQLITE_DEFAULT_AUTOVACUUM macro.
+func _sqlite3BtreeSetAutoVacuum(tls *crt.TLS, _p *XBtree, _autoVacuum int32) (r0 int32) {
+ var _rc int32
+ var _av uint8
+ var _pBt *XBtShared
+ _pBt = (*XBtShared)(_p.X1)
+ _rc = i32(0)
+ _av = uint8(_autoVacuum)
+ _sqlite3BtreeEnter(tls, _p)
+ if ((int32(_pBt.X10) & i32(2)) != i32(0)) && (func() int32 {
+ if _av != 0 {
+ return i32(1)
+ }
+ return i32(0)
+ }() != int32(_pBt.X5)) {
+ _rc = i32(8)
+ goto _4
}
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(17 /* X5 */))) = uint8(func() int32 {
+ if _av != 0 {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(18 /* X6 */))) = uint8(func() int32 {
+ if int32(_av) == i32(2) {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+_4:
+ _sqlite3BtreeLeave(tls, _p)
+ return _rc
+}
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTail)) + uintptr(8 /* X1 */))))) = _pA
- goto _5
-
-_16:
-_15:
- goto _3
+// Return the value of the 'auto-vacuum' property. If auto-vacuum is
+// enabled 1 is returned. Otherwise 0.
+func _sqlite3BtreeGetAutoVacuum(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _rc int32
+ _sqlite3BtreeEnter(tls, _p)
+ _rc = func() int32 {
+ if ((*XBtShared)(_p.X1).X5) == 0 {
+ return i32(0)
+ }
+ return func() int32 {
+ if ((*XBtShared)(_p.X1).X6) == 0 {
+ return i32(1)
+ }
+ return i32(2)
+ }()
+ }()
+ _sqlite3BtreeLeave(tls, _p)
+ return _rc
+}
-_5:
- return (*TRowSetEntry)(_head.X1)
+func _execSqlF(tls *crt.TLS, _db *Xsqlite3, _pzErrMsg **int8, _zSql *int8, args ...interface{}) (r0 int32) {
+ var _rc int32
+ var _z *int8
+ var _ap []interface{}
+ _ap = args
+ _z = _sqlite3VMPrintf(tls, _db, _zSql, _ap)
+ _ap = nil
+ if _z == nil {
+ return i32(7)
+ }
+ _rc = _execSql(tls, _db, _pzErrMsg, _z)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_z))
+ return _rc
}
-var _rowSetEntryMergeØ00__func__Ø000 [17]int8 // -
+var _sqlite3RunVacuumØ00aCopyØ001 [10]uint8
func init() {
- crt.Xstrncpy(nil, &_rowSetEntryMergeØ00__func__Ø000[0], str(92160), 17)
+ _sqlite3RunVacuumØ00aCopyØ001 = [10]uint8{1, 1, 3, 0, 5, 0, 6, 0, 8, 0}
}
-func _sqlite3RowSetTest(tls *crt.TLS, _pRowSet *XRowSet, _iBatch int32, _iRowid int64) (r0 int32) { // sqlite3.c:46702:1
- var _p *TRowSetEntry // sqlite3.c:46703:22
- _ = _p
- var _pTree *TRowSetEntry // sqlite3.c:46703:26
- _ = _pTree
- var _2_ppPrevTree **TRowSetEntry // sqlite3.c:46714:26
- _ = _2_ppPrevTree
- var _6_pAux *TRowSetEntry // sqlite3.c:46725:30
- _ = _6_pAux
- var _6_pTail *TRowSetEntry // sqlite3.c:46725:37
- _ = _6_pTail
+// Copy the complete content of pBtFrom into pBtTo. A transaction
+// must be active for both files.
+//
+// The size of file pTo may be reduced by this operation. If anything
+// goes wrong, the transaction on pTo is rolled back. If successful, the
+// transaction is committed before returning.
+func _sqlite3BtreeCopyFile(tls *crt.TLS, _pTo *XBtree, _pFrom *XBtree) (r0 int32) {
+ var _rc int32
+ var _1_nByte int64
+ var _pFd *Xsqlite3_file
+ var _b Xsqlite3_backup
+ _sqlite3BtreeEnter(tls, _pTo)
+ _sqlite3BtreeEnter(tls, _pFrom)
func() {
- if _pRowSet == nil || (int32(_pRowSet.X7)&i32(2)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46706), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RowSetTestØ00__func__Ø000))), unsafe.Pointer(str(92180)))
+ if _sqlite3BtreeIsInTrans(tls, _pTo) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69652), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCopyFileØ00__func__Ø000))), unsafe.Pointer(str(92326)))
crt.X__builtin_abort(tls)
}
}()
- if _iBatch == (_pRowSet.X8) {
- goto _3
- }
-
- _p = (*TRowSetEntry)(_pRowSet.X2)
- if _p == nil {
- goto _4
+ _pFd = _sqlite3PagerFile(tls, _sqlite3BtreePager(tls, _pTo))
+ if (*Xsqlite3_io_methods)(_pFd.X0) == nil {
+ goto _2
}
-
- _2_ppPrevTree = (**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(20 /* X5 */)))))
- if (int32(_pRowSet.X7) & i32(1)) != i32(0) {
- goto _5
+ _1_nByte = int64(_sqlite3BtreeGetPageSize(tls, _pFrom)) * int64(_sqlite3BtreeLastPage(tls, _pFrom))
+ _rc = _sqlite3OsFileControl(tls, _pFd, i32(11), (unsafe.Pointer)(&_1_nByte))
+ if _rc == i32(12) {
+ _rc = i32(0)
}
-
- _p = _rowSetEntrySort(tls, _p)
-_5:
- _pTree = (*TRowSetEntry)(_pRowSet.X5)
-_6:
- if _pTree == nil {
- goto _9
+ if _rc != 0 {
+ goto _copy_finished
}
-
- _2_ppPrevTree = (**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(8 /* X1 */)))))
- if (*TRowSetEntry)(_pTree.X2) != nil {
- goto _10
+_2:
+ crt.Xmemset(tls, (unsafe.Pointer)(&_b), i32(0), u32(48))
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(20 /* X5 */))))) = (*Xsqlite3)(_pFrom.X0)
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(24 /* X6 */))))) = _pFrom
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(4 /* X1 */))))) = _pTo
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(16 /* X4 */))) = uint32(i32(1))
+ Xsqlite3_backup_step(tls, &_b, i32(2147483647))
+ func() {
+ if (_b.X7) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCopyFileØ00__func__Ø000))), unsafe.Pointer(str(92353)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = Xsqlite3_backup_finish(tls, &_b)
+ if _rc == i32(0) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr(_pTo.X1) + uintptr(22 /* X10 */)))
+ *p = uint16(int32(*p) & i32(-3))
+ sink14 = *p
+ }
+ goto _8
}
+ _sqlite3PagerClearCache(tls, _sqlite3BtreePager(tls, (*XBtree)(_b.X1)))
+_8:
+ func() {
+ if _sqlite3BtreeIsInTrans(tls, _pTo) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69692), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCopyFileØ00__func__Ø000))), unsafe.Pointer(str(92369)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+_copy_finished:
+ _sqlite3BtreeLeave(tls, _pFrom)
+ _sqlite3BtreeLeave(tls, _pTo)
+ return _rc
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(12 /* X2 */))))) = _rowSetListToTree(tls, _p)
- goto _9
+ _ = _b
+ _ = _1_nByte
+ panic(0)
+}
-_10:
- _rowSetTreeToList(tls, (*TRowSetEntry)(_pTree.X2), &_6_pAux, &_6_pTail)
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(12 /* X2 */))))) = nil
- _p = _rowSetEntryMerge(tls, _6_pAux, _p)
- _pTree = (*TRowSetEntry)(_pTree.X1)
- goto _6
+var _sqlite3BtreeCopyFileØ00__func__Ø000 [21]int8
-_9:
- if _pTree != nil {
- goto _12
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeCopyFileØ00__func__Ø000[0], str(92399), 21)
+}
- *_2_ppPrevTree = store55(&_pTree, _rowSetEntryAlloc(tls, _pRowSet))
- if _pTree == nil {
- goto _13
+// Copy nPage pages from the source b-tree to the destination.
+func Xsqlite3_backup_step(tls *crt.TLS, _p *Xsqlite3_backup, _nPage int32) (r0 int32) {
+ var _rc, _destMode, _pgszSrc, _pgszDest, _2_ii, _2_nSrcPage, _2_bCloseTrans, _21_nDestTruncate, _22_ratio, _25_nDstPage, _36_rc2 int32
+ var _25_iSize, _25_iOff, _25_iEnd int64
+ var _9_iSrcPg, _25_iPg, _30_iSrcPg uint32
+ var _31_zData *uint8
+ var _2_pSrcPager, _2_pDestPager *XPager
+ var _25_pFile *Xsqlite3_file
+ var _10_pSrcPg, _27_pPg, _30_pSrcPg *XPgHdr
+ _pgszSrc = i32(0)
+ _pgszDest = i32(0)
+ if _p == nil {
+ return _sqlite3MisuseError(tls, i32(69253))
}
-
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(0 /* X0 */))) = int64(i32(0))
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(8 /* X1 */))))) = nil
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTree)) + uintptr(12 /* X2 */))))) = _rowSetListToTree(tls, _p)
-_13:
-_12:
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(8 /* X2 */))))) = nil
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(12 /* X3 */))))) = nil
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(26 /* X7 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X5).X3))
+ _sqlite3BtreeEnter(tls, (*XBtree)(_p.X6))
+ if (*Xsqlite3)(_p.X0) != nil {
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
}
-_4:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRowSet)) + uintptr(28 /* X8 */))) = _iBatch
-_3:
- _pTree = (*TRowSetEntry)(_pRowSet.X5)
-_14:
- if _pTree == nil {
- goto _17
+ _rc = _p.X7
+ if _isFatalError(tls, _rc) != 0 {
+ goto _2
}
-
- _p = (*TRowSetEntry)(_pTree.X2)
-_18:
- if _p == nil {
- goto _19
+ _2_pSrcPager = _sqlite3BtreePager(tls, (*XBtree)(_p.X6))
+ _2_pDestPager = _sqlite3BtreePager(tls, (*XBtree)(_p.X1))
+ _2_nSrcPage = i32(-1)
+ _2_bCloseTrans = i32(0)
+ if ((*Xsqlite3)(_p.X0) != nil) && (int32((*XBtShared)((*XBtree)(_p.X6).X1).X8) == i32(2)) {
+ _rc = i32(5)
+ goto _5
}
-
- if (_p.X0) >= _iRowid {
- goto _20
+ _rc = i32(0)
+_5:
+ if (_rc == i32(0)) && (i32(0) == _sqlite3BtreeIsInReadTrans(tls, (*XBtree)(_p.X6))) {
+ _rc = _sqlite3BtreeBeginTrans(tls, (*XBtree)(_p.X6), i32(0))
+ _2_bCloseTrans = i32(1)
}
-
- _p = (*TRowSetEntry)(_p.X1)
- goto _21
-
-_20:
- if (_p.X0) <= _iRowid {
- goto _22
+ if (((_p.X3) == i32(0)) && (_rc == i32(0))) && (_setDestPgsz(tls, _p) == i32(7)) {
+ _rc = i32(7)
}
-
- _p = (*TRowSetEntry)(_p.X2)
- goto _23
-
-_22:
- return i32(1)
-
-_23:
-_21:
- goto _18
-
-_19:
- _pTree = (*TRowSetEntry)(_pTree.X1)
- goto _14
-
-_17:
- return i32(0)
-}
-
-var _sqlite3RowSetTestØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3RowSetTestØ00__func__Ø000[0], str(92232), 18)
-}
-
-func _rowSetListToTree(tls *crt.TLS, _pList *TRowSetEntry) (r0 *TRowSetEntry) { // sqlite3.c:46636:1
- var _iDepth int32 // sqlite3.c:46637:7
- _ = _iDepth
- var _p *TRowSetEntry // sqlite3.c:46638:22
- _ = _p
- var _pLeft *TRowSetEntry // sqlite3.c:46639:22
- _ = _pLeft
+ if ((i32(0) == _rc) && ((_p.X3) == i32(0))) && (i32(0) == store1(&_rc, _sqlite3BtreeBeginTrans(tls, (*XBtree)(_p.X1), i32(2)))) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = i32(1)
+ _sqlite3BtreeGetMeta(tls, (*XBtree)(_p.X1), i32(1), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))
+ }
+ _pgszSrc = _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X6))
+ _pgszDest = _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X1))
+ _destMode = _sqlite3PagerGetJournalMode(tls, _sqlite3BtreePager(tls, (*XBtree)(_p.X1)))
+ if ((i32(0) == _rc) && (_destMode == i32(5))) && (_pgszSrc != _pgszDest) {
+ _rc = i32(8)
+ }
+ _2_nSrcPage = int32(_sqlite3BtreeLastPage(tls, (*XBtree)(_p.X6)))
func() {
- if _pList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46641), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetListToTreeØ00__func__Ø000))), unsafe.Pointer(str(92252)))
+ if _2_nSrcPage < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69318), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(92420)))
crt.X__builtin_abort(tls)
}
}()
- _p = _pList
- _pList = (*TRowSetEntry)(_p.X1)
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = store55((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X1 */))))), nil)
- _iDepth = i32(1)
-_2:
- if _pList == nil {
- goto _5
+ _2_ii = i32(0)
+_19:
+ if _nPage >= i32(0) && _2_ii >= _nPage || (_p.X4) > uint32(_2_nSrcPage) || _rc != 0 {
+ goto _25
}
-
- _pLeft = _p
- _p = _pList
- _pList = (*TRowSetEntry)(_p.X1)
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = _pLeft
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))))) = _rowSetNDeepTree(tls, &_pList, _iDepth)
- _iDepth += 1
- goto _2
-
-_5:
- return _p
-}
-
-var _rowSetListToTreeØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_rowSetListToTreeØ00__func__Ø000[0], str(92264), 17)
-}
-
-func _rowSetNDeepTree(tls *crt.TLS, _ppList **TRowSetEntry, _iDepth int32) (r0 *TRowSetEntry) { // sqlite3.c:46600:1
- var _p *TRowSetEntry // sqlite3.c:46604:22
- _ = _p
- var _pLeft *TRowSetEntry // sqlite3.c:46605:22
- _ = _pLeft
- if (*_ppList) != nil {
- goto _0
+ _9_iSrcPg = _p.X4
+ if _9_iSrcPg == ((uint32(_sqlite3PendingByte) / ((*XBtShared)((*XBtree)(_p.X6).X1).X15)) + uint32(i32(1))) {
+ goto _26
}
- return nil
-
-_0:
- if _iDepth <= i32(1) {
- goto _1
+ _rc = _sqlite3PagerGet(tls, _2_pSrcPager, _9_iSrcPg, &_10_pSrcPg, i32(2))
+ if _rc == i32(0) {
+ _rc = _backupOnePage(tls, _p, _9_iSrcPg, (*uint8)(_sqlite3PagerGetData(tls, _10_pSrcPg)), i32(0))
+ _sqlite3PagerUnref(tls, _10_pSrcPg)
}
-
- _pLeft = _rowSetNDeepTree(tls, _ppList, _iDepth-i32(1))
- _p = *_ppList
- if _p != nil {
- goto _2
+_26:
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) += 1
+ _2_ii += 1
+ goto _19
+_25:
+ if _rc != i32(0) {
+ goto _28
+ }
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = uint32(_2_nSrcPage)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X8 */))) = uint32(_2_nSrcPage+i32(1)) - (_p.X4)
+ if (_p.X4) > uint32(_2_nSrcPage) {
+ _rc = i32(101)
+ goto _30
+ }
+ if (_p.X10) == 0 {
+ _attachBackupObject(tls, _p)
+ }
+_30:
+_28:
+ if _rc != i32(101) {
+ goto _32
+ }
+ if _2_nSrcPage == i32(0) {
+ _rc = _sqlite3BtreeNewDb(tls, (*XBtree)(_p.X1))
+ _2_nSrcPage = i32(1)
+ }
+ if (_rc == i32(0)) || (_rc == i32(101)) {
+ _rc = _sqlite3BtreeUpdateMeta(tls, (*XBtree)(_p.X1), i32(1), (_p.X2)+uint32(i32(1)))
+ }
+ if _rc != i32(0) {
+ goto _36
+ }
+ if (*Xsqlite3)(_p.X0) != nil {
+ _sqlite3ResetAllSchemasOfConnection(tls, (*Xsqlite3)(_p.X0))
+ }
+ if _destMode == i32(5) {
+ _rc = _sqlite3BtreeSetVersion(tls, (*XBtree)(_p.X1), i32(2))
+ }
+_36:
+ if _rc != i32(0) {
+ goto _39
}
- return _pLeft
-
-_2:
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = _pLeft
- *_ppList = (*TRowSetEntry)(_p.X1)
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))))) = _rowSetNDeepTree(tls, _ppList, _iDepth-i32(1))
- goto _3
-
-_1:
- _p = *_ppList
- *_ppList = (*TRowSetEntry)(_p.X1)
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X2 */))))) = store55((**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X1 */))))), nil)
-_3:
- return _p
-}
-
-func _rowSetTreeToList(tls *crt.TLS, _pIn *TRowSetEntry, _ppFirst **TRowSetEntry, _ppLast **TRowSetEntry) { // sqlite3.c:46565:1
- var _1_p *TRowSetEntry // sqlite3.c:46572:24
- _ = _1_p
func() {
- if _pIn == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46570), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetTreeToListØ00__func__Ø000))), unsafe.Pointer(str(92284)))
+ if _pgszSrc != _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X6)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(92432)))
crt.X__builtin_abort(tls)
}
}()
- if (*TRowSetEntry)(_pIn.X2) == nil {
- goto _2
- }
-
- _rowSetTreeToList(tls, (*TRowSetEntry)(_pIn.X2), _ppFirst, &_1_p)
- *(**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(8 /* X1 */))))) = _pIn
- goto _3
-
-_2:
- *_ppFirst = _pIn
-_3:
- if (*TRowSetEntry)(_pIn.X1) == nil {
- goto _4
- }
-
- _rowSetTreeToList(tls, (*TRowSetEntry)(_pIn.X1), (**TRowSetEntry)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn))+uintptr(8 /* X1 */))))), _ppLast)
- goto _5
-
-_4:
- *_ppLast = _pIn
-_5:
func() {
- if (*TRowSetEntry)((*_ppLast).X1) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(46583), unsafe.Pointer((*int8)(unsafe.Pointer(&_rowSetTreeToListØ00__func__Ø000))), unsafe.Pointer(str(92292)))
+ if _pgszDest != _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(92474)))
crt.X__builtin_abort(tls)
}
}()
-}
-
-var _rowSetTreeToListØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_rowSetTreeToListØ00__func__Ø000[0], str(92316), 17)
-}
-
-func _sqlite3Checkpoint(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _eMode int32, _pnLog *int32, _pnCkpt *int32) (r0 int32) { // sqlite3.c:142637:1
- var _rc int32 // sqlite3.c:142638:7
- _ = _rc
- var _i int32 // sqlite3.c:142639:7
- _ = _i
- var _bBusy int32 // sqlite3.c:142640:7
- _ = _bBusy
- _rc = i32(0)
- _bBusy = i32(0)
+ if _pgszSrc >= _pgszDest {
+ goto _44
+ }
+ _22_ratio = _pgszDest / _pgszSrc
+ _21_nDestTruncate = ((_2_nSrcPage + _22_ratio) - i32(1)) / _22_ratio
+ if _21_nDestTruncate == int32((uint32(_sqlite3PendingByte)/((*XBtShared)((*XBtree)(_p.X1).X1).X15))+uint32(i32(1))) {
+ _21_nDestTruncate -= 1
+ }
+ goto _46
+_44:
+ _21_nDestTruncate = _2_nSrcPage * (_pgszSrc / _pgszDest)
+_46:
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142642), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckpointØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ if _21_nDestTruncate <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69387), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(92518)))
crt.X__builtin_abort(tls)
}
}()
+ if _pgszSrc >= _pgszDest {
+ goto _49
+ }
+ _25_iSize = int64(_pgszSrc) * int64(_2_nSrcPage)
+ _25_pFile = _sqlite3PagerFile(tls, _2_pDestPager)
func() {
- if _pnLog != nil && (*_pnLog) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckpointØ00__func__Ø000))), unsafe.Pointer(str(92336)))
+ if _25_pFile == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69406), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(58046)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _pnCkpt != nil && (*_pnCkpt) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(142644), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckpointØ00__func__Ø000))), unsafe.Pointer(str(92360)))
+ if _21_nDestTruncate != i32(0) && (int64(_21_nDestTruncate)*int64(_pgszDest)) < _25_iSize && (_21_nDestTruncate != int32(((uint32(_sqlite3PendingByte)/((*XBtShared)((*XBtree)(_p.X1).X1).X15))+uint32(i32(1)))-uint32(i32(1))) || _25_iSize < int64(_sqlite3PendingByte) || _25_iSize > int64(_sqlite3PendingByte+_pgszDest)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69407), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(92534)))
crt.X__builtin_abort(tls)
}
}()
- _i = i32(0)
-_8:
- if _i >= (_db.X5) || _rc != i32(0) {
- goto _12
+ _sqlite3PagerPagecount(tls, _2_pDestPager, &_25_nDstPage)
+ _25_iPg = uint32(_21_nDestTruncate)
+_58:
+ if _rc != i32(0) || _25_iPg > uint32(_25_nDstPage) {
+ goto _62
}
-
- if _i != _iDb && _iDb != i32(10) {
- goto _14
+ if _25_iPg == ((uint32(_sqlite3PendingByte) / ((*XBtShared)((*XBtree)(_p.X1).X1).X15)) + uint32(i32(1))) {
+ goto _63
}
-
- _rc = _sqlite3BtreeCheckpoint(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X1), _eMode, _pnLog, _pnCkpt)
- _pnLog = nil
- _pnCkpt = nil
- if _rc != i32(5) {
- goto _15
+ _rc = _sqlite3PagerGet(tls, _2_pDestPager, _25_iPg, &_27_pPg, i32(0))
+ if _rc == i32(0) {
+ _rc = _sqlite3PagerWrite(tls, _27_pPg)
+ _sqlite3PagerUnref(tls, _27_pPg)
+ }
+_63:
+ _25_iPg += 1
+ goto _58
+_62:
+ if _rc == i32(0) {
+ _rc = _sqlite3PagerCommitPhaseOne(tls, _2_pDestPager, nil, i32(1))
+ }
+ _25_iEnd = func() int64 {
+ if int64(_sqlite3PendingByte+_pgszDest) < _25_iSize {
+ return int64(_sqlite3PendingByte + _pgszDest)
+ }
+ return _25_iSize
+ }()
+ _25_iOff = int64(_sqlite3PendingByte + _pgszSrc)
+_68:
+ if _rc != i32(0) || _25_iOff >= _25_iEnd {
+ goto _72
+ }
+ _30_pSrcPg = nil
+ _30_iSrcPg = uint32((_25_iOff / int64(_pgszSrc)) + int64(i32(1)))
+ _rc = _sqlite3PagerGet(tls, _2_pSrcPager, _30_iSrcPg, &_30_pSrcPg, i32(0))
+ if _rc == i32(0) {
+ _31_zData = (*uint8)(_sqlite3PagerGetData(tls, _30_pSrcPg))
+ _rc = _sqlite3OsWrite(tls, _25_pFile, (unsafe.Pointer)(_31_zData), _pgszSrc, _25_iOff)
}
+ _sqlite3PagerUnref(tls, _30_pSrcPg)
+ {
+ p := &_25_iOff
+ *p = (*p) + int64(_pgszSrc)
+ sink6 = *p
+ }
+ goto _68
+_72:
+ if _rc == i32(0) {
+ _rc = _backupTruncateFile(tls, _25_pFile, _25_iSize)
+ }
+ if _rc == i32(0) {
+ _rc = _sqlite3PagerSync(tls, _2_pDestPager, nil)
+ }
+ goto _76
+_49:
+ _sqlite3PagerTruncateImage(tls, _2_pDestPager, uint32(_21_nDestTruncate))
+ _rc = _sqlite3PagerCommitPhaseOne(tls, _2_pDestPager, nil, i32(0))
+_76:
+ if (i32(0) == _rc) && (i32(0) == store1(&_rc, _sqlite3BtreeCommitPhaseTwo(tls, (*XBtree)(_p.X1), i32(0)))) {
+ _rc = i32(101)
+ }
+_39:
+_32:
+ if _2_bCloseTrans != 0 {
+ _36_rc2 = _sqlite3BtreeCommitPhaseOne(tls, (*XBtree)(_p.X6), nil)
+ {
+ p := &_36_rc2
+ *p = (*p) | _sqlite3BtreeCommitPhaseTwo(tls, (*XBtree)(_p.X6), i32(0))
+ sink1 = *p
+ }
+ func() {
+ if _36_rc2 != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69481), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(18873)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ }
+ if _rc == i32(3082) {
+ _rc = _sqlite3NomemError(tls, i32(69485))
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = _rc
+_2:
+ if (*Xsqlite3)(_p.X0) != nil {
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
+ }
+ _sqlite3BtreeLeave(tls, (*XBtree)(_p.X6))
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X5).X3))
+ return _rc
+}
- _bBusy = i32(1)
- _rc = i32(0)
-_15:
-_14:
- _i += 1
- goto _8
+// Attempt to set the page size of the destination to match the page size
+// of the source.
+func _setDestPgsz(tls *crt.TLS, _p *Xsqlite3_backup) (r0 int32) {
+ var _rc int32
+ _rc = _sqlite3BtreeSetPageSize(tls, (*XBtree)(_p.X1), _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X6)), i32(-1), i32(0))
+ return _rc
+}
-_12:
- return func() int32 {
- if (_rc == i32(0)) && _bBusy != 0 {
- return i32(5)
+var _sqlite3_backup_stepØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_backup_stepØ00__func__Ø000[0], str(92715), 20)
+}
+
+// Register this backup object with the associated source pager for
+// callbacks when pages are changed or the cache invalidated.
+func _attachBackupObject(tls *crt.TLS, _p *Xsqlite3_backup) {
+ var _pp **Xsqlite3_backup
+ func() {
+ if _sqlite3BtreeHoldsMutex(tls, (*XBtree)(_p.X6)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(69236), unsafe.Pointer((*int8)(unsafe.Pointer(&_attachBackupObjectØ00__func__Ø000))), unsafe.Pointer(str(92735)))
+ crt.X__builtin_abort(tls)
}
- return _rc
}()
+ _pp = _sqlite3PagerBackupPtr(tls, _sqlite3BtreePager(tls, (*XBtree)(_p.X6)))
+ *(**Xsqlite3_backup)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))))) = *_pp
+ *_pp = _p
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(1)
}
-var _sqlite3CheckpointØ00__func__Ø000 [18]int8 // -
+var _attachBackupObjectØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3CheckpointØ00__func__Ø000[0], str(92384), 18)
+ crt.Xstrncpy(nil, &_attachBackupObjectØ00__func__Ø000[0], str(92767), 19)
}
-func _sqlite3BtreeCheckpoint(tls *crt.TLS, _p *XBtree, _eMode int32, _pnLog *int32, _pnCkpt *int32) (r0 int32) { // sqlite3.c:68654:1
- var _rc int32 // sqlite3.c:68655:7
- _ = _rc
- var _1_pBt *XBtShared // sqlite3.c:68657:14
- _ = _1_pBt
- _rc = i32(0)
- if _p == nil {
- goto _0
- }
+// Return a pointer to the pPager->pBackup variable. The backup module
+// in backup.c maintains the content of this variable. This module
+// uses it opaquely as an argument to sqlite3BackupRestart() and
+// sqlite3BackupUpdate() only.
+func _sqlite3PagerBackupPtr(tls *crt.TLS, _pPager *XPager) (r0 **Xsqlite3_backup) {
+ /* X36 */
+ return (**Xsqlite3_backup)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(92)))))
+}
- _1_pBt = (*XBtShared)(_p.X1)
+// Initialize the first page of the database file (creating a database
+// consisting of a single page and no schema objects). Return SQLITE_OK
+// if successful, or an SQLite error code otherwise.
+func _sqlite3BtreeNewDb(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _rc int32
_sqlite3BtreeEnter(tls, _p)
- if int32(_1_pBt.X8) == i32(0) {
- goto _1
- }
-
- _rc = i32(6)
- goto _2
-
-_1:
- _rc = _sqlite3PagerCheckpoint(tls, (*XPager)(_1_pBt.X0), (*Xsqlite3)(_p.X0), _eMode, _pnLog, _pnCkpt)
-_2:
+ *(*uint32)(unsafe.Pointer(uintptr(_p.X1) + uintptr(44 /* X18 */))) = uint32(i32(0))
+ _rc = _newDatabase(tls, (*XBtShared)(_p.X1))
_sqlite3BtreeLeave(tls, _p)
-_0:
return _rc
}
-func _sqlite3PagerCheckpoint(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3, _eMode int32, _pnLog *int32, _pnCkpt *int32) (r0 int32) { // sqlite3.c:54236:1
- var _rc int32 // sqlite3.c:54243:7
- _ = _rc
- _rc = i32(0)
- if (*XWal)(_pPager.X60) == nil {
- goto _0
+// If pFile is currently larger than iSize bytes, then truncate it to
+// exactly iSize bytes. If pFile is not larger than iSize bytes, then
+// this function is a no-op.
+//
+// Return SQLITE_OK if everything is successful, or an SQLite error
+// code if an error occurs.
+func _backupTruncateFile(tls *crt.TLS, _pFile *Xsqlite3_file, _iSize int64) (r0 int32) {
+ var _rc int32
+ var _iCurrent int64
+ _rc = _sqlite3OsFileSize(tls, _pFile, &_iCurrent)
+ if (_rc == i32(0)) && (_iCurrent > _iSize) {
+ _rc = _sqlite3OsTruncate(tls, _pFile, _iSize)
}
+ return _rc
+}
- _rc = _sqlite3WalCheckpoint(tls, (*XWal)(_pPager.X60), _db, _eMode, func() func(*crt.TLS, unsafe.Pointer) int32 {
- if _eMode == i32(0) {
- return nil
+// Release all resources associated with an sqlite3_backup* handle.
+func Xsqlite3_backup_finish(tls *crt.TLS, _p *Xsqlite3_backup) (r0 int32) {
+ var _rc int32
+ var _pSrcDb *Xsqlite3
+ var _pp **Xsqlite3_backup
+ if _p == nil {
+ return i32(0)
+ }
+ _pSrcDb = (*Xsqlite3)(_p.X5)
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pSrcDb.X3))
+ _sqlite3BtreeEnter(tls, (*XBtree)(_p.X6))
+ if (*Xsqlite3)(_p.X0) != nil {
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
+ }
+ if (*Xsqlite3)(_p.X0) != nil {
+ *(*int32)(unsafe.Pointer(uintptr(_p.X6) + uintptr(16 /* X7 */))) -= 1
+ }
+ if (_p.X10) == 0 {
+ goto _3
+ }
+ _pp = _sqlite3PagerBackupPtr(tls, _sqlite3BtreePager(tls, (*XBtree)(_p.X6)))
+_4:
+ if (*_pp) != _p {
+ _pp = (**Xsqlite3_backup)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_pp)) + uintptr(44 /* X11 */)))))
+ goto _4
+ }
+ *_pp = (*Xsqlite3_backup)(_p.X11)
+_3:
+ _sqlite3BtreeRollback(tls, (*XBtree)(_p.X1), i32(0), i32(0))
+ _rc = func() int32 {
+ if (_p.X7) == i32(101) {
+ return i32(0)
}
- return (_pPager.X53)
- }(), _pPager.X54, int32(_pPager.X7), _pPager.X48, (*uint8)(unsafe.Pointer(_pPager.X58)), _pnLog, _pnCkpt)
-_0:
+ return (_p.X7)
+ }()
+ if (*Xsqlite3)(_p.X0) != nil {
+ _sqlite3Error(tls, (*Xsqlite3)(_p.X0), _rc)
+ _sqlite3LeaveMutexAndCloseZombie(tls, (*Xsqlite3)(_p.X0))
+ }
+ _sqlite3BtreeLeave(tls, (*XBtree)(_p.X6))
+ if (*Xsqlite3)(_p.X0) != nil {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p))
+ }
+ _sqlite3LeaveMutexAndCloseZombie(tls, _pSrcDb)
return _rc
}
-func _sqlite3PagerOkToChangeJournalMode(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:54186:1
+// Unless this is an in-memory or temporary database, clear the pager cache.
+func _sqlite3PagerClearCache(tls *crt.TLS, _pPager *XPager) {
func() {
- if _assert_pager_state(tls, _pPager) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54187), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOkToChangeJournalModeØ00__func__Ø000))), unsafe.Pointer(str(9892)))
+ if int32(_pPager.X13) != i32(0) && (_pPager.X10) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(54222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerClearCacheØ00__func__Ø000))), unsafe.Pointer(str(55898)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pPager.X14) < i32(3) {
- goto _2
- }
- return i32(0)
-
-_2:
- if func() int32 {
- if ((*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X32).X0) != nil) && ((_pPager.X34) > int64(i32(0))) {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54189), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerOkToChangeJournalModeØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
- return i32(0)
- }() == 0 {
- goto _6
+ if int32(_pPager.X10) == i32(0) {
+ _pager_reset(tls, _pPager)
}
- return i32(0)
-
-_6:
- return i32(1)
}
-var _sqlite3PagerOkToChangeJournalModeØ00__func__Ø000 [34]int8 // -
+var _sqlite3PagerClearCacheØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerOkToChangeJournalModeØ00__func__Ø000[0], str(92404), 34)
+ crt.Xstrncpy(nil, &_sqlite3PagerClearCacheØ00__func__Ø000[0], str(92786), 23)
}
-func _sqlite3PagerCloseWal(tls *crt.TLS, _pPager *XPager, _db *Xsqlite3) (r0 int32) { // sqlite3.c:54377:1
- var _rc int32 // sqlite3.c:54378:7
- _ = _rc
- var _1_logexists int32 // sqlite3.c:54387:9
- _ = _1_logexists
- _rc = i32(0)
+// A write-transaction must be opened before calling this function.
+// It performs a single unit of work towards an incremental vacuum.
+//
+// If the incremental vacuum is finished after this function has run,
+// SQLITE_DONE is returned. If it is not finished, but no error occurred,
+// SQLITE_OK is returned. Otherwise an SQLite error code.
+func _sqlite3BtreeIncrVacuum(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ var _rc int32
+ var _2_nOrig, _2_nFree, _2_nFin uint32
+ var _pBt *XBtShared
+ _pBt = (*XBtShared)(_p.X1)
+ _sqlite3BtreeEnter(tls, _p)
func() {
- if int32(_pPager.X2) != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54380), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerCloseWalØ00__func__Ø000))), unsafe.Pointer(str(92440)))
+ if int32(_pBt.X8) != i32(2) || int32(_p.X2) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(62715), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIncrVacuumØ00__func__Ø000))), unsafe.Pointer(str(92809)))
crt.X__builtin_abort(tls)
}
}()
- if (*XWal)(_pPager.X60) != nil {
- goto _2
- }
-
- _1_logexists = i32(0)
- _rc = _pagerLockDb(tls, _pPager, i32(1))
- if _rc != i32(0) {
- goto _3
+ if (_pBt.X5) == 0 {
+ _rc = i32(101)
+ goto _4
}
-
- _rc = _sqlite3OsAccess(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X61, i32(0), &_1_logexists)
-_3:
- if _rc != i32(0) || _1_logexists == 0 {
- goto _5
+ _2_nOrig = _btreePagecount(tls, _pBt)
+ _2_nFree = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))))
+ _2_nFin = _finalDbSize(tls, _pBt, _2_nOrig, _2_nFree)
+ if _2_nOrig < _2_nFin {
+ _rc = _sqlite3CorruptError(tls, i32(62724))
+ goto _6
}
-
- _rc = _pagerOpenWal(tls, _pPager)
-_5:
-_2:
- if _rc != i32(0) || (*XWal)(_pPager.X60) == nil {
+ if _2_nFree <= uint32(i32(0)) {
goto _7
}
-
- _rc = _pagerExclusiveLock(tls, _pPager)
- if _rc != i32(0) {
- goto _8
+ _rc = _saveAllCursors(tls, _pBt, uint32(i32(0)), nil)
+ if _rc == i32(0) {
+ _invalidateAllOverflowCache(tls, _pBt)
+ _rc = _incrVacuumStep(tls, _pBt, _2_nFin, _2_nOrig, i32(0))
}
-
- _rc = _sqlite3WalClose(tls, (*XWal)(_pPager.X60), _db, int32(_pPager.X7), _pPager.X48, (*uint8)(unsafe.Pointer(_pPager.X58)))
- *(**XWal)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(212 /* X60 */))))) = nil
- _pagerFixMaplimit(tls, _pPager)
- if _rc == 0 || (_pPager.X1) != 0 {
- goto _10
+ if _rc == i32(0) {
+ _rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23))
+ _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(28)))), _pBt.X18)
}
-
- _pagerUnlockDb(tls, _pPager, i32(1))
-_10:
-_8:
+ goto _10
_7:
- r0 = _rc
- return
+ _rc = i32(101)
+_10:
+_6:
+_4:
+ _sqlite3BtreeLeave(tls, _p)
+ return _rc
}
-var _sqlite3PagerCloseWalØ00__func__Ø000 [21]int8 // -
+var _sqlite3BtreeIncrVacuumØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerCloseWalØ00__func__Ø000[0], str(92484), 21)
+ crt.Xstrncpy(nil, &_sqlite3BtreeIncrVacuumØ00__func__Ø000[0], str(92868), 23)
}
-func _sqlite3PagerSetJournalMode(tls *crt.TLS, _pPager *XPager, _eMode int32) (r0 int32) { // sqlite3.c:54079:1
- var _eOld uint8 // sqlite3.c:54080:6
- _ = _eOld
- var _6_rc int32 // sqlite3.c:54145:13
- _ = _6_rc
- var _6_state int32 // sqlite3.c:54146:13
- _ = _6_state
- _eOld = _pPager.X2
- _print_pager_state(tls, _pPager)
+// Obtain a lock on the table whose root page is iTab. The
+// lock is a write lock if isWritelock is true or a read lock
+// if it is false.
+func _sqlite3BtreeLockTable(tls *crt.TLS, _p *XBtree, _iTab int32, _isWriteLock uint8) (r0 int32) {
+ var _rc int32
+ var _1_lockType uint8
+ _rc = i32(0)
func() {
- if _eMode != i32(0) && _eMode != i32(3) && _eMode != i32(1) && _eMode != i32(2) && _eMode != i32(5) && _eMode != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54090), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(92508)))
+ if int32(_p.X2) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLockTableØ00__func__Ø000))), unsafe.Pointer(str(92891)))
crt.X__builtin_abort(tls)
}
}()
+ if (_p.X3) == 0 {
+ goto _2
+ }
+ _1_lockType = uint8(i32(1) + int32(_isWriteLock))
+ i32(0)
func() {
- if int32(_pPager.X10) != i32(0) && _eMode == i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54101), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(92712)))
+ if int32(_isWriteLock) != i32(0) && int32(_isWriteLock) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(68744), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLockTableØ00__func__Ø000))), unsafe.Pointer(str(71791)))
crt.X__builtin_abort(tls)
}
}()
- if (_pPager.X13) == 0 {
- goto _10
+ _sqlite3BtreeEnter(tls, _p)
+ _rc = _querySharedCacheTableLock(tls, _p, uint32(_iTab), _1_lockType)
+ if _rc == i32(0) {
+ _rc = _setSharedCacheTableLock(tls, _p, uint32(_iTab), _1_lockType)
}
+ _sqlite3BtreeLeave(tls, _p)
+_2:
+ return _rc
+}
+
+var _sqlite3BtreeLockTableØ00__func__Ø000 [22]int8
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BtreeLockTableØ00__func__Ø000[0], str(92914), 22)
+}
+
+// Add a lock on the table with root-page iTable to the shared-btree used
+// by Btree handle p. Parameter eLock must be either READ_LOCK or
+// WRITE_LOCK.
+//
+// This function assumes the following:
+//
+// (a) The specified Btree object p is connected to a sharable
+// database (one with the BtShared.sharable flag set), and
+//
+// (b) No other Btree objects hold a lock that conflicts
+// with the requested lock (i.e. querySharedCacheTableLock() has
+// already been called and returned SQLITE_OK).
+//
+// SQLITE_OK is returned if the lock is added successfully. SQLITE_NOMEM
+// is returned if a malloc attempt fails.
+func _setSharedCacheTableLock(tls *crt.TLS, _p *XBtree, _iTable uint32, _eLock uint8) (r0 int32) {
+ var _pBt *XBtShared
+ var _pLock, _pIter *XBtLock
+ _pBt = (*XBtShared)(_p.X1)
+ _pLock = nil
func() {
- if int32(_eOld) != i32(4) && int32(_eOld) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54107), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(92764)))
+ if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59358), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(17487)))
crt.X__builtin_abort(tls)
}
}()
- if _eMode == i32(4) || _eMode == i32(2) {
- goto _15
- }
-
- _eMode = int32(_eOld)
-_15:
-_10:
- if _eMode == int32(_eOld) {
- goto _16
- }
-
func() {
- if int32(_pPager.X14) == i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(14136)))
+ if int32(_eLock) != i32(1) && int32(_eLock) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59359), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(50750)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(5 /* X2 */))) = uint8(_eMode)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
func() {
- if (*Xsqlite3_io_methods)((*Xsqlite3_file)(_pPager.X31).X0) == nil && (_pPager.X1) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54130), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(92828)))
+ if (*Xsqlite3)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59360), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(23676)))
crt.X__builtin_abort(tls)
}
}()
- if (_pPager.X1) != 0 || (int32(_eOld)&i32(5)) != i32(1) || (_eMode&i32(1)) != i32(0) {
- goto _24
- }
-
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
- if int32(_pPager.X15) < i32(2) {
- goto _25
- }
-
- _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X52, i32(0))
- goto _26
-
-_25:
- _6_rc = i32(0)
- _6_state = int32(_pPager.X14)
func() {
- if _6_state != i32(0) && _6_state != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54147), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(92872)))
+ if i32(0) != (((*Xsqlite3)(_p.X0).X6)&i32(16384)) && int32(_eLock) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59366), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(92936)))
crt.X__builtin_abort(tls)
}
}()
- if _6_state != i32(0) {
- goto _30
- }
-
- _6_rc = _sqlite3PagerSharedLock(tls, _pPager)
-_30:
- if int32(_pPager.X14) != i32(1) {
- goto _31
- }
-
func() {
- if _6_rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54152), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(14080)))
+ if (_p.X3) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59370), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(92998)))
crt.X__builtin_abort(tls)
}
}()
- _6_rc = _pagerLockDb(tls, _pPager, i32(2))
-_31:
- if _6_rc != i32(0) {
- goto _34
- }
-
- _sqlite3OsDelete(tls, (*Xsqlite3_vfs)(_pPager.X0), _pPager.X52, i32(0))
-_34:
- if _6_rc != i32(0) || _6_state != i32(1) {
- goto _36
- }
-
- _pagerUnlockDb(tls, _pPager, i32(1))
- goto _37
-
-_36:
- if _6_state != i32(0) {
- goto _38
- }
-
- _pager_unlock(tls, _pPager)
-_38:
-_37:
func() {
- if _6_state != int32(_pPager.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54163), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerSetJournalModeØ00__func__Ø000))), unsafe.Pointer(str(92916)))
+ if i32(0) != _querySharedCacheTableLock(tls, _p, _iTable, _eLock) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(59371), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(93010)))
crt.X__builtin_abort(tls)
}
}()
-_26:
- goto _41
-
-_24:
- if _eMode != i32(2) {
- goto _42
+ _pIter = (*XBtLock)(_pBt.X25)
+_14:
+ if _pIter == nil {
+ goto _17
}
-
- _sqlite3OsClose(tls, (*Xsqlite3_file)(_pPager.X32))
-_42:
-_41:
-_16:
- r0 = int32(_pPager.X2)
- return
-}
-
-func _print_pager_state(tls *crt.TLS, _p *XPager) (r0 *int8) { // sqlite3.c:47904:1
- Xsqlite3_snprintf(tls, i32(1024), (*int8)(unsafe.Pointer(&_print_pager_stateØ00zRetØ001)), str(92940), unsafe.Pointer(_p.X51), unsafe.Pointer(func() *int8 {
- if int32(_p.X14) == i32(0) {
- return str(93220)
- }
- return func() *int8 {
- if int32(_p.X14) == i32(1) {
- return str(93228)
- }
- return func() *int8 {
- if int32(_p.X14) == i32(2) {
- return str(93236)
- }
- return func() *int8 {
- if int32(_p.X14) == i32(3) {
- return str(93252)
- }
- return func() *int8 {
- if int32(_p.X14) == i32(4) {
- return str(93268)
- }
- return func() *int8 {
- if int32(_p.X14) == i32(5) {
- return str(93284)
- }
- return func() *int8 {
- if int32(_p.X14) == i32(6) {
- return str(93300)
- }
- return str(93308)
- }()
- }()
- }()
- }()
- }()
- }()
- }()), _p.X26, unsafe.Pointer(func() *int8 {
- if int32(_p.X15) == i32(0) {
- return str(93316)
- }
- return func() *int8 {
- if int32(_p.X15) == i32(2) {
- return str(93324)
- }
- return func() *int8 {
- if int32(_p.X15) == i32(4) {
- return str(24816)
- }
- return func() *int8 {
- if int32(_p.X15) == i32(1) {
- return str(93336)
- }
- return func() *int8 {
- if int32(_p.X15) == i32(5) {
- return str(93344)
- }
- return str(93308)
- }()
- }()
- }()
- }()
- }()), unsafe.Pointer(func() *int8 {
- if (_p.X1) != 0 {
- return str(93352)
- }
- return str(93364)
- }()), unsafe.Pointer(func() *int8 {
- if int32(_p.X2) == i32(4) {
- return str(93372)
- }
- return func() *int8 {
- if int32(_p.X2) == i32(2) {
- return str(93380)
- }
- return func() *int8 {
- if int32(_p.X2) == i32(0) {
- return str(93384)
- }
- return func() *int8 {
- if int32(_p.X2) == i32(1) {
- return str(93392)
- }
- return func() *int8 {
- if int32(_p.X2) == i32(3) {
- return str(93400)
- }
- return func() *int8 {
- if int32(_p.X2) == i32(5) {
- return str(93412)
- }
- return str(93308)
- }()
- }()
- }()
- }()
- }()
- }()), int32(_p.X10), int32(_p.X13), int32(_p.X3), _p.X34, _p.X35, int32(_p.X22), int32(_p.X23), int32(_p.X24))
- return (*int8)(unsafe.Pointer(&_print_pager_stateØ00zRetØ001))
+ if ((_pIter.X1) == _iTable) && ((*XBtree)(_pIter.X0) == _p) {
+ _pLock = _pIter
+ goto _17
+ }
+ _pIter = (*XBtLock)(_pIter.X3)
+ goto _14
+_17:
+ if _pLock != nil {
+ goto _20
+ }
+ _pLock = (*XBtLock)(_sqlite3MallocZero(tls, uint64(u32(16))))
+ if _pLock == nil {
+ return _sqlite3NomemError(tls, i32(59387))
+ }
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(4 /* X1 */))) = _iTable
+ *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(0 /* X0 */))))) = _p
+ *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(12 /* X3 */))))) = (*XBtLock)(_pBt.X25)
+ *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(72 /* X25 */))))) = _pLock
+_20:
+ i32(0)
+ if int32(_eLock) > int32(_pLock.X2) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(8 /* X2 */))) = _eLock
+ }
+ return i32(0)
}
-var _print_pager_stateØ00zRetØ001 [1024]int8 // sqlite3.c:47905:15
-
-var _sqlite3PagerSetJournalModeØ00__func__Ø000 [27]int8 // -
+var _setSharedCacheTableLockØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerSetJournalModeØ00__func__Ø000[0], str(93416), 27)
+ crt.Xstrncpy(nil, &_setSharedCacheTableLockØ00__func__Ø000[0], str(93065), 24)
}
-func _sqlite3BtreeSetVersion(tls *crt.TLS, _pBtree *XBtree, _iVersion int32) (r0 int32) { // sqlite3.c:68827:1
- var _pBt *XBtShared // sqlite3.c:68828:12
- _ = _pBt
- var _rc int32 // sqlite3.c:68829:7
- _ = _rc
- var _1_aData *uint8 // sqlite3.c:68841:8
- _ = _1_aData
- _pBt = (*XBtShared)(_pBtree.X1)
- func() {
- if _iVersion != i32(1) && _iVersion != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68831), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetVersionØ00__func__Ø000))), unsafe.Pointer(str(93444)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) & i32(-17))
- sink12 = *p
+// If the virtual table pVtab supports the transaction interface
+// (xBegin/xRollback/xCommit and optionally xSync) and a transaction is
+// not currently open, invoke the xBegin method now.
+//
+// If the xBegin call is successful, place the sqlite3_vtab pointer
+// in the sqlite3.aVTrans array.
+func _sqlite3VtabBegin(tls *crt.TLS, _db *Xsqlite3, _pVTab *XVTable) (r0 int32) {
+ var _rc, _3_i, _7_iSvpt int32
+ var _pModule *Xsqlite3_module
+ _rc = i32(0)
+ if ((_db.X64) > i32(0)) && ((**XVTable)(unsafe.Pointer(_db.X67)) == nil) {
+ return i32(6)
}
- if _iVersion != i32(1) {
- goto _3
+ if _pVTab == nil {
+ return i32(0)
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) | i32(16))
- sink12 = *p
+ _pModule = (*Xsqlite3_module)((*Xsqlite3_vtab)(_pVTab.X2).X0)
+ if (*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{(_pModule.X14)}))) == nil {
+ goto _3
}
-_3:
- _rc = _sqlite3BtreeBeginTrans(tls, _pBtree, i32(0))
- if _rc != i32(0) {
- goto _4
+ _3_i = i32(0)
+_4:
+ if _3_i >= (_db.X64) {
+ goto _7
}
-
- _1_aData = (*XMemPage)(_pBt.X3).X19
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(18))))) == int32(uint8(_iVersion)) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(19))))) == int32(uint8(_iVersion)) {
- goto _6
+ if (*(**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db.X67)) + 4*uintptr(_3_i)))) == _pVTab {
+ return i32(0)
}
-
- _rc = _sqlite3BtreeBeginTrans(tls, _pBtree, i32(2))
+ _3_i += 1
+ goto _4
+_7:
+ _rc = _growVTrans(tls, _db)
if _rc != i32(0) {
- goto _7
+ goto _9
}
-
- _rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23))
+ _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{(_pModule.X14)})))(tls, (*Xsqlite3_vtab)(_pVTab.X2))
if _rc != i32(0) {
- goto _8
+ goto _10
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(18)))) = uint8(_iVersion)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aData)) + 1*uintptr(i32(19)))) = uint8(_iVersion)
-_8:
-_7:
-_6:
-_4:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) & i32(-17))
- sink12 = *p
+ _7_iSvpt = (_db.X76) + (_db.X75)
+ _addToVTrans(tls, _db, _pVTab)
+ if _7_iSvpt != 0 && ((*(*func(*crt.TLS, *Xsqlite3_vtab, int32) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32) int32
+ }{(_pModule.X20)}))) != nil) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTab)) + uintptr(20 /* X5 */))) = _7_iSvpt
+ _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, int32) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32) int32
+ }{(_pModule.X20)})))(tls, (*Xsqlite3_vtab)(_pVTab.X2), _7_iSvpt-i32(1))
}
+_10:
+_9:
+_3:
return _rc
}
-var _sqlite3BtreeSetVersionØ00__func__Ø000 [23]int8 // -
+// Grow the db->aVTrans[] array so that there is room for at least one
+// more v-table. Return SQLITE_NOMEM if a malloc fails, or SQLITE_OK otherwise.
+func _growVTrans(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
+ var _ARRAY_INCR, _1_nBytes int32
+ var _1_aVTrans **XVTable
+ _ARRAY_INCR = i32(5)
+ if ((_db.X64) % _ARRAY_INCR) != i32(0) {
+ goto _0
+ }
+ _1_nBytes = int32(u32(4) * uint32((_db.X64)+_ARRAY_INCR))
+ _1_aVTrans = (**XVTable)(_sqlite3DbRealloc(tls, _db, (unsafe.Pointer)(_db.X67), uint64(_1_nBytes)))
+ if _1_aVTrans == nil {
+ return _sqlite3NomemError(tls, i32(125653))
+ }
+ crt.Xmemset(tls, (unsafe.Pointer)((**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aVTrans))+4*uintptr(_db.X64)))), i32(0), u32(4)*uint32(_ARRAY_INCR))
+ *(***XVTable)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(336 /* X67 */))))) = _1_aVTrans
+_0:
+ return i32(0)
+}
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeSetVersionØ00__func__Ø000[0], str(93472), 23)
+// Add the virtual table pVTab to the array sqlite3.aVTrans[]. Space should
+// have already been reserved using growVTrans().
+func _addToVTrans(tls *crt.TLS, _db *Xsqlite3, _pVTab *XVTable) {
+ *(**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db.X67)) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(312 /* X64 */))), int32(1))))) = _pVTab
+ _sqlite3VtabLock(tls, _pVTab)
}
-func _sqlite3JournalModename(tls *crt.TLS, _eMode int32) (r0 *int8) { // sqlite3.c:113486:1
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
+// Make a full copy of pFrom into pTo. Prior contents of pTo are
+// freed before the copy is made.
+func _sqlite3VdbeMemCopy(tls *crt.TLS, _pTo *XMem, _pFrom *XMem) (r0 int32) {
+ var _rc int32
+ _rc = i32(0)
func() {
- if _eMode < i32(0) || _eMode > i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(113499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3JournalModenameØ00__func__Ø000))), unsafe.Pointer(str(93496)))
+ if (int32(_pFrom.X1) & i32(32)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(70514), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCopyØ00__func__Ø000))), unsafe.Pointer(str(72987)))
crt.X__builtin_abort(tls)
}
}()
- if _eMode != i32(6) {
+ if (int32(_pTo.X1) & i32(9312)) != i32(0) {
+ _vdbeMemClearExternAndSetNull(tls, _pTo)
+ }
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo), (unsafe.Pointer)(_pFrom), u32(20))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) & i32(-1025))
+ sink14 = *p
+ }
+ if (int32(_pTo.X1) & i32(18)) == 0 {
goto _3
}
- return nil
-
+ if i32(0) == (int32(_pFrom.X1) & i32(2048)) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
+ *p = uint16(int32(*p) | i32(4096))
+ sink14 = *p
+ }
+ _rc = _sqlite3VdbeMemMakeWriteable(tls, _pTo)
+ }
_3:
- return *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3JournalModenameØ00azModeNameØ001)) + 4*uintptr(_eMode)))
-}
-
-var _sqlite3JournalModenameØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3JournalModenameØ00__func__Ø000[0], str(93540), 23)
+ return _rc
}
-var _sqlite3JournalModenameØ00azModeNameØ001 [6]*int8 // sqlite3.c:113487:15
+var _sqlite3VdbeMemCopyØ00__func__Ø000 [19]int8
func init() {
- _sqlite3JournalModenameØ00azModeNameØ001 = [6]*int8{str(93384), str(93392), str(93380), str(93400), str(93372), str(93412)}
+ crt.Xstrncpy(nil, &_sqlite3VdbeMemCopyØ00__func__Ø000[0], str(93089), 19)
}
-func _sqlite3RunVacuum(tls *crt.TLS, _pzErrMsg **int8, _db *Xsqlite3, _iDb int32) (r0 int32) { // sqlite3.c:124745:1
- var _rc int32 // sqlite3.c:124746:7
- _ = _rc
- var _pMain *XBtree // sqlite3.c:124747:9
- _ = _pMain
- var _pTemp *XBtree // sqlite3.c:124748:9
- _ = _pTemp
- var _saved_flags int32 // sqlite3.c:124749:7
- _ = _saved_flags
- var _saved_nChange int32 // sqlite3.c:124750:7
- _ = _saved_nChange
- var _saved_nTotalChange int32 // sqlite3.c:124751:7
- _ = _saved_nTotalChange
- var _saved_mTrace uint8 // sqlite3.c:124752:6
- _ = _saved_mTrace
- var _pDb *XDb // sqlite3.c:124753:6
- _ = _pDb
- var _isMemDb int32 // sqlite3.c:124754:7
- _ = _isMemDb
- var _nRes int32 // sqlite3.c:124755:7
- _ = _nRes
- var _nDb int32 // sqlite3.c:124756:7
- _ = _nDb
- var _zDbMain *int8 // sqlite3.c:124757:14
- _ = _zDbMain
- var _5_meta uint32 // sqlite3.c:124912:9
- _ = _5_meta
- var _5_i int32 // sqlite3.c:124913:9
- _ = _5_i
+// This function is invoked by the vdbe to call the xCreate method
+// of the virtual table named zTab in database iDb.
+//
+// If an error occurs, *pzErr is set to point to an English language
+// description of the error and an SQLITE_XXX error code is returned.
+// In this case the caller must call sqlite3DbFree(db, ) on *pzErr.
+func _sqlite3VtabCallCreate(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zTab *int8, _pzErr **int8) (r0 int32) {
+ var _rc int32
+ var _zMod *int8
+ var _pTab *XTable
+ var _pMod *XModule
_rc = i32(0)
- _pDb = nil
- if (_db.X15) != 0 {
- goto _0
- }
-
- _sqlite3SetString(tls, _pzErrMsg, _db, str(93564))
- return i32(1)
-
-_0:
- if (_db.X34) <= i32(1) {
- goto _1
- }
-
- _sqlite3SetString(tls, _pzErrMsg, _db, str(93604))
- return i32(1)
-
-_1:
- _saved_flags = _db.X6
- _saved_nChange = _db.X29
- _saved_nTotalChange = _db.X30
- _saved_mTrace = _db.X24
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(270542848)
- sink1 = *p
- }
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) & i32(-655489)
- sink1 = *p
- }
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(72 /* X24 */))) = uint8(i32(0))
- _zDbMain = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- _pMain = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X1)
- _isMemDb = _sqlite3PagerIsMemdb(tls, _sqlite3BtreePager(tls, _pMain))
- _nDb = _db.X5
- _rc = _execSql(tls, _db, _pzErrMsg, str(93648))
- if _rc == i32(0) {
- goto _2
- }
-
- goto _end_of_vacuum
-
-_2:
- func() {
- if ((_db.X5) - i32(1)) != _nDb {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(93672)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_nDb)))
+ _pTab = _sqlite3FindTable(tls, _db, _zTab, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
func() {
- if crt.Xstrcmp(tls, _pDb.X0, str(93692)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(93704)))
+ if _pTab == nil || (_pTab.X16) == 0 || (*XVTable)(_pTab.X18) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125687), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallCreateØ00__func__Ø000))), unsafe.Pointer(str(93108)))
crt.X__builtin_abort(tls)
}
}()
- _pTemp = (*XBtree)(_pDb.X1)
- _sqlite3BtreeCommit(tls, _pTemp)
- _nRes = _sqlite3BtreeGetOptimalReserve(tls, _pMain)
- _sqlite3BtreeSetCacheSize(tls, _pTemp, (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4).X10)
- _sqlite3BtreeSetSpillSize(tls, _pTemp, _sqlite3BtreeSetSpillSize(tls, _pMain, i32(0)))
- _sqlite3BtreeSetPagerFlags(tls, _pTemp, uint32(i32(33)))
- _rc = _execSql(tls, _db, _pzErrMsg, str(24772))
- if _rc == i32(0) {
+ _zMod = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(0))))
+ _pMod = (*XModule)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zMod))
+ if ((_pMod == nil) || (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
+ }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
+ }{((*Xsqlite3_module)(_pMod.X0).X1)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
+ }{nil})))) || (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab) int32
+ }{(*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_module)(_pMod.X0).X5)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab) int32
+ }{nil}))) {
+ *_pzErr = _sqlite3MPrintf(tls, _db, str(93150), unsafe.Pointer(_zMod))
+ _rc = i32(1)
goto _7
}
-
- goto _end_of_vacuum
-
+ _rc = _vtabCallConstructor(tls, _db, _pTab, _pMod, *(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
+ }{((*Xsqlite3_module)(_pMod.X0).X1)})), _pzErr)
_7:
- _rc = _sqlite3BtreeBeginTrans(tls, _pMain, i32(2))
- if _rc == i32(0) {
- goto _8
- }
-
- goto _end_of_vacuum
-
-_8:
- if _sqlite3PagerGetJournalMode(tls, _sqlite3BtreePager(tls, _pMain)) != i32(5) {
- goto _9
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(76 /* X27 */))) = i32(0)
-_9:
- if _sqlite3BtreeSetPageSize(tls, _pTemp, _sqlite3BtreeGetPageSize(tls, _pMain), _nRes, i32(0)) == 0 && (_isMemDb != 0 || _sqlite3BtreeSetPageSize(tls, _pTemp, _db.X27, _nRes, i32(0)) == 0) && func() int32 {
- if (_db.X17) != 0 {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124846), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ if _rc != i32(0) || func() int32 {
+ if _sqlite3GetVTable(tls, _db, _pTab) != nil {
+ return i32(1)
}
- return i32(0)
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125706), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallCreateØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
}() == 0 {
- goto _15
+ goto _11
}
-
- _rc = _sqlite3NomemError(tls, i32(124848))
- goto _end_of_vacuum
-
-_15:
- _sqlite3BtreeSetAutoVacuum(tls, _pTemp, func() int32 {
- if int32(_db.X20) >= i32(0) {
- return int32(_db.X20)
- }
- return _sqlite3BtreeGetAutoVacuum(tls, _pMain)
- }())
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(_nDb)
- _rc = _execSqlF(tls, _db, _pzErrMsg, str(93744), unsafe.Pointer(_zDbMain))
+ _rc = _growVTrans(tls, _db)
if _rc == i32(0) {
- goto _18
+ _addToVTrans(tls, _db, _sqlite3GetVTable(tls, _db, _pTab))
}
+_11:
+ return _rc
+}
- goto _end_of_vacuum
-
-_18:
- _rc = _execSqlF(tls, _db, _pzErrMsg, str(93852), unsafe.Pointer(_zDbMain))
- if _rc == i32(0) {
- goto _19
- }
+var _sqlite3VtabCallCreateØ00__func__Ø000 [22]int8
- goto _end_of_vacuum
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VtabCallCreateØ00__func__Ø000[0], str(93169), 22)
+}
-_19:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
- _rc = _execSqlF(tls, _db, _pzErrMsg, str(93928), unsafe.Pointer(_zDbMain))
+// Invoke a virtual table constructor (either xCreate or xConnect). The
+// pointer to the function to invoke is passed as the fourth parameter
+// to this procedure.
+func _vtabCallConstructor(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable, _pMod *XModule, _xConstruct func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32, _pzErr **int8) (r0 int32) {
+ var _rc, _nArg, _iDb, _10_iCol, _11_nType, _11_i, _14_j, _14_nDel int32
+ var _zErr, _zModuleName, _9_zFormat, _11_zType *int8
+ var _10_oooHidden uint8
+ var _azArg **int8
+ var _pVTable *XVTable
+ var _sCtx XVtabCtx
+ var _pCtx *XVtabCtx
+ _azArg = _pTab.X17
+ _nArg = _pTab.X16
+ _zErr = nil
+ _pCtx = (*XVtabCtx)(_db.X66)
+_0:
+ if _pCtx == nil {
+ goto _3
+ }
+ if (*XTable)(_pCtx.X1) == _pTab {
+ *_pzErr = _sqlite3MPrintf(tls, _db, str(93191), unsafe.Pointer(_pTab.X0))
+ return i32(6)
+ }
+ _pCtx = (*XVtabCtx)(_pCtx.X2)
+ goto _0
+_3:
+ _zModuleName = _sqlite3MPrintf(tls, _db, str(24576), unsafe.Pointer(_pTab.X0))
+ if _zModuleName == nil {
+ return _sqlite3NomemError(tls, i32(125510))
+ }
+ _pVTable = (*XVTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(28))))
+ if _pVTable == nil {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zModuleName))
+ return _sqlite3NomemError(tls, i32(125516))
+ }
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(0 /* X0 */))))) = _db
+ *(**XModule)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(4 /* X1 */))))) = _pMod
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(1)))) = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
func() {
- if ((_db.X6) & i32(268435456)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(94080)))
+ if (**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(332 /* X66 */))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125525), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(93233)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) & i32(-268435457)
- sink1 = *p
- }
- if _rc == i32(0) {
- goto _22
- }
-
- goto _end_of_vacuum
-
-_22:
- _rc = _execSqlF(tls, _db, _pzErrMsg, str(94112), unsafe.Pointer(_zDbMain))
- if _rc == 0 {
- goto _23
- }
-
- goto _end_of_vacuum
-
-_23:
func() {
- if i32(1) != _sqlite3BtreeIsInTrans(tls, _pTemp) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124929), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(94244)))
+ if _xConstruct == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125526), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(93247)))
crt.X__builtin_abort(tls)
}
}()
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(4 /* X1 */))))) = _pTab
+ *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(0 /* X0 */))))) = _pVTable
+ *(**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(8 /* X2 */))))) = (*XVtabCtx)(_db.X66)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(12 /* X3 */))) = i32(0)
+ *(**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(332 /* X66 */))))) = &_sCtx
+ _rc = _xConstruct(tls, _db, _pMod.X2, _nArg, _azArg, (**Xsqlite3_vtab)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable))+uintptr(8 /* X2 */))))), &_zErr)
+ *(**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(332 /* X66 */))))) = (*XVtabCtx)(_sCtx.X2)
+ if _rc == i32(7) {
+ _sqlite3OomFault(tls, _db)
+ }
func() {
- if i32(1) != _sqlite3BtreeIsInTrans(tls, _pMain) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(94276)))
+ if (*XTable)(_sCtx.X1) != _pTab {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125535), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(93258)))
crt.X__builtin_abort(tls)
}
}()
- _5_i = i32(0)
-_28:
- if _5_i >= i32(10) {
- goto _31
+ if i32(0) == _rc {
+ goto _14
}
-
- _sqlite3BtreeGetMeta(tls, _pMain, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3RunVacuumØ00aCopyØ001)) + 1*uintptr(_5_i)))), &_5_meta)
- _rc = _sqlite3BtreeUpdateMeta(tls, _pTemp, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3RunVacuumØ00aCopyØ001)) + 1*uintptr(_5_i)))), _5_meta+uint32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3RunVacuumØ00aCopyØ001)) + 1*uintptr(_5_i+i32(1))))))
+ if _zErr == nil {
+ *_pzErr = _sqlite3MPrintf(tls, _db, str(93274), unsafe.Pointer(_zModuleName))
+ goto _16
+ }
+ *_pzErr = _sqlite3MPrintf(tls, _db, str(24576), unsafe.Pointer(_zErr))
+ Xsqlite3_free(tls, (unsafe.Pointer)(_zErr))
+_16:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pVTable))
+ goto _17
+_14:
if func() int32 {
- if _rc != i32(0) {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ if (*Xsqlite3_vtab)(_pVTable.X2) != nil {
+ return i32(1)
}
- return i32(0)
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125545), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
}() == 0 {
- goto _34
+ goto _20
}
-
- goto _end_of_vacuum
-
-_34:
- {
- p := &_5_i
- *p = (*p) + i32(2)
- sink1 = *p
+ crt.Xmemset(tls, _pVTable.X2, i32(0), u32(12))
+ *(**Xsqlite3_module)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pVTable.X2) + uintptr(0 /* X0 */))))) = (*Xsqlite3_module)(_pMod.X0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(12 /* X3 */))) = i32(1)
+ if (_sCtx.X3) == i32(0) {
+ _9_zFormat = str(93304)
+ *_pzErr = _sqlite3MPrintf(tls, _db, _9_zFormat, unsafe.Pointer(_pTab.X0))
+ _sqlite3VtabUnlock(tls, _pVTable)
+ _rc = i32(1)
+ goto _22
}
- goto _28
-
-_31:
- _rc = _sqlite3BtreeCopyFile(tls, _pMain, _pTemp)
- if _rc == i32(0) {
- goto _35
+ _10_oooHidden = u8(0)
+ *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(24 /* X6 */))))) = (*XVTable)(_pTab.X18)
+ *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(64 /* X18 */))))) = _pVTable
+ _10_iCol = i32(0)
+_23:
+ if _10_iCol >= int32(_pTab.X11) {
+ goto _26
}
-
- goto _end_of_vacuum
-
-_35:
- _rc = _sqlite3BtreeCommit(tls, _pTemp)
- if _rc == i32(0) {
+ _11_zType = _sqlite3ColumnType(tls, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_10_iCol))), str(0))
+ _11_i = i32(0)
+ _11_nType = _sqlite3Strlen30(tls, _11_zType)
+ _11_i = i32(0)
+_27:
+ if _11_i >= _11_nType {
+ goto _30
+ }
+ if ((i32(0) == Xsqlite3_strnicmp(tls, str(93350), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType))+1*uintptr(_11_i))), i32(6))) && ((_11_i == i32(0)) || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i-i32(1))))) == i32(32)))) && ((int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i+i32(6))))) == i32(0)) || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i+i32(6))))) == i32(32))) {
+ goto _30
+ }
+ _11_i += 1
+ goto _27
+_30:
+ if _11_i >= _11_nType {
goto _36
}
-
- goto _end_of_vacuum
-
-_36:
- _sqlite3BtreeSetAutoVacuum(tls, _pMain, _sqlite3BtreeGetAutoVacuum(tls, _pTemp))
- func() {
- if _rc != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124950), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RunVacuumØ00__func__Ø000))), unsafe.Pointer(str(14080)))
- crt.X__builtin_abort(tls)
+ _14_nDel = i32(6) + func() int32 {
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i+i32(6))))) != 0 {
+ return i32(1)
}
+ return i32(0)
}()
- _rc = _sqlite3BtreeSetPageSize(tls, _pMain, _sqlite3BtreeGetPageSize(tls, _pTemp), _nRes, i32(1))
-_end_of_vacuum:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */))) = _saved_flags
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(84 /* X29 */))) = _saved_nChange
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(88 /* X30 */))) = _saved_nTotalChange
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(72 /* X24 */))) = _saved_mTrace
- _sqlite3BtreeSetPageSize(tls, _pMain, i32(-1), i32(-1), i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(63 /* X15 */))) = uint8(i32(1))
- if _pDb == nil {
- goto _39
- }
-
- _sqlite3BtreeClose(tls, (*XBtree)(_pDb.X1))
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDb)) + uintptr(4 /* X1 */))))) = nil
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDb)) + uintptr(12 /* X4 */))))) = nil
+ _14_j = _11_i
_39:
- _sqlite3ResetAllSchemasOfConnection(tls, _db)
+ if (_14_j + _14_nDel) > _11_nType {
+ goto _42
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_14_j))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_14_j+_14_nDel)))
+ _14_j += 1
+ goto _39
+_42:
+ if (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i)))) == i32(0)) && (_11_i > i32(0)) {
+ func() {
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i-i32(1))))) != i32(32) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125587), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(93357)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i-i32(1)))) = int8(i32(0))
+ }
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_10_iCol))))) + uintptr(15 /* X6 */)))
+ *p = uint8(int32(*p) | i32(2))
+ sink2 = *p
+ }
+ _10_oooHidden = uint8(i32(128))
+ goto _47
+_36:
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(_10_oooHidden)
+ sink5 = *p
+ }
+_47:
+ _10_iCol += 1
+ goto _23
+_26:
+_22:
+_20:
+_17:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zModuleName))
return _rc
+
+ _ = _sCtx
+ panic(0)
}
-func _execSql(tls *crt.TLS, _db *Xsqlite3, _pzErrMsg **int8, _zSql *int8) (r0 int32) { // sqlite3.c:124648:1
- var _pStmt unsafe.Pointer // sqlite3.c:124649:16
- _ = _pStmt
- var _rc int32 // sqlite3.c:124650:7
- _ = _rc
- var _1_zSubSql *int8 // sqlite3.c:124656:16
- _ = _1_zSubSql
- _rc = Xsqlite3_prepare_v2(tls, _db, _zSql, i32(-1), &_pStmt, nil)
- if _rc == i32(0) {
- goto _0
- }
- return _rc
+var _vtabCallConstructorØ00__func__Ø000 [20]int8
-_0:
-_1:
- if i32(100) != store1(&_rc, Xsqlite3_step(tls, _pStmt)) {
- goto _2
+func init() {
+ crt.Xstrncpy(nil, &_vtabCallConstructorØ00__func__Ø000[0], str(93373), 20)
+}
+
+// Return the declared type of a column. Or return zDflt if the column
+// has no declared type.
+//
+// The column type is an extra string stored after the zero-terminator on
+// the column name if and only if the COLFLAG_HASTYPE flag is set.
+func _sqlite3ColumnType(tls *crt.TLS, _pCol *XColumn, _zDflt *int8) (r0 *int8) {
+ if (int32(_pCol.X6) & i32(4)) == i32(0) {
+ return _zDflt
}
+ return (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCol.X0))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(crt.Xstrlen(tls, _pCol.X0)))))))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1))))))))
+}
- _1_zSubSql = (*int8)(unsafe.Pointer(Xsqlite3_column_text(tls, _pStmt, i32(0))))
- func() {
- if Xsqlite3_strnicmp(tls, _zSql, str(25628), i32(6)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124657), unsafe.Pointer((*int8)(unsafe.Pointer(&_execSqlØ00__func__Ø000))), unsafe.Pointer(str(94308)))
- crt.X__builtin_abort(tls)
+// This function is invoked by the vdbe to call the xDestroy method
+// of the virtual table named zTab in database iDb. This occurs
+// when a DROP TABLE is mentioned.
+//
+// This call is a no-op if zTab is not a virtual table.
+func _sqlite3VtabCallDestroy(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zTab *int8) (r0 int32) {
+ var _rc int32
+ var _pTab *XTable
+ var _1_p *XVTable
+ var _1_xDestroy func(*crt.TLS, *Xsqlite3_vtab) int32
+ _rc = i32(0)
+ _pTab = _sqlite3FindTable(tls, _db, _zTab, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
+ if _pTab == nil || func() int32 {
+ if (*XVTable)(_pTab.X18) != nil {
+ return i32(1)
}
- }()
- if _1_zSubSql == nil {
- goto _5
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125811), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _3
+ }
+ _1_p = (*XVTable)(_pTab.X18)
+_4:
+ if _1_p == nil {
+ goto _7
}
-
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_zSubSql)) + 1*uintptr(i32(0))))) == i32(83) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124659), unsafe.Pointer((*int8)(unsafe.Pointer(&_execSqlØ00__func__Ø000))), unsafe.Pointer(str(94348)))
+ if (*Xsqlite3_vtab)(_1_p.X2) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(93393)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _execSql(tls, _db, _pzErrMsg, _1_zSubSql)
- if _rc == i32(0) {
- goto _8
+ if ((*Xsqlite3_vtab)(_1_p.X2).X1) > i32(0) {
+ return i32(6)
}
-
- goto _2
-
-_8:
-_5:
- goto _1
-
-_2:
+ _1_p = (*XVTable)(_1_p.X6)
+ goto _4
+_7:
+ _1_p = _vtabDisconnectAll(tls, _db, _pTab)
+ _1_xDestroy = *(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{((*Xsqlite3_module)((*XModule)(_1_p.X1).X0).X5)}))
func() {
- if _rc == i32(100) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124664), unsafe.Pointer((*int8)(unsafe.Pointer(&_execSqlØ00__func__Ø000))), unsafe.Pointer(str(94364)))
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab) int32
+ }{_1_xDestroy})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab) int32
+ }{nil})) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(93402)))
crt.X__builtin_abort(tls)
}
}()
- if _rc != i32(101) {
- goto _11
- }
-
- _rc = i32(0)
-_11:
- if _rc == 0 {
- goto _12
+ _rc = _1_xDestroy(tls, (*Xsqlite3_vtab)(_1_p.X2))
+ if _rc == i32(0) {
+ func() {
+ if (*XVTable)(_pTab.X18) != _1_p || (*XVTable)(_1_p.X6) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125826), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(93414)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**Xsqlite3_vtab)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(8 /* X2 */))))) = nil
+ *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(64 /* X18 */))))) = nil
+ _sqlite3VtabUnlock(tls, _1_p)
}
-
- _sqlite3SetString(tls, _pzErrMsg, _db, Xsqlite3_errmsg(tls, _db))
-_12:
- Xsqlite3_finalize(tls, _pStmt)
+_3:
return _rc
}
-var _execSqlØ00__func__Ø000 [8]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_execSqlØ00__func__Ø000[0], str(94380), 8)
-}
-
-var _sqlite3RunVacuumØ00__func__Ø000 [17]int8 // -
+var _sqlite3VtabCallDestroyØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3RunVacuumØ00__func__Ø000[0], str(94388), 17)
+ crt.Xstrncpy(nil, &_sqlite3VtabCallDestroyØ00__func__Ø000[0], str(93446), 23)
}
-func _sqlite3BtreeGetOptimalReserve(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:61810:1
- var _n int32 // sqlite3.c:61811:7
- _ = _n
+// Set the maximum page count for a database if mxPage is positive.
+// No changes are made if mxPage is 0 or negative.
+// Regardless of the value of mxPage, return the maximum page count.
+func _sqlite3BtreeMaxPageCount(tls *crt.TLS, _p *XBtree, _mxPage int32) (r0 int32) {
+ var _n int32
_sqlite3BtreeEnter(tls, _p)
- _n = _sqlite3BtreeGetReserveNoMutex(tls, _p)
+ _n = _sqlite3PagerMaxPageCount(tls, (*XPager)((*XBtShared)(_p.X1).X0), _mxPage)
_sqlite3BtreeLeave(tls, _p)
return _n
}
-func _sqlite3BtreeSetSpillSize(tls *crt.TLS, _p *XBtree, _mxPage int32) (r0 int32) { // sqlite3.c:61679:1
- var _pBt *XBtShared // sqlite3.c:61680:12
- _ = _pBt
- var _res int32 // sqlite3.c:61681:7
- _ = _res
- _pBt = (*XBtShared)(_p.X1)
+// Attempt to set the maximum database page count if mxPage is positive.
+// Make no changes if mxPage is zero or negative. And never reduce the
+// maximum page count below the current size of the database.
+//
+// Regardless of mxPage, return the current maximum page count.
+func _sqlite3PagerMaxPageCount(tls *crt.TLS, _pPager *XPager, _mxPage int32) (r0 int32) {
+ if _mxPage > i32(0) {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(156 /* X49 */))) = uint32(_mxPage)
+ }
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetSpillSizeØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ if int32(_pPager.X14) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50719), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMaxPageCountØ00__func__Ø000))), unsafe.Pointer(str(93469)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3BtreeEnter(tls, _p)
- _res = _sqlite3PagerSetSpillsize(tls, (*XPager)(_pBt.X0), _mxPage)
- _sqlite3BtreeLeave(tls, _p)
- return _res
-}
-
-var _sqlite3BtreeSetSpillSizeØ00__func__Ø000 [25]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeSetSpillSizeØ00__func__Ø000[0], str(94408), 25)
-}
-
-func _sqlite3PagerSetSpillsize(tls *crt.TLS, _pPager *XPager, _mxPage int32) (r0 int32) { // sqlite3.c:50406:1
- return _sqlite3PcacheSetSpillsize(tls, (*XPCache)(_pPager.X59), _mxPage)
-}
-
-func _sqlite3PcacheSetSpillsize(tls *crt.TLS, _p *XPCache, _mxPage int32) (r0 int32) { // sqlite3.c:44950:1
- var _res int32 // sqlite3.c:44951:7
- _ = _res
func() {
- if (_p.X12) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(44952), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PcacheSetSpillsizeØ00__func__Ø000))), unsafe.Pointer(str(94436)))
+ if (_pPager.X49) < (_pPager.X22) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(50720), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMaxPageCountØ00__func__Ø000))), unsafe.Pointer(str(93496)))
crt.X__builtin_abort(tls)
}
}()
- if _mxPage == 0 {
- goto _2
- }
+ return int32(_pPager.X49)
+}
- if _mxPage >= i32(0) {
- goto _3
+var _sqlite3PagerMaxPageCountØ00__func__Ø000 [25]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PagerMaxPageCountØ00__func__Ø000[0], str(93527), 25)
+}
+
+// This function returns a pointer to a nul-terminated string in memory
+// obtained from sqlite3DbMalloc(). If sqlite3.nVdbeExec is 1, then the
+// string contains a copy of zRawSql but with host parameters expanded to
+// their current bindings. Or, if sqlite3.nVdbeExec is greater than 1,
+// then the returned string holds a copy of zRawSql with "-- " prepended
+// to each line of text.
+//
+// If the SQLITE_TRACE_SIZE_LIMIT macro is defined to an integer, then
+// then long strings and blobs are truncated to that many bytes. This
+// can be used to prevent unreasonably large trace strings when dealing
+// with large (multi-megabyte) strings and blobs.
+//
+// The calling function is responsible for making sure the memory returned
+// is eventually freed.
+//
+// ALGORITHM: Scan the input string looking for host parameters in any of
+// these forms: ?, ?N, $A, @A, :A. Take care to avoid text within
+// string literals, quoted identifier names, and comments. For text forms,
+// the host parameter index is found by scanning the prepared
+// statement for the corresponding OP_Variable opcode. Once the host
+// parameter index is known, locate the value in p->aVar[]. Then render
+// the value as a literal in place of the host parameter name.
+func _sqlite3VdbeExpandSql(tls *crt.TLS, _p *TVdbe, _zRawSql *int8) (r0 *int8) {
+ var _idx, _nextIndex, _n, _nToken, _i, _13_nOut, _17_nOut int32
+ var _2_zStart *int8
+ var _13_enc uint8
+ var _db *Xsqlite3
+ var _utf8 XMem
+ var _pVar *XMem
+ var _zBase [100]int8
+ var _out XStrAccum
+ _idx = i32(0)
+ _nextIndex = i32(1)
+ _db = (*Xsqlite3)(_p.X0)
+ _sqlite3StrAccumInit(tls, &_out, nil, (*int8)(unsafe.Pointer(&_zBase)), int32(u32(100)), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0)))))
+ if (_db.X37) <= i32(1) {
+ goto _0
}
-
- _mxPage = int32((int64(i32(-1024)) * int64(_mxPage)) / int64((_p.X6)+(_p.X7)))
+_1:
+ if (*_zRawSql) == 0 {
+ goto _2
+ }
+ _2_zStart = _zRawSql
_3:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X5 */))) = _mxPage
-_2:
- _res = _numberOfCachePages(tls, _p)
- if _res >= (_p.X5) {
- goto _4
+ if (int32(*postInc0(&_zRawSql, 1)) != i32(10)) && ((*_zRawSql) != 0) {
+ goto _3
}
-
- _res = _p.X5
-_4:
- return _res
-}
-
-var _sqlite3PcacheSetSpillsizeØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PcacheSetSpillsizeØ00__func__Ø000[0], str(94452), 26)
-}
-
-func _sqlite3BtreeSetPagerFlags(tls *crt.TLS, _p *XBtree, _pgFlags uint32) (r0 int32) { // sqlite3.c:61713:1
- var _pBt *XBtShared // sqlite3.c:61717:12
- _ = _pBt
- _pBt = (*XBtShared)(_p.X1)
+ _sqlite3StrAccumAppend(tls, &_out, str(72354), i32(3))
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61718), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPagerFlagsØ00__func__Ø000))), unsafe.Pointer(str(7676)))
+ if int32((uintptr(unsafe.Pointer(_zRawSql))-uintptr(unsafe.Pointer(_2_zStart)))/1) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78101), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(93552)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3BtreeEnter(tls, _p)
- _sqlite3PagerSetFlags(tls, (*XPager)(_pBt.X0), _pgFlags)
- _sqlite3BtreeLeave(tls, _p)
- return i32(0)
-}
-
-var _sqlite3BtreeSetPagerFlagsØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeSetPagerFlagsØ00__func__Ø000[0], str(94480), 26)
-}
-
-func _sqlite3PagerSetFlags(tls *crt.TLS, _pPager *XPager, _pgFlags uint32) { // sqlite3.c:50493:1
- var _level uint32 // sqlite3.c:50497:12
- _ = _level
- _level = _pgFlags & uint32(i32(7))
- if (_pPager.X10) == 0 {
- goto _0
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(7 /* X4 */))) = uint8(i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(8 /* X5 */))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(9 /* X6 */))) = uint8(i32(0))
+ _sqlite3StrAccumAppend(tls, &_out, _2_zStart, int32((uintptr(unsafe.Pointer(_zRawSql))-uintptr(unsafe.Pointer(_2_zStart)))/1))
goto _1
-
+_2:
+ goto _8
_0:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(7 /* X4 */))) = uint8(func() int32 {
- if _level == uint32(i32(1)) {
- return i32(1)
- }
- return i32(0)
- }())
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(8 /* X5 */))) = uint8(func() int32 {
- if _level >= uint32(i32(3)) {
- return i32(1)
- }
- return i32(0)
- }())
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(9 /* X6 */))) = uint8(func() int32 {
- if _level == uint32(i32(4)) {
- return i32(1)
- }
- return i32(0)
- }())
-_1:
- if (_pPager.X4) == 0 {
- goto _8
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(0))
- goto _9
-
-_8:
- if (_pgFlags & uint32(i32(8))) == 0 {
+ if int32(_p.X4) == i32(0) {
+ _sqlite3StrAccumAppend(tls, &_out, _zRawSql, _sqlite3Strlen30(tls, _zRawSql))
goto _10
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(3))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(3))
- goto _11
-
-_10:
- if (_pgFlags & uint32(i32(16))) == 0 {
- goto _12
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(2))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(3))
- goto _13
-
-_12:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(12 /* X9 */))) = uint8(i32(2))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(10 /* X7 */))) = uint8(i32(2))
-_13:
_11:
-_9:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(11 /* X8 */))) = _pPager.X9
- if (_pPager.X5) == 0 {
- goto _14
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) == 0 {
+ goto _12
}
-
+ _n = _findNextHostParameter(tls, _zRawSql, &_nToken)
+ func() {
+ if _n <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(1358)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3StrAccumAppend(tls, &_out, _zRawSql, _n)
{
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(11 /* X8 */)))
- *p = uint8(int32(*p) | i32(32))
- sink2 = *p
+ p := &_zRawSql
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
+ sink0 = *p
}
-_14:
- if (_pgFlags & uint32(i32(32))) == 0 {
- goto _15
+ func() {
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) == 0 && _nToken != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(93575)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _nToken == i32(0) {
+ goto _12
}
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(21 /* X18 */)))
- *p = uint8(int32(*p) & i32(-2))
- sink2 = *p
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(63) {
+ goto _19
}
- goto _16
-
-_15:
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(21 /* X18 */)))
- *p = uint8(int32(*p) | i32(1))
- sink2 = *p
+ if _nToken > i32(1) {
+ func() {
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(1))))))))) & i32(4)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(93599)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3GetInt32(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql))+1*uintptr(i32(1)))), &_idx)
+ goto _23
}
-_16:
-}
-
-func _sqlite3BtreeSetPageSize(tls *crt.TLS, _p *XBtree, _pageSize int32, _nReserve int32, _iFix int32) (r0 int32) { // sqlite3.c:61746:1
- var _rc int32 // sqlite3.c:61747:7
- _ = _rc
- var _pBt *XBtShared // sqlite3.c:61748:12
- _ = _pBt
- _rc = i32(0)
- _pBt = (*XBtShared)(_p.X1)
+ _idx = _nextIndex
+_23:
+ goto _24
+_19:
func() {
- if _nReserve < i32(-1) || _nReserve > i32(255) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61749), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(94508)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(58) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(36) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(64) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(35) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(93626)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3BtreeEnter(tls, _p)
- if (int32(_pBt.X10) & i32(2)) == 0 {
- goto _3
- }
-
- _sqlite3BtreeLeave(tls, _p)
- return i32(8)
-
-_3:
- if _nReserve >= i32(0) {
- goto _4
- }
-
- _nReserve = int32((_pBt.X15) - (_pBt.X16))
-_4:
+ _idx = _sqlite3VdbeParameterIndex(tls, _p, _zRawSql, _nToken)
func() {
- if _nReserve < i32(0) || _nReserve > i32(255) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61761), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(94540)))
+ if _idx <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78129), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(93699)))
crt.X__builtin_abort(tls)
}
}()
- if _pageSize < i32(512) || _pageSize > i32(65536) || ((_pageSize-i32(1))&_pageSize) != i32(0) {
- goto _10
+_24:
+ {
+ p := &_zRawSql
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_nToken)))
+ sink0 = *p
}
-
+ _nextIndex = _idx + i32(1)
func() {
- if (_pageSize & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61764), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(53056)))
+ if _idx <= i32(0) || _idx > int32(_p.X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(93705)))
crt.X__builtin_abort(tls)
}
}()
+ _pVar = (*XMem)(unsafe.Pointer(uintptr(_p.X24) + 48*uintptr(_idx-i32(1))))
+ if (int32(_pVar.X1) & i32(1)) != 0 {
+ _sqlite3StrAccumAppend(tls, &_out, str(155), i32(4))
+ goto _36
+ }
+ if (int32(_pVar.X1) & i32(4)) != 0 {
+ _sqlite3XPrintf(tls, &_out, str(6348), *(*int64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar)) + uintptr(0 /* X0 */))))))
+ goto _38
+ }
+ if (int32(_pVar.X1) & i32(8)) != 0 {
+ _sqlite3XPrintf(tls, &_out, str(6367), *(*float64)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar)) + uintptr(0 /* X0 */))))))
+ goto _40
+ }
+ if (int32(_pVar.X1) & i32(2)) == 0 {
+ goto _41
+ }
+ _13_enc = _db.X14
+ if int32(_13_enc) == i32(1) {
+ goto _42
+ }
+ crt.Xmemset(tls, (unsafe.Pointer)(&_utf8), i32(0), u32(48))
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_utf8)) + uintptr(32 /* X9 */))))) = _db
+ _sqlite3VdbeMemSetStr(tls, &_utf8, _pVar.X5, _pVar.X4, _13_enc, nil)
+ if i32(7) == _sqlite3VdbeChangeEncoding(tls, &_utf8, i32(1)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_out)) + uintptr(24 /* X6 */))) = uint8(i32(1))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_out)) + uintptr(16 /* X4 */))) = uint32(i32(0))
+ }
+ _pVar = &_utf8
+_42:
+ _13_nOut = _pVar.X4
+ _sqlite3XPrintf(tls, &_out, str(93727), _13_nOut, unsafe.Pointer(_pVar.X5))
+ if int32(_13_enc) != i32(1) {
+ _sqlite3VdbeMemRelease(tls, &_utf8)
+ }
+ goto _45
+_41:
+ if (int32(_pVar.X1) & i32(16384)) != 0 {
+ _sqlite3XPrintf(tls, &_out, str(93734), *(*int32)(unsafe.Pointer((*t15)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar)) + uintptr(0 /* X0 */))))))
+ goto _47
+ }
func() {
- if (*XBtCursor)(_pBt.X2) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(61765), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeSetPageSizeØ00__func__Ø000))), unsafe.Pointer(str(21708)))
+ if (int32(_pVar.X1) & i32(16)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78176), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(93747)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(32 /* X15 */))) = uint32(_pageSize)
- _freeTempSpace(tls, _pBt)
+ _sqlite3StrAccumAppend(tls, &_out, str(93770), i32(2))
+ _17_nOut = _pVar.X4
+ _i = i32(0)
+_50:
+ if _i >= _17_nOut {
+ goto _53
+ }
+ _sqlite3XPrintf(tls, &_out, str(93773), int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar.X5)) + 1*uintptr(_i))))&i32(255))
+ _i += 1
+ goto _50
+_53:
+ _sqlite3StrAccumAppend(tls, &_out, str(93778), i32(1))
+_47:
+_45:
+_40:
+_38:
+_36:
+ goto _11
+_12:
_10:
- _rc = _sqlite3PagerSetPagesize(tls, (*XPager)(_pBt.X0), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt))+uintptr(32 /* X15 */))), _nReserve)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(36 /* X16 */))) = (_pBt.X15) - uint32(uint16(_nReserve))
- if _iFix == 0 {
- goto _15
+_8:
+ if (_out.X6) != 0 {
+ _sqlite3StrAccumReset(tls, &_out)
}
+ return _sqlite3StrAccumFinish(tls, &_out)
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) | i32(2))
- sink12 = *p
- }
-_15:
- _sqlite3BtreeLeave(tls, _p)
- return _rc
+ _ = _out
+ _ = _utf8
+ _ = _zBase
+ panic(0)
}
-var _sqlite3BtreeSetPageSizeØ00__func__Ø000 [24]int8 // -
+var _sqlite3VdbeExpandSqlØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeSetPageSizeØ00__func__Ø000[0], str(94572), 24)
+ crt.Xstrncpy(nil, &_sqlite3VdbeExpandSqlØ00__func__Ø000[0], str(93780), 21)
}
-func _sqlite3BtreeSetAutoVacuum(tls *crt.TLS, _p *XBtree, _autoVacuum int32) (r0 int32) { // sqlite3.c:61859:1
- var _pBt *XBtShared // sqlite3.c:61863:12
- _ = _pBt
- var _rc int32 // sqlite3.c:61864:7
- _ = _rc
- var _av uint8 // sqlite3.c:61865:6
- _ = _av
- _pBt = (*XBtShared)(_p.X1)
- _rc = i32(0)
- _av = uint8(_autoVacuum)
- _sqlite3BtreeEnter(tls, _p)
- if (int32(_pBt.X10)&i32(2)) == i32(0) || func() int32 {
- if _av != 0 {
- return i32(1)
+// zSql is a zero-terminated string of UTF-8 SQL text. Return the number of
+// bytes in this text up to but excluding the first character in
+// a host parameter. If the text contains no host parameters, return
+// the total number of bytes in the text.
+func _findNextHostParameter(tls *crt.TLS, _zSql *int8, _pnToken *int32) (r0 int32) {
+ var _tokenType, _nTotal, _n int32
+ _nTotal = i32(0)
+ *_pnToken = i32(0)
+_0:
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == 0 {
+ goto _1
+ }
+ _n = _sqlite3GetToken(tls, (*uint8)(unsafe.Pointer(_zSql)), &_tokenType)
+ func() {
+ if _n <= i32(0) || _tokenType == i32(164) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(78041), unsafe.Pointer((*int8)(unsafe.Pointer(&_findNextHostParameterØ00__func__Ø000))), unsafe.Pointer(str(93801)))
+ crt.X__builtin_abort(tls)
}
- return i32(0)
- }() == int32(_pBt.X5) {
- goto _3
+ }()
+ if _tokenType == i32(135) {
+ *_pnToken = _n
+ goto _1
+ }
+ {
+ p := &_nTotal
+ *p = (*p) + _n
+ sink1 = *p
+ }
+ {
+ p := &_zSql
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
+ sink0 = *p
}
+ goto _0
+_1:
+ return _nTotal
+}
- _rc = i32(8)
- goto _4
+var _findNextHostParameterØ00__func__Ø000 [22]int8
-_3:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(17 /* X5 */))) = uint8(func() int32 {
- if _av != 0 {
- return i32(1)
- }
- return i32(0)
- }())
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(18 /* X6 */))) = uint8(func() int32 {
- if int32(_av) == i32(2) {
- return i32(1)
- }
- return i32(0)
- }())
-_4:
- _sqlite3BtreeLeave(tls, _p)
- return _rc
+func init() {
+ crt.Xstrncpy(nil, &_findNextHostParameterØ00__func__Ø000[0], str(93830), 22)
}
-func _sqlite3BtreeGetAutoVacuum(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:61883:1
- var _rc int32 // sqlite3.c:61887:7
- _ = _rc
- _sqlite3BtreeEnter(tls, _p)
- _rc = func() int32 {
- if ((*XBtShared)(_p.X1).X5) == 0 {
- return i32(0)
- }
- return func() int32 {
- if ((*XBtShared)(_p.X1).X6) == 0 {
- return i32(1)
- }
- return i32(2)
- }()
- }()
- _sqlite3BtreeLeave(tls, _p)
- return _rc
+// The sqlite3_strlike() interface. Return 0 on a match and non-zero for
+// a miss - like strcmp().
+func Xsqlite3_strlike(tls *crt.TLS, _zPattern *int8, _zStr *int8, _esc uint32) (r0 int32) {
+ return _patternCompare(tls, (*uint8)(unsafe.Pointer(_zPattern)), (*uint8)(unsafe.Pointer(_zStr)), &_likeInfoNorm, _esc)
}
-func _execSqlF(tls *crt.TLS, _db *Xsqlite3, _pzErrMsg **int8, _zSql *int8, args ...interface{}) (r0 int32) { // sqlite3.c:124672:1
- var _z *int8 // sqlite3.c:124673:8
- _ = _z
- var _ap []interface{} // sqlite3.c:124674:11
- _ = _ap
- var _rc int32 // sqlite3.c:124675:7
- _ = _rc
- _ap = args
- _z = _sqlite3VMPrintf(tls, _db, _zSql, _ap)
- _ap = nil
- if _z != nil {
- goto _0
- }
- return i32(7)
+var _likeInfoNorm TcompareInfo
+
+func init() {
+ _likeInfoNorm = TcompareInfo{X0: u8(37), X1: u8(95), X2: u8(0), X3: u8(1)}
+}
+// This function is called after a transaction has been committed. It
+// invokes callbacks registered with sqlite3_wal_hook() as required.
+func _doWalCallbacks(tls *crt.TLS, _db *Xsqlite3) (r0 int32) {
+ var _rc, _i, _2_nEntry int32
+ var _1_pBt *XBtree
+ _rc = i32(0)
+ _i = i32(0)
_0:
- _rc = _execSql(tls, _db, _pzErrMsg, _z)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_z))
+ if _i >= (_db.X5) {
+ goto _3
+ }
+ _1_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
+ if _1_pBt == nil {
+ goto _4
+ }
+ _sqlite3BtreeEnter(tls, _1_pBt)
+ _2_nEntry = _sqlite3PagerWalCallback(tls, _sqlite3BtreePager(tls, _1_pBt))
+ _sqlite3BtreeLeave(tls, _1_pBt)
+ if (((*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, *int8, int32) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, *int8, int32) int32
+ }{(_db.X51)}))) != nil) && (_2_nEntry > i32(0))) && (_rc == i32(0)) {
+ _rc = (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, *int8, int32) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, *int8, int32) int32
+ }{(_db.X51)})))(tls, _db.X52, _db, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X0, _2_nEntry)
+ }
+_4:
+ _i += 1
+ goto _0
+_3:
return _rc
}
-var _sqlite3RunVacuumØ00aCopyØ001 [10]uint8 // sqlite3.c:124921:32
+func _sqlite3PagerWalCallback(tls *crt.TLS, _pPager *XPager) (r0 int32) {
+ return _sqlite3WalCallback(tls, (*XWal)(_pPager.X60))
+}
-func init() {
- _sqlite3RunVacuumØ00aCopyØ001 = [10]uint8{1, 1, 3, 0, 5, 0, 6, 0, 8, 0}
+// Return the value to pass to a sqlite3_wal_hook callback, the
+// number of frames in the WAL at the point of the last commit since
+// sqlite3WalCallback() was called. If no commits have occurred since
+// the last call, then return 0.
+func _sqlite3WalCallback(tls *crt.TLS, _pWal *XWal) (r0 int32) {
+ var _ret uint32
+ _ret = u32(0)
+ if _pWal != nil {
+ _ret = _pWal.X3
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(12 /* X3 */))) = uint32(i32(0))
+ }
+ return int32(_ret)
}
-func _sqlite3BtreeCopyFile(tls *crt.TLS, _pTo *XBtree, _pFrom *XBtree) (r0 int32) { // sqlite3.c:69645:1
- var _rc int32 // sqlite3.c:69646:7
- _ = _rc
- var _pFd *Xsqlite3_file // sqlite3.c:69647:16
- _ = _pFd
- var _b Xsqlite3_backup // sqlite3.c:69648:18
- _ = _b
- var _1_nByte int64 // sqlite3.c:69655:9
- _ = _1_nByte
- _sqlite3BtreeEnter(tls, _pTo)
- _sqlite3BtreeEnter(tls, _pFrom)
+// Rerun the compilation of a statement after a schema change.
+//
+// If the statement is successfully recompiled, return SQLITE_OK. Otherwise,
+// if the statement cannot be recompiled because another connection has
+// locked the sqlite3_master table, return SQLITE_LOCKED. If any other error
+// occurs, return SQLITE_SCHEMA.
+func _sqlite3Reprepare(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ var _rc int32
+ var _zSql *int8
+ var _pNew unsafe.Pointer
+ var _db *Xsqlite3
func() {
- if _sqlite3BtreeIsInTrans(tls, _pTo) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69652), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCopyFileØ00__func__Ø000))), unsafe.Pointer(str(94596)))
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_sqlite3VdbeDb(tls, _p).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116374), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(93852)))
crt.X__builtin_abort(tls)
}
}()
- _pFd = _sqlite3PagerFile(tls, _sqlite3BtreePager(tls, _pTo))
- if (*Xsqlite3_io_methods)(_pFd.X0) == nil {
- goto _2
+ _zSql = Xsqlite3_sql(tls, (unsafe.Pointer)(_p))
+ func() {
+ if _zSql == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(24614)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _db = _sqlite3VdbeDb(tls, _p)
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116378), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(863)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _rc = _sqlite3LockAndPrepare(tls, _db, _zSql, i32(-1), i32(0), _p, &_pNew, nil)
+ if _rc == 0 {
+ goto _6
}
-
- _1_nByte = int64(_sqlite3BtreeGetPageSize(tls, _pFrom)) * int64(_sqlite3BtreeLastPage(tls, _pFrom))
- _rc = _sqlite3OsFileControl(tls, _pFd, i32(11), (unsafe.Pointer)(&_1_nByte))
- if _rc != i32(12) {
- goto _3
+ if _rc == i32(7) {
+ _sqlite3OomFault(tls, _db)
}
-
- _rc = i32(0)
-_3:
- if _rc == 0 {
- goto _4
- }
-
- goto _copy_finished
-
-_4:
-_2:
- crt.Xmemset(tls, (unsafe.Pointer)(&_b), i32(0), u32(48))
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(20 /* X5 */))))) = (*Xsqlite3)(_pFrom.X0)
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(24 /* X6 */))))) = _pFrom
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(4 /* X1 */))))) = _pTo
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_b)) + uintptr(16 /* X4 */))) = uint32(i32(1))
- Xsqlite3_backup_step(tls, &_b, i32(2147483647))
func() {
- if (_b.X7) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCopyFileØ00__func__Ø000))), unsafe.Pointer(str(94624)))
+ if _pNew != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116384), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(93896)))
crt.X__builtin_abort(tls)
}
}()
- _rc = Xsqlite3_backup_finish(tls, &_b)
- if _rc != i32(0) {
- goto _7
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr(_pTo.X1) + uintptr(22 /* X10 */)))
- *p = uint16(int32(*p) & i32(-3))
- sink12 = *p
- }
- goto _8
+ return _rc
-_7:
- _sqlite3PagerClearCache(tls, _sqlite3BtreePager(tls, (*XBtree)(_b.X1)))
-_8:
+_6:
func() {
- if _sqlite3BtreeIsInTrans(tls, _pTo) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69692), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeCopyFileØ00__func__Ø000))), unsafe.Pointer(str(94640)))
+ if _pNew == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116387), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(21146)))
crt.X__builtin_abort(tls)
}
}()
-_copy_finished:
- _sqlite3BtreeLeave(tls, _pFrom)
- _sqlite3BtreeLeave(tls, _pTo)
- return _rc
+ _sqlite3VdbeSwap(tls, (*TVdbe)(_pNew), _p)
+ _sqlite3TransferBindings(tls, _pNew, (unsafe.Pointer)(_p))
+ _sqlite3VdbeResetStepResult(tls, (*TVdbe)(_pNew))
+ _sqlite3VdbeFinalize(tls, (*TVdbe)(_pNew))
+ return i32(0)
}
-var _sqlite3BtreeCopyFileØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeCopyFileØ00__func__Ø000[0], str(94672), 21)
-}
-
-func Xsqlite3_backup_step(tls *crt.TLS, _p *Xsqlite3_backup, _nPage int32) (r0 int32) { // sqlite3.c:69246:12
- var _rc int32 // sqlite3.c:69247:7
- _ = _rc
- var _destMode int32 // sqlite3.c:69248:7
- _ = _destMode
- var _pgszSrc int32 // sqlite3.c:69249:7
- _ = _pgszSrc
- var _pgszDest int32 // sqlite3.c:69250:7
- _ = _pgszDest
- var _2_pSrcPager *XPager // sqlite3.c:69263:11
- _ = _2_pSrcPager
- var _2_pDestPager *XPager // sqlite3.c:69264:11
- _ = _2_pDestPager
- var _2_ii int32 // sqlite3.c:69265:9
- _ = _2_ii
- var _2_nSrcPage int32 // sqlite3.c:69266:9
- _ = _2_nSrcPage
- var _2_bCloseTrans int32 // sqlite3.c:69267:9
- _ = _2_bCloseTrans
- var _9_iSrcPg uint32 // sqlite3.c:69320:18
- _ = _9_iSrcPg
- var _10_pSrcPg *XPgHdr // sqlite3.c:69322:16
- _ = _10_pSrcPg
- var _21_nDestTruncate int32 // sqlite3.c:69363:13
- _ = _21_nDestTruncate
- var _22_ratio int32 // sqlite3.c:69379:15
- _ = _22_ratio
- var _25_iSize int64 // sqlite3.c:69399:21
- _ = _25_iSize
- var _25_pFile *Xsqlite3_file // sqlite3.c:69400:24
- _ = _25_pFile
- var _25_iPg uint32 // sqlite3.c:69401:16
- _ = _25_iPg
- var _25_nDstPage int32 // sqlite3.c:69402:15
- _ = _25_nDstPage
- var _25_iOff int64 // sqlite3.c:69403:15
- _ = _25_iOff
- var _25_iEnd int64 // sqlite3.c:69404:15
- _ = _25_iEnd
- var _27_pPg *XPgHdr // sqlite3.c:69422:22
- _ = _27_pPg
- var _30_pSrcPg *XPgHdr // sqlite3.c:69441:19
- _ = _30_pSrcPg
- var _30_iSrcPg uint32 // sqlite3.c:69442:24
- _ = _30_iSrcPg
- var _31_zData *uint8 // sqlite3.c:69445:18
- _ = _31_zData
- var _36_rc2 int32 // sqlite3.c:69478:21
- _ = _36_rc2
- _pgszSrc = i32(0)
- _pgszDest = i32(0)
- if _p != nil {
- goto _0
- }
- return _sqlite3MisuseError(tls, i32(69253))
-
-_0:
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X5).X3))
- _sqlite3BtreeEnter(tls, (*XBtree)(_p.X6))
- if (*Xsqlite3)(_p.X0) == nil {
- goto _1
- }
-
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_1:
- _rc = _p.X7
- if _isFatalError(tls, _rc) != 0 {
- goto _2
- }
-
- _2_pSrcPager = _sqlite3BtreePager(tls, (*XBtree)(_p.X6))
- _2_pDestPager = _sqlite3BtreePager(tls, (*XBtree)(_p.X1))
- _2_nSrcPage = i32(-1)
- _2_bCloseTrans = i32(0)
- if (*Xsqlite3)(_p.X0) == nil || int32((*XBtShared)((*XBtree)(_p.X6).X1).X8) != i32(2) {
- goto _4
- }
+var _sqlite3ReprepareØ00__func__Ø000 [17]int8
- _rc = i32(5)
- goto _5
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ReprepareØ00__func__Ø000[0], str(93904), 17)
+}
-_4:
- _rc = i32(0)
-_5:
- if _rc != i32(0) || i32(0) != _sqlite3BtreeIsInReadTrans(tls, (*XBtree)(_p.X6)) {
- goto _7
- }
+// Return the SQL associated with a prepared statement
+func Xsqlite3_sql(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 *int8) {
+ var _p *TVdbe
+ _p = (*TVdbe)(_pStmt)
+ return func() *int8 {
+ if _p != nil {
+ return (_p.X36)
+ }
+ return nil
+ }()
+}
- _rc = _sqlite3BtreeBeginTrans(tls, (*XBtree)(_p.X6), i32(0))
- _2_bCloseTrans = i32(1)
-_7:
- if (_p.X3) != i32(0) || _rc != i32(0) || _setDestPgsz(tls, _p) != i32(7) {
- goto _10
- }
+// Swap all content between two VDBE structures.
+func _sqlite3VdbeSwap(tls *crt.TLS, _pA *TVdbe, _pB *TVdbe) {
+ var _zTmp *int8
+ var _pTmp *TVdbe
+ var _tmp TVdbe
+ func() {
+ if (*Xsqlite3)(_pA.X0) != (*Xsqlite3)(_pB.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSwapØ00__func__Ø000))), unsafe.Pointer(str(93921)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _tmp = *_pA
+ *_pA = *_pB
+ *_pB = _tmp
+ _pTmp = (*TVdbe)(_pA.X2)
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X2 */))))) = (*TVdbe)(_pB.X2)
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X2 */))))) = _pTmp
+ _pTmp = (*TVdbe)(_pA.X1)
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(4 /* X1 */))))) = (*TVdbe)(_pB.X1)
+ *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(4 /* X1 */))))) = _pTmp
+ _zTmp = _pA.X36
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(172 /* X36 */))) = _pB.X36
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(172 /* X36 */))) = _zTmp
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB))+uintptr(140 /* X32 */))), int16((uint32((_pA.X32)>>uint(i32(9)))<>uint(i32(31))), 512, 9)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(192 /* X41 */))) = _pA.X41
+}
- _rc = i32(7)
-_10:
- if i32(0) != _rc || (_p.X3) != i32(0) || i32(0) != store1(&_rc, _sqlite3BtreeBeginTrans(tls, (*XBtree)(_p.X1), i32(2))) {
- goto _13
- }
+var _sqlite3VdbeSwapØ00__func__Ø000 [16]int8
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))) = i32(1)
- _sqlite3BtreeGetMeta(tls, (*XBtree)(_p.X1), i32(1), (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))
-_13:
- _pgszSrc = _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X6))
- _pgszDest = _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X1))
- _destMode = _sqlite3PagerGetJournalMode(tls, _sqlite3BtreePager(tls, (*XBtree)(_p.X1)))
- if i32(0) != _rc || _destMode != i32(5) || _pgszSrc == _pgszDest {
- goto _16
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeSwapØ00__func__Ø000[0], str(93936), 16)
+}
- _rc = i32(8)
-_16:
- _2_nSrcPage = int32(_sqlite3BtreeLastPage(tls, (*XBtree)(_p.X6)))
+// Transfer all bindings from the first statement over to the second.
+func _sqlite3TransferBindings(tls *crt.TLS, _pFromStmt unsafe.Pointer, _pToStmt unsafe.Pointer) (r0 int32) {
+ var _i int32
+ var _pFrom, _pTo *TVdbe
+ _pFrom = (*TVdbe)(_pFromStmt)
+ _pTo = (*TVdbe)(_pToStmt)
func() {
- if _2_nSrcPage < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69318), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(94696)))
+ if (*Xsqlite3)(_pTo.X0) != (*Xsqlite3)(_pFrom.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77607), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TransferBindingsØ00__func__Ø000))), unsafe.Pointer(str(73018)))
crt.X__builtin_abort(tls)
}
}()
- _2_ii = i32(0)
-_19:
- if _nPage >= i32(0) && _2_ii >= _nPage || (_p.X4) > uint32(_2_nSrcPage) || _rc != 0 {
- goto _25
+ func() {
+ if int32(_pTo.X4) != int32(_pFrom.X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(77608), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TransferBindingsØ00__func__Ø000))), unsafe.Pointer(str(93952)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pTo.X0).X3))
+ _i = i32(0)
+_4:
+ if _i >= int32(_pFrom.X4) {
+ goto _7
}
+ _sqlite3VdbeMemMove(tls, (*XMem)(unsafe.Pointer(uintptr(_pTo.X24)+48*uintptr(_i))), (*XMem)(unsafe.Pointer(uintptr(_pFrom.X24)+48*uintptr(_i))))
+ _i += 1
+ goto _4
+_7:
+ Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pTo.X0).X3))
+ return i32(0)
+}
- _9_iSrcPg = _p.X4
- if _9_iSrcPg == ((uint32(_sqlite3PendingByte) / ((*XBtShared)((*XBtree)(_p.X6).X1).X15)) + uint32(i32(1))) {
- goto _26
- }
+var _sqlite3TransferBindingsØ00__func__Ø000 [24]int8
- _rc = _sqlite3PagerGet(tls, _2_pSrcPager, _9_iSrcPg, &_10_pSrcPg, i32(2))
- if _rc != i32(0) {
- goto _27
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3TransferBindingsØ00__func__Ø000[0], str(93975), 24)
+}
- _rc = _backupOnePage(tls, _p, _9_iSrcPg, (*uint8)(_sqlite3PagerGetData(tls, _10_pSrcPg)), i32(0))
- _sqlite3PagerUnref(tls, _10_pSrcPg)
-_27:
-_26:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) += 1
- _2_ii += 1
- goto _19
+// Each VDBE holds the result of the most recent sqlite3_step() call
+// in p->rc. This routine sets that result back to SQLITE_OK.
+func _sqlite3VdbeResetStepResult(tls *crt.TLS, _p *TVdbe) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
+}
-_25:
- if _rc != i32(0) {
- goto _28
- }
+var _sqlite3_stepØ00__func__Ø000 [13]int8
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */))) = uint32(_2_nSrcPage)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X8 */))) = uint32(_2_nSrcPage+i32(1)) - (_p.X4)
- if (_p.X4) <= uint32(_2_nSrcPage) {
- goto _29
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_stepØ00__func__Ø000[0], str(93999), 13)
+}
- _rc = i32(101)
- goto _30
+// Pragma virtual table module xEof method.
+func _pragmaVtabEof(tls *crt.TLS, _pVtabCursor *Xsqlite3_file) (r0 int32) {
+ var _pCsr *XPragmaVtabCursor
+ _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
+ return bool2int(_pCsr.X1 == nil)
+}
-_29:
- if (_p.X10) != 0 {
- goto _31
+// The xColumn method simply returns the corresponding column from
+// the PRAGMA.
+func _pragmaVtabColumn(tls *crt.TLS, _pVtabCursor *Xsqlite3_file, _ctx *Xsqlite3_context, _i int32) (r0 int32) {
+ var _pTab *XPragmaVtab
+ var _pCsr *XPragmaVtabCursor
+ _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
+ _pTab = (*XPragmaVtab)(unsafe.Pointer((*Xsqlite3_vtab)(_pVtabCursor.X0)))
+ if _i < int32(_pTab.X4) {
+ Xsqlite3_result_value(tls, _ctx, Xsqlite3_column_value(tls, _pCsr.X1, _i))
+ goto _1
}
+ Xsqlite3_result_text(tls, _ctx, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_i-int32(_pTab.X4)))), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+_1:
+ return i32(0)
+}
- _attachBackupObject(tls, _p)
-_31:
-_30:
-_28:
- if _rc != i32(101) {
- goto _32
- }
+// SQLITE_OMIT_UTF16
+func Xsqlite3_result_value(tls *crt.TLS, _pCtx *Xsqlite3_context, _pValue *XMem) {
+ func() {
+ if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(76537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_valueØ00__func__Ø000))), unsafe.Pointer(str(6666)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeMemCopy(tls, (*XMem)(_pCtx.X0), _pValue)
+}
- if _2_nSrcPage != i32(0) {
- goto _33
- }
+var _sqlite3_result_valueØ00__func__Ø000 [21]int8
- _rc = _sqlite3BtreeNewDb(tls, (*XBtree)(_p.X1))
- _2_nSrcPage = i32(1)
-_33:
- if _rc != i32(0) && _rc != i32(101) {
- goto _35
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3_result_valueØ00__func__Ø000[0], str(94012), 21)
+}
- _rc = _sqlite3BtreeUpdateMeta(tls, (*XBtree)(_p.X1), i32(1), (_p.X2)+uint32(i32(1)))
-_35:
- if _rc != i32(0) {
- goto _36
- }
+// Pragma virtual table module xRowid method.
+func _pragmaVtabRowid(tls *crt.TLS, _pVtabCursor *Xsqlite3_file, _p *int64) (r0 int32) {
+ var _pCsr *XPragmaVtabCursor
+ _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
+ *_p = _pCsr.X2
+ return i32(0)
+}
- if (*Xsqlite3)(_p.X0) == nil {
- goto _37
+// Check to see if virtual table module pMod can be have an eponymous
+// virtual table instance. If it can, create one if one does not already
+// exist. Return non-zero if the eponymous virtual table instance exists
+// when this routine returns, and return zero if it does not exist.
+//
+// An eponymous virtual table instance is one that is named after its
+// module, and more importantly, does not require a CREATE VIRTUAL TABLE
+// statement in order to come into existance. Eponymous virtual table
+// instances always exist. They cannot be DROP-ed.
+//
+// Any virtual table module for which xConnect and xCreate are the same
+// method can have an eponymous virtual table instance.
+func _sqlite3VtabEponymousTableInit(tls *crt.TLS, _pParse *XParse, _pMod *XModule) (r0 int32) {
+ var _rc int32
+ var _zErr *int8
+ var _db *Xsqlite3
+ var _pTab *XTable
+ var _pModule *Xsqlite3_module
+ _pModule = (*Xsqlite3_module)(_pMod.X0)
+ _zErr = nil
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (*XTable)(_pMod.X4) != nil {
+ return i32(1)
}
-
- _sqlite3ResetAllSchemasOfConnection(tls, (*Xsqlite3)(_p.X0))
-_37:
- if _destMode != i32(5) {
- goto _38
+ if (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
+ }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
+ }{(_pModule.X1)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
+ }{nil}))) && (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
+ }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
+ }{(_pModule.X1)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
+ }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
+ }{(_pModule.X2)})))}))) {
+ return i32(0)
}
-
- _rc = _sqlite3BtreeSetVersion(tls, (*XBtree)(_p.X1), i32(2))
-_38:
-_36:
- if _rc != i32(0) {
- goto _39
+ _pTab = (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80))))
+ if _pTab == nil {
+ return i32(0)
}
-
- func() {
- if _pgszSrc != _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X6)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(94708)))
- crt.X__builtin_abort(tls)
- }
- }()
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(0 /* X0 */))) = _sqlite3DbStrDup(tls, _db, _pMod.X1)
+ if (_pTab.X0) == nil {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pTab))
+ return i32(0)
+ }
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMod)) + uintptr(16 /* X4 */))))) = _pTab
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(32 /* X8 */))) = uint32(i32(1))
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(72 /* X20 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(i32(0)))).X4)
func() {
- if _pgszDest != _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(94752)))
+ if (_pTab.X16) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126139), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabEponymousTableInitØ00__func__Ø000))), unsafe.Pointer(str(94033)))
crt.X__builtin_abort(tls)
}
}()
- if _pgszSrc >= _pgszDest {
- goto _44
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
+ _addModuleArgument(tls, _db, _pTab, _sqlite3DbStrDup(tls, _db, _pTab.X0))
+ _addModuleArgument(tls, _db, _pTab, nil)
+ _addModuleArgument(tls, _db, _pTab, _sqlite3DbStrDup(tls, _db, _pTab.X0))
+ _rc = _vtabCallConstructor(tls, _db, _pTab, _pMod, *(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
+ }{(_pModule.X2)})), &_zErr)
+ if _rc != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(24576), unsafe.Pointer(_zErr))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zErr))
+ _sqlite3VtabEponymousTableClear(tls, _db, _pMod)
+ return i32(0)
}
+ return i32(1)
+}
- _22_ratio = _pgszDest / _pgszSrc
- _21_nDestTruncate = ((_2_nSrcPage + _22_ratio) - i32(1)) / _22_ratio
- if _21_nDestTruncate != int32((uint32(_sqlite3PendingByte)/((*XBtShared)((*XBtree)(_p.X1).X1).X15))+uint32(i32(1))) {
- goto _45
- }
+var _sqlite3VtabEponymousTableInitØ00__func__Ø000 [30]int8
- _21_nDestTruncate -= 1
-_45:
- goto _46
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VtabEponymousTableInitØ00__func__Ø000[0], str(94053), 30)
+}
-_44:
- _21_nDestTruncate = _2_nSrcPage * (_pgszSrc / _pgszDest)
-_46:
+// Add a new module argument to pTable->azModuleArg[].
+// The string is not copied - the pointer is stored. The
+// string will be freed automatically when the table is
+// deleted.
+func _addModuleArgument(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable, _zArg *int8) {
+ var _nBytes, _2_i int32
+ var _azModuleArg **int8
+ _nBytes = int32(u32(4) * uint32(i32(2)+(_pTable.X16)))
+ _azModuleArg = (**int8)(_sqlite3DbRealloc(tls, _db, (unsafe.Pointer)(_pTable.X17), uint64(_nBytes)))
+ if _azModuleArg == nil {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zArg))
+ goto _1
+ }
+ _2_i = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(56 /* X16 */))), int32(1))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azModuleArg)) + 4*uintptr(_2_i))) = _zArg
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azModuleArg)) + 4*uintptr(_2_i+i32(1)))) = nil
+ *(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(60 /* X17 */))) = _azModuleArg
+_1:
+}
+
+// The Table structure pTable is really a VIEW. Fill in the names of
+// the columns of the view in the pTable structure. Return the number
+// of errors. If an error is seen leave an error message in pParse->zErrMsg.
+func _sqlite3ViewGetColumnNames(tls *crt.TLS, _pParse *XParse, _pTable *XTable) (r0 int32) {
+ var _nErr, _n int32
+ var _xAuth func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
+ var _db *Xsqlite3
+ var _pSelTab *XTable
+ var _pSel *XSelect
+ _nErr = i32(0)
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if _21_nDestTruncate <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69387), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(94796)))
+ if _pTable == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(94083)))
crt.X__builtin_abort(tls)
}
}()
- if _pgszSrc >= _pgszDest {
- goto _49
+ if _sqlite3VtabCallConnect(tls, _pParse, _pTable) != 0 {
+ return i32(1)
+ }
+ if (_pTable.X16) != 0 {
+ return i32(0)
+ }
+ if int32(_pTable.X11) > i32(0) {
+ return i32(0)
+ }
+ if int32(_pTable.X11) < i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(94090), unsafe.Pointer(_pTable.X0))
+ return i32(1)
}
-
- _25_iSize = int64(_pgszSrc) * int64(_2_nSrcPage)
- _25_pFile = _sqlite3PagerFile(tls, _2_pDestPager)
func() {
- if _25_pFile == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69406), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(60052)))
+ if int32(_pTable.X11) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(94120)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _21_nDestTruncate != i32(0) && (int64(_21_nDestTruncate)*int64(_pgszDest)) < _25_iSize && (_21_nDestTruncate != int32(((uint32(_sqlite3PendingByte)/((*XBtShared)((*XBtree)(_p.X1).X1).X15))+uint32(i32(1)))-uint32(i32(1))) || _25_iSize < int64(_sqlite3PendingByte) || _25_iSize > int64(_sqlite3PendingByte+_pgszDest)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69407), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(94812)))
+ if (*XSelect)(_pTable.X3) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(94136)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3PagerPagecount(tls, _2_pDestPager, &_25_nDstPage)
- _25_iPg = uint32(_21_nDestTruncate)
-_58:
- if _rc != i32(0) || _25_iPg > uint32(_25_nDstPage) {
- goto _62
+ _pSel = _sqlite3SelectDup(tls, _db, (*XSelect)(_pTable.X3), i32(0))
+ if _pSel == nil {
+ goto _10
}
-
- if _25_iPg == ((uint32(_sqlite3PendingByte) / ((*XBtShared)((*XBtree)(_p.X1).X1).X15)) + uint32(i32(1))) {
- goto _63
+ _n = _pParse.X17
+ _sqlite3SrcListAssignCursors(tls, _pParse, (*XSrcList)(_pSel.X8))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(42 /* X11 */))) = int16(i32(-1))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) += 1
+ _xAuth = _db.X59
+ *(*func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(292 /* X59 */))) = nil
+ _pSelTab = _sqlite3ResultSetOfSelect(tls, _pParse, _pSel)
+ *(*func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(292 /* X59 */))) = _xAuth
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = _n
+ if (*XExprList)(_pTable.X6) == nil {
+ goto _11
}
-
- _rc = _sqlite3PagerGet(tls, _2_pDestPager, _25_iPg, &_27_pPg, i32(0))
- if _rc != i32(0) {
- goto _64
+ _sqlite3ColumnsFromExprList(tls, _pParse, (*XExprList)(_pTable.X6), (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(42 /* X11 */))), (**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(4 /* X1 */))))))
+ if ((int32(_db.X17) == i32(0)) && ((_pParse.X16) == i32(0))) && (int32(_pTable.X11) == ((*XExprList)(_pSel.X0).X0)) {
+ _sqlite3SelectAddColumnTypeAndCollation(tls, _pParse, _pTable, _pSel)
+ }
+ goto _15
+_11:
+ if _pSelTab != nil {
+ func() {
+ if (*XColumn)(_pTable.X1) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101931), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(94152)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(42 /* X11 */))) = _pSelTab.X11
+ *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(4 /* X1 */))))) = (*XColumn)(_pSelTab.X1)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelTab)) + uintptr(42 /* X11 */))) = int16(i32(0))
+ *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelTab)) + uintptr(4 /* X1 */))))) = nil
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pTable.X20)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101936), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(94168)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _21
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(42 /* X11 */))) = int16(i32(0))
+ _nErr += 1
+_21:
+_15:
+ _sqlite3DeleteTable(tls, _db, _pSelTab)
+ _sqlite3SelectDelete(tls, _db, _pSel)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) -= 1
+ goto _22
+_10:
+ _nErr += 1
+_22:
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr(_pTable.X20) + uintptr(78 /* X9 */)))
+ *p = uint16(int32(*p) | i32(2))
+ sink14 = *p
}
+ return _nErr
+}
- _rc = _sqlite3PagerWrite(tls, _27_pPg)
- _sqlite3PagerUnref(tls, _27_pPg)
-_64:
-_63:
- _25_iPg += 1
- goto _58
+var _sqlite3ViewGetColumnNamesØ00__func__Ø000 [26]int8
-_62:
- if _rc != i32(0) {
- goto _65
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ViewGetColumnNamesØ00__func__Ø000[0], str(94215), 26)
+}
- _rc = _sqlite3PagerCommitPhaseOne(tls, _2_pDestPager, nil, i32(1))
-_65:
- _25_iEnd = func() int64 {
- if int64(_sqlite3PendingByte+_pgszDest) < _25_iSize {
- return int64(_sqlite3PendingByte + _pgszDest)
+// This function is invoked by the parser to call the xConnect() method
+// of the virtual table pTab. If an error occurs, an error code is returned
+// and an error left in pParse.
+//
+// This call is a no-op if table pTab is not a virtual table.
+func _sqlite3VtabCallConnect(tls *crt.TLS, _pParse *XParse, _pTab *XTable) (r0 int32) {
+ var _rc int32
+ var _zMod, _2_zModule, _3_zErr *int8
+ var _db *Xsqlite3
+ var _pMod *XModule
+ _db = (*Xsqlite3)(_pParse.X0)
+ func() {
+ if _pTab == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(125616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallConnectØ00__func__Ø000))), unsafe.Pointer(str(94241)))
+ crt.X__builtin_abort(tls)
}
- return _25_iSize
}()
- _25_iOff = int64(_sqlite3PendingByte + _pgszSrc)
-_68:
- if _rc != i32(0) || _25_iOff >= _25_iEnd {
- goto _72
- }
-
- _30_pSrcPg = nil
- _30_iSrcPg = uint32((_25_iOff / int64(_pgszSrc)) + int64(i32(1)))
- _rc = _sqlite3PagerGet(tls, _2_pSrcPager, _30_iSrcPg, &_30_pSrcPg, i32(0))
- if _rc != i32(0) {
- goto _73
- }
-
- _31_zData = (*uint8)(_sqlite3PagerGetData(tls, _30_pSrcPg))
- _rc = _sqlite3OsWrite(tls, _25_pFile, (unsafe.Pointer)(_31_zData), _pgszSrc, _25_iOff)
-_73:
- _sqlite3PagerUnref(tls, _30_pSrcPg)
- {
- p := &_25_iOff
- *p = (*p) + int64(_pgszSrc)
- sink6 = *p
+ if ((_pTab.X16) == 0) || (_sqlite3GetVTable(tls, _db, _pTab) != nil) {
+ return i32(0)
}
- goto _68
-
-_72:
- if _rc != i32(0) {
- goto _74
+ _zMod = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(0))))
+ _pMod = (*XModule)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zMod))
+ if _pMod == nil {
+ _2_zModule = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(0))))
+ _sqlite3ErrorMsg(tls, _pParse, str(93150), unsafe.Pointer(_2_zModule))
+ _rc = i32(1)
+ goto _5
}
-
- _rc = _backupTruncateFile(tls, _25_pFile, _25_iSize)
-_74:
+ _3_zErr = nil
+ _rc = _vtabCallConstructor(tls, _db, _pTab, _pMod, *(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
+ }{((*Xsqlite3_module)(_pMod.X0).X2)})), &_3_zErr)
if _rc != i32(0) {
- goto _75
+ _sqlite3ErrorMsg(tls, _pParse, str(24576), unsafe.Pointer(_3_zErr))
}
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_3_zErr))
+_5:
+ return _rc
+}
- _rc = _sqlite3PagerSync(tls, _2_pDestPager, nil)
-_75:
- goto _76
+var _sqlite3VtabCallConnectØ00__func__Ø000 [23]int8
-_49:
- _sqlite3PagerTruncateImage(tls, _2_pDestPager, uint32(_21_nDestTruncate))
- _rc = _sqlite3PagerCommitPhaseOne(tls, _2_pDestPager, nil, i32(0))
-_76:
- if i32(0) != _rc || i32(0) != store1(&_rc, _sqlite3BtreeCommitPhaseTwo(tls, (*XBtree)(_p.X1), i32(0))) {
- goto _78
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VtabCallConnectØ00__func__Ø000[0], str(94246), 23)
+}
- _rc = i32(101)
-_78:
-_39:
-_32:
- if _2_bCloseTrans == 0 {
- goto _79
+// Given a SELECT statement, generate a Table structure that describes
+// the result set of that SELECT.
+func _sqlite3ResultSetOfSelect(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) (r0 *XTable) {
+ var _savedFlags int32
+ var _db *Xsqlite3
+ var _pTab *XTable
+ _db = (*Xsqlite3)(_pParse.X0)
+ _savedFlags = _db.X6
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) & i32(-5)
+ sink1 = *p
}
-
- _36_rc2 = _sqlite3BtreeCommitPhaseOne(tls, (*XBtree)(_p.X6), nil)
{
- p := &_36_rc2
- *p = (*p) | _sqlite3BtreeCommitPhaseTwo(tls, (*XBtree)(_p.X6), i32(0))
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(64)
sink1 = *p
}
+ _sqlite3SelectPrep(tls, _pParse, _pSelect, nil)
+ if (_pParse.X16) != 0 {
+ return nil
+ }
+_1:
+ if (*XSelect)(_pSelect.X13) != nil {
+ _pSelect = (*XSelect)(_pSelect.X13)
+ goto _1
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */))) = _savedFlags
+ _pTab = (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80))))
+ if _pTab == nil {
+ return nil
+ }
func() {
- if _36_rc2 != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69481), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_backup_stepØ00__func__Ø000))), unsafe.Pointer(str(18292)))
+ if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X0) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118340), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResultSetOfSelectØ00__func__Ø000))), unsafe.Pointer(str(94269)))
crt.X__builtin_abort(tls)
}
}()
-_79:
- if _rc != i32(3082) {
- goto _82
- }
-
- _rc = _sqlite3NomemError(tls, i32(69485))
-_82:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = _rc
-_2:
- if (*Xsqlite3)(_p.X0) == nil {
- goto _83
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(32 /* X8 */))) = uint32(i32(1))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(0 /* X0 */))) = nil
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(44 /* X12 */))) = int16(i32(200))
+ func() {
+ if i32(200) != int32(_sqlite3LogEst(tls, uint64(i32(1048576)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118343), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResultSetOfSelectØ00__func__Ø000))), unsafe.Pointer(str(48127)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3ColumnsFromExprList(tls, _pParse, (*XExprList)(_pSelect.X0), (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab))+uintptr(42 /* X11 */))), (**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab))+uintptr(4 /* X1 */))))))
+ _sqlite3SelectAddColumnTypeAndCollation(tls, _pParse, _pTab, _pSelect)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
+ if (_db.X17) != 0 {
+ _sqlite3DeleteTable(tls, _db, _pTab)
+ return nil
}
-
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_83:
- _sqlite3BtreeLeave(tls, (*XBtree)(_p.X6))
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X5).X3))
- return _rc
-}
-
-func _setDestPgsz(tls *crt.TLS, _p *Xsqlite3_backup) (r0 int32) { // sqlite3.c:69011:1
- var _rc int32 // sqlite3.c:69012:7
- _ = _rc
- _rc = _sqlite3BtreeSetPageSize(tls, (*XBtree)(_p.X1), _sqlite3BtreeGetPageSize(tls, (*XBtree)(_p.X6)), i32(-1), i32(0))
- return _rc
+ return _pTab
}
-var _sqlite3_backup_stepØ00__func__Ø000 [20]int8 // -
+var _sqlite3ResultSetOfSelectØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3_backup_stepØ00__func__Ø000[0], str(94996), 20)
+ crt.Xstrncpy(nil, &_sqlite3ResultSetOfSelectØ00__func__Ø000[0], str(94292), 25)
}
-func _attachBackupObject(tls *crt.TLS, _p *Xsqlite3_backup) { // sqlite3.c:69234:1
- var _pp **Xsqlite3_backup // sqlite3.c:69235:18
- _ = _pp
+// Add type and collation information to a column list based on
+// a SELECT statement.
+//
+// The column list presumably came from selectColumnNamesFromExprList().
+// The column list has only names, not types or collations. This
+// routine goes through and adds the types and collations.
+//
+// This routine requires that all identifiers in the SELECT
+// statement be resolved.
+func _sqlite3SelectAddColumnTypeAndCollation(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pSelect *XSelect) {
+ var _i, _1_n, _1_m int32
+ var _szAll uint64
+ var _1_zType *int8
+ var _db *Xsqlite3
+ var _a *TExprList_item
+ var _p *XExpr
+ var _pCol *XColumn
+ var _pColl *XCollSeq
+ var _sNC XNameContext
+ _db = (*Xsqlite3)(_pParse.X0)
+ _szAll = u64(0)
func() {
- if _sqlite3BtreeHoldsMutex(tls, (*XBtree)(_p.X6)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(69236), unsafe.Pointer((*int8)(unsafe.Pointer(&_attachBackupObjectØ00__func__Ø000))), unsafe.Pointer(str(95016)))
+ if _pSelect == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118287), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000))), unsafe.Pointer(str(94317)))
crt.X__builtin_abort(tls)
}
}()
- _pp = _sqlite3PagerBackupPtr(tls, _sqlite3BtreePager(tls, (*XBtree)(_p.X6)))
- *(**Xsqlite3_backup)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X11 */))))) = *_pp
- *_pp = _p
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(1)
-}
-
-var _attachBackupObjectØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_attachBackupObjectØ00__func__Ø000[0], str(95048), 19)
-}
-
-func _sqlite3PagerBackupPtr(tls *crt.TLS, _pPager *XPager) (r0 **Xsqlite3_backup) { // sqlite3.c:54213:1
- /* X36 */
- return (**Xsqlite3_backup)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(92)))))
-}
-
-func _sqlite3BtreeNewDb(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:62198:1
- var _rc int32 // sqlite3.c:62199:7
- _ = _rc
- _sqlite3BtreeEnter(tls, _p)
- *(*uint32)(unsafe.Pointer(uintptr(_p.X1) + uintptr(44 /* X18 */))) = uint32(i32(0))
- _rc = _newDatabase(tls, (*XBtShared)(_p.X1))
- _sqlite3BtreeLeave(tls, _p)
- return _rc
-}
-
-func _backupTruncateFile(tls *crt.TLS, _pFile *Xsqlite3_file, _iSize int64) (r0 int32) { // sqlite3.c:69221:1
- var _iCurrent int64 // sqlite3.c:69222:7
- _ = _iCurrent
- var _rc int32 // sqlite3.c:69223:7
- _ = _rc
- _rc = _sqlite3OsFileSize(tls, _pFile, &_iCurrent)
- if _rc != i32(0) || _iCurrent <= _iSize {
- goto _1
- }
-
- _rc = _sqlite3OsTruncate(tls, _pFile, _iSize)
-_1:
- return _rc
-}
-
-func Xsqlite3_backup_finish(tls *crt.TLS, _p *Xsqlite3_backup) (r0 int32) { // sqlite3.c:69500:12
- var _pp **Xsqlite3_backup // sqlite3.c:69501:18
- _ = _pp
- var _pSrcDb *Xsqlite3 // sqlite3.c:69502:11
- _ = _pSrcDb
- var _rc int32 // sqlite3.c:69503:7
- _ = _rc
- if _p != nil {
- goto _0
- }
- return i32(0)
-
-_0:
- _pSrcDb = (*Xsqlite3)(_p.X5)
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)(_pSrcDb.X3))
- _sqlite3BtreeEnter(tls, (*XBtree)(_p.X6))
- if (*Xsqlite3)(_p.X0) == nil {
- goto _1
- }
-
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_p.X0).X3))
-_1:
- if (*Xsqlite3)(_p.X0) == nil {
- goto _2
- }
-
- *(*int32)(unsafe.Pointer(uintptr(_p.X6) + uintptr(16 /* X7 */))) -= 1
-_2:
- if (_p.X10) == 0 {
- goto _3
- }
-
- _pp = _sqlite3PagerBackupPtr(tls, _sqlite3BtreePager(tls, (*XBtree)(_p.X6)))
-_4:
- if (*_pp) == _p {
- goto _5
- }
-
- _pp = (**Xsqlite3_backup)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(*_pp)) + uintptr(44 /* X11 */)))))
- goto _4
-
-_5:
- *_pp = (*Xsqlite3_backup)(_p.X11)
-_3:
- _sqlite3BtreeRollback(tls, (*XBtree)(_p.X1), i32(0), i32(0))
- _rc = func() int32 {
- if (_p.X7) == i32(101) {
- return i32(0)
- }
- return (_p.X7)
- }()
- if (*Xsqlite3)(_p.X0) == nil {
- goto _8
- }
-
- _sqlite3Error(tls, (*Xsqlite3)(_p.X0), _rc)
- _sqlite3LeaveMutexAndCloseZombie(tls, (*Xsqlite3)(_p.X0))
-_8:
- _sqlite3BtreeLeave(tls, (*XBtree)(_p.X6))
- if (*Xsqlite3)(_p.X0) == nil {
- goto _9
- }
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_p))
-_9:
- _sqlite3LeaveMutexAndCloseZombie(tls, _pSrcDb)
- return _rc
-}
-
-func _sqlite3PagerClearCache(tls *crt.TLS, _pPager *XPager) { // sqlite3.c:54221:1
func() {
- if int32(_pPager.X13) != i32(0) && (_pPager.X10) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(54222), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerClearCacheØ00__func__Ø000))), unsafe.Pointer(str(57776)))
+ if ((_pSelect.X3) & uint32(i32(4))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000))), unsafe.Pointer(str(94328)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pPager.X10) != i32(0) {
- goto _3
- }
-
- _pager_reset(tls, _pPager)
-_3:
-}
-
-var _sqlite3PagerClearCacheØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerClearCacheØ00__func__Ø000[0], str(95068), 23)
-}
-
-func _sqlite3BtreeIncrVacuum(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:62710:1
- var _rc int32 // sqlite3.c:62711:7
- _ = _rc
- var _pBt *XBtShared // sqlite3.c:62712:12
- _ = _pBt
- var _2_nOrig uint32 // sqlite3.c:62719:10
- _ = _2_nOrig
- var _2_nFree uint32 // sqlite3.c:62720:10
- _ = _2_nFree
- var _2_nFin uint32 // sqlite3.c:62721:10
- _ = _2_nFin
- _pBt = (*XBtShared)(_p.X1)
- _sqlite3BtreeEnter(tls, _p)
func() {
- if int32(_pBt.X8) != i32(2) || int32(_p.X2) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(62715), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeIncrVacuumØ00__func__Ø000))), unsafe.Pointer(str(95092)))
+ if int32(_pTab.X11) != ((*XExprList)(_pSelect.X0).X0) && (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118289), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000))), unsafe.Pointer(str(94365)))
crt.X__builtin_abort(tls)
}
}()
- if (_pBt.X5) != 0 {
- goto _3
+ if (_db.X17) != 0 {
+ return
}
-
- _rc = i32(101)
- goto _4
-
-_3:
- _2_nOrig = _btreePagecount(tls, _pBt)
- _2_nFree = _sqlite3Get4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(36)))))
- _2_nFin = _finalDbSize(tls, _pBt, _2_nOrig, _2_nFree)
- if _2_nOrig >= _2_nFin {
- goto _5
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_pSelect.X8)
+ _a = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSelect.X0) + uintptr(8 /* X2 */)))))
+ *func() **XColumn { _i = i32(0); return &_pCol }() = (*XColumn)(_pTab.X1)
+_8:
+ if _i >= int32(_pTab.X11) {
+ goto _11
}
-
- _rc = _sqlite3CorruptError(tls, i32(62724))
- goto _6
-
-_5:
- if _2_nFree <= uint32(i32(0)) {
- goto _7
+ _p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 20*uintptr(_i))).X0)
+ _1_zType = _columnTypeImpl(tls, &_sNC, _p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol))+uintptr(14 /* X5 */))))
+ {
+ p := &_szAll
+ *p = (*p) + uint64(_pCol.X5)
+ sink17 = *p
}
-
- _rc = _saveAllCursors(tls, _pBt, uint32(i32(0)), nil)
- if _rc != i32(0) {
- goto _8
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = _sqlite3ExprAffinity(tls, _p)
+ if _1_zType == nil || store1(&_1_m, _sqlite3Strlen30(tls, _1_zType)) <= i32(0) {
+ goto _13
}
-
- _invalidateAllOverflowCache(tls, _pBt)
- _rc = _incrVacuumStep(tls, _pBt, _2_nFin, _2_nOrig, i32(0))
-_8:
- if _rc != i32(0) {
- goto _9
+ _1_n = _sqlite3Strlen30(tls, _pCol.X0)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(0 /* X0 */))) = (*int8)(_sqlite3DbReallocOrFree(tls, _db, (unsafe.Pointer)(_pCol.X0), uint64((_1_n+_1_m)+i32(2))))
+ if (_pCol.X0) != nil {
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol.X0))+1*uintptr(_1_n+i32(1))))), (unsafe.Pointer)(_1_zType), uint32(_1_m+i32(1)))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
+ *p = uint8(int32(*p) | i32(4))
+ sink2 = *p
+ }
}
-
- _rc = _sqlite3PagerWrite(tls, (*XPgHdr)((*XMemPage)(_pBt.X3).X23))
- _sqlite3Put4byte(tls, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XMemPage)(_pBt.X3).X19))+1*uintptr(i32(28)))), _pBt.X18)
-_9:
- goto _10
-
-_7:
- _rc = i32(101)
-_10:
-_6:
-_4:
- _sqlite3BtreeLeave(tls, _p)
- return _rc
+_13:
+ if int32(_pCol.X4) == i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = int8(i32(65))
+ }
+ _pColl = _sqlite3ExprCollSeq(tls, _pParse, _p)
+ if (_pColl != nil) && ((_pCol.X2) == nil) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, _pColl.X0)
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
+ goto _8
+_11:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(46 /* X13 */))) = _sqlite3LogEst(tls, _szAll*uint64(i32(4)))
+ _ = _sNC
}
-var _sqlite3BtreeIncrVacuumØ00__func__Ø000 [23]int8 // -
+var _sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000 [39]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeIncrVacuumØ00__func__Ø000[0], str(95152), 23)
+ crt.Xstrncpy(nil, &_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000[0], str(94420), 39)
}
-func _sqlite3BtreeLockTable(tls *crt.TLS, _p *XBtree, _iTab int32, _isWriteLock uint8) (r0 int32) { // sqlite3.c:68738:1
- var _rc int32 // sqlite3.c:68739:7
- _ = _rc
- var _1_lockType uint8 // sqlite3.c:68742:8
- _ = _1_lockType
- _rc = i32(0)
+func _columnTypeImpl(tls *crt.TLS, _pNC *XNameContext, _pExpr *XExpr, _pEstWidth *uint8) (r0 *int8) {
+ var _j, _2_iCol int32
+ var _zType *int8
+ var _estWidth uint8
+ var _2_pTab *XTable
+ var _3_pTabList *XSrcList
+ var _2_pS, _12_pS *XSelect
+ var _8_p, _12_p *XExpr
+ var _8_sNC, _12_sNC XNameContext
+ _zType = nil
+ _estWidth = u8(1)
func() {
- if int32(_p.X2) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLockTableØ00__func__Ø000))), unsafe.Pointer(str(95176)))
+ if _pExpr == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117910), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(43636)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X3) == 0 {
- goto _2
- }
-
- _1_lockType = uint8(i32(1) + int32(_isWriteLock))
- i32(0)
func() {
- if int32(_isWriteLock) != i32(0) && int32(_isWriteLock) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(68744), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BtreeLockTableØ00__func__Ø000))), unsafe.Pointer(str(72620)))
+ if (*XSrcList)(_pNC.X1) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117911), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(94459)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3BtreeEnter(tls, _p)
- _rc = _querySharedCacheTableLock(tls, _p, uint32(_iTab), _1_lockType)
- if _rc != i32(0) {
+ switch int32(_pExpr.X0) {
+ case i32(119):
+ goto _7
+ case i32(152):
goto _6
+ case i32(154):
+ goto _5
+ default:
+ goto _8
}
- _rc = _setSharedCacheTableLock(tls, _p, uint32(_iTab), _1_lockType)
+_5:
_6:
- _sqlite3BtreeLeave(tls, _p)
-_2:
- return _rc
-}
-
-var _sqlite3BtreeLockTableØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BtreeLockTableØ00__func__Ø000[0], str(95200), 22)
-}
-
-func _setSharedCacheTableLock(tls *crt.TLS, _p *XBtree, _iTable uint32, _eLock uint8) (r0 int32) { // sqlite3.c:59353:1
- var _pBt *XBtShared // sqlite3.c:59354:12
- _ = _pBt
- var _pLock *XBtLock // sqlite3.c:59355:10
- _ = _pLock
- var _pIter *XBtLock // sqlite3.c:59356:10
- _ = _pIter
- _pBt = (*XBtShared)(_p.X1)
- _pLock = nil
+ _2_pTab = nil
+ _2_pS = nil
+ _2_iCol = int32(_pExpr.X9)
+_9:
+ if _pNC == nil || _2_pTab != nil {
+ goto _10
+ }
+ _3_pTabList = (*XSrcList)(_pNC.X1)
+ _j = i32(0)
+_12:
+ if _j >= (_3_pTabList.X0) || ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_j))).X11) == (_pExpr.X8) {
+ goto _16
+ }
+ _j += 1
+ goto _12
+_16:
+ if _j < (_3_pTabList.X0) {
+ _2_pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_j))).X4)
+ _2_pS = (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_j))).X5)
+ goto _18
+ }
+ _pNC = (*XNameContext)(_pNC.X4)
+_18:
+ goto _9
+_10:
+ if _2_pTab == nil {
+ goto _8
+ }
func() {
- if _sqlite3BtreeHoldsMutex(tls, _p) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59358), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(16704)))
+ if _2_pTab == nil || (*XTable)(_pExpr.X14) != _2_pTab {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117956), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(94476)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if int32(_eLock) != i32(1) && int32(_eLock) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59359), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(52400)))
- crt.X__builtin_abort(tls)
+ if _2_pS == nil {
+ goto _23
+ }
+ if (_2_iCol >= i32(0)) && func() int32 {
+ if _2_iCol < ((*XExprList)(_2_pS.X0).X0) {
+ return i32(1)
}
- }()
- func() {
- if (*Xsqlite3)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59360), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(23376)))
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117962), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
- }
- }()
+ return i32(0)
+ }()
+ }() != 0 {
+ _8_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_2_pS.X0)+uintptr(8 /* X2 */))))) + 20*uintptr(_2_iCol))).X0)
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_2_pS.X8)
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_sNC)) + uintptr(16 /* X4 */))))) = _pNC
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_sNC)) + uintptr(0 /* X0 */))))) = (*XParse)(_pNC.X0)
+ _zType = _columnTypeImpl(tls, &_8_sNC, _8_p, &_estWidth)
+ }
+ goto _28
+_23:
+ if (*XSchema)(_2_pTab.X20) == nil {
+ goto _29
+ }
func() {
- if i32(0) != (((*Xsqlite3)(_p.X0).X6)&i32(16384)) && int32(_eLock) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59366), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(95224)))
+ if _2_pS != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117979), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(94502)))
crt.X__builtin_abort(tls)
}
}()
+ if _2_iCol < i32(0) {
+ _2_iCol = int32(_2_pTab.X10)
+ }
func() {
- if (_p.X3) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59370), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(95288)))
+ if _2_iCol != i32(-1) && (_2_iCol < i32(0) || _2_iCol >= int32(_2_pTab.X11)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117981), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(94506)))
crt.X__builtin_abort(tls)
}
}()
+ if _2_iCol < i32(0) {
+ _zType = str(25792)
+ goto _38
+ }
+ _zType = _sqlite3ColumnType(tls, (*XColumn)(unsafe.Pointer(uintptr(_2_pTab.X1)+16*uintptr(_2_iCol))), nil)
+ _estWidth = (*XColumn)(unsafe.Pointer(uintptr(_2_pTab.X1) + 16*uintptr(_2_iCol))).X5
+_38:
+_29:
+_28:
+ goto _8
+_7:
+ _12_pS = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _12_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_12_pS.X0)+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
func() {
- if i32(0) != _querySharedCacheTableLock(tls, _p, _iTable, _eLock) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(59371), unsafe.Pointer((*int8)(unsafe.Pointer(&_setSharedCacheTableLockØ00__func__Ø000))), unsafe.Pointer(str(95300)))
+ if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118016), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(45159)))
crt.X__builtin_abort(tls)
}
}()
- _pIter = (*XBtLock)(_pBt.X25)
-_14:
- if _pIter == nil {
- goto _17
- }
-
- if (_pIter.X1) != _iTable || (*XBtree)(_pIter.X0) != _p {
- goto _19
- }
-
- _pLock = _pIter
- goto _17
-
-_19:
- _pIter = (*XBtLock)(_pIter.X3)
- goto _14
-
-_17:
- if _pLock != nil {
- goto _20
- }
-
- _pLock = (*XBtLock)(_sqlite3MallocZero(tls, uint64(u32(16))))
- if _pLock != nil {
- goto _21
- }
- return _sqlite3NomemError(tls, i32(59387))
-
-_21:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(4 /* X1 */))) = _iTable
- *(**XBtree)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(0 /* X0 */))))) = _p
- *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(12 /* X3 */))))) = (*XBtLock)(_pBt.X25)
- *(**XBtLock)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBt)) + uintptr(72 /* X25 */))))) = _pLock
-_20:
- i32(0)
- if int32(_eLock) <= int32(_pLock.X2) {
- goto _22
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_12_pS.X8)
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sNC)) + uintptr(16 /* X4 */))))) = _pNC
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sNC)) + uintptr(0 /* X0 */))))) = (*XParse)(_pNC.X0)
+ _zType = _columnTypeImpl(tls, &_12_sNC, _12_p, &_estWidth)
+ goto _8
+_8:
+ if _pEstWidth != nil {
+ *_pEstWidth = _estWidth
}
+ return _zType
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLock)) + uintptr(8 /* X2 */))) = _eLock
-_22:
- return i32(0)
+ _ = _8_sNC
+ _ = _12_sNC
+ panic(0)
}
-var _setSharedCacheTableLockØ00__func__Ø000 [24]int8 // -
+var _columnTypeImplØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_setSharedCacheTableLockØ00__func__Ø000[0], str(95356), 24)
+ crt.Xstrncpy(nil, &_columnTypeImplØ00__func__Ø000[0], str(94547), 15)
}
-func _sqlite3VtabBegin(tls *crt.TLS, _db *Xsqlite3, _pVTab *XVTable) (r0 int32) { // sqlite3.c:125916:1
- var _rc int32 // sqlite3.c:125917:7
- _ = _rc
- var _pModule *Xsqlite3_module // sqlite3.c:125918:24
- _ = _pModule
- var _3_i int32 // sqlite3.c:125934:9
- _ = _3_i
- var _7_iSvpt int32 // sqlite3.c:125949:13
- _ = _7_iSvpt
- _rc = i32(0)
- if (_db.X64) <= i32(0) || (**XVTable)(unsafe.Pointer(_db.X67)) != nil {
+// Return the collation sequence for the expression pExpr. If
+// there is no defined collating sequence, return NULL.
+//
+// The collating sequence might be determined by a COLLATE operator
+// or by the presence of a column with a defined collating sequence.
+// COLLATE operators take first precedence. Left operands take
+// precedence over right operands.
+func _sqlite3ExprCollSeq(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 *XCollSeq) {
+ var _1_op, _4_j, _9_i int32
+ var _5_zColl *int8
+ var _db *Xsqlite3
+ var _p, _8_pNext *XExpr
+ var _pColl *XCollSeq
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pColl = nil
+ _p = _pExpr
+_0:
+ if _p == nil {
goto _1
}
- return i32(6)
-
-_1:
- if _pVTab != nil {
- goto _2
- }
- return i32(0)
-
-_2:
- _pModule = (*Xsqlite3_module)((*Xsqlite3_vtab)(_pVTab.X2).X0)
- if (*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{(_pModule.X14)}))) == nil {
- goto _3
- }
-
- _3_i = i32(0)
-_4:
- if _3_i >= (_db.X64) {
- goto _7
- }
-
- if (*(**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db.X67)) + 4*uintptr(_3_i)))) != _pVTab {
- goto _8
+ _1_op = int32(_p.X0)
+ if ((_p.X2) & uint32(i32(512))) != 0 {
+ goto _1
}
- return i32(0)
-
-_8:
- _3_i += 1
- goto _4
-
-_7:
- _rc = _growVTrans(tls, _db)
- if _rc != i32(0) {
- goto _9
+ if (_1_op == i32(37)) || (_1_op == i32(156)) {
+ _p = (*XExpr)(_p.X4)
+ goto _0
}
-
- _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{(_pModule.X14)})))(tls, (*Xsqlite3_vtab)(_pVTab.X2))
- if _rc != i32(0) {
- goto _10
+ if (_1_op == i32(94)) || ((_1_op == i32(157)) && (int32(_p.X12) == i32(94))) {
+ _pColl = _sqlite3GetCollSeq(tls, _pParse, _db.X14, nil, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))
+ goto _1
}
-
- _7_iSvpt = (_db.X76) + (_db.X75)
- _addToVTrans(tls, _db, _pVTab)
- if _7_iSvpt == 0 || (*(*func(*crt.TLS, *Xsqlite3_vtab, int32) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32) int32
- }{(_pModule.X20)}))) == nil {
+ if _1_op != i32(154) && _1_op != i32(152) && _1_op != i32(157) && _1_op != i32(61) || (*XTable)(_p.X14) == nil {
goto _12
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTab)) + uintptr(20 /* X5 */))) = _7_iSvpt
- _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, int32) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32) int32
- }{(_pModule.X20)})))(tls, (*Xsqlite3_vtab)(_pVTab.X2), _7_iSvpt-i32(1))
+ _4_j = int32(_p.X9)
+ if _4_j >= i32(0) {
+ _5_zColl = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_p.X14).X1) + 16*uintptr(_4_j))).X2
+ _pColl = _sqlite3FindCollSeq(tls, _db, _db.X14, _5_zColl, i32(0))
+ }
+ goto _1
_12:
-_10:
-_9:
-_3:
- r0 = _rc
- return
-}
-
-func _growVTrans(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:125644:1
- var _ARRAY_INCR int32 // sqlite3.c:125645:13
- _ = _ARRAY_INCR
- var _1_aVTrans **XVTable // sqlite3.c:125649:12
- _ = _1_aVTrans
- var _1_nBytes int32 // sqlite3.c:125650:9
- _ = _1_nBytes
- _ARRAY_INCR = i32(5)
- if ((_db.X64) % _ARRAY_INCR) != i32(0) {
- goto _0
+ if ((_p.X2) & uint32(i32(256))) == 0 {
+ goto _14
}
-
- _1_nBytes = int32(u32(4) * uint32((_db.X64)+_ARRAY_INCR))
- _1_aVTrans = (**XVTable)(_sqlite3DbRealloc(tls, _db, (unsafe.Pointer)(_db.X67), uint64(_1_nBytes)))
- if _1_aVTrans != nil {
- goto _1
+ if ((*XExpr)(_p.X4) != nil) && ((((*XExpr)(_p.X4).X2) & uint32(i32(256))) != uint32(i32(0))) {
+ _p = (*XExpr)(_p.X4)
+ goto _17
}
- return _sqlite3NomemError(tls, i32(125653))
-
-_1:
- crt.Xmemset(tls, (unsafe.Pointer)((**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aVTrans))+4*uintptr(_db.X64)))), i32(0), u32(4)*uint32(_ARRAY_INCR))
- *(***XVTable)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(336 /* X67 */))))) = _1_aVTrans
-_0:
- return i32(0)
-}
-
-func _addToVTrans(tls *crt.TLS, _db *Xsqlite3, _pVTab *XVTable) { // sqlite3.c:125666:1
- *(**XVTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db.X67)) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(312 /* X64 */))), int32(1))))) = _pVTab
- _sqlite3VtabLock(tls, _pVTab)
-}
-
-func _sqlite3VdbeMemCopy(tls *crt.TLS, _pTo *XMem, _pFrom *XMem) (r0 int32) { // sqlite3.c:70511:1
- var _rc int32 // sqlite3.c:70512:7
- _ = _rc
- _rc = i32(0)
+ _8_pNext = (*XExpr)(_p.X5)
func() {
- if (int32(_pFrom.X1) & i32(32)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(70514), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMemCopyØ00__func__Ø000))), unsafe.Pointer(str(73892)))
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil && (*XExpr)(_p.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91064), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCollSeqØ00__func__Ø000))), unsafe.Pointer(str(21285)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pTo.X1) & i32(9312)) == i32(0) {
- goto _2
- }
-
- _vdbeMemClearExternAndSetNull(tls, _pTo)
-_2:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo), (unsafe.Pointer)(_pFrom), u32(20))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) & i32(-1025))
- sink12 = *p
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) == nil || func() int32 {
+ if ((_p.X2) & uint32(i32(2048))) == uint32(i32(0)) {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91068), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCollSeqØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _24
}
- if (int32(_pTo.X1) & i32(18)) == 0 {
- goto _3
+ _9_i = i32(0)
+_25:
+ if func() int32 {
+ if _9_i < ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))).X0) {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91070), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCollSeqØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _30
}
-
- if i32(0) != (int32(_pFrom.X1) & i32(2048)) {
- goto _4
+ if (((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_9_i))).X0).X2) & uint32(i32(256))) != uint32(i32(0)) {
+ _8_pNext = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_9_i))).X0)
+ goto _30
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */)))
- *p = uint16(int32(*p) | i32(4096))
- sink12 = *p
+ _9_i += 1
+ goto _25
+_30:
+_24:
+ _p = _8_pNext
+_17:
+ goto _32
+_14:
+ goto _1
+_32:
+ goto _0
+_1:
+ if _sqlite3CheckCollSeq(tls, _pParse, _pColl) != 0 {
+ _pColl = nil
}
- _rc = _sqlite3VdbeMemMakeWriteable(tls, _pTo)
-_4:
-_3:
- r0 = _rc
- return
+ return _pColl
}
-var _sqlite3VdbeMemCopyØ00__func__Ø000 [19]int8 // -
+var _sqlite3ExprCollSeqØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMemCopyØ00__func__Ø000[0], str(95380), 19)
+ crt.Xstrncpy(nil, &_sqlite3ExprCollSeqØ00__func__Ø000[0], str(94562), 19)
}
-func _sqlite3VtabCallCreate(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zTab *int8, _pzErr **int8) (r0 int32) { // sqlite3.c:125680:1
- var _rc int32 // sqlite3.c:125681:7
- _ = _rc
- var _pTab *XTable // sqlite3.c:125682:9
- _ = _pTab
- var _pMod *XModule // sqlite3.c:125683:10
- _ = _pMod
- var _zMod *int8 // sqlite3.c:125684:14
- _ = _zMod
- _rc = i32(0)
- _pTab = _sqlite3FindTable(tls, _db, _zTab, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
+// This routine is called on a collation sequence before it is used to
+// check that it is defined. An undefined collation sequence exists when
+// a database is loaded that contains references to collation sequences
+// that have not been defined by sqlite3_create_collation() etc.
+//
+// If required, this routine calls the 'collation needed' callback to
+// request a definition of the collating sequence. If this doesn't work,
+// an equivalent collating sequence that uses a text encoding different
+// from the main database is substituted, if one is available.
+func _sqlite3CheckCollSeq(tls *crt.TLS, _pParse *XParse, _pColl *XCollSeq) (r0 int32) {
+ var _1_zName *int8
+ var _1_db *Xsqlite3
+ var _1_p *XCollSeq
+ if _pColl == nil {
+ goto _0
+ }
+ _1_zName = _pColl.X0
+ _1_db = (*Xsqlite3)(_pParse.X0)
+ _1_p = _sqlite3GetCollSeq(tls, _pParse, _1_db.X14, _pColl, _1_zName)
+ if _1_p == nil {
+ return i32(1)
+ }
func() {
- if _pTab == nil || (_pTab.X16) == 0 || (*XVTable)(_pTab.X18) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125687), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallCreateØ00__func__Ø000))), unsafe.Pointer(str(95400)))
+ if _1_p != _pColl {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckCollSeqØ00__func__Ø000))), unsafe.Pointer(str(94581)))
crt.X__builtin_abort(tls)
}
}()
- _zMod = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(0))))
- _pMod = (*XModule)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zMod))
- if _pMod != nil && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
- }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
- }{((*Xsqlite3_module)(_pMod.X0).X1)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
- }{nil})) && *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab) int32
- }{(*(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_module)(_pMod.X0).X5)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab) int32
- }{nil})) {
- goto _6
- }
-
- *_pzErr = _sqlite3MPrintf(tls, _db, str(95444), unsafe.Pointer(_zMod))
- _rc = i32(1)
- goto _7
-
-_6:
- _rc = _vtabCallConstructor(tls, _db, _pTab, _pMod, *(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
- }{((*Xsqlite3_module)(_pMod.X0).X1)})), _pzErr)
-_7:
- if _rc != i32(0) || func() int32 {
- if _sqlite3GetVTable(tls, _db, _pTab) != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125706), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallCreateØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _11
- }
-
- _rc = _growVTrans(tls, _db)
- if _rc != i32(0) {
- goto _12
- }
-
- _addToVTrans(tls, _db, _sqlite3GetVTable(tls, _db, _pTab))
-_12:
-_11:
- r0 = _rc
- return
+_0:
+ return i32(0)
}
-var _sqlite3VtabCallCreateØ00__func__Ø000 [22]int8 // -
+var _sqlite3CheckCollSeqØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabCallCreateØ00__func__Ø000[0], str(95464), 22)
+ crt.Xstrncpy(nil, &_sqlite3CheckCollSeqØ00__func__Ø000[0], str(94590), 20)
}
-func _vtabCallConstructor(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable, _pMod *XModule, _xConstruct func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32, _pzErr **int8) (r0 int32) { // sqlite3.c:125481:1
- var _sCtx XVtabCtx // sqlite3.c:125488:11
- _ = _sCtx
- var _pVTable *XVTable // sqlite3.c:125489:10
- _ = _pVTable
- var _rc int32 // sqlite3.c:125490:7
- _ = _rc
- var _azArg **int8 // sqlite3.c:125491:14
- _ = _azArg
- var _nArg int32 // sqlite3.c:125492:7
- _ = _nArg
- var _zErr *int8 // sqlite3.c:125493:8
- _ = _zErr
- var _zModuleName *int8 // sqlite3.c:125494:8
- _ = _zModuleName
- var _iDb int32 // sqlite3.c:125495:7
- _ = _iDb
- var _pCtx *XVtabCtx // sqlite3.c:125496:11
- _ = _pCtx
- var _9_zFormat *int8 // sqlite3.c:125552:18
- _ = _9_zFormat
- var _10_iCol int32 // sqlite3.c:125557:11
- _ = _10_iCol
- var _10_oooHidden uint8 // sqlite3.c:125558:10
- _ = _10_oooHidden
- var _11_zType *int8 // sqlite3.c:125568:14
- _ = _11_zType
- var _11_nType int32 // sqlite3.c:125569:13
- _ = _11_nType
- var _11_i int32 // sqlite3.c:125570:13
- _ = _11_i
- var _14_j int32 // sqlite3.c:125581:15
- _ = _14_j
- var _14_nDel int32 // sqlite3.c:125582:15
- _ = _14_nDel
- _azArg = _pTab.X17
- _nArg = _pTab.X16
- _zErr = nil
- _pCtx = (*XVtabCtx)(_db.X66)
-_0:
- if _pCtx == nil {
- goto _3
+// If the source-list item passed as an argument was augmented with an
+// INDEXED BY clause, then try to locate the specified index. If there
+// was such a clause and the named index cannot be found, return
+// SQLITE_ERROR and leave an error in pParse. Otherwise, populate
+// pFrom->pIndex and return SQLITE_OK.
+func _sqlite3IndexedByLookup(tls *crt.TLS, _pParse *XParse, _pFrom *TSrcList_item) (r0 int32) {
+ var _1_zIndexedBy *int8
+ var _1_pTab *XTable
+ var _1_pIdx *XIndex
+ if (*XTable)(_pFrom.X4) == nil || ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(1)))<>uint(i32(31))) == 0 {
+ goto _1
+ }
+ _1_pTab = (*XTable)(_pFrom.X4)
+ _1_zIndexedBy = *(**int8)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(60 /* X15 */)))))
+ _1_pIdx = (*XIndex)(_1_pTab.X2)
+_2:
+ if _1_pIdx == nil || _sqlite3StrICmp(tls, _1_pIdx.X0, _1_zIndexedBy) == 0 {
+ goto _6
+ }
+ _1_pIdx = (*XIndex)(_1_pIdx.X5)
+ goto _2
+_6:
+ if _1_pIdx == nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(94610), unsafe.Pointer(_1_zIndexedBy), i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
+ return i32(1)
}
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(64 /* X16 */))))) = _1_pIdx
+_1:
+ return i32(0)
+}
- if (*XTable)(_pCtx.X1) != _pTab {
- goto _4
+// This routine processes the join information for a SELECT statement.
+// ON and USING clauses are converted into extra terms of the WHERE clause.
+// NATURAL joins also create extra WHERE clause terms.
+//
+// The terms of a FROM clause are contained in the Select.pSrc structure.
+// The left most table is the first entry in Select.pSrc. The right-most
+// table is the last entry. The join operator is held in the entry to
+// the left. Thus entry 0 contains the join operator for the join between
+// entries 0 and 1. Any ON or USING clauses associated with the join are
+// also attached to the left entry.
+//
+// This routine returns the number of errors encountered.
+func _sqliteProcessJoin(tls *crt.TLS, _pParse *XParse, _p *XSelect) (r0 int32) {
+ var _i, _j, _1_isOuter, _4_iLeft, _4_iLeftCol, _9_iLeft, _9_iLeftCol, _9_iRightCol int32
+ var _4_zName, _9_zName *int8
+ var _1_pLeftTab, _1_pRightTab *XTable
+ var _pSrc *XSrcList
+ var _pLeft, _pRight *TSrcList_item
+ var _8_pList *XIdList
+ _pSrc = (*XSrcList)(_p.X8)
+ _pLeft = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0))))
+ _pRight = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLeft)) + 68*uintptr(i32(1))))
+ _i = i32(0)
+_0:
+ if _i >= ((_pSrc.X0) - i32(1)) {
+ goto _3
+ }
+ _1_pLeftTab = (*XTable)(_pLeft.X4)
+ _1_pRightTab = (*XTable)(_pRight.X4)
+ if func() int32 {
+ if (_1_pLeftTab == nil) || (_1_pRightTab == nil) {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqliteProcessJoinØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ goto _1
+ }
+ _1_isOuter = bool2int((int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight))+uintptr(36 /* X9 */))).X0) & i32(32)) != i32(0))
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight))+uintptr(36 /* X9 */))).X0) & i32(4)) == 0 {
+ goto _8
+ }
+ if ((*XExpr)(_pRight.X12) != nil) || ((*XIdList)(_pRight.X13) != nil) {
+ _sqlite3ErrorMsg(tls, _pParse, str(94628), i32(0))
+ return i32(1)
+ }
+ _j = i32(0)
+_11:
+ if _j >= int32(_1_pRightTab.X11) {
+ goto _14
+ }
+ _4_zName = (*XColumn)(unsafe.Pointer(uintptr(_1_pRightTab.X1) + 16*uintptr(_j))).X0
+ if _tableAndColumnIndex(tls, _pSrc, _i+i32(1), _4_zName, &_4_iLeft, &_4_iLeftCol) != 0 {
+ _addWhereTerm(tls, _pParse, _pSrc, _4_iLeft, _4_iLeftCol, _i+i32(1), _j, _1_isOuter, (**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(44 /* X9 */))))))
+ }
+ _j += 1
+ goto _11
+_14:
+_8:
+ if ((*XExpr)(_pRight.X12) != nil) && ((*XIdList)(_pRight.X13) != nil) {
+ _sqlite3ErrorMsg(tls, _pParse, str(94678))
+ return i32(1)
+ }
+ if (*XExpr)(_pRight.X12) == nil {
+ goto _18
+ }
+ if _1_isOuter != 0 {
+ _setJoinExpr(tls, (*XExpr)(_pRight.X12), _pRight.X11)
+ }
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X9 */))))) = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)(_p.X9), (*XExpr)(_pRight.X12))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight)) + uintptr(44 /* X12 */))))) = nil
+_18:
+ if (*XIdList)(_pRight.X13) == nil {
+ goto _20
+ }
+ _8_pList = (*XIdList)(_pRight.X13)
+ _j = i32(0)
+_21:
+ if _j >= (_8_pList.X1) {
+ goto _24
+ }
+ _9_zName = (*TIdList_item)(unsafe.Pointer(uintptr(_8_pList.X0) + 8*uintptr(_j))).X0
+ _9_iRightCol = _columnIndex(tls, _1_pRightTab, _9_zName)
+ if (_9_iRightCol < i32(0)) || (_tableAndColumnIndex(tls, _pSrc, _i+i32(1), _9_zName, &_9_iLeft, &_9_iLeftCol) == 0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(94733), unsafe.Pointer(_9_zName))
+ return i32(1)
}
+ _addWhereTerm(tls, _pParse, _pSrc, _9_iLeft, _9_iLeftCol, _i+i32(1), _9_iRightCol, _1_isOuter, (**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(44 /* X9 */))))))
+ _j += 1
+ goto _21
+_24:
+_20:
+_1:
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item {
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pRight }())) += uintptr(68)
+ return &_pLeft
+ }())) += uintptr(68)
+ goto _0
+_3:
+ return i32(0)
+}
- *_pzErr = _sqlite3MPrintf(tls, _db, str(95488), unsafe.Pointer(_pTab.X0))
- return i32(6)
+var _sqliteProcessJoinØ00__func__Ø000 [18]int8
-_4:
- _pCtx = (*XVtabCtx)(_pCtx.X2)
- goto _0
+func init() {
+ crt.Xstrncpy(nil, &_sqliteProcessJoinØ00__func__Ø000[0], str(94797), 18)
+}
-_3:
- _zModuleName = _sqlite3MPrintf(tls, _db, str(24316), unsafe.Pointer(_pTab.X0))
- if _zModuleName != nil {
+// Search the first N tables in pSrc, from left to right, looking for a
+// table that has a column named zCol.
+//
+// When found, set *piTab and *piCol to the table index and column index
+// of the matching column and return TRUE.
+//
+// If not found, return FALSE.
+func _tableAndColumnIndex(tls *crt.TLS, _pSrc *XSrcList, _N int32, _zCol *int8, _piTab *int32, _piCol *int32) (r0 int32) {
+ var _i, _iCol int32
+ func() {
+ if (_piTab == nil) != (_piCol == nil) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116809), unsafe.Pointer((*int8)(unsafe.Pointer(&_tableAndColumnIndexØ00__func__Ø000))), unsafe.Pointer(str(94815)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _i = i32(0)
+_2:
+ if _i >= _N {
goto _5
}
- return _sqlite3NomemError(tls, i32(125510))
-
-_5:
- _pVTable = (*XVTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(28))))
- if _pVTable != nil {
+ _iCol = _columnIndex(tls, (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i))).X4), _zCol)
+ if _iCol < i32(0) {
goto _6
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zModuleName))
- return _sqlite3NomemError(tls, i32(125516))
+ if _piTab != nil {
+ *_piTab = _i
+ *_piCol = _iCol
+ }
+ return i32(1)
_6:
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(0 /* X0 */))))) = _db
- *(**XModule)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(4 /* X1 */))))) = _pMod
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(1)))) = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ _i += 1
+ goto _2
+_5:
+ return i32(0)
+}
+
+var _tableAndColumnIndexØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_tableAndColumnIndexØ00__func__Ø000[0], str(94838), 20)
+}
+
+// Return the index of a column in a table. Return -1 if the column
+// is not contained in the table.
+func _columnIndex(tls *crt.TLS, _pTab *XTable, _zCol *int8) (r0 int32) {
+ var _i int32
+ _i = i32(0)
+_0:
+ if _i >= int32(_pTab.X11) {
+ goto _3
+ }
+ if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X0, _zCol) == i32(0) {
+ return _i
+ }
+ _i += 1
+ goto _0
+_3:
+ return i32(-1)
+}
+
+// This function is used to add terms implied by JOIN syntax to the
+// WHERE clause expression of a SELECT statement. The new term, which
+// is ANDed with the existing WHERE clause, is of the form:
+//
+// (tab1.col1 = tab2.col2)
+//
+// where tab1 is the iSrc'th table in SrcList pSrc and tab2 is the
+// (iSrc+1)'th. Column col1 is column iColLeft of tab1, and col2 is
+// column iColRight of tab2.
+func _addWhereTerm(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList, _iLeft int32, _iColLeft int32, _iRight int32, _iColRight int32, _isOuterJoin int32, _ppWhere **XExpr) {
+ var _db *Xsqlite3
+ var _pE1, _pE2, _pEq *XExpr
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if (**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(332 /* X66 */))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125525), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(95532)))
+ if _iLeft >= _iRight {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116849), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(94858)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _xConstruct == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125526), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(95548)))
+ if (_pSrc.X0) <= _iRight {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116850), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(94871)))
crt.X__builtin_abort(tls)
}
}()
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(4 /* X1 */))))) = _pTab
- *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(0 /* X0 */))))) = _pVTable
- *(**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(8 /* X2 */))))) = (*XVtabCtx)(_db.X66)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(12 /* X3 */))) = i32(0)
- *(**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(332 /* X66 */))))) = &_sCtx
- _rc = _xConstruct(tls, _db, _pMod.X2, _nArg, _azArg, (**Xsqlite3_vtab)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable))+uintptr(8 /* X2 */))))), &_zErr)
- *(**XVtabCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(332 /* X66 */))))) = (*XVtabCtx)(_sCtx.X2)
- if _rc != i32(7) {
- goto _11
- }
-
- _sqlite3OomFault(tls, _db)
-_11:
func() {
- if (*XTable)(_sCtx.X1) != _pTab {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125535), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(95560)))
+ if (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_iLeft))).X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116851), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(94889)))
crt.X__builtin_abort(tls)
}
}()
- if i32(0) == _rc {
- goto _14
- }
-
- if _zErr != nil {
- goto _15
- }
-
- *_pzErr = _sqlite3MPrintf(tls, _db, str(95576), unsafe.Pointer(_zModuleName))
- goto _16
-
-_15:
- *_pzErr = _sqlite3MPrintf(tls, _db, str(24316), unsafe.Pointer(_zErr))
- Xsqlite3_free(tls, (unsafe.Pointer)(_zErr))
-_16:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pVTable))
- goto _17
-
-_14:
- if func() int32 {
- if (*Xsqlite3_vtab)(_pVTable.X2) != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125545), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ func() {
+ if (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_iRight))).X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116852), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(94909)))
crt.X__builtin_abort(tls)
- return i32(0)
+ }
+ }()
+ _pE1 = _sqlite3CreateColumnExpr(tls, _db, _pSrc, _iLeft, _iColLeft)
+ _pE2 = _sqlite3CreateColumnExpr(tls, _db, _pSrc, _iRight, _iColRight)
+ _pEq = _sqlite3PExpr(tls, _pParse, i32(78), _pE1, _pE2)
+ if (_pEq != nil) && _isOuterJoin != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEq)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1))
+ sink5 = *p
+ }
+ func() {
+ if ((_pEq.X2) & uint32(i32(24576))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116860), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(94930)))
+ crt.X__builtin_abort(tls)
+ }
}()
- }() == 0 {
- goto _20
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEq)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(131072))
+ sink5 = *p
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEq)) + uintptr(36 /* X11 */))) = int16(_pE2.X8)
}
+ *_ppWhere = _sqlite3ExprAnd(tls, _db, *_ppWhere, _pEq)
+}
- crt.Xmemset(tls, _pVTable.X2, i32(0), u32(12))
- *(**Xsqlite3_module)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pVTable.X2) + uintptr(0 /* X0 */))))) = (*Xsqlite3_module)(_pMod.X0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(12 /* X3 */))) = i32(1)
- if (_sCtx.X3) != i32(0) {
- goto _21
- }
+var _addWhereTermØ00__func__Ø000 [13]int8
- _9_zFormat = str(95608)
- *_pzErr = _sqlite3MPrintf(tls, _db, _9_zFormat, unsafe.Pointer(_pTab.X0))
- _sqlite3VtabUnlock(tls, _pVTable)
- _rc = i32(1)
- goto _22
+func init() {
+ crt.Xstrncpy(nil, &_addWhereTermØ00__func__Ø000[0], str(94977), 13)
+}
-_21:
- _10_oooHidden = u8(0)
- *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVTable)) + uintptr(24 /* X6 */))))) = (*XVTable)(_pTab.X18)
- *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(64 /* X18 */))))) = _pVTable
- _10_iCol = i32(0)
-_23:
- if _10_iCol >= int32(_pTab.X11) {
- goto _26
+// Allocate and return a pointer to an expression to load the column iCol
+// from datasource iSrc in SrcList pSrc.
+func _sqlite3CreateColumnExpr(tls *crt.TLS, _db *Xsqlite3, _pSrc *XSrcList, _iSrc int32, _iCol int32) (r0 *XExpr) {
+ var _1_pItem *TSrcList_item
+ var _p *XExpr
+ _p = _sqlite3ExprAlloc(tls, _db, i32(152), nil, i32(0))
+ if _p == nil {
+ goto _0
}
-
- _11_zType = _sqlite3ColumnType(tls, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_10_iCol))), str(196))
- _11_i = i32(0)
- _11_nType = _sqlite3Strlen30(tls, _11_zType)
- _11_i = i32(0)
-_27:
- if _11_i >= _11_nType {
- goto _30
+ _1_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_iSrc)))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X14 */))))) = (*XTable)(_1_pItem.X4)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))) = _1_pItem.X11
+ if int32((*XTable)(_p.X14).X10) == _iCol {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))) = int16(i32(-1))
+ goto _2
}
-
- if i32(0) != Xsqlite3_strnicmp(tls, str(95656), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType))+1*uintptr(_11_i))), i32(6)) || _11_i != i32(0) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i-i32(1))))) != i32(32) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i+i32(6))))) != i32(0) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i+i32(6))))) != i32(32) {
- goto _35
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))) = int16(_iCol)
+ {
+ p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(52 /* X14 */)))
+ *p = (*p) | (u64(1) << uint(func() int32 {
+ if _iCol >= i32(64) {
+ return i32(63)
+ }
+ return _iCol
+ }()))
+ sink17 = *p
}
+_2:
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(4))
+ sink5 = *p
+ }
+_0:
+ return _p
+}
- goto _30
-
-_35:
- _11_i += 1
- goto _27
+// Allocate an Expr node which joins as many as two subtrees.
+//
+// One or both of the subtrees can be NULL. Return a pointer to the new
+// Expr node. Or, if an OOM error occurs, set pParse->db->mallocFailed,
+// free the subtrees and return NULL.
+func _sqlite3PExpr(tls *crt.TLS, _pParse *XParse, _op int32, _pLeft *XExpr, _pRight *XExpr) (r0 *XExpr) {
+ var _p *XExpr
+ if (_op == i32(71)) && ((_pParse.X16) == i32(0)) {
+ _p = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), _pLeft, _pRight)
+ goto _2
+ }
+ _p = (*XExpr)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(48))))
+ if _p != nil {
+ crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(_op & i32(255))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(34 /* X10 */))) = int16(i32(-1))
+ }
+ _sqlite3ExprAttachSubtrees(tls, (*Xsqlite3)(_pParse.X0), _p, _pLeft, _pRight)
+_2:
+ if _p != nil {
+ _sqlite3ExprCheckHeight(tls, _pParse, _p.X7)
+ }
+ return _p
+}
-_30:
- if _11_i >= _11_nType {
- goto _36
+// Join two expressions using an AND operator. If either expression is
+// NULL, then just return the other expression.
+//
+// If one side or the other of the AND is known to be false, then instead
+// of returning an AND expression, just return a constant expression with
+// a value of false.
+func _sqlite3ExprAnd(tls *crt.TLS, _db *Xsqlite3, _pLeft *XExpr, _pRight *XExpr) (r0 *XExpr) {
+ var _4_pNew *XExpr
+ if _pLeft == nil {
+ return _pRight
+ }
+ if _pRight == nil {
+ return _pLeft
+ }
+ if _exprAlwaysFalse(tls, _pLeft) != 0 || _exprAlwaysFalse(tls, _pRight) != 0 {
+ _sqlite3ExprDelete(tls, _db, _pLeft)
+ _sqlite3ExprDelete(tls, _db, _pRight)
+ return _sqlite3ExprAlloc(tls, _db, i32(134), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3IntTokens))+8*uintptr(i32(0)))), i32(0))
}
+ _4_pNew = _sqlite3ExprAlloc(tls, _db, i32(71), nil, i32(0))
+ _sqlite3ExprAttachSubtrees(tls, _db, _4_pNew, _pLeft, _pRight)
+ return _4_pNew
+}
- _14_nDel = i32(6) + func() int32 {
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i+i32(6))))) != 0 {
- return i32(1)
- }
+func _exprAlwaysFalse(tls *crt.TLS, _p *XExpr) (r0 int32) {
+ var _v int32
+ _v = i32(0)
+ if ((_p.X2) & uint32(i32(1))) != uint32(i32(0)) {
return i32(0)
- }()
- _14_j = _11_i
-_39:
- if (_14_j + _14_nDel) > _11_nType {
- goto _42
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_14_j))) = *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_14_j+_14_nDel)))
- _14_j += 1
- goto _39
-
-_42:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i)))) != i32(0) || _11_i <= i32(0) {
- goto _44
+ if _sqlite3ExprIsInteger(tls, _p, &_v) == 0 {
+ return i32(0)
}
+ return bool2int(_v == i32(0))
+}
+// If the expression p codes a constant integer that is small enough
+// to fit in a 32-bit integer, return 1 and put the value of the integer
+// in *pValue. If the expression is not an integer or if it is too big
+// to fit in a signed 32-bit integer, return 0 and leave *pValue unchanged.
+func _sqlite3ExprIsInteger(tls *crt.TLS, _p *XExpr, _pValue *int32) (r0 int32) {
+ var _rc, _4_v int32
+ _rc = i32(0)
+ if _p == nil {
+ return i32(0)
+ }
func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i-i32(1))))) != i32(32) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125587), unsafe.Pointer((*int8)(unsafe.Pointer(&_vtabCallConstructorØ00__func__Ø000))), unsafe.Pointer(str(95664)))
+ if int32(_p.X0) == i32(134) && ((_p.X2)&uint32(i32(1024))) == uint32(i32(0)) && _sqlite3GetInt32(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))), &_rc) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIsIntegerØ00__func__Ø000))), unsafe.Pointer(str(94990)))
crt.X__builtin_abort(tls)
}
}()
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_zType)) + 1*uintptr(_11_i-i32(1)))) = int8(i32(0))
-_44:
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_10_iCol))))) + uintptr(15 /* X6 */)))
- *p = uint8(int32(*p) | i32(2))
- sink2 = *p
+ if ((_p.X2) & uint32(i32(1024))) != 0 {
+ *_pValue = *(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))
+ return i32(1)
}
- _10_oooHidden = uint8(i32(128))
- goto _47
-
-_36:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(_10_oooHidden)
- sink5 = *p
+ switch int32(_p.X0) {
+ case i32(155):
+ goto _8
+ case i32(156):
+ goto _7
+ default:
+ goto _9
}
-_47:
- _10_iCol += 1
- goto _23
-_26:
-_22:
-_20:
-_17:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zModuleName))
+_7:
+ _rc = _sqlite3ExprIsInteger(tls, (*XExpr)(_p.X4), _pValue)
+ goto _10
+_8:
+ if _sqlite3ExprIsInteger(tls, (*XExpr)(_p.X4), &_4_v) != 0 {
+ func() {
+ if _4_v == i32(-2147483648) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92830), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIsIntegerØ00__func__Ø000))), unsafe.Pointer(str(95079)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_pValue = -_4_v
+ _rc = i32(1)
+ }
+ goto _10
+_9:
+ goto _10
+_10:
return _rc
}
-var _vtabCallConstructorØ00__func__Ø000 [20]int8 // -
+var _sqlite3ExprIsIntegerØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_vtabCallConstructorØ00__func__Ø000[0], str(95680), 20)
+ crt.Xstrncpy(nil, &_sqlite3ExprIsIntegerØ00__func__Ø000[0], str(95098), 21)
}
-func _sqlite3ColumnType(tls *crt.TLS, _pCol *XColumn, _zDflt *int8) (r0 *int8) { // sqlite3.c:27775:1
- if (int32(_pCol.X6) & i32(4)) != i32(0) {
- goto _0
- }
- return _zDflt
+var _sqlite3IntTokens [2]XToken
-_0:
- return (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_pCol.X0))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(crt.Xstrlen(tls, _pCol.X0)))))))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1))))))))
+func init() {
+ _sqlite3IntTokens = [2]XToken{XToken{X0: str(4908), X1: u32(1)}, XToken{X0: str(50040), X1: u32(1)}}
}
-func _sqlite3VtabCallDestroy(tls *crt.TLS, _db *Xsqlite3, _iDb int32, _zTab *int8) (r0 int32) { // sqlite3.c:125806:1
- var _rc int32 // sqlite3.c:125807:7
- _ = _rc
- var _pTab *XTable // sqlite3.c:125808:9
- _ = _pTab
- var _1_p *XVTable // sqlite3.c:125812:12
- _ = _1_p
- var _1_xDestroy func(*crt.TLS, *Xsqlite3_vtab) int32 // sqlite3.c:125813:9
- _ = _1_xDestroy
- _rc = i32(0)
- _pTab = _sqlite3FindTable(tls, _db, _zTab, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
- if _pTab == nil || func() int32 {
- if (*XVTable)(_pTab.X18) != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125811), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
+// Attach subtrees pLeft and pRight to the Expr node pRoot.
+//
+// If pRoot==NULL that means that a memory allocation error has occurred.
+// In that case, delete the subtrees pLeft and pRight.
+func _sqlite3ExprAttachSubtrees(tls *crt.TLS, _db *Xsqlite3, _pRoot *XExpr, _pLeft *XExpr, _pRight *XExpr) {
+ if _pRoot == nil {
+ func() {
+ if (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91693), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAttachSubtreesØ00__func__Ø000))), unsafe.Pointer(str(47848)))
+ crt.X__builtin_abort(tls)
+ }
}()
- }() == 0 {
+ _sqlite3ExprDelete(tls, _db, _pLeft)
+ _sqlite3ExprDelete(tls, _db, _pRight)
goto _3
}
-
- _1_p = (*XVTable)(_pTab.X18)
-_4:
- if _1_p == nil {
- goto _7
- }
-
- func() {
- if (*Xsqlite3_vtab)(_1_p.X2) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(95700)))
- crt.X__builtin_abort(tls)
+ if _pRight != nil {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(16 /* X5 */))))) = _pRight
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(4 /* X2 */)))
+ *p = (*p) | (uint32(i32(2097408)) & (_pRight.X2))
+ sink5 = *p
}
- }()
- if ((*Xsqlite3_vtab)(_1_p.X2).X1) <= i32(0) {
- goto _10
}
- return i32(6)
-
-_10:
- _1_p = (*XVTable)(_1_p.X6)
- goto _4
-
-_7:
- _1_p = _vtabDisconnectAll(tls, _db, _pTab)
- _1_xDestroy = *(*func(*crt.TLS, *Xsqlite3_vtab) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{((*Xsqlite3_module)((*XModule)(_1_p.X1).X0).X5)}))
- func() {
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab) int32
- }{_1_xDestroy})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab) int32
- }{nil})) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(95712)))
- crt.X__builtin_abort(tls)
+ if _pLeft != nil {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(12 /* X4 */))))) = _pLeft
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(4 /* X2 */)))
+ *p = (*p) | (uint32(i32(2097408)) & (_pLeft.X2))
+ sink5 = *p
}
- }()
- _rc = _1_xDestroy(tls, (*Xsqlite3_vtab)(_1_p.X2))
- if _rc != i32(0) {
- goto _13
}
-
- func() {
- if (*XVTable)(_pTab.X18) != _1_p || (*XVTable)(_1_p.X6) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125826), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallDestroyØ00__func__Ø000))), unsafe.Pointer(str(95724)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**Xsqlite3_vtab)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(8 /* X2 */))))) = nil
- *(**XVTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(64 /* X18 */))))) = nil
- _sqlite3VtabUnlock(tls, _1_p)
-_13:
+ _exprSetHeight(tls, _pRoot)
_3:
- r0 = _rc
- return
}
-var _sqlite3VtabCallDestroyØ00__func__Ø000 [23]int8 // -
+var _sqlite3ExprAttachSubtreesØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabCallDestroyØ00__func__Ø000[0], str(95756), 23)
+ crt.Xstrncpy(nil, &_sqlite3ExprAttachSubtreesØ00__func__Ø000[0], str(95119), 26)
}
-func _sqlite3BtreeMaxPageCount(tls *crt.TLS, _p *XBtree, _mxPage int32) (r0 int32) { // sqlite3.c:61827:1
- var _n int32 // sqlite3.c:61828:7
- _ = _n
- _sqlite3BtreeEnter(tls, _p)
- _n = _sqlite3PagerMaxPageCount(tls, (*XPager)((*XBtShared)(_p.X1).X0), _mxPage)
- _sqlite3BtreeLeave(tls, _p)
- return _n
+// Set the Expr.nHeight variable in the structure passed as an
+// argument. An expression with no children, Expr.pList or
+// Expr.pSelect member has a height of 1. Any other expression
+// has a height equal to the maximum height of any other
+// referenced Expr plus one.
+//
+// Also propagate EP_Propagate flags up from Expr.x.pList to Expr.flags,
+// if appropriate.
+func _exprSetHeight(tls *crt.TLS, _p *XExpr) {
+ var _nHeight int32
+ _nHeight = i32(0)
+ _heightOfExpr(tls, (*XExpr)(_p.X4), &_nHeight)
+ _heightOfExpr(tls, (*XExpr)(_p.X5), &_nHeight)
+ if ((_p.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ _heightOfSelect(tls, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), &_nHeight)
+ goto _1
+ }
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil {
+ _heightOfExprList(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), &_nHeight)
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
+ *p = (*p) | (uint32(i32(2097408)) & _sqlite3ExprListFlags(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))))
+ sink5 = *p
+ }
+ }
+_1:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = _nHeight + i32(1)
}
-func _sqlite3PagerMaxPageCount(tls *crt.TLS, _pPager *XPager, _mxPage int32) (r0 int32) { // sqlite3.c:50715:1
- if _mxPage <= i32(0) {
+// The following three functions, heightOfExpr(), heightOfExprList()
+// and heightOfSelect(), are used to determine the maximum height
+// of any expression tree referenced by the structure passed as the
+// first argument.
+//
+// If this maximum height is greater than the current value pointed
+// to by pnHeight, the second parameter, then set *pnHeight to that
+// value.
+func _heightOfExpr(tls *crt.TLS, _p *XExpr, _pnHeight *int32) {
+ if _p == nil {
goto _0
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPager)) + uintptr(156 /* X49 */))) = uint32(_mxPage)
+ if (_p.X7) > (*_pnHeight) {
+ *_pnHeight = _p.X7
+ }
_0:
- func() {
- if int32(_pPager.X14) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50719), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMaxPageCountØ00__func__Ø000))), unsafe.Pointer(str(95780)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_pPager.X49) < (_pPager.X22) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(50720), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PagerMaxPageCountØ00__func__Ø000))), unsafe.Pointer(str(95808)))
- crt.X__builtin_abort(tls)
- }
- }()
- return int32(_pPager.X49)
}
-var _sqlite3PagerMaxPageCountØ00__func__Ø000 [25]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PagerMaxPageCountØ00__func__Ø000[0], str(95840), 25)
+func _heightOfSelect(tls *crt.TLS, _p *XSelect, _pnHeight *int32) {
+ if _p != nil {
+ _heightOfExpr(tls, (*XExpr)(_p.X9), _pnHeight)
+ _heightOfExpr(tls, (*XExpr)(_p.X11), _pnHeight)
+ _heightOfExpr(tls, (*XExpr)(_p.X15), _pnHeight)
+ _heightOfExpr(tls, (*XExpr)(_p.X16), _pnHeight)
+ _heightOfExprList(tls, (*XExprList)(_p.X0), _pnHeight)
+ _heightOfExprList(tls, (*XExprList)(_p.X10), _pnHeight)
+ _heightOfExprList(tls, (*XExprList)(_p.X12), _pnHeight)
+ _heightOfSelect(tls, (*XSelect)(_p.X13), _pnHeight)
+ }
}
-func _sqlite3VdbeExpandSql(tls *crt.TLS, _p *TVdbe, _zRawSql *int8) (r0 *int8) { // sqlite3.c:78076:1
- var _db *Xsqlite3 // sqlite3.c:78080:11
- _ = _db
- var _idx int32 // sqlite3.c:78081:7
- _ = _idx
- var _nextIndex int32 // sqlite3.c:78082:7
- _ = _nextIndex
- var _n int32 // sqlite3.c:78083:7
- _ = _n
- var _nToken int32 // sqlite3.c:78084:7
- _ = _nToken
- var _i int32 // sqlite3.c:78085:7
- _ = _i
- var _pVar *XMem // sqlite3.c:78086:7
- _ = _pVar
- var _out XStrAccum // sqlite3.c:78087:12
- _ = _out
- var _utf8 XMem // sqlite3.c:78089:7
- _ = _utf8
- var _zBase [100]int8 // sqlite3.c:78091:8
- _ = _zBase
- var _2_zStart *int8 // sqlite3.c:78098:18
- _ = _2_zStart
- var _13_nOut int32 // sqlite3.c:78142:13
- _ = _13_nOut
- var _13_enc uint8 // sqlite3.c:78144:12
- _ = _13_enc
- var _17_nOut int32 // sqlite3.c:78175:13
- _ = _17_nOut
- _idx = i32(0)
- _nextIndex = i32(1)
- _db = (*Xsqlite3)(_p.X0)
- _sqlite3StrAccumInit(tls, &_out, nil, (*int8)(unsafe.Pointer(&_zBase)), int32(u32(100)), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(0)))))
- if (_db.X37) <= i32(1) {
+func _heightOfExprList(tls *crt.TLS, _p *XExprList, _pnHeight *int32) {
+ var _1_i int32
+ if _p == nil {
goto _0
}
-
+ _1_i = i32(0)
_1:
- if (*_zRawSql) == 0 {
- goto _2
+ if _1_i >= (_p.X0) {
+ goto _4
}
+ _heightOfExpr(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))).X0), _pnHeight)
+ _1_i += 1
+ goto _1
+_4:
+_0:
+}
- _2_zStart = _zRawSql
-_3:
- if int32(*postInc0(&_zRawSql, 1)) == i32(10) || (*_zRawSql) == 0 {
+// Return the bitwise-OR of all Expr.flags fields in the given
+// ExprList.
+func _sqlite3ExprListFlags(tls *crt.TLS, _pList *XExprList) (r0 uint32) {
+ var _i int32
+ var _m uint32
+ var _2_pExpr *XExpr
+ _m = u32(0)
+ if _pList == nil {
+ goto _0
+ }
+ _i = i32(0)
+_1:
+ if _i >= (_pList.X0) {
goto _4
}
-
- goto _3
-
-_4:
- _sqlite3StrAccumAppend(tls, &_out, str(73216), i32(3))
+ _2_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
func() {
- if int32((uintptr(unsafe.Pointer(_zRawSql))-uintptr(unsafe.Pointer(_2_zStart)))/1) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78101), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(95868)))
+ if _2_pExpr == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92578), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListFlagsØ00__func__Ø000))), unsafe.Pointer(str(43636)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3StrAccumAppend(tls, &_out, _2_zStart, int32((uintptr(unsafe.Pointer(_zRawSql))-uintptr(unsafe.Pointer(_2_zStart)))/1))
+ {
+ p := &_m
+ *p = (*p) | (_2_pExpr.X2)
+ sink5 = *p
+ }
+ _i += 1
goto _1
-
-_2:
- goto _8
-
+_4:
_0:
- if int32(_p.X4) != i32(0) {
- goto _9
- }
+ return _m
+}
- _sqlite3StrAccumAppend(tls, &_out, _zRawSql, _sqlite3Strlen30(tls, _zRawSql))
- goto _10
+var _sqlite3ExprListFlagsØ00__func__Ø000 [21]int8
-_9:
-_11:
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) == 0 {
- goto _12
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprListFlagsØ00__func__Ø000[0], str(95145), 21)
+}
- _n = _findNextHostParameter(tls, _zRawSql, &_nToken)
- func() {
- if _n <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78109), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(1368)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3StrAccumAppend(tls, &_out, _zRawSql, _n)
- {
- p := &_zRawSql
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
- sink0 = *p
- }
- func() {
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) == 0 && _nToken != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78112), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(95892)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _nToken != i32(0) {
- goto _18
- }
-
- goto _12
-
-_18:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(63) {
- goto _19
+// Check that argument nHeight is less than or equal to the maximum
+// expression depth allowed. If it is not, leave an error message in
+// pParse.
+func _sqlite3ExprCheckHeight(tls *crt.TLS, _pParse *XParse, _nHeight int32) (r0 int32) {
+ var _rc, _mxHeight int32
+ _rc = i32(0)
+ _mxHeight = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(3))))
+ if _nHeight > _mxHeight {
+ _sqlite3ErrorMsg(tls, _pParse, str(95166), _mxHeight)
+ _rc = i32(1)
}
+ return _rc
+}
- if _nToken <= i32(1) {
- goto _20
+// Set the EP_FromJoin property on all terms of the given expression.
+// And set the Expr.iRightJoinTable to iTable for every term in the
+// expression.
+//
+// The EP_FromJoin property is used on terms of an expression to tell
+// the LEFT OUTER JOIN processing logic that this term is part of the
+// join restriction specified in the ON or USING clause and not a part
+// of the more general WHERE clause. These terms are moved over to the
+// WHERE clause during join processing but we need to remember that they
+// originated in the ON or USING clause.
+//
+// The Expr.iRightJoinTable tells the WHERE clause processing that the
+// expression depends on table iRightJoinTable even if that table is not
+// explicitly mentioned in the expression. That information is needed
+// for cases like this:
+//
+// SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.b AND t1.x=5
+//
+// The where clause needs to defer the handling of the t1.x=5
+// term until after the t2 loop of the join. In that way, a
+// NULL t2 row will be inserted whenever t1.x!=5. If we do not
+// defer the handling of t1.x=5, it will be processed immediately
+// after the t1 loop and rows with t1.x!=5 will never appear in
+// the output, which is incorrect.
+func _setJoinExpr(tls *crt.TLS, _p *XExpr, _iTable int32) {
+ var _2_i int32
+_0:
+ if _p == nil {
+ goto _1
}
-
- func() {
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(1))))))))) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78116), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(95916)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3GetInt32(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql))+1*uintptr(i32(1)))), &_idx)
- goto _23
-
-_20:
- _idx = _nextIndex
-_23:
- goto _24
-
-_19:
- func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(58) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(36) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(64) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRawSql)) + 1*uintptr(i32(0))))) != i32(35) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(95944)))
- crt.X__builtin_abort(tls)
- }
- }()
- _idx = _sqlite3VdbeParameterIndex(tls, _p, _zRawSql, _nToken)
- func() {
- if _idx <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78129), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(96020)))
- crt.X__builtin_abort(tls)
- }
- }()
-_24:
{
- p := &_zRawSql
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_nToken)))
- sink0 = *p
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1))
+ sink5 = *p
}
- _nextIndex = _idx + i32(1)
func() {
- if _idx <= i32(0) || _idx > int32(_p.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(96028)))
+ if ((_p.X2) & uint32(i32(24576))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116896), unsafe.Pointer((*int8)(unsafe.Pointer(&_setJoinExprØ00__func__Ø000))), unsafe.Pointer(str(49429)))
crt.X__builtin_abort(tls)
}
}()
- _pVar = (*XMem)(unsafe.Pointer(uintptr(_p.X24) + 48*uintptr(_idx-i32(1))))
- if (int32(_pVar.X1) & i32(1)) == 0 {
- goto _35
- }
-
- _sqlite3StrAccumAppend(tls, &_out, str(200), i32(4))
- goto _36
-
-_35:
- if (int32(_pVar.X1) & i32(4)) == 0 {
- goto _37
- }
-
- _sqlite3XPrintf(tls, &_out, str(4744), *(*int64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar)) + uintptr(0 /* X0 */))))))
- goto _38
-
-_37:
- if (int32(_pVar.X1) & i32(8)) == 0 {
- goto _39
- }
-
- _sqlite3XPrintf(tls, &_out, str(4768), *(*float64)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar)) + uintptr(0 /* X0 */))))))
- goto _40
-
-_39:
- if (int32(_pVar.X1) & i32(2)) == 0 {
- goto _41
- }
-
- _13_enc = _db.X14
- if int32(_13_enc) == i32(1) {
- goto _42
- }
-
- crt.Xmemset(tls, (unsafe.Pointer)(&_utf8), i32(0), u32(48))
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_utf8)) + uintptr(32 /* X9 */))))) = _db
- _sqlite3VdbeMemSetStr(tls, &_utf8, _pVar.X5, _pVar.X4, _13_enc, nil)
- if i32(7) != _sqlite3VdbeChangeEncoding(tls, &_utf8, i32(1)) {
- goto _43
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_out)) + uintptr(24 /* X6 */))) = uint8(i32(1))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_out)) + uintptr(16 /* X4 */))) = uint32(i32(0))
-_43:
- _pVar = &_utf8
-_42:
- _13_nOut = _pVar.X4
- _sqlite3XPrintf(tls, &_out, str(96052), _13_nOut, unsafe.Pointer(_pVar.X5))
- if int32(_13_enc) == i32(1) {
- goto _44
- }
-
- _sqlite3VdbeMemRelease(tls, &_utf8)
-_44:
- goto _45
-
-_41:
- if (int32(_pVar.X1) & i32(16384)) == 0 {
- goto _46
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(131072))
+ sink5 = *p
}
-
- _sqlite3XPrintf(tls, &_out, str(96060), *(*int32)(unsafe.Pointer((*t13)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar)) + uintptr(0 /* X0 */))))))
- goto _47
-
-_46:
- func() {
- if (int32(_pVar.X1) & i32(16)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78176), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeExpandSqlØ00__func__Ø000))), unsafe.Pointer(str(96076)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3StrAccumAppend(tls, &_out, str(96100), i32(2))
- _17_nOut = _pVar.X4
- _i = i32(0)
-_50:
- if _i >= _17_nOut {
- goto _53
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X11 */))) = int16(_iTable)
+ if int32(_p.X0) != i32(151) || (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) == nil {
+ goto _5
}
-
- _sqlite3XPrintf(tls, &_out, str(96104), int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVar.X5)) + 1*uintptr(_i))))&i32(255))
- _i += 1
- goto _50
-
-_53:
- _sqlite3StrAccumAppend(tls, &_out, str(96112), i32(1))
-_47:
-_45:
-_40:
-_38:
-_36:
- goto _11
-
-_12:
-_10:
-_8:
- if (_out.X6) == 0 {
- goto _54
+ _2_i = i32(0)
+_6:
+ if _2_i >= ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))).X0) {
+ goto _9
}
-
- _sqlite3StrAccumReset(tls, &_out)
-_54:
- return _sqlite3StrAccumFinish(tls, &_out)
+ _setJoinExpr(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(_2_i))).X0), _iTable)
+ _2_i += 1
+ goto _6
+_9:
+_5:
+ _setJoinExpr(tls, (*XExpr)(_p.X4), _iTable)
+ _p = (*XExpr)(_p.X5)
+ goto _0
+_1:
}
-var _sqlite3VdbeExpandSqlØ00__func__Ø000 [21]int8 // -
+var _setJoinExprØ00__func__Ø000 [12]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeExpandSqlØ00__func__Ø000[0], str(96116), 21)
+ crt.Xstrncpy(nil, &_setJoinExprØ00__func__Ø000[0], str(95214), 12)
}
-func _findNextHostParameter(tls *crt.TLS, _zSql *int8, _pnToken *int32) (r0 int32) { // sqlite3.c:78033:1
- var _tokenType int32 // sqlite3.c:78034:7
- _ = _tokenType
- var _nTotal int32 // sqlite3.c:78035:7
- _ = _nTotal
- var _n int32 // sqlite3.c:78036:7
- _ = _n
- _nTotal = i32(0)
- *_pnToken = i32(0)
+// Subqueries stores the original database, table and column names for their
+// result sets in ExprList.a[].zSpan, in the form "DATABASE.TABLE.COLUMN".
+// Check to see if the zSpan given to this routine matches the zDb, zTab,
+// and zCol. If any of zDb, zTab, and zCol are NULL then those fields will
+// match anything.
+func _sqlite3MatchSpanName(tls *crt.TLS, _zSpan *int8, _zCol *int8, _zTab *int8, _zDb *int8) (r0 int32) {
+ var _n int32
+ _n = i32(0)
_0:
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSql)) + 1*uintptr(i32(0))))) == 0 {
- goto _1
- }
-
- _n = _sqlite3GetToken(tls, (*uint8)(unsafe.Pointer(_zSql)), &_tokenType)
- func() {
- if _n <= i32(0) || _tokenType == i32(164) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(78041), unsafe.Pointer((*int8)(unsafe.Pointer(&_findNextHostParameterØ00__func__Ø000))), unsafe.Pointer(str(96140)))
- crt.X__builtin_abort(tls)
+ if func() int32 {
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) != 0 {
+ return i32(1)
}
- }()
- if _tokenType != i32(135) {
- goto _5
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89484), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MatchSpanNameØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) == i32(46) {
+ goto _6
+ }
+ _n += 1
+ goto _0
+_6:
+ if (_zDb != nil) && ((Xsqlite3_strnicmp(tls, _zSpan, _zDb, _n) != i32(0)) || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zDb)) + 1*uintptr(_n)))) != i32(0))) {
+ return i32(0)
}
-
- *_pnToken = _n
- goto _1
-
-_5:
{
- p := &_nTotal
- *p = (*p) + _n
- sink1 = *p
+ p := &_zSpan
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n+i32(1))))
+ sink0 = *p
+ }
+ _n = i32(0)
+_10:
+ if func() int32 {
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) != 0 {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89489), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MatchSpanNameØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) == i32(46) {
+ goto _16
+ }
+ _n += 1
+ goto _10
+_16:
+ if (_zTab != nil) && ((Xsqlite3_strnicmp(tls, _zSpan, _zTab, _n) != i32(0)) || (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTab)) + 1*uintptr(_n)))) != i32(0))) {
+ return i32(0)
}
{
- p := &_zSql
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n)))
+ p := &_zSpan
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n+i32(1))))
sink0 = *p
}
- goto _0
-
-_1:
- return _nTotal
-}
-
-var _findNextHostParameterØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_findNextHostParameterØ00__func__Ø000[0], str(96172), 22)
-}
-
-func Xsqlite3_strlike(tls *crt.TLS, _zPattern *int8, _zStr *int8, _esc uint32) (r0 int32) { // sqlite3.c:106322:12
- return _patternCompare(tls, (*uint8)(unsafe.Pointer(_zPattern)), (*uint8)(unsafe.Pointer(_zStr)), &_likeInfoNorm, _esc)
+ if (_zCol != nil) && (_sqlite3StrICmp(tls, _zSpan, _zCol) != i32(0)) {
+ return i32(0)
+ }
+ return i32(1)
}
-var _likeInfoNorm TcompareInfo // sqlite3.c:106136:33
+var _sqlite3MatchSpanNameØ00__func__Ø000 [21]int8
func init() {
- _likeInfoNorm = TcompareInfo{X0: u8(37), X1: u8(95), X2: u8(0), X3: u8(1)}
+ crt.Xstrncpy(nil, &_sqlite3MatchSpanNameØ00__func__Ø000[0], str(95226), 21)
}
-func _doWalCallbacks(tls *crt.TLS, _db *Xsqlite3) (r0 int32) { // sqlite3.c:76587:1
- var _rc int32 // sqlite3.c:76588:7
- _ = _rc
- var _i int32 // sqlite3.c:76590:7
- _ = _i
- var _1_pBt *XBtree // sqlite3.c:76592:11
- _ = _1_pBt
- var _2_nEntry int32 // sqlite3.c:76594:11
- _ = _2_nEntry
- _rc = i32(0)
- _i = i32(0)
-_0:
- if _i >= (_db.X5) {
- goto _3
+// Return the index in pList of the identifier named zId. Return -1
+// if not found.
+func _sqlite3IdListIndex(tls *crt.TLS, _pList *XIdList, _zName *int8) (r0 int32) {
+ var _i int32
+ if _pList == nil {
+ return i32(-1)
}
-
- _1_pBt = (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X1)
- if _1_pBt == nil {
+ _i = i32(0)
+_1:
+ if _i >= (_pList.X1) {
goto _4
}
-
- _sqlite3BtreeEnter(tls, _1_pBt)
- _2_nEntry = _sqlite3PagerWalCallback(tls, _sqlite3BtreePager(tls, _1_pBt))
- _sqlite3BtreeLeave(tls, _1_pBt)
- if (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, *int8, int32) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, *int8, int32) int32
- }{(_db.X51)}))) == nil || _2_nEntry <= i32(0) || _rc != i32(0) {
- goto _7
+ if _sqlite3StrICmp(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pList.X0)+8*uintptr(_i))).X0, _zName) == i32(0) {
+ return _i
}
-
- _rc = (*(*func(*crt.TLS, unsafe.Pointer, *Xsqlite3, *int8, int32) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, *int8, int32) int32
- }{(_db.X51)})))(tls, _db.X52, _db, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X0, _2_nEntry)
-_7:
-_4:
_i += 1
- goto _0
-
-_3:
- return _rc
-}
-
-func _sqlite3PagerWalCallback(tls *crt.TLS, _pPager *XPager) (r0 int32) { // sqlite3.c:54255:1
- return _sqlite3WalCallback(tls, (*XWal)(_pPager.X60))
+ goto _1
+_4:
+ return i32(-1)
}
-func _sqlite3WalCallback(tls *crt.TLS, _pWal *XWal) (r0 int32) { // sqlite3.c:57867:1
- var _ret uint32 // sqlite3.c:57868:7
- _ = _ret
- _ret = u32(0)
- if _pWal == nil {
- goto _0
- }
-
- _ret = _pWal.X3
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWal)) + uintptr(12 /* X3 */))) = uint32(i32(0))
-_0:
- return int32(_ret)
+// Generate a Token object from a string
+func _sqlite3TokenInit(tls *crt.TLS, _p *XToken, _z *int8) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _z
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = uint32(_sqlite3Strlen30(tls, _z))
}
-func _sqlite3Reprepare(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:116368:1
- var _rc int32 // sqlite3.c:116369:7
- _ = _rc
- var _pNew unsafe.Pointer // sqlite3.c:116370:16
- _ = _pNew
- var _zSql *int8 // sqlite3.c:116371:14
- _ = _zSql
- var _db *Xsqlite3 // sqlite3.c:116372:11
- _ = _db
+// Set the ExprList.a[].zName element of the most recently added item
+// on the expression list.
+//
+// pList might be NULL following an OOM error. But pName should never be
+// NULL. If a memory allocation fails, the pParse->db->mallocFailed flag
+// is set.
+func _sqlite3ExprListSetName(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pName *XToken, _dequote int32) {
+ var _1_pItem *TExprList_item
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_sqlite3VdbeDb(tls, _p).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116374), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(96196)))
+ if _pList == nil && int32((*Xsqlite3)(_pParse.X0).X17) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetNameØ00__func__Ø000))), unsafe.Pointer(str(95247)))
crt.X__builtin_abort(tls)
}
}()
- _zSql = Xsqlite3_sql(tls, (unsafe.Pointer)(_p))
+ if _pList == nil {
+ goto _3
+ }
func() {
- if _zSql == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116376), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(24360)))
+ if (_pList.X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetNameØ00__func__Ø000))), unsafe.Pointer(str(21335)))
crt.X__builtin_abort(tls)
}
}()
- _db = _sqlite3VdbeDb(tls, _p)
+ _1_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr((_pList.X0)-i32(1))))
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)(_db.X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116378), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(848)))
+ if (_1_pItem.X1) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92501), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetNameØ00__func__Ø000))), unsafe.Pointer(str(95287)))
crt.X__builtin_abort(tls)
}
}()
- _rc = _sqlite3LockAndPrepare(tls, _db, _zSql, i32(-1), i32(0), _p, &_pNew, nil)
- if _rc == 0 {
- goto _6
- }
-
- if _rc != i32(7) {
- goto _7
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(4 /* X1 */))) = _sqlite3DbStrNDup(tls, (*Xsqlite3)(_pParse.X0), _pName.X0, uint64(_pName.X1))
+ if _dequote != 0 {
+ _sqlite3Dequote(tls, _1_pItem.X1)
}
+_3:
+}
- _sqlite3OomFault(tls, _db)
-_7:
- func() {
- if _pNew != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116384), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(96240)))
- crt.X__builtin_abort(tls)
- }
- }()
- return _rc
+var _sqlite3ExprListSetNameØ00__func__Ø000 [23]int8
-_6:
- func() {
- if _pNew == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116387), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ReprepareØ00__func__Ø000))), unsafe.Pointer(str(20688)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3VdbeSwap(tls, (*TVdbe)(_pNew), _p)
- _sqlite3TransferBindings(tls, _pNew, (unsafe.Pointer)(_p))
- _sqlite3VdbeResetStepResult(tls, (*TVdbe)(_pNew))
- _sqlite3VdbeFinalize(tls, (*TVdbe)(_pNew))
- return i32(0)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprListSetNameØ00__func__Ø000[0], str(95303), 23)
}
-var _sqlite3ReprepareØ00__func__Ø000 [17]int8 // -
+// If the SELECT passed as the second argument has an associated WITH
+// clause, pop it from the stack stored as part of the Parse object.
+//
+// This function is used as the xSelectCallback2() callback by
+// sqlite3SelectExpand() when walking a SELECT tree to resolve table
+// names and other FROM clause elements.
+func _selectPopWith(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) {
+ var _1_pWith *XWith
+ var _pParse *XParse
+ _pParse = (*XParse)(_pWalker.X0)
+ if (*XWith)(_pParse.X70) == nil || (*XSelect)(_p.X13) != nil {
+ goto _1
+ }
+ _1_pWith = (*XWith)(_findRightmost(tls, _p).X17)
+ if _1_pWith != nil {
+ func() {
+ if (*XWith)(_pParse.X70) != _1_pWith {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120817), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectPopWithØ00__func__Ø000))), unsafe.Pointer(str(95326)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(476 /* X70 */))))) = (*XWith)(_1_pWith.X1)
+ }
+_1:
+}
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ReprepareØ00__func__Ø000[0], str(96248), 17)
+// Return a pointer to the right-most SELECT statement in a compound.
+func _findRightmost(tls *crt.TLS, _p *XSelect) (r0 *XSelect) {
+_0:
+ if (*XSelect)(_p.X14) != nil {
+ _p = (*XSelect)(_p.X14)
+ goto _0
+ }
+ return _p
}
-func Xsqlite3_sql(tls *crt.TLS, _pStmt unsafe.Pointer) (r0 *int8) { // sqlite3.c:77718:12
- var _p *TVdbe // sqlite3.c:77719:8
- _ = _p
- _p = (*TVdbe)(_pStmt)
- return func() *int8 {
- if _p != nil {
- return (_p.X36)
- }
- return nil
- }()
+var _selectPopWithØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_selectPopWithØ00__func__Ø000[0], str(95347), 14)
}
-func _sqlite3VdbeSwap(tls *crt.TLS, _pA *TVdbe, _pB *TVdbe) { // sqlite3.c:71492:1
- var _tmp TVdbe // sqlite3.c:71493:8
- _ = _tmp
- var _pTmp *TVdbe // sqlite3.c:71493:13
- _ = _pTmp
- var _zTmp *int8 // sqlite3.c:71494:8
- _ = _zTmp
+// Resolve all names in all expressions of a SELECT and in all
+// decendents of the SELECT, including compounds off of p->pPrior,
+// subqueries in expressions, and subqueries used as FROM clause
+// terms.
+//
+// See sqlite3ResolveExprNames() for a description of the kinds of
+// transformations that occur.
+//
+// All SELECT statements should have been expanded using
+// sqlite3SelectExpand() prior to invoking this routine.
+func _sqlite3ResolveSelectNames(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pOuterNC *XNameContext) {
+ var _w XWalker
func() {
- if (*Xsqlite3)(_pA.X0) != (*Xsqlite3)(_pB.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSwapØ00__func__Ø000))), unsafe.Pointer(str(96268)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResolveSelectNamesØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
- _tmp = *_pA
- *_pA = *_pB
- *_pB = _tmp
- _pTmp = (*TVdbe)(_pA.X2)
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X2 */))))) = (*TVdbe)(_pB.X2)
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X2 */))))) = _pTmp
- _pTmp = (*TVdbe)(_pA.X1)
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(4 /* X1 */))))) = (*TVdbe)(_pB.X1)
- *(**TVdbe)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(4 /* X1 */))))) = _pTmp
- _zTmp = _pA.X36
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(172 /* X36 */))) = _pB.X36
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(172 /* X36 */))) = _zTmp
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB))+uintptr(140 /* X32 */))), int16((uint32((_pA.X32)>>uint(i32(9)))<>uint(i32(31))), 512, 9)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(192 /* X41 */))) = _pA.X41
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _resolveExprStep
+ *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _resolveSelectStep
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pOuterNC
+ _sqlite3WalkSelect(tls, &_w, _p)
+ _ = _w
}
-var _sqlite3VdbeSwapØ00__func__Ø000 [16]int8 // -
+var _sqlite3ResolveSelectNamesØ00__func__Ø000 [26]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSwapØ00__func__Ø000[0], str(96284), 16)
+ crt.Xstrncpy(nil, &_sqlite3ResolveSelectNamesØ00__func__Ø000[0], str(95361), 26)
}
-func _sqlite3TransferBindings(tls *crt.TLS, _pFromStmt unsafe.Pointer, _pToStmt unsafe.Pointer) (r0 int32) { // sqlite3.c:77603:1
- var _pFrom *TVdbe // sqlite3.c:77604:8
- _ = _pFrom
- var _pTo *TVdbe // sqlite3.c:77605:8
- _ = _pTo
- var _i int32 // sqlite3.c:77606:7
- _ = _i
- _pFrom = (*TVdbe)(_pFromStmt)
- _pTo = (*TVdbe)(_pToStmt)
+// This routine is callback for sqlite3WalkExpr().
+//
+// Resolve symbolic names into TK_COLUMN operators for the current
+// node in the expression tree. Return 0 to continue the search down
+// the tree or 2 to abort the tree walk.
+//
+// This routine also does error checking and name resolution for
+// function names. The operator for aggregate functions is changed
+// to TK_AGG_FUNCTION.
+func _resolveExprStep(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ var _1_i, _9_n, _9_no_such_func, _9_wrong_num_args, _9_is_agg, _9_nId, _18_auth, _30_nRef, _33_nLeft, _33_nRight int32
+ var _4_zColumn, _4_zTable, _4_zDb, _9_zId *int8
+ var _9_enc uint8
+ var _9_pDef *XFuncDef
+ var _1_pSrcList *XSrcList
+ var _9_pList *XExprList
+ var _4_pRight *XExpr
+ var _pParse *XParse
+ var _pNC, _26_pNC2 *XNameContext
+ _pNC = (*XNameContext)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
func() {
- if (*Xsqlite3)(_pTo.X0) != (*Xsqlite3)(_pFrom.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77607), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TransferBindingsØ00__func__Ø000))), unsafe.Pointer(str(73924)))
+ if _pNC == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89925), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95387)))
crt.X__builtin_abort(tls)
}
}()
+ _pParse = (*XParse)(_pNC.X0)
func() {
- if int32(_pTo.X4) != int32(_pFrom.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(77608), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TransferBindingsØ00__func__Ø000))), unsafe.Pointer(str(96300)))
+ if _pParse != (*XParse)(_pWalker.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89927), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95394)))
crt.X__builtin_abort(tls)
}
}()
- Xsqlite3_mutex_enter(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pTo.X0).X3))
- _i = i32(0)
-_4:
- if _i >= int32(_pFrom.X4) {
- goto _7
- }
-
- _sqlite3VdbeMemMove(tls, (*XMem)(unsafe.Pointer(uintptr(_pTo.X24)+48*uintptr(_i))), (*XMem)(unsafe.Pointer(uintptr(_pFrom.X24)+48*uintptr(_i))))
- _i += 1
- goto _4
-
-_7:
- Xsqlite3_mutex_leave(tls, (*Xsqlite3_mutex)((*Xsqlite3)(_pTo.X0).X3))
- return i32(0)
-}
-
-var _sqlite3TransferBindingsØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3TransferBindingsØ00__func__Ø000[0], str(96324), 24)
-}
-
-func _sqlite3VdbeResetStepResult(tls *crt.TLS, _p *TVdbe) { // sqlite3.c:74221:1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X10 */))) = i32(0)
-}
-
-var _sqlite3_stepØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3_stepØ00__func__Ø000[0], str(96348), 13)
-}
-
-func _sqlite3FindDbName(tls *crt.TLS, _db *Xsqlite3, _zName *int8) (r0 int32) { // sqlite3.c:100410:1
- var _i int32 // sqlite3.c:100411:7
- _ = _i
- var _1_pDb *XDb // sqlite3.c:100413:8
- _ = _1_pDb
- _i = i32(-1)
- if _zName == nil {
- goto _0
- }
-
- *func() **XDb { _i = (_db.X5) - i32(1); return &_1_pDb }() = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
-_1:
- if _i < i32(0) {
- goto _4
+ if ((_pExpr.X2) & uint32(i32(4))) != uint32(i32(0)) {
+ return i32(1)
}
-
- if i32(0) != Xsqlite3_stricmp(tls, _1_pDb.X0, _zName) {
- goto _5
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(4))
+ sink5 = *p
}
-
- goto _4
-
-_5:
- if _i != i32(0) || i32(0) != Xsqlite3_stricmp(tls, str(96364), _zName) {
- goto _7
+ if (*XSrcList)(_pNC.X1) == nil || ((*XSrcList)(_pNC.X1).X1) <= uint32(i32(0)) {
+ goto _6
}
-
- goto _4
-
+ _1_pSrcList = (*XSrcList)(_pNC.X1)
+ _1_i = i32(0)
_7:
- *(*uintptr)(unsafe.Pointer(func() **XDb { _i -= 1; return &_1_pDb }())) += uintptr(4294967280)
- goto _1
-
-_4:
-_0:
- r0 = _i
- return
-}
-
-func _sqlite3PragmaVtabRegister(tls *crt.TLS, _db *Xsqlite3, _zName *int8) (r0 *XModule) { // sqlite3.c:115651:1
- var _pName *XPragmaName // sqlite3.c:115652:20
- _ = _pName
+ if _1_i >= ((*XSrcList)(_pNC.X1).X0) {
+ goto _10
+ }
func() {
- if Xsqlite3_strnicmp(tls, _zName, str(51388), i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaVtabRegisterØ00__func__Ø000))), unsafe.Pointer(str(96372)))
+ if ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrcList))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i))).X11) < i32(0) || ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrcList))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i))).X11) >= (_pParse.X17) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89936), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95418)))
crt.X__builtin_abort(tls)
}
}()
- _pName = _pragmaLocate(tls, (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_zName))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(7)))))))))
- if _pName != nil {
- goto _2
+ _1_i += 1
+ goto _7
+_10:
+_6:
+ switch int32(_pExpr.X0) {
+ case i32(20):
+ goto _19
+ case i32(27):
+ goto _15
+ case i32(72):
+ goto _29
+ case i32(73):
+ goto _22
+ case i32(74):
+ goto _20
+ case i32(77):
+ goto _24
+ case i32(78):
+ goto _23
+ case i32(79):
+ goto _27
+ case i32(80):
+ goto _26
+ case i32(81):
+ goto _25
+ case i32(82):
+ goto _28
+ case i32(119):
+ goto _18
+ case i32(122):
+ goto _16
+ case i32(135):
+ goto _21
+ case i32(148):
+ goto _30
+ case i32(151):
+ goto _17
+ default:
+ goto _31
}
- return nil
-_2:
- if (int32(_pName.X2) & i32(48)) != i32(0) {
- goto _3
+_15:
+_16:
+ if int32(_pExpr.X0) == i32(27) {
+ _4_zDb = nil
+ _4_zTable = nil
+ _4_zColumn = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
+ goto _33
+ }
+ _notValid(tls, _pParse, _pNC, str(95483), i32(32))
+ _4_pRight = (*XExpr)(_pExpr.X5)
+ if int32(_4_pRight.X0) == i32(27) {
+ _4_zDb = nil
+ _4_zTable = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(8 /* X3 */)))))
+ _4_zColumn = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pRight)) + uintptr(8 /* X3 */)))))
+ goto _35
}
- return nil
-
-_3:
func() {
- if _sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zName) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115657), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaVtabRegisterØ00__func__Ø000))), unsafe.Pointer(str(96416)))
+ if int32(_4_pRight.X0) != i32(122) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89989), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95500)))
crt.X__builtin_abort(tls)
}
}()
- return _sqlite3VtabCreateModule(tls, _db, _zName, &_pragmaVtabModule, (unsafe.Pointer)(_pName), nil)
-}
-
-var _sqlite3PragmaVtabRegisterØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3PragmaVtabRegisterØ00__func__Ø000[0], str(96456), 26)
-}
-
-func _pragmaLocate(tls *crt.TLS, _zName *int8) (r0 *XPragmaName) { // sqlite3.c:113508:1
- var _upr int32 // sqlite3.c:113509:7
- _ = _upr
- var _lwr int32 // sqlite3.c:113509:12
- _ = _lwr
- var _mid int32 // sqlite3.c:113509:17
- _ = _mid
- var _rc int32 // sqlite3.c:113509:26
- _ = _rc
- _mid = i32(0)
- _lwr = i32(0)
- _upr = i32(66)
-_0:
- if _lwr > _upr {
- goto _1
- }
-
- _mid = (_lwr + _upr) / i32(2)
- _rc = Xsqlite3_stricmp(tls, _zName, (*XPragmaName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPragmaName))+12*uintptr(_mid))).X0)
- if _rc != i32(0) {
- goto _2
- }
+ _4_zDb = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(8 /* X3 */)))))
+ _4_zTable = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_4_pRight.X4) + uintptr(8 /* X3 */)))))
+ _4_zColumn = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_4_pRight.X5) + uintptr(8 /* X3 */)))))
+_35:
+_33:
+ return _lookupName(tls, _pParse, _4_zDb, _4_zTable, _4_zColumn, _pNC, _pExpr)
- goto _1
-
-_2:
- if _rc >= i32(0) {
- goto _3
+_17:
+ _9_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _9_n = func() int32 {
+ if _9_pList != nil {
+ return (_9_pList.X0)
+ }
+ return i32(0)
+ }()
+ _9_no_such_func = i32(0)
+ _9_wrong_num_args = i32(0)
+ _9_is_agg = i32(0)
+ _9_enc = (*Xsqlite3)(_pParse.X0).X14
+ func() {
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90011), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(42778)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _9_zId = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
+ _9_nId = _sqlite3Strlen30(tls, _9_zId)
+ _9_pDef = _sqlite3FindFunction(tls, (*Xsqlite3)(_pParse.X0), _9_zId, _9_n, _9_enc, uint8(i32(0)))
+ if _9_pDef != nil {
+ goto _42
}
-
- _upr = _mid - i32(1)
- goto _4
-
-_3:
- _lwr = _mid + i32(1)
-_4:
- goto _0
-
-_1:
- return func() *XPragmaName {
- if _lwr > _upr {
- return nil
+ _9_pDef = _sqlite3FindFunction(tls, (*Xsqlite3)(_pParse.X0), _9_zId, i32(-2), _9_enc, uint8(i32(0)))
+ if _9_pDef == nil {
+ _9_no_such_func = i32(1)
+ goto _44
+ }
+ _9_wrong_num_args = i32(1)
+_44:
+ goto _45
+_42:
+ _9_is_agg = bool2int(*(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context)
+ }{(*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer)
+ }{(_9_pDef.X5)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_context)
+ }{nil})))
+ if (int32(_9_pDef.X1) & i32(1024)) == 0 {
+ goto _46
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(266240))
+ sink5 = *p
+ }
+ if _9_n != i32(2) {
+ goto _47
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _exprProbability(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(1)))).X0))
+ if (_pExpr.X8) < i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(95519))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
+ }
+ goto _49
+_47:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = func() int32 {
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pDef.X6)) + 1*uintptr(i32(0))))) == i32(117) {
+ return i32(8388608)
}
- return (*XPragmaName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aPragmaName)) + 12*uintptr(_mid)))
+ return i32(125829120)
}()
-}
-
-var _aPragmaName [67]XPragmaName // sqlite3.c:112767:25
-
-func init() {
- _aPragmaName = [67]XPragmaName{XPragmaName{X0: str(96484), X1: u8(0), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(8)}, XPragmaName{X0: str(96500), X1: u8(1), X2: u8(149), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96512), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1048576)}, XPragmaName{X0: str(96528), X1: u8(3), X2: u8(16), X3: u8(46), X4: u8(1), X5: u32(0)}, XPragmaName{X0: str(96544), X1: u8(4), X2: u8(149), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96556), X1: u8(5), X2: u8(148), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96568), X1: u8(6), X2: u8(2), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96588), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(536870912)}, XPragmaName{X0: str(96604), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(16)}, XPragmaName{X0: str(96628), X1: u8(7), X2: u8(16), X3: u8(29), X4: u8(2), X5: u32(0)}, XPragmaName{X0: str(96644), X1: u8(8), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96660), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(128)}, XPragmaName{X0: str(96676), X1: u8(0), X2: u8(24), X3: u8(0), X4: u8(0), X5: u32(15)}, XPragmaName{X0: str(96692), X1: u8(10), X2: u8(17), X3: u8(26), X4: u8(3), X5: u32(0)}, XPragmaName{X0: str(96708), X1: u8(11), X2: u8(149), X3: u8(0), X4: u8(1), X5: u32(0)}, XPragmaName{X0: str(96728), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(33554432)}, XPragmaName{X0: str(96748), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(256)}, XPragmaName{X0: str(96772), X1: u8(12), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96784), X1: u8(13), X2: u8(1), X3: u8(39), X4: u8(4), X5: u32(0)}, XPragmaName{X0: str(96804), X1: u8(14), X2: u8(97), X3: u8(31), X4: u8(8), X5: u32(0)}, XPragmaName{X0: str(96824), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(524288)}, XPragmaName{X0: str(96840), X1: u8(0), X2: u8(24), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96856), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(4)}, XPragmaName{X0: str(96876), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(8)}, XPragmaName{X0: str(96888), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(8192)}, XPragmaName{X0: str(96916), X1: u8(15), X2: u8(3), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96936), X1: u8(16), X2: u8(97), X3: u8(12), X4: u8(3), X5: u32(0)}, XPragmaName{X0: str(96948), X1: u8(17), X2: u8(97), X3: u8(21), X4: u8(5), X5: u32(0)}, XPragmaName{X0: str(96960), X1: u8(16), X2: u8(97), X3: u8(15), X4: u8(6), X5: u32(1)}, XPragmaName{X0: str(96972), X1: u8(18), X2: u8(1), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(96988), X1: u8(19), X2: u8(145), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97004), X1: u8(20), X2: u8(144), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97024), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(32768)}, XPragmaName{X0: str(97044), X1: u8(41), X2: u8(16), X3: u8(47), X4: u8(2), X5: u32(0)}, XPragmaName{X0: str(97056), X1: u8(22), X2: u8(144), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97072), X1: u8(23), X2: u8(145), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97088), X1: u8(24), X2: u8(0), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97100), X1: u8(25), X2: u8(33), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97112), X1: u8(23), X2: u8(145), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97124), X1: u8(26), X2: u8(148), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97136), X1: u8(42), X2: u8(0), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97152), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(67108864)}, XPragmaName{X0: str(97164), X1: u8(18), X2: u8(1), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97176), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(16384)}, XPragmaName{X0: str(97196), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(262144)}, XPragmaName{X0: str(97216), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(131072)}, XPragmaName{X0: str(97244), X1: u8(0), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1)}, XPragmaName{X0: str(97260), X1: u8(27), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97276), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(64)}, XPragmaName{X0: str(97296), X1: u8(28), X2: u8(2), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97312), X1: u8(29), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97328), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(512)}, XPragmaName{X0: str(97340), X1: u8(43), X2: u8(145), X3: u8(7), X4: u8(5), X5: u32(0)}, XPragmaName{X0: str(97348), X1: u8(30), X2: u8(149), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97360), X1: u8(31), X2: u8(97), X3: u8(1), X4: u8(6), X5: u32(0)}, XPragmaName{X0: str(97372), X1: u8(32), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97384), X1: u8(33), X2: u8(4), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97408), X1: u8(34), X2: u8(16), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97416), X1: u8(0), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(6)}, XPragmaName{X0: str(97432), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(4096)}, XPragmaName{X0: str(97448), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1537)}, XPragmaName{X0: str(97460), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(134217728)}, XPragmaName{X0: str(97472), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1024)}, XPragmaName{X0: str(97488), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(1)}, XPragmaName{X0: str(97500), X1: u8(35), X2: u8(0), X3: u8(0), X4: u8(0), X5: u32(0)}, XPragmaName{X0: str(97520), X1: u8(36), X2: u8(1), X3: u8(43), X4: u8(3), X5: u32(0)}, XPragmaName{X0: str(97536), X1: u8(2), X2: u8(20), X3: u8(0), X4: u8(0), X5: u32(67584)}}
-}
-
-var _pragmaVtabModule Xsqlite3_module // sqlite3.c:115620:29
-
-func init() {
- _pragmaVtabModule = Xsqlite3_module{X0: i32(0), X1: nil, X2: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
- }{_pragmaVtabConnect})), X3: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab, *Xsqlite3_index_info) int32
- }{_pragmaVtabBestIndex})), X4: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab) int32
- }{_pragmaVtabDisconnect})), X5: nil, X6: *(*func(*crt.TLS, unsafe.Pointer, *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab, **Xsqlite3_file) int32
- }{_pragmaVtabOpen})), X7: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_file) int32
- }{_pragmaVtabClose})), X8: *(*func(*crt.TLS, unsafe.Pointer, int32, *int8, int32, *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_file, int32, *int8, int32, **XMem) int32
- }{_pragmaVtabFilter})), X9: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_file) int32
- }{_pragmaVtabNext})), X10: *(*func(*crt.TLS, unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_file) int32
- }{_pragmaVtabEof})), X11: *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_file, *Xsqlite3_context, int32) int32
- }{_pragmaVtabColumn})), X12: *(*func(*crt.TLS, unsafe.Pointer, *int64) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_file, *int64) int32
- }{_pragmaVtabRowid})), X13: nil, X14: nil, X15: nil, X16: nil, X17: nil, X18: nil, X19: nil, X20: nil, X21: nil, X22: nil}
-}
-
-func _pragmaVtabConnect(tls *crt.TLS, _db *Xsqlite3, _pAux unsafe.Pointer, _argc int32, _argv **int8, _ppVtab **Xsqlite3_vtab, _pzErr **int8) (r0 int32) { // sqlite3.c:115380:1
- var _pPragma *XPragmaName // sqlite3.c:115387:20
- _ = _pPragma
- var _pTab *XPragmaVtab // sqlite3.c:115388:14
- _ = _pTab
- var _rc int32 // sqlite3.c:115389:7
- _ = _rc
- var _i int32 // sqlite3.c:115390:7
- _ = _i
- var _j int32 // sqlite3.c:115390:10
- _ = _j
- var _cSep int8 // sqlite3.c:115391:8
- _ = _cSep
- var _acc XStrAccum // sqlite3.c:115392:12
- _ = _acc
- var _zBuf [200]int8 // sqlite3.c:115393:8
- _ = _zBuf
- _pPragma = (*XPragmaName)(_pAux)
- _pTab = nil
- _cSep = i8(40)
-
- _sqlite3StrAccumInit(tls, &_acc, nil, (*int8)(unsafe.Pointer(&_zBuf)), int32(u32(200)), i32(0))
- _sqlite3StrAccumAppendAll(tls, &_acc, str(97552))
- *func() *int32 { _i = i32(0); return &_j }() = int32(_pPragma.X3)
-_0:
- if _i >= int32(_pPragma.X4) {
- goto _3
+_49:
+_46:
+ _18_auth = _sqlite3AuthCheck(tls, _pParse, i32(31), nil, _9_pDef.X6, nil)
+ if _18_auth == i32(0) {
+ goto _52
}
-
- _sqlite3XPrintf(tls, &_acc, str(97568), int32(_cSep), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_pragCName)) + 4*uintptr(_j)))))
- _cSep = int8(i32(44))
- *func() *int32 { _i += 1; return &_j }() += 1
- goto _0
-
-_3:
- if _i != i32(0) {
- goto _4
+ if _18_auth == i32(1) {
+ _sqlite3ErrorMsg(tls, _pParse, str(95590), unsafe.Pointer(_9_pDef.X6))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
}
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
+ return i32(1)
- _sqlite3XPrintf(tls, &_acc, str(97576), unsafe.Pointer(_pPragma.X0))
- _cSep = int8(i32(44))
- _i += 1
-_4:
- _j = i32(0)
- if (int32(_pPragma.X2) & i32(32)) == 0 {
- goto _5
+_52:
+ if (int32(_9_pDef.X1) & i32(10240)) != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(524288))
+ sink5 = *p
+ }
}
-
- _sqlite3StrAccumAppendAll(tls, &_acc, str(97584))
- _j += 1
-_5:
- if (int32(_pPragma.X2) & i32(192)) == 0 {
- goto _6
+ if (int32(_9_pDef.X1) & i32(2048)) == i32(0) {
+ _notValid(tls, _pParse, _pNC, str(95625), i32(34))
+ }
+_45:
+ if _9_is_agg != 0 && ((int32(_pNC.X7) & i32(1)) == i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(95653), _9_nId, unsafe.Pointer(_9_zId))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
+ _9_is_agg = i32(0)
+ goto _58
+ }
+ if _9_no_such_func != 0 && (int32((*t21)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(144 /* X33 */))).X2) == i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(95689), _9_nId, unsafe.Pointer(_9_zId))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
+ goto _61
+ }
+ if _9_wrong_num_args != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(95712), _9_nId, unsafe.Pointer(_9_zId))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
+ }
+_61:
+_58:
+ if _9_is_agg != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) & i32(-2))
+ sink14 = *p
+ }
+ }
+ _sqlite3WalkExprList(tls, _pWalker, _9_pList)
+ if _9_is_agg == 0 {
+ goto _64
+ }
+ _26_pNC2 = _pNC
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(153))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(38 /* X12 */))) = uint8(i32(0))
+_65:
+ if (_26_pNC2 != nil) && (_sqlite3FunctionUsesThisSrc(tls, _pExpr, (*XSrcList)(_26_pNC2.X1)) == 0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(38 /* X12 */))) += 1
+ _26_pNC2 = (*XNameContext)(_26_pNC2.X4)
+ goto _65
}
-
- _sqlite3StrAccumAppendAll(tls, &_acc, str(97596))
- _j += 1
-_6:
- _sqlite3StrAccumAppend(tls, &_acc, str(38624), i32(1))
- _sqlite3StrAccumFinish(tls, &_acc)
func() {
- if crt.Xstrlen(tls, (*int8)(unsafe.Pointer(&_zBuf))) >= u32(199) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115419), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabConnectØ00__func__Ø000))), unsafe.Pointer(str(97612)))
+ if _9_pDef == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90101), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95757)))
crt.X__builtin_abort(tls)
}
}()
- _rc = Xsqlite3_declare_vtab(tls, _db, (*int8)(unsafe.Pointer(&_zBuf)))
- if _rc != i32(0) {
- goto _9
+ if _26_pNC2 != nil {
+ i32(0)
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNC2)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) | (i32(16) | (int32(_9_pDef.X1) & i32(4096))))
+ sink14 = *p
+ }
}
-
- _pTab = (*XPragmaVtab)(Xsqlite3_malloc(tls, int32(u32(24))))
- if _pTab != nil {
- goto _10
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
}
+_64:
+ return i32(1)
- _rc = i32(7)
- goto _11
-
-_10:
- crt.Xmemset(tls, (unsafe.Pointer)(_pTab), i32(0), u32(24))
- *(**XPragmaName)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(16 /* X2 */))))) = _pPragma
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(12 /* X1 */))))) = _db
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(21 /* X4 */))) = uint8(_i)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(20 /* X3 */))) = uint8(_j)
-_11:
- goto _12
-
-_9:
- *_pzErr = Xsqlite3_mprintf(tls, str(24316), unsafe.Pointer(Xsqlite3_errmsg(tls, _db)))
-_12:
- *_ppVtab = (*Xsqlite3_vtab)(unsafe.Pointer(_pTab))
- return _rc
-}
-
-func _sqlite3StrAccumAppendAll(tls *crt.TLS, _p *XStrAccum, _z *int8) { // sqlite3.c:25928:1
- _sqlite3StrAccumAppend(tls, _p, _z, _sqlite3Strlen30(tls, _z))
-}
-
-var _pragCName [49]*int8 // sqlite3.c:112706:19
-
-func init() {
- _pragCName = [49]*int8{str(96544), str(97644), str(97648), str(97656), str(97664), str(97672), str(97684), str(97688), str(97692), str(97696), str(97704), str(97712), str(97720), str(97644), str(97648), str(97720), str(97644), str(97648), str(97728), str(97736), str(97744), str(97748), str(97648), str(97752), str(97760), str(97768), str(97748), str(97648), str(97776), str(97748), str(97648), str(97784), str(97748), str(97788), str(26440), str(97796), str(97800), str(97812), str(97824), str(97788), str(27392), str(97832), str(97840), str(97848), str(97856), str(97860), str(97876), str(97884), str(97896)}
-}
-
-var _pragmaVtabConnectØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pragmaVtabConnectØ00__func__Ø000[0], str(97904), 18)
-}
-
-func _pragmaVtabBestIndex(tls *crt.TLS, _tab *Xsqlite3_vtab, _pIdxInfo *Xsqlite3_index_info) (r0 int32) { // sqlite3.c:115456:1
- var _pTab *XPragmaVtab // sqlite3.c:115457:14
- _ = _pTab
- var _pConstraint *Tsqlite3_index_constraint // sqlite3.c:115458:41
- _ = _pConstraint
- var _i int32 // sqlite3.c:115459:7
- _ = _i
- var _j int32 // sqlite3.c:115459:10
- _ = _j
- var _seen [2]int32 // sqlite3.c:115460:7
- _ = _seen
- _pTab = (*XPragmaVtab)(unsafe.Pointer(_tab))
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = float64(1)
- if int32(_pTab.X3) != i32(0) {
- goto _0
+_18:
+_19:
+_20:
+ if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
+ goto _71
}
- return i32(0)
-
-_0:
- _pConstraint = (*Tsqlite3_index_constraint)(_pIdxInfo.X1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(0)))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(1)))) = i32(0)
- _i = i32(0)
-_1:
- if _i >= (_pIdxInfo.X0) {
- goto _4
+ _30_nRef = _pNC.X5
+ _notValid(tls, _pParse, _pNC, str(95765), i32(38))
+ _sqlite3WalkSelect(tls, _pWalker, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
+ func() {
+ if (_pNC.X5) < _30_nRef {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90125), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95776)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _30_nRef != (_pNC.X5) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(32))
+ sink5 = *p
+ }
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) | i32(64))
+ sink14 = *p
+ }
}
-
- if int32(_pConstraint.X2) != i32(0) {
- goto _5
+_71:
+ goto _31
+_21:
+ _notValid(tls, _pParse, _pNC, str(95792), i32(38))
+ goto _31
+_22:
+_23:
+_24:
+_25:
+_26:
+_27:
+_28:
+_29:
+_30:
+ if ((*Xsqlite3)(_pParse.X0).X17) != 0 {
+ goto _31
}
-
- goto _2
-
-_5:
- if int32(_pConstraint.X1) == i32(2) {
- goto _6
+ func() {
+ if (*XExpr)(_pExpr.X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90148), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95803)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _33_nLeft = _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4))
+ if int32(_pExpr.X0) != i32(73) {
+ goto _78
}
-
- goto _2
-
-_6:
- if (_pConstraint.X0) >= int32(_pTab.X4) {
- goto _7
+ _33_nRight = _sqlite3ExprVectorSize(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
+ if _33_nRight == _33_nLeft {
+ _33_nRight = _sqlite3ExprVectorSize(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(i32(1)))).X0))
}
-
- goto _2
-
-_7:
- _j = (_pConstraint.X0) - int32(_pTab.X4)
+ goto _80
+_78:
func() {
- if _j >= i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115472), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabBestIndexØ00__func__Ø000))), unsafe.Pointer(str(97924)))
+ if (*XExpr)(_pExpr.X5) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90156), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(95819)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(_j))) = _i + i32(1)
-_2:
- *(*uintptr)(unsafe.Pointer(func() **Tsqlite3_index_constraint { _i += 1; return &_pConstraint }())) += uintptr(12)
- goto _1
-
-_4:
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(0))))) != i32(0) {
- goto _10
- }
-
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = 2.147483647e+09
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(44 /* X10 */))) = int64(i32(2147483647))
- return i32(0)
-
-_10:
- _j = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(0))))) - i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(0 /* X0 */))) = i32(1)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(1))
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(1))))) != i32(0) {
- goto _11
+ _33_nRight = _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X5))
+_80:
+ if _33_nLeft != _33_nRight {
+ _sqlite3ErrorMsg(tls, _pParse, str(43181))
}
- return i32(0)
-
-_11:
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = float64(20)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(44 /* X10 */))) = int64(i32(20))
- _j = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_seen)) + 4*uintptr(i32(1))))) - i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(0 /* X0 */))) = i32(2)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr(_pIdxInfo.X4)+8*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(1))
- return i32(0)
+ goto _31
+_31:
+ return func() int32 {
+ if (_pParse.X16) != 0 || (((*Xsqlite3)(_pParse.X0).X17) != 0) {
+ return i32(2)
+ }
+ return i32(0)
+ }()
}
-var _pragmaVtabBestIndexØ00__func__Ø000 [20]int8 // -
+var _resolveExprStepØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_pragmaVtabBestIndexØ00__func__Ø000[0], str(97932), 20)
-}
-
-func _pragmaVtabDisconnect(tls *crt.TLS, _pVtab *Xsqlite3_vtab) (r0 int32) { // sqlite3.c:115443:1
- var _pTab *XPragmaVtab // sqlite3.c:115444:14
- _ = _pTab
- _pTab = (*XPragmaVtab)(unsafe.Pointer(_pVtab))
- Xsqlite3_free(tls, (unsafe.Pointer)(_pTab))
- return i32(0)
+ crt.Xstrncpy(nil, &_resolveExprStepØ00__func__Ø000[0], str(95836), 16)
}
-func _pragmaVtabOpen(tls *crt.TLS, _pVtab *Xsqlite3_vtab, _ppCursor **Xsqlite3_file) (r0 int32) { // sqlite3.c:115493:1
- var _pCsr *XPragmaVtabCursor // sqlite3.c:115494:20
- _ = _pCsr
- _pCsr = (*XPragmaVtabCursor)(Xsqlite3_malloc(tls, int32(u32(24))))
- if _pCsr != nil {
- goto _0
+// Report an error that an expression is not valid for some set of
+// pNC->ncFlags values determined by validMask.
+func _notValid(tls *crt.TLS, _pParse *XParse, _pNC *XNameContext, _zMsg *int8, _validMask int32) {
+ var _1_zIn *int8
+ func() {
+ if (_validMask & i32(-39)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89884), unsafe.Pointer((*int8)(unsafe.Pointer(&_notValidØ00__func__Ø000))), unsafe.Pointer(str(95852)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32(_pNC.X7) & _validMask) == i32(0) {
+ goto _2
}
- return i32(7)
-
-_0:
- crt.Xmemset(tls, (unsafe.Pointer)(_pCsr), i32(0), u32(24))
- *(**Xsqlite3_vtab)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_file)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(0 /* X0 */))))) + uintptr(0 /* X0 */))))) = _pVtab
- *_ppCursor = (*Xsqlite3_file)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(0 /* X0 */)))
- return i32(0)
-}
-
-func _pragmaVtabClose(tls *crt.TLS, _cur *Xsqlite3_file) (r0 int32) { // sqlite3.c:115515:1
- var _pCsr *XPragmaVtabCursor // sqlite3.c:115516:20
- _ = _pCsr
- _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_cur))
- _pragmaVtabCursorClear(tls, _pCsr)
- Xsqlite3_free(tls, (unsafe.Pointer)(_pCsr))
- return i32(0)
-}
-
-func _pragmaVtabCursorClear(tls *crt.TLS, _pCsr *XPragmaVtabCursor) { // sqlite3.c:115504:1
- var _i int32 // sqlite3.c:115505:7
- _ = _i
- Xsqlite3_finalize(tls, _pCsr.X1)
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(4 /* X1 */))) = nil
- _i = i32(0)
-_0:
- if _i >= i32(2) {
- goto _3
+ _1_zIn = str(95903)
+ if (int32(_pNC.X7) & i32(32)) != 0 {
+ _1_zIn = str(95931)
+ goto _4
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_i)))))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_i))) = nil
- _i += 1
- goto _0
-
-_3:
+ if (int32(_pNC.X7) & i32(4)) != 0 {
+ _1_zIn = str(95949)
+ }
+_4:
+ _sqlite3ErrorMsg(tls, _pParse, str(95967), unsafe.Pointer(_zMsg), unsafe.Pointer(_1_zIn))
+_2:
}
-func _pragmaVtabFilter(tls *crt.TLS, _pVtabCursor *Xsqlite3_file, _idxNum int32, _idxStr *int8, _argc int32, _argv **XMem) (r0 int32) { // sqlite3.c:115541:1
- var _pCsr *XPragmaVtabCursor // sqlite3.c:115546:20
- _ = _pCsr
- var _pTab *XPragmaVtab // sqlite3.c:115547:14
- _ = _pTab
- var _rc int32 // sqlite3.c:115548:7
- _ = _rc
- var _i int32 // sqlite3.c:115549:7
- _ = _i
- var _j int32 // sqlite3.c:115549:10
- _ = _j
- var _acc XStrAccum // sqlite3.c:115550:12
- _ = _acc
- var _zSql *int8 // sqlite3.c:115551:8
- _ = _zSql
- _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
- _pTab = (*XPragmaVtab)(unsafe.Pointer((*Xsqlite3_vtab)(_pVtabCursor.X0)))
-
- _pragmaVtabCursorClear(tls, _pCsr)
- _j = func() int32 {
- if (int32((*XPragmaName)(_pTab.X2).X2) & i32(32)) != i32(0) {
- return i32(0)
+var _notValidØ00__func__Ø000 [9]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_notValidØ00__func__Ø000[0], str(95987), 9)
+}
+
+// Given the name of a column of the form X.Y.Z or Y.Z or just Z, look up
+// that name in the set of source tables in pSrcList and make the pExpr
+// expression node refer back to that source column. The following changes
+// are made to pExpr:
+//
+// pExpr->iDb Set the index in db->aDb[] of the database X
+// (even if X is implied).
+// pExpr->iTable Set to the cursor number for the table obtained
+// from pSrcList.
+// pExpr->pTab Points to the Table structure of X.Y (even if
+// X and/or Y are implied.)
+// pExpr->iColumn Set to the column number within the table.
+// pExpr->op Set to TK_COLUMN.
+// pExpr->pLeft Any expression this points to is deleted
+// pExpr->pRight Any expression this points to is deleted.
+//
+// The zDb variable is the name of the database (the "X"). This value may be
+// NULL meaning that name is of the form Y.Z or Z. Any available database
+// can be used. The zTable variable is the name of the table (the "Y"). This
+// value can be NULL if zDb is also NULL. If zTable is NULL it
+// means that the form of the name is Z and that columns from any table
+// can be used.
+//
+// If the name cannot be resolved unambiguously, leave an error message
+// in pParse and return WRC_Abort. Return WRC_Prune on success.
+func _lookupName(tls *crt.TLS, _pParse *XParse, _zDb *int8, _zTab *int8, _zCol *int8, _pNC *XNameContext, _pExpr *XExpr) (r0 int32) {
+ var _i, _j, _cnt, _cntTab, _nSubquery, _isTrigger, _9_hit, _21_op, _25_iCol, _45_n int32
+ var _13_zTabName, _36_zAs, _41_zErr *int8
+ var _db *Xsqlite3
+ var _pSchema *XSchema
+ var _pTab *XTable
+ var _6_pSrcList *XSrcList
+ var _pItem, _pMatch *TSrcList_item
+ var _6_pEList *XExprList
+ var _37_pOrig *XExpr
+ var _pCol *XColumn
+ var _pTopNC *XNameContext
+ _cnt = i32(0)
+ _cntTab = i32(0)
+ _nSubquery = i32(0)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pMatch = nil
+ _pTopNC = _pNC
+ _pSchema = nil
+ _isTrigger = i32(0)
+ _pTab = nil
+ func() {
+ if _pNC == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89548), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(95996)))
+ crt.X__builtin_abort(tls)
}
- return i32(1)
}()
- _i = i32(0)
-_2:
- if _i >= _argc {
- goto _5
- }
-
func() {
- if _j >= i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115558), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabFilterØ00__func__Ø000))), unsafe.Pointer(str(97952)))
+ if _zCol == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89549), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96000)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_j))) = Xsqlite3_mprintf(tls, str(24316), unsafe.Pointer(Xsqlite3_value_text(tls, *(**XMem)(unsafe.Pointer(uintptr((unsafe.Pointer)(_argv)) + 4*uintptr(_i))))))
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_j)))) != nil {
- goto _8
+ func() {
+ if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89550), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96005)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = i32(-1)
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = nil
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(131072))
+ sink5 = *p
}
- return i32(7)
-
-_8:
- *func() *int32 { _i += 1; return &_j }() += 1
- goto _2
-
-_5:
- _sqlite3StrAccumInit(tls, &_acc, nil, nil, i32(0), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pTab.X1)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(1)))))
- _sqlite3StrAccumAppendAll(tls, &_acc, str(97980))
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(1))))) == nil {
- goto _9
+ if _zDb == nil {
+ goto _6
}
-
- _sqlite3XPrintf(tls, &_acc, str(97988), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(1))))))
-_9:
- _sqlite3StrAccumAppendAll(tls, &_acc, (*XPragmaName)(_pTab.X2).X0)
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(0))))) == nil {
- goto _10
+ if (int32(_pNC.X7) & i32(6)) != i32(0) {
+ _zDb = nil
+ goto _8
}
-
- _sqlite3XPrintf(tls, &_acc, str(97992), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(i32(0))))))
-_10:
- _zSql = _sqlite3StrAccumFinish(tls, &_acc)
- if _zSql != nil {
- goto _11
+ _i = i32(0)
+_9:
+ if _i >= (_db.X5) {
+ goto _12
}
- return i32(7)
-
-_11:
- _rc = Xsqlite3_prepare_v2(tls, (*Xsqlite3)(_pTab.X1), _zSql, i32(-1), (*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(4 /* X1 */))), nil)
- Xsqlite3_free(tls, (unsafe.Pointer)(_zSql))
- if _rc == i32(0) {
+ func() {
+ if ((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89572), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96054)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3StrICmp(tls, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X0, _zDb) == i32(0) {
+ _pSchema = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X4)
goto _12
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Xsqlite3_vtab)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab))+uintptr(0 /* X0 */))))) + uintptr(8 /* X2 */))) = Xsqlite3_mprintf(tls, str(24316), unsafe.Pointer(Xsqlite3_errmsg(tls, (*Xsqlite3)(_pTab.X1))))
- return _rc
-
+ _i += 1
+ goto _9
_12:
- return _pragmaVtabNext(tls, _pVtabCursor)
-}
-
-var _pragmaVtabFilterØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pragmaVtabFilterØ00__func__Ø000[0], str(97996), 17)
-}
-
-func _pragmaVtabNext(tls *crt.TLS, _pVtabCursor *Xsqlite3_file) (r0 int32) { // sqlite3.c:115523:1
- var _pCsr *XPragmaVtabCursor // sqlite3.c:115524:20
- _ = _pCsr
- var _rc int32 // sqlite3.c:115525:7
- _ = _rc
- _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
- _rc = i32(0)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(8 /* X2 */))) += 1
+_8:
+_6:
func() {
- if (_pCsr.X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(115529), unsafe.Pointer((*int8)(unsafe.Pointer(&_pragmaVtabNextØ00__func__Ø000))), unsafe.Pointer(str(98016)))
+ if _pNC == nil || _cnt != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89582), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96074)))
crt.X__builtin_abort(tls)
}
}()
- if i32(100) == Xsqlite3_step(tls, _pCsr.X1) {
- goto _2
+_19:
+ _6_pSrcList = (*XSrcList)(_pNC.X1)
+ if _6_pSrcList == nil {
+ goto _20
}
-
- _rc = Xsqlite3_finalize(tls, _pCsr.X1)
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr)) + uintptr(4 /* X1 */))) = nil
- _pragmaVtabCursorClear(tls, _pCsr)
-_2:
- return _rc
-}
-
-var _pragmaVtabNextØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pragmaVtabNextØ00__func__Ø000[0], str(98032), 15)
-}
-
-func _pragmaVtabEof(tls *crt.TLS, _pVtabCursor *Xsqlite3_file) (r0 int32) { // sqlite3.c:115587:1
- var _pCsr *XPragmaVtabCursor // sqlite3.c:115588:20
- _ = _pCsr
- _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
- return bool2int(_pCsr.X1 == nil)
-}
-
-func _pragmaVtabColumn(tls *crt.TLS, _pVtabCursor *Xsqlite3_file, _ctx *Xsqlite3_context, _i int32) (r0 int32) { // sqlite3.c:115595:1
- var _pCsr *XPragmaVtabCursor // sqlite3.c:115600:20
- _ = _pCsr
- var _pTab *XPragmaVtab // sqlite3.c:115601:14
- _ = _pTab
- _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
- _pTab = (*XPragmaVtab)(unsafe.Pointer((*Xsqlite3_vtab)(_pVtabCursor.X0)))
- if _i >= int32(_pTab.X4) {
- goto _0
+ *func() **TSrcList_item { _i = i32(0); return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pSrcList)) + uintptr(8 /* X2 */)))))
+_21:
+ if _i >= (_6_pSrcList.X0) {
+ goto _24
}
-
- Xsqlite3_result_value(tls, _ctx, Xsqlite3_column_value(tls, _pCsr.X1, _i))
- goto _1
-
-_0:
- Xsqlite3_result_text(tls, _ctx, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCsr))+uintptr(16 /* X3 */))))) + 4*uintptr(_i-int32(_pTab.X4)))), i32(-1), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
-_1:
- return i32(0)
-}
-
-func Xsqlite3_result_value(tls *crt.TLS, _pCtx *Xsqlite3_context, _pValue *XMem) { // sqlite3.c:76536:12
+ _pTab = (*XTable)(_pItem.X4)
func() {
- if Xsqlite3_mutex_held(tls, (*Xsqlite3_mutex)((*Xsqlite3)((*XMem)(_pCtx.X0).X9).X3)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(76537), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3_result_valueØ00__func__Ø000))), unsafe.Pointer(str(5084)))
+ if _pTab == nil || (_pTab.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89590), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96088)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeMemCopy(tls, (*XMem)(_pCtx.X0), _pValue)
-}
-
-var _sqlite3_result_valueØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3_result_valueØ00__func__Ø000[0], str(98048), 21)
-}
-
-func _pragmaVtabRowid(tls *crt.TLS, _pVtabCursor *Xsqlite3_file, _p *int64) (r0 int32) { // sqlite3.c:115613:1
- var _pCsr *XPragmaVtabCursor // sqlite3.c:115614:20
- _ = _pCsr
- _pCsr = (*XPragmaVtabCursor)(unsafe.Pointer(_pVtabCursor))
- *_p = _pCsr.X2
- return i32(0)
-}
-
-func _sqlite3VtabEponymousTableInit(tls *crt.TLS, _pParse *XParse, _pMod *XModule) (r0 int32) { // sqlite3.c:126121:1
- var _pModule *Xsqlite3_module // sqlite3.c:126122:24
- _ = _pModule
- var _pTab *XTable // sqlite3.c:126123:9
- _ = _pTab
- var _zErr *int8 // sqlite3.c:126124:8
- _ = _zErr
- var _rc int32 // sqlite3.c:126125:7
- _ = _rc
- var _db *Xsqlite3 // sqlite3.c:126126:11
- _ = _db
- _pModule = (*Xsqlite3_module)(_pMod.X0)
- _zErr = nil
- _db = (*Xsqlite3)(_pParse.X0)
- if (*XTable)(_pMod.X4) == nil {
- goto _0
+ func() {
+ if int32(_pTab.X11) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89591), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96114)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (*XSelect)(_pItem.X5) == nil || (((*XSelect)(_pItem.X5).X3)&uint32(i32(2048))) == uint32(i32(0)) {
+ goto _31
}
- return i32(1)
-
-_0:
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
- }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
- }{(_pModule.X1)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
- }{nil})) || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
- }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
- }{(_pModule.X1)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32
- }{(*(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
- }{(_pModule.X2)})))})) {
- goto _2
+ _9_hit = i32(0)
+ _6_pEList = (*XExprList)((*XSelect)(_pItem.X5).X0)
+ _j = i32(0)
+_32:
+ if _j >= (_6_pEList.X0) {
+ goto _35
}
- return i32(0)
-
-_2:
- _pTab = (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80))))
- if _pTab != nil {
- goto _3
+ if _sqlite3MatchSpanName(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X2, _zCol, _zTab, _zDb) != 0 {
+ _cnt += 1
+ _cntTab = i32(2)
+ _pMatch = _pItem
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(_j)
+ _9_hit = i32(1)
}
- return i32(0)
-
-_3:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(0 /* X0 */))) = _sqlite3DbStrDup(tls, _db, _pMod.X1)
- if (_pTab.X0) != nil {
- goto _4
+ _j += 1
+ goto _32
+_35:
+ if _9_hit != 0 || (_zTab == nil) {
+ goto _22
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pTab))
- return i32(0)
-
-_4:
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMod)) + uintptr(16 /* X4 */))))) = _pTab
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(32 /* X8 */))) = uint32(i32(1))
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(72 /* X20 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(i32(0)))).X4)
+_31:
+ if (_zDb != nil) && ((*XSchema)(_pTab.X20) != _pSchema) {
+ goto _22
+ }
+ if _zTab == nil {
+ goto _41
+ }
+ _13_zTabName = func() *int8 {
+ if (_pItem.X3) != nil {
+ return (_pItem.X3)
+ }
+ return (_pTab.X0)
+ }()
func() {
- if (_pTab.X16) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126139), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabEponymousTableInitØ00__func__Ø000))), unsafe.Pointer(str(98072)))
+ if _13_zTabName == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89611), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96127)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
- _addModuleArgument(tls, _db, _pTab, _sqlite3DbStrDup(tls, _db, _pTab.X0))
- _addModuleArgument(tls, _db, _pTab, nil)
- _addModuleArgument(tls, _db, _pTab, _sqlite3DbStrDup(tls, _db, _pTab.X0))
- _rc = _vtabCallConstructor(tls, _db, _pTab, _pMod, *(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
- }{(_pModule.X2)})), &_zErr)
- if _rc == 0 {
- goto _7
+ if _sqlite3StrICmp(tls, _13_zTabName, _zTab) != i32(0) {
+ goto _22
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(24316), unsafe.Pointer(_zErr))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zErr))
- _sqlite3VtabEponymousTableClear(tls, _db, _pMod)
- return i32(0)
-
-_7:
- return i32(1)
-}
-
-var _sqlite3VtabEponymousTableInitØ00__func__Ø000 [30]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabEponymousTableInitØ00__func__Ø000[0], str(98092), 30)
-}
-
-func _addModuleArgument(tls *crt.TLS, _db *Xsqlite3, _pTable *XTable, _zArg *int8) { // sqlite3.c:125290:1
- var _nBytes int32 // sqlite3.c:125291:7
- _ = _nBytes
- var _azModuleArg **int8 // sqlite3.c:125292:8
- _ = _azModuleArg
- var _2_i int32 // sqlite3.c:125297:9
- _ = _2_i
- _nBytes = int32(u32(4) * uint32(i32(2)+(_pTable.X16)))
- _azModuleArg = (**int8)(_sqlite3DbRealloc(tls, _db, (unsafe.Pointer)(_pTable.X17), uint64(_nBytes)))
- if _azModuleArg != nil {
- goto _0
+_41:
+ if i32(0) == postInc1(&_cntTab, int32(1)) {
+ _pMatch = _pItem
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zArg))
- goto _1
-
-_0:
- _2_i = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(56 /* X16 */))), int32(1))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azModuleArg)) + 4*uintptr(_2_i))) = _zArg
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_azModuleArg)) + 4*uintptr(_2_i+i32(1)))) = nil
- *(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(60 /* X17 */))) = _azModuleArg
-_1:
-}
-
-func _sqlite3ViewGetColumnNames(tls *crt.TLS, _pParse *XParse, _pTable *XTable) (r0 int32) { // sqlite3.c:101843:1
- var _pSelTab *XTable // sqlite3.c:101844:9
- _ = _pSelTab
- var _pSel *XSelect // sqlite3.c:101845:10
- _ = _pSel
- var _nErr int32 // sqlite3.c:101846:7
- _ = _nErr
- var _n int32 // sqlite3.c:101847:7
- _ = _n
- var _db *Xsqlite3 // sqlite3.c:101848:11
- _ = _db
- var _xAuth func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32 // sqlite3.c:101850:17
- _ = _xAuth
- _nErr = i32(0)
- _db = (*Xsqlite3)(_pParse.X0)
+ *func() **XColumn { _j = i32(0); return &_pCol }() = (*XColumn)(_pTab.X1)
+_48:
+ if _j >= int32(_pTab.X11) {
+ goto _51
+ }
+ if _sqlite3StrICmp(tls, _pCol.X0, _zCol) != i32(0) {
+ goto _52
+ }
+ if _cnt != i32(1) {
+ goto _53
+ }
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X0) & i32(4)) != 0 {
+ goto _49
+ }
+ if _nameInUsingClause(tls, (*XIdList)(_pItem.X13), _zCol) != 0 {
+ goto _49
+ }
+_53:
+ _cnt += 1
+ _pMatch = _pItem
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(func() int32 {
+ if _j == int32(_pTab.X10) {
+ return i32(-1)
+ }
+ return int32(int16(_j))
+ }())
+ goto _51
+_52:
+_49:
+ *(*uintptr)(unsafe.Pointer(func() **XColumn { _j += 1; return &_pCol }())) += uintptr(16)
+ goto _48
+_51:
+_22:
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pItem }())) += uintptr(68)
+ goto _21
+_24:
+ if _pMatch == nil {
+ goto _58
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _pMatch.X11
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = (*XTable)(_pMatch.X4)
func() {
- if _pTable == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(98124)))
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMatch))+uintptr(36 /* X9 */))).X0) & i32(16)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89641), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96139)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3VtabCallConnect(tls, _pParse, _pTable) == 0 {
- goto _2
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMatch))+uintptr(36 /* X9 */))).X0) & i32(8)) != i32(0) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1048576))
+ sink5 = *p
+ }
}
- return i32(1)
-
-_2:
- if (_pTable.X16) == 0 {
- goto _3
+ _pSchema = (*XSchema)((*XTable)(_pExpr.X14).X20)
+_58:
+_20:
+ if _zDb != nil || _zTab == nil || _cntTab != i32(0) || (*XTable)(_pParse.X40) == nil {
+ goto _65
}
- return i32(0)
-
-_3:
- if int32(_pTable.X11) <= i32(0) {
- goto _4
+ _21_op = int32(_pParse.X45)
+ func() {
+ if _21_op != i32(109) && _21_op != i32(110) && _21_op != i32(108) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89655), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96175)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_21_op != i32(109)) && (_sqlite3StrICmp(tls, str(43173), _zTab) == i32(0)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = i32(1)
+ _pTab = (*XTable)(_pParse.X40)
+ goto _72
}
- return i32(0)
-
-_4:
- if int32(_pTable.X11) >= i32(0) {
- goto _5
+ if (_21_op != i32(108)) && (_sqlite3StrICmp(tls, str(43177), _zTab) == i32(0)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = i32(0)
+ _pTab = (*XTable)(_pParse.X40)
+ goto _75
+ }
+ _pTab = nil
+_75:
+_72:
+ if _pTab == nil {
+ goto _76
+ }
+ _pSchema = (*XSchema)(_pTab.X20)
+ _cntTab += 1
+ *func() **XColumn { _25_iCol = i32(0); return &_pCol }() = (*XColumn)(_pTab.X1)
+_77:
+ if _25_iCol >= int32(_pTab.X11) {
+ goto _80
+ }
+ if _sqlite3StrICmp(tls, _pCol.X0, _zCol) != i32(0) {
+ goto _81
+ }
+ if _25_iCol == int32(_pTab.X10) {
+ _25_iCol = i32(-1)
+ }
+ goto _80
+_81:
+ *(*uintptr)(unsafe.Pointer(func() **XColumn { _25_iCol += 1; return &_pCol }())) += uintptr(16)
+ goto _77
+_80:
+ if ((_25_iCol >= int32(_pTab.X11)) && _sqlite3IsRowid(tls, _zCol) != 0) && (((_pTab.X9) & uint32(i32(64))) == uint32(i32(0))) {
+ _25_iCol = i32(-1)
+ }
+ if _25_iCol >= int32(_pTab.X11) {
+ goto _86
+ }
+ _cnt += 1
+ if _25_iCol < i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = int8(i32(68))
+ goto _88
+ }
+ if (_pExpr.X8) == i32(0) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(148 /* X43 */)))
+ *p = (*p) | func() uint32 {
+ if _25_iCol >= i32(32) {
+ return u32(4294967295)
+ }
+ return (u32(1) << uint(_25_iCol))
+ }()
+ sink5 = *p
+ }
+ goto _92
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(152 /* X44 */)))
+ *p = (*p) | func() uint32 {
+ if _25_iCol >= i32(32) {
+ return u32(4294967295)
+ }
+ return (u32(1) << uint(_25_iCol))
+ }()
+ sink5 = *p
+ }
+_92:
+_88:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(_25_iCol)
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = _pTab
+ _isTrigger = i32(1)
+_86:
+_76:
+_65:
+ if (((((_cnt == i32(0)) && (_cntTab == i32(1))) && (_pMatch != nil)) && ((int32(_pNC.X7) & i32(32)) == i32(0))) && _sqlite3IsRowid(tls, _zCol) != 0) && ((((*XTable)(_pMatch.X4).X9) & uint32(i32(64))) == uint32(i32(0))) {
+ _cnt = i32(1)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(i32(-1))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = int8(i32(68))
+ }
+ if store42(&_6_pEList, (*XExprList)(_pNC.X2)) == nil || _zTab != nil || _cnt != i32(0) {
+ goto _103
+ }
+ _j = i32(0)
+_104:
+ if _j >= (_6_pEList.X0) {
+ goto _107
+ }
+ _36_zAs = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_j))).X1
+ if _36_zAs == nil || _sqlite3StrICmp(tls, _36_zAs, _zCol) != i32(0) {
+ goto _109
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(98132), unsafe.Pointer(_pTable.X0))
- return i32(1)
-
-_5:
func() {
- if int32(_pTable.X11) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(98164)))
+ if (*XExpr)(_pExpr.X4) != nil || (*XExpr)(_pExpr.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89744), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96223)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XSelect)(_pTable.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101896), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(98180)))
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89745), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96259)))
crt.X__builtin_abort(tls)
}
}()
- _pSel = _sqlite3SelectDup(tls, _db, (*XSelect)(_pTable.X3), i32(0))
- if _pSel == nil {
- goto _10
- }
-
- _n = _pParse.X17
- _sqlite3SrcListAssignCursors(tls, _pParse, (*XSrcList)(_pSel.X8))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(42 /* X11 */))) = int16(i32(-1))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) += 1
- _xAuth = _db.X59
- *(*func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(292 /* X59 */))) = nil
- _pSelTab = _sqlite3ResultSetOfSelect(tls, _pParse, _pSel)
- *(*func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(292 /* X59 */))) = _xAuth
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = _n
- if (*XExprList)(_pTable.X6) == nil {
- goto _11
- }
-
- _sqlite3ColumnsFromExprList(tls, _pParse, (*XExprList)(_pTable.X6), (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(42 /* X11 */))), (**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable))+uintptr(4 /* X1 */))))))
- if int32(_db.X17) != i32(0) || (_pParse.X16) != i32(0) || int32(_pTable.X11) != ((*XExprList)(_pSel.X0).X0) {
- goto _14
+ func() {
+ if (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89746), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96277)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _37_pOrig = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_j))).X0)
+ if ((int32(_pNC.X7) & i32(1)) == i32(0)) && (((_37_pOrig.X2) & uint32(i32(2))) != uint32(i32(0))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(96297), unsafe.Pointer(_36_zAs))
+ return i32(2)
}
-
- _sqlite3SelectAddColumnTypeAndCollation(tls, _pParse, _pTable, _pSel)
-_14:
- goto _15
-
-_11:
- if _pSelTab == nil {
- goto _16
+ if _sqlite3ExprVectorSize(tls, _37_pOrig) != i32(1) {
+ _sqlite3ErrorMsg(tls, _pParse, str(43181))
+ return i32(2)
}
-
+ _resolveAlias(tls, _pParse, _6_pEList, _j, _pExpr, str(0), _nSubquery)
+ _cnt = i32(1)
+ _pMatch = nil
func() {
- if (*XColumn)(_pTable.X1) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101931), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(98196)))
+ if _zTab != nil || _zDb != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89759), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96328)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(42 /* X11 */))) = _pSelTab.X11
- *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(4 /* X1 */))))) = (*XColumn)(_pSelTab.X1)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelTab)) + uintptr(42 /* X11 */))) = int16(i32(0))
- *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelTab)) + uintptr(4 /* X1 */))))) = nil
+ goto _lookupname_end
+_109:
+ _j += 1
+ goto _104
+_107:
+_103:
+ if _cnt != 0 {
+ goto _124
+ }
+ _pNC = (*XNameContext)(_pNC.X4)
+ _nSubquery += 1
+ if _pNC != nil {
+ goto _19
+ }
+_124:
+ if ((_cnt == i32(0)) && (_zTab == nil)) && (((_pExpr.X2) & uint32(i32(64))) != uint32(i32(0))) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(97))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = nil
+ return i32(1)
+ }
+ if _cnt == i32(1) {
+ goto _128
+ }
+ _41_zErr = func() *int8 {
+ if _cnt == i32(0) {
+ return str(96346)
+ }
+ return str(96361)
+ }()
+ if _zDb != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(96383), unsafe.Pointer(_41_zErr), unsafe.Pointer(_zDb), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
+ goto _132
+ }
+ if _zTab != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(49822), unsafe.Pointer(_41_zErr), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
+ goto _134
+ }
+ _sqlite3ErrorMsg(tls, _pParse, str(49832), unsafe.Pointer(_41_zErr), unsafe.Pointer(_zCol))
+_134:
+_132:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTopNC)) + uintptr(24 /* X6 */))) += 1
+_128:
+ if int32(_pExpr.X9) < i32(0) || _pMatch == nil {
+ goto _136
+ }
+ _45_n = int32(_pExpr.X9)
+ if _45_n >= i32(64) {
+ _45_n = i32(63)
+ }
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pTable.X20)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101936), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ViewGetColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(98212)))
+ if (_pMatch.X11) != (_pExpr.X8) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89820), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96396)))
crt.X__builtin_abort(tls)
}
}()
- goto _21
-
-_16:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(42 /* X11 */))) = int16(i32(0))
- _nErr += 1
-_21:
-_15:
- _sqlite3DeleteTable(tls, _db, _pSelTab)
- _sqlite3SelectDelete(tls, _db, _pSel)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) -= 1
- goto _22
-
-_10:
- _nErr += 1
-_22:
{
- p := (*uint16)(unsafe.Pointer(uintptr(_pTable.X20) + uintptr(78 /* X9 */)))
- *p = uint16(int32(*p) | i32(2))
- sink12 = *p
+ p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMatch)) + uintptr(52 /* X14 */)))
+ *p = (*p) | (u64(1) << uint(_45_n))
+ sink17 = *p
+ }
+_136:
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_pExpr.X4))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(12 /* X4 */))))) = nil
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_pExpr.X5))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(16 /* X5 */))))) = nil
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(func() int32 {
+ if _isTrigger != 0 {
+ return i32(61)
+ }
+ return i32(152)
+ }())
+_lookupname_end:
+ if _cnt != i32(1) {
+ goto _142
}
- return _nErr
-}
-
-var _sqlite3ViewGetColumnNamesØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ViewGetColumnNamesØ00__func__Ø000[0], str(98260), 26)
-}
-
-func _sqlite3VtabCallConnect(tls *crt.TLS, _pParse *XParse, _pTab *XTable) (r0 int32) { // sqlite3.c:125610:1
- var _db *Xsqlite3 // sqlite3.c:125611:11
- _ = _db
- var _zMod *int8 // sqlite3.c:125612:14
- _ = _zMod
- var _pMod *XModule // sqlite3.c:125613:10
- _ = _pMod
- var _rc int32 // sqlite3.c:125614:7
- _ = _rc
- var _2_zModule *int8 // sqlite3.c:125626:16
- _ = _2_zModule
- var _3_zErr *int8 // sqlite3.c:125630:10
- _ = _3_zErr
- _db = (*Xsqlite3)(_pParse.X0)
func() {
- if _pTab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(125616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabCallConnectØ00__func__Ø000))), unsafe.Pointer(str(98288)))
+ if _pNC == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89833), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(95387)))
crt.X__builtin_abort(tls)
}
}()
- if (_pTab.X16) != 0 && _sqlite3GetVTable(tls, _db, _pTab) == nil {
- goto _3
- }
- return i32(0)
-
-_3:
- _zMod = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(0))))
- _pMod = (*XModule)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(316 /* X65 */))), _zMod))
- if _pMod != nil {
- goto _4
+ if ((_pExpr.X2) & uint32(i32(4194304))) == uint32(i32(0)) {
+ _sqlite3AuthRead(tls, _pParse, _pExpr, _pSchema, (*XSrcList)(_pNC.X1))
}
-
- _2_zModule = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X17)) + 4*uintptr(i32(0))))
- _sqlite3ErrorMsg(tls, _pParse, str(95444), unsafe.Pointer(_2_zModule))
- _rc = i32(1)
- goto _5
-
-_4:
- _3_zErr = nil
- _rc = _vtabCallConstructor(tls, _db, _pTab, _pMod, *(*func(*crt.TLS, *Xsqlite3, unsafe.Pointer, int32, **int8, **Xsqlite3_vtab, **int8) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32, **int8, *unsafe.Pointer, **int8) int32
- }{((*Xsqlite3_module)(_pMod.X0).X2)})), &_3_zErr)
- if _rc == i32(0) {
- goto _6
+_146:
+ func() {
+ if _pTopNC == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89840), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(96427)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTopNC)) + uintptr(20 /* X5 */))) += 1
+ if _pTopNC == _pNC {
+ goto _148
}
+ _pTopNC = (*XNameContext)(_pTopNC.X4)
+ goto _146
+_148:
+ return i32(1)
- _sqlite3ErrorMsg(tls, _pParse, str(24316), unsafe.Pointer(_3_zErr))
-_6:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_3_zErr))
-_5:
- return _rc
+_142:
+ return i32(2)
}
-var _sqlite3VtabCallConnectØ00__func__Ø000 [23]int8 // -
+var _lookupNameØ00__func__Ø000 [11]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabCallConnectØ00__func__Ø000[0], str(98296), 23)
+ crt.Xstrncpy(nil, &_lookupNameØ00__func__Ø000[0], str(96437), 11)
}
-func _sqlite3ResultSetOfSelect(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) (r0 *XTable) { // sqlite3.c:118322:1
- var _pTab *XTable // sqlite3.c:118323:9
- _ = _pTab
- var _db *Xsqlite3 // sqlite3.c:118324:11
- _ = _db
- var _savedFlags int32 // sqlite3.c:118325:7
- _ = _savedFlags
- _db = (*Xsqlite3)(_pParse.X0)
- _savedFlags = _db.X6
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) & i32(-5)
- sink1 = *p
- }
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(64)
- sink1 = *p
- }
- _sqlite3SelectPrep(tls, _pParse, _pSelect, nil)
- if (_pParse.X16) == 0 {
+// Return TRUE if the name zCol occurs anywhere in the USING clause.
+//
+// Return FALSE if the USING clause is NULL or if it does not contain
+// zCol.
+func _nameInUsingClause(tls *crt.TLS, _pUsing *XIdList, _zCol *int8) (r0 int32) {
+ var _1_k int32
+ if _pUsing == nil {
goto _0
}
- return nil
-
-_0:
+ _1_k = i32(0)
_1:
- if (*XSelect)(_pSelect.X13) == nil {
- goto _2
+ if _1_k >= (_pUsing.X1) {
+ goto _4
}
-
- _pSelect = (*XSelect)(_pSelect.X13)
+ if _sqlite3StrICmp(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pUsing.X0)+8*uintptr(_1_k))).X0, _zCol) == i32(0) {
+ return i32(1)
+ }
+ _1_k += 1
goto _1
+_4:
+_0:
+ return i32(0)
+}
-_2:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */))) = _savedFlags
- _pTab = (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80))))
- if _pTab != nil {
- goto _3
+// Return TRUE if the given string is a row-id column name.
+func _sqlite3IsRowid(tls *crt.TLS, _z *int8) (r0 int32) {
+ if _sqlite3StrICmp(tls, _z, str(96448)) == i32(0) {
+ return i32(1)
}
- return nil
+ if _sqlite3StrICmp(tls, _z, str(96456)) == i32(0) {
+ return i32(1)
+ }
+ if _sqlite3StrICmp(tls, _z, str(96462)) == i32(0) {
+ return i32(1)
+ }
+ return i32(0)
+}
-_3:
+// Turn the pExpr expression into an alias for the iCol-th column of the
+// result set in pEList.
+//
+// If the reference is followed by a COLLATE operator, then make sure
+// the COLLATE operator is preserved. For example:
+//
+// SELECT a+b, c+d FROM t1 ORDER BY 1 COLLATE nocase;
+//
+// Should be transformed into:
+//
+// SELECT a+b, c+d FROM t1 ORDER BY (a+b) COLLATE nocase;
+//
+// The nSubquery parameter specifies how many levels of subquery the
+// alias is removed from the original expression. The usual value is
+// zero but it might be more if the alias is contained within a subquery
+// of the original expression. The Expr.op2 field of TK_AGG_FUNCTION
+// structures must be increased by the nSubquery amount.
+func _resolveAlias(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _iCol int32, _pExpr *XExpr, _zType *int8, _nSubquery int32) {
+ var _db *Xsqlite3
+ var _pOrig, _pDup *XExpr
func() {
- if ((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(252 /* X58 */))).X0) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118340), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResultSetOfSelectØ00__func__Ø000))), unsafe.Pointer(str(98320)))
+ if _iCol < i32(0) || _iCol >= (_pEList.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89423), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveAliasØ00__func__Ø000))), unsafe.Pointer(str(96466)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(32 /* X8 */))) = uint32(i32(1))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(0 /* X0 */))) = nil
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(44 /* X12 */))) = int16(i32(200))
+ _pOrig = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_iCol))).X0)
func() {
- if i32(200) != int32(_sqlite3LogEst(tls, uint64(i32(1048576)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118343), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResultSetOfSelectØ00__func__Ø000))), unsafe.Pointer(str(49608)))
+ if _pOrig == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89425), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveAliasØ00__func__Ø000))), unsafe.Pointer(str(96496)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3ColumnsFromExprList(tls, _pParse, (*XExprList)(_pSelect.X0), (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab))+uintptr(42 /* X11 */))), (**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab))+uintptr(4 /* X1 */))))))
- _sqlite3SelectAddColumnTypeAndCollation(tls, _pParse, _pTab, _pSelect)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
- if (_db.X17) == 0 {
- goto _8
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pDup = _sqlite3ExprDup(tls, _db, _pOrig, i32(0))
+ if _pDup == nil {
+ return
}
-
- _sqlite3DeleteTable(tls, _db, _pTab)
- return nil
-
-_8:
- return _pTab
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zType)) + 1*uintptr(i32(0))))) != i32(71) {
+ _incrAggFunctionDepth(tls, _pDup, _nSubquery)
+ }
+ if int32(_pExpr.X0) == i32(94) {
+ _pDup = _sqlite3ExprAddCollateString(tls, _pParse, _pDup, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDup)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(4194304))
+ sink5 = *p
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(32768))
+ sink5 = *p
+ }
+ _sqlite3ExprDelete(tls, _db, _pExpr)
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pExpr), (unsafe.Pointer)(_pDup), u32(48))
+ if (((_pExpr.X2) & uint32(i32(1024))) == uint32(i32(0))) && ((*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))) != nil) {
+ func() {
+ if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89446), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveAliasØ00__func__Ø000))), unsafe.Pointer(str(96505)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))) = _sqlite3DbStrDup(tls, _db, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(65536))
+ sink5 = *p
+ }
+ }
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pDup))
}
-var _sqlite3ResultSetOfSelectØ00__func__Ø000 [25]int8 // -
+var _resolveAliasØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ResultSetOfSelectØ00__func__Ø000[0], str(98344), 25)
+ crt.Xstrncpy(nil, &_resolveAliasØ00__func__Ø000[0], str(96551), 13)
}
-func _sqlite3SelectAddColumnTypeAndCollation(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pSelect *XSelect) { // sqlite3.c:118273:1
- var _db *Xsqlite3 // sqlite3.c:118278:11
- _ = _db
- var _sNC XNameContext // sqlite3.c:118279:15
- _ = _sNC
- var _pCol *XColumn // sqlite3.c:118280:10
- _ = _pCol
- var _pColl *XCollSeq // sqlite3.c:118281:11
- _ = _pColl
- var _i int32 // sqlite3.c:118282:7
- _ = _i
- var _p *XExpr // sqlite3.c:118283:8
- _ = _p
- var _a *TExprList_item // sqlite3.c:118284:24
- _ = _a
- var _szAll uint64 // sqlite3.c:118285:7
- _ = _szAll
- var _1_zType *int8 // sqlite3.c:118295:16
- _ = _1_zType
- var _1_n int32 // sqlite3.c:118296:9
- _ = _1_n
- var _1_m int32 // sqlite3.c:118296:12
- _ = _1_m
- _db = (*Xsqlite3)(_pParse.X0)
- _szAll = u64(0)
- func() {
- if _pSelect == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118287), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000))), unsafe.Pointer(str(98372)))
- crt.X__builtin_abort(tls)
+func _incrAggFunctionDepth(tls *crt.TLS, _pExpr *XExpr, _N int32) {
+ var _1_w XWalker
+ if _N > i32(0) {
+ crt.Xmemset(tls, (unsafe.Pointer)(&_1_w), i32(0), u32(28))
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_w)) + uintptr(4 /* X1 */))))) = _incrAggDepth
+ *(*int32)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_w)) + uintptr(24 /* X6 */))))) = _N
+ _sqlite3WalkExpr(tls, &_1_w, _pExpr)
+ }
+ _ = _1_w
+}
+
+// Walk the expression tree pExpr and increase the aggregate function
+// depth (the Expr.op2 field) by N on every TK_AGG_FUNCTION node.
+// This needs to occur when copying a TK_AGG_FUNCTION node from an
+// outer query into an inner subquery.
+//
+// incrAggFunctionDepth(pExpr,n) is the main routine. incrAggDepth(..)
+// is a helper function - a callback for the tree walker.
+func _incrAggDepth(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ if int32(_pExpr.X0) == i32(153) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(38 /* X12 */)))
+ *p = uint8(int32(*p) + (*(*int32)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */)))))))
+ sink2 = *p
}
- }()
+ }
+ return i32(0)
+}
+
+func _sqlite3ExprAddCollateString(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _zC *int8) (r0 *XExpr) {
+ var _s XToken
func() {
- if ((_pSelect.X3) & uint32(i32(4))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118288), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000))), unsafe.Pointer(str(98384)))
+ if _zC == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90997), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAddCollateStringØ00__func__Ø000))), unsafe.Pointer(str(96564)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if int32(_pTab.X11) != ((*XExprList)(_pSelect.X0).X0) && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118289), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000))), unsafe.Pointer(str(98424)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (_db.X17) == 0 {
- goto _7
- }
- return
-
-_7:
- crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_pSelect.X8)
- _a = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSelect.X0) + uintptr(8 /* X2 */)))))
- *func() **XColumn { _i = i32(0); return &_pCol }() = (*XColumn)(_pTab.X1)
-_8:
- if _i >= int32(_pTab.X11) {
- goto _11
- }
-
- _p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + 20*uintptr(_i))).X0)
- _1_zType = _columnTypeImpl(tls, &_sNC, _p, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol))+uintptr(14 /* X5 */))))
- {
- p := &_szAll
- *p = (*p) + uint64(_pCol.X5)
- sink15 = *p
- }
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = _sqlite3ExprAffinity(tls, _p)
- if _1_zType == nil || store1(&_1_m, _sqlite3Strlen30(tls, _1_zType)) <= i32(0) {
- goto _13
- }
-
- _1_n = _sqlite3Strlen30(tls, _pCol.X0)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(0 /* X0 */))) = (*int8)(_sqlite3DbReallocOrFree(tls, _db, (unsafe.Pointer)(_pCol.X0), uint64((_1_n+_1_m)+i32(2))))
- if (_pCol.X0) == nil {
- goto _14
- }
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol.X0))+1*uintptr(_1_n+i32(1))))), (unsafe.Pointer)(_1_zType), uint32(_1_m+i32(1)))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
- *p = uint8(int32(*p) | i32(4))
- sink2 = *p
- }
-_14:
-_13:
- if int32(_pCol.X4) != i32(0) {
- goto _15
- }
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = int8(i32(65))
-_15:
- _pColl = _sqlite3ExprCollSeq(tls, _pParse, _p)
- if _pColl == nil || (_pCol.X2) != nil {
- goto _17
- }
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, _pColl.X0)
-_17:
- *(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
- goto _8
+ _sqlite3TokenInit(tls, &_s, _zC)
+ return _sqlite3ExprAddCollateToken(tls, _pParse, _pExpr, &_s, i32(0))
-_11:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(46 /* X13 */))) = _sqlite3LogEst(tls, _szAll*uint64(i32(4)))
+ _ = _s
+ panic(0)
}
-var _sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000 [39]int8 // -
+var _sqlite3ExprAddCollateStringØ00__func__Ø000 [28]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3SelectAddColumnTypeAndCollationØ00__func__Ø000[0], str(98480), 39)
+ crt.Xstrncpy(nil, &_sqlite3ExprAddCollateStringØ00__func__Ø000[0], str(96570), 28)
}
-func _columnTypeImpl(tls *crt.TLS, _pNC *XNameContext, _pExpr *XExpr, _pEstWidth *uint8) (r0 *int8) { // sqlite3.c:117891:1
- var _zType *int8 // sqlite3.c:117901:14
- _ = _zType
- var _j int32 // sqlite3.c:117902:7
- _ = _j
- var _estWidth uint8 // sqlite3.c:117903:6
- _ = _estWidth
- var _2_pTab *XTable // sqlite3.c:117919:13
- _ = _2_pTab
- var _2_pS *XSelect // sqlite3.c:117920:14
- _ = _2_pS
- var _2_iCol int32 // sqlite3.c:117921:11
- _ = _2_iCol
- var _3_pTabList *XSrcList // sqlite3.c:117925:17
- _ = _3_pTabList
- var _8_sNC XNameContext // sqlite3.c:117970:23
- _ = _8_sNC
- var _8_p *XExpr // sqlite3.c:117971:16
- _ = _8_p
- var _12_sNC XNameContext // sqlite3.c:118013:19
- _ = _12_sNC
- var _12_pS *XSelect // sqlite3.c:118014:14
- _ = _12_pS
- var _12_p *XExpr // sqlite3.c:118015:12
- _ = _12_p
- _zType = nil
- _estWidth = u8(1)
- func() {
- if _pExpr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117910), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(44808)))
- crt.X__builtin_abort(tls)
+// Set the collating sequence for expression pExpr to be the collating
+// sequence named by pToken. Return a pointer to a new Expr node that
+// implements the COLLATE operator.
+//
+// If a memory allocation error occurs, that fact is recorded in pParse->db
+// and the pExpr parameter is returned unchanged.
+func _sqlite3ExprAddCollateToken(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _pCollName *XToken, _dequote int32) (r0 *XExpr) {
+ var _1_pNew *XExpr
+ if (_pCollName.X1) <= uint32(i32(0)) {
+ goto _0
+ }
+ _1_pNew = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(94), _pCollName, _dequote)
+ if _1_pNew != nil {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(12 /* X4 */))))) = _pExpr
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(4352))
+ sink5 = *p
}
- }()
+ _pExpr = _1_pNew
+ }
+_0:
+ return _pExpr
+}
+
+// The pExpr should be a TK_COLUMN expression. The table referred to
+// is in pTabList or else it is the NEW or OLD table of a trigger.
+// Check to see if it is OK to read this particular column.
+//
+// If the auth function returns SQLITE_IGNORE, change the TK_COLUMN
+// instruction into a TK_NULL. If the auth function returns SQLITE_DENY,
+// then generate an error.
+func _sqlite3AuthRead(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _pSchema *XSchema, _pTabList *XSrcList) {
+ var _iSrc, _iDb, _iCol int32
+ var _zCol *int8
+ var _db *Xsqlite3
+ var _pTab *XTable
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pTab = nil
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
+ }{(_db.X59)})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
+ }{nil})) {
+ return
+ }
+ _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), _pSchema)
+ if _iDb < i32(0) {
+ return
+ }
func() {
- if (*XSrcList)(_pNC.X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117911), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(98520)))
+ if int32(_pExpr.X0) != i32(152) && int32(_pExpr.X0) != i32(61) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99583), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(96598)))
crt.X__builtin_abort(tls)
}
}()
- switch int32(_pExpr.X0) {
- case i32(119):
- goto _7
- case i32(152):
+ if int32(_pExpr.X0) == i32(61) {
+ _pTab = (*XTable)(_pParse.X40)
goto _6
- case i32(154):
- goto _5
- default:
- goto _8
- }
-
-_5:
-_6:
- _2_pTab = nil
- _2_pS = nil
- _2_iCol = int32(_pExpr.X9)
-_9:
- if _pNC == nil || _2_pTab != nil {
- goto _10
- }
-
- _3_pTabList = (*XSrcList)(_pNC.X1)
- _j = i32(0)
-_12:
- if _j >= (_3_pTabList.X0) || ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_j))).X11) == (_pExpr.X8) {
- goto _16
- }
-
- _j += 1
- goto _12
-
-_16:
- if _j >= (_3_pTabList.X0) {
- goto _17
- }
-
- _2_pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_j))).X4)
- _2_pS = (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_j))).X5)
- goto _18
-
-_17:
- _pNC = (*XNameContext)(_pNC.X4)
-_18:
- goto _9
-
-_10:
- if _2_pTab != nil {
- goto _19
}
-
- goto _8
-
-_19:
func() {
- if _2_pTab == nil || (*XTable)(_pExpr.X14) != _2_pTab {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117956), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(98540)))
+ if _pTabList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(96644)))
crt.X__builtin_abort(tls)
}
}()
- if _2_pS == nil {
- goto _23
- }
-
- if _2_iCol < i32(0) || func() int32 {
- if _2_iCol < ((*XExprList)(_2_pS.X0).X0) {
+ _iSrc = i32(0)
+_9:
+ if func() int32 {
+ if _iSrc < (_pTabList.X0) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117962), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99588), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
- goto _27
+ goto _14
}
-
- _8_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_2_pS.X0)+uintptr(8 /* X2 */))))) + 20*uintptr(_2_iCol))).X0)
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_2_pS.X8)
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_sNC)) + uintptr(16 /* X4 */))))) = _pNC
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_8_sNC)) + uintptr(0 /* X0 */))))) = (*XParse)(_pNC.X0)
- _zType = _columnTypeImpl(tls, &_8_sNC, _8_p, &_estWidth)
-_27:
- goto _28
-
-_23:
- if (*XSchema)(_2_pTab.X20) == nil {
- goto _29
+ if (_pExpr.X8) == ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_iSrc))).X11) {
+ _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_iSrc))).X4)
+ goto _14
}
-
- func() {
- if _2_pS != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117979), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(98568)))
- crt.X__builtin_abort(tls)
+ _iSrc += 1
+ goto _9
+_14:
+_6:
+ _iCol = int32(_pExpr.X9)
+ if func() int32 {
+ if _pTab == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99596), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
}
- }()
- if _2_iCol >= i32(0) {
- goto _32
+ return i32(0)
+ }() != 0 {
+ return
}
-
- _2_iCol = int32(_2_pTab.X10)
-_32:
- func() {
- if _2_iCol != i32(-1) && (_2_iCol < i32(0) || _2_iCol >= int32(_2_pTab.X11)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117981), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(98572)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _2_iCol >= i32(0) {
- goto _37
+ if _iCol >= i32(0) {
+ func() {
+ if _iCol >= int32(_pTab.X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99599), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(45575)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol))).X0
+ goto _22
}
-
- _zType = str(25748)
- goto _38
-
-_37:
- _zType = _sqlite3ColumnType(tls, (*XColumn)(unsafe.Pointer(uintptr(_2_pTab.X1)+16*uintptr(_2_iCol))), nil)
- _estWidth = (*XColumn)(unsafe.Pointer(uintptr(_2_pTab.X1) + 16*uintptr(_2_iCol))).X5
-_38:
-_29:
-_28:
- goto _8
-
-_7:
- _12_pS = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
- _12_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_12_pS.X0)+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
+ if int32(_pTab.X10) >= i32(0) {
+ func() {
+ if int32(_pTab.X10) >= int32(_pTab.X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99602), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(96653)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_pTab.X10))).X0
+ goto _26
+ }
+ _zCol = str(96456)
+_26:
+_22:
func() {
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118016), unsafe.Pointer((*int8)(unsafe.Pointer(&_columnTypeImplØ00__func__Ø000))), unsafe.Pointer(str(46412)))
+ if _iDb < i32(0) || _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99607), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_12_pS.X8)
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sNC)) + uintptr(16 /* X4 */))))) = _pNC
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sNC)) + uintptr(0 /* X0 */))))) = (*XParse)(_pNC.X0)
- _zType = _columnTypeImpl(tls, &_12_sNC, _12_p, &_estWidth)
- goto _8
-
-_8:
- if _pEstWidth == nil {
- goto _41
+ if i32(2) == _sqlite3AuthReadCol(tls, _pParse, _pTab.X0, _zCol, _iDb) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
}
-
- *_pEstWidth = _estWidth
-_41:
- return _zType
}
-var _columnTypeImplØ00__func__Ø000 [15]int8 // -
+var _sqlite3AuthReadØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_columnTypeImplØ00__func__Ø000[0], str(98616), 15)
+ crt.Xstrncpy(nil, &_sqlite3AuthReadØ00__func__Ø000[0], str(96676), 16)
}
-func _sqlite3ExprCollSeq(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 *XCollSeq) { // sqlite3.c:91030:1
- var _db *Xsqlite3 // sqlite3.c:91031:11
- _ = _db
- var _pColl *XCollSeq // sqlite3.c:91032:11
- _ = _pColl
- var _p *XExpr // sqlite3.c:91033:8
- _ = _p
- var _1_op int32 // sqlite3.c:91035:9
- _ = _1_op
- var _4_j int32 // sqlite3.c:91051:11
- _ = _4_j
- var _5_zColl *int8 // sqlite3.c:91053:20
- _ = _5_zColl
- var _8_pNext *XExpr // sqlite3.c:91062:14
- _ = _8_pNext
- var _9_i int32 // sqlite3.c:91069:15
- _ = _9_i
+// Invoke the authorization callback for permission to read column zCol from
+// table zTab in database zDb. This function assumes that an authorization
+// callback has been registered (i.e. that sqlite3.xAuth is not NULL).
+//
+// If SQLITE_IGNORE is returned and pExpr is not NULL, then pExpr is changed
+// to an SQL NULL expression. Otherwise, if pExpr is NULL, then SQLITE_IGNORE
+// is treated as SQLITE_DENY. In this case an error is left in pParse.
+func _sqlite3AuthReadCol(tls *crt.TLS, _pParse *XParse, _zTab *int8, _zCol *int8, _iDb int32) (r0 int32) {
+ var _rc int32
+ var _zDb *int8
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_pParse.X0)
- _pColl = nil
- _p = _pExpr
-_0:
- if _p == nil {
- goto _1
+ _zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
+ return i32(0)
}
-
- _1_op = int32(_p.X0)
- if ((_p.X2) & uint32(i32(512))) == 0 {
- goto _2
+ _rc = (_db.X59)(tls, _db.X60, i32(20), _zTab, _zCol, _zDb, _pParse.X65)
+ if _rc != i32(1) {
+ goto _1
}
-
- goto _1
-
-_2:
- if _1_op != i32(37) && _1_op != i32(156) {
+ if ((_db.X5) > i32(2)) || (_iDb != i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(96692), unsafe.Pointer(_zDb), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
goto _4
}
-
- _p = (*XExpr)(_p.X4)
- goto _0
-
+ _sqlite3ErrorMsg(tls, _pParse, str(96725), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
_4:
- if _1_op != i32(94) && (_1_op != i32(157) || int32(_p.X12) != i32(94)) {
- goto _7
- }
-
- _pColl = _sqlite3GetCollSeq(tls, _pParse, _db.X14, nil, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))
- goto _1
-
-_7:
- if _1_op != i32(154) && _1_op != i32(152) && _1_op != i32(157) && _1_op != i32(61) || (*XTable)(_p.X14) == nil {
- goto _12
- }
-
- _4_j = int32(_p.X9)
- if _4_j < i32(0) {
- goto _13
- }
-
- _5_zColl = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_p.X14).X1) + 16*uintptr(_4_j))).X2
- _pColl = _sqlite3FindCollSeq(tls, _db, _db.X14, _5_zColl, i32(0))
-_13:
- goto _1
-
-_12:
- if ((_p.X2) & uint32(i32(256))) == 0 {
- goto _14
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(23)
+ goto _5
+_1:
+ if (_rc != i32(2)) && (_rc != i32(0)) {
+ _sqliteAuthBadReturnCode(tls, _pParse)
}
+_5:
+ return _rc
+}
- if (*XExpr)(_p.X4) == nil || (((*XExpr)(_p.X4).X2)&uint32(i32(256))) == uint32(i32(0)) {
- goto _16
+// Expression p should encode a floating point value between 1.0 and 0.0.
+// Return 1024 times this value. Or return -1 if p is not a floating point
+// value between 1.0 and 0.0.
+func _exprProbability(tls *crt.TLS, _p *XExpr) (r0 int32) {
+ var _r float64
+ _r = -1
+ if int32(_p.X0) != i32(132) {
+ return i32(-1)
}
-
- _p = (*XExpr)(_p.X4)
- goto _17
-
-_16:
- _8_pNext = (*XExpr)(_p.X5)
+ _sqlite3AtoF(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))), &_r, _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))), uint8(i32(1)))
func() {
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil && (*XExpr)(_p.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91064), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCollSeqØ00__func__Ø000))), unsafe.Pointer(str(20836)))
+ if _r < float64(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(89904), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprProbabilityØ00__func__Ø000))), unsafe.Pointer(str(96755)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) == nil || func() int32 {
- if ((_p.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91068), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCollSeqØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _24
- }
-
- _9_i = i32(0)
-_25:
- if func() int32 {
- if _9_i < ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))).X0) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91070), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCollSeqØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _30
- }
-
- if (((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_9_i))).X0).X2) & uint32(i32(256))) == uint32(i32(0)) {
- goto _31
- }
-
- _8_pNext = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_9_i))).X0)
- goto _30
-
-_31:
- _9_i += 1
- goto _25
-
-_30:
-_24:
- _p = _8_pNext
-_17:
- goto _32
-
-_14:
- goto _1
-
-_32:
- goto _0
-
-_1:
- if _sqlite3CheckCollSeq(tls, _pParse, _pColl) == 0 {
- goto _33
+ if _r > float64(1) {
+ return i32(-1)
}
-
- _pColl = nil
-_33:
- return _pColl
+ return int32(_r * (1.34217728e+08))
}
-var _sqlite3ExprCollSeqØ00__func__Ø000 [19]int8 // -
+var _exprProbabilityØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCollSeqØ00__func__Ø000[0], str(98632), 19)
+ crt.Xstrncpy(nil, &_exprProbabilityØ00__func__Ø000[0], str(96762), 16)
}
-func _sqlite3CheckCollSeq(tls *crt.TLS, _pParse *XParse, _pColl *XCollSeq) (r0 int32) { // sqlite3.c:104268:1
- var _1_zName *int8 // sqlite3.c:104270:16
- _ = _1_zName
- var _1_db *Xsqlite3 // sqlite3.c:104271:13
- _ = _1_db
- var _1_p *XCollSeq // sqlite3.c:104272:13
- _ = _1_p
- if _pColl == nil {
- goto _0
- }
-
- _1_zName = _pColl.X0
- _1_db = (*Xsqlite3)(_pParse.X0)
- _1_p = _sqlite3GetCollSeq(tls, _pParse, _1_db.X14, _pColl, _1_zName)
- if _1_p != nil {
- goto _1
- }
- return i32(1)
-
-_1:
+// Determine if any of the arguments to the pExpr Function reference
+// pSrcList. Return true if they do. Also return true if the function
+// has no arguments or has only constant arguments. Return false if pExpr
+// references columns but not columns of tables found in pSrcList.
+func _sqlite3FunctionUsesThisSrc(tls *crt.TLS, _pExpr *XExpr, _pSrcList *XSrcList) (r0 int32) {
+ var _w XWalker
+ var _cnt TSrcCount
func() {
- if _1_p != _pColl {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104276), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CheckCollSeqØ00__func__Ø000))), unsafe.Pointer(str(98652)))
+ if int32(_pExpr.X0) != i32(153) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FunctionUsesThisSrcØ00__func__Ø000))), unsafe.Pointer(str(96778)))
crt.X__builtin_abort(tls)
}
}()
-_0:
- return i32(0)
-}
-
-var _sqlite3CheckCollSeqØ00__func__Ø000 [20]int8 // -
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _exprSrcCount
+ *(**TSrcCount)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = &_cnt
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cnt)) + uintptr(0 /* X0 */))))) = _pSrcList
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cnt)) + uintptr(4 /* X1 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cnt)) + uintptr(8 /* X2 */))) = i32(0)
+ _sqlite3WalkExprList(tls, &_w, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
+ return bool2int(((_cnt.X1) > i32(0)) || ((_cnt.X2) == i32(0)))
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CheckCollSeqØ00__func__Ø000[0], str(98664), 20)
+ _ = _w
+ _ = _cnt
+ panic(0)
}
-func _sqlite3IndexedByLookup(tls *crt.TLS, _pParse *XParse, _pFrom *TSrcList_item) (r0 int32) { // sqlite3.c:120519:1
- var _1_pTab *XTable // sqlite3.c:120521:11
- _ = _1_pTab
- var _1_zIndexedBy *int8 // sqlite3.c:120522:10
- _ = _1_zIndexedBy
- var _1_pIdx *XIndex // sqlite3.c:120523:11
- _ = _1_pIdx
- if (*XTable)(_pFrom.X4) == nil || ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(36 /* X9 */))).X1)>>uint(i32(1)))<>uint(i32(31))) == 0 {
- goto _1
- }
-
- _1_pTab = (*XTable)(_pFrom.X4)
- _1_zIndexedBy = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(60 /* X15 */)))))
- _1_pIdx = (*XIndex)(_1_pTab.X2)
-_2:
- if _1_pIdx == nil || _sqlite3StrICmp(tls, _1_pIdx.X0, _1_zIndexedBy) == 0 {
- goto _6
- }
-
- _1_pIdx = (*XIndex)(_1_pIdx.X5)
- goto _2
-
-_6:
- if _1_pIdx != nil {
- goto _7
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(98684), unsafe.Pointer(_1_zIndexedBy), i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
- return i32(1)
+var _sqlite3FunctionUsesThisSrcØ00__func__Ø000 [27]int8
-_7:
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(64 /* X16 */))))) = _1_pIdx
-_1:
- return i32(0)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FunctionUsesThisSrcØ00__func__Ø000[0], str(96805), 27)
}
-func _sqliteProcessJoin(tls *crt.TLS, _pParse *XParse, _p *XSelect) (r0 int32) { // sqlite3.c:116924:1
- var _pSrc *XSrcList // sqlite3.c:116925:11
- _ = _pSrc
- var _i int32 // sqlite3.c:116926:7
- _ = _i
- var _j int32 // sqlite3.c:116926:10
- _ = _j
- var _pLeft *TSrcList_item // sqlite3.c:116927:23
- _ = _pLeft
- var _pRight *TSrcList_item // sqlite3.c:116928:23
- _ = _pRight
- var _1_pLeftTab *XTable // sqlite3.c:116934:11
- _ = _1_pLeftTab
- var _1_pRightTab *XTable // sqlite3.c:116935:11
- _ = _1_pRightTab
- var _1_isOuter int32 // sqlite3.c:116936:9
- _ = _1_isOuter
- var _4_zName *int8 // sqlite3.c:116951:14
- _ = _4_zName
- var _4_iLeft int32 // sqlite3.c:116952:13
- _ = _4_iLeft
- var _4_iLeftCol int32 // sqlite3.c:116953:13
- _ = _4_iLeftCol
- var _8_pList *XIdList // sqlite3.c:116988:14
- _ = _8_pList
- var _9_zName *int8 // sqlite3.c:116990:14
- _ = _9_zName
- var _9_iLeft int32 // sqlite3.c:116991:13
- _ = _9_iLeft
- var _9_iLeftCol int32 // sqlite3.c:116992:13
- _ = _9_iLeftCol
- var _9_iRightCol int32 // sqlite3.c:116993:13
- _ = _9_iRightCol
- _pSrc = (*XSrcList)(_p.X8)
- _pLeft = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0))))
- _pRight = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLeft)) + 68*uintptr(i32(1))))
- _i = i32(0)
-_0:
- if _i >= ((_pSrc.X0) - i32(1)) {
- goto _3
- }
-
- _1_pLeftTab = (*XTable)(_pLeft.X4)
- _1_pRightTab = (*XTable)(_pRight.X4)
- if func() int32 {
- if (_1_pLeftTab == nil) || (_1_pRightTab == nil) {
+// Count the number of references to columns.
+func _exprSrcCount(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ var _1_i, _1_nSrc int32
+ var _1_pSrc *XSrcList
+ var _1_p *TSrcCount
+ if int32(_pExpr.X0) != i32(152) && func() int32 {
+ if int32(_pExpr.X0) == i32(154) {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116938), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqliteProcessJoinØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95775), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprSrcCountØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
}() == 0 {
- goto _7
- }
-
- goto _1
-
-_7:
- _1_isOuter = bool2int((int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight))+uintptr(36 /* X9 */))).X0) & i32(32)) != i32(0))
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight))+uintptr(36 /* X9 */))).X0) & i32(4)) == 0 {
- goto _8
- }
-
- if (*XExpr)(_pRight.X12) == nil && (*XIdList)(_pRight.X13) == nil {
- goto _10
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(98704), i32(0))
- return i32(1)
-
-_10:
- _j = i32(0)
-_11:
- if _j >= int32(_1_pRightTab.X11) {
- goto _14
- }
-
- _4_zName = (*XColumn)(unsafe.Pointer(uintptr(_1_pRightTab.X1) + 16*uintptr(_j))).X0
- if _tableAndColumnIndex(tls, _pSrc, _i+i32(1), _4_zName, &_4_iLeft, &_4_iLeftCol) == 0 {
- goto _15
- }
-
- _addWhereTerm(tls, _pParse, _pSrc, _4_iLeft, _4_iLeftCol, _i+i32(1), _j, _1_isOuter, (**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(44 /* X9 */))))))
-_15:
- _j += 1
- goto _11
-
-_14:
-_8:
- if (*XExpr)(_pRight.X12) == nil || (*XIdList)(_pRight.X13) == nil {
- goto _17
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(98756))
- return i32(1)
-
-_17:
- if (*XExpr)(_pRight.X12) == nil {
- goto _18
- }
-
- if _1_isOuter == 0 {
- goto _19
+ goto _3
}
-
- _setJoinExpr(tls, (*XExpr)(_pRight.X12), _pRight.X11)
-_19:
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X9 */))))) = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)(_p.X9), (*XExpr)(_pRight.X12))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight)) + uintptr(44 /* X12 */))))) = nil
-_18:
- if (*XIdList)(_pRight.X13) == nil {
- goto _20
+ _1_p = (*TSrcCount)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
+ _1_pSrc = (*XSrcList)(_1_p.X0)
+ _1_nSrc = func() int32 {
+ if _1_pSrc != nil {
+ return (_1_pSrc.X0)
+ }
+ return i32(0)
+ }()
+ _1_i = i32(0)
+_6:
+ if _1_i >= _1_nSrc {
+ goto _9
}
-
- _8_pList = (*XIdList)(_pRight.X13)
- _j = i32(0)
-_21:
- if _j >= (_8_pList.X1) {
- goto _24
+ if (_pExpr.X8) == ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_1_i))).X11) {
+ goto _9
}
-
- _9_zName = (*TIdList_item)(unsafe.Pointer(uintptr(_8_pList.X0) + 8*uintptr(_j))).X0
- _9_iRightCol = _columnIndex(tls, _1_pRightTab, _9_zName)
- if _9_iRightCol >= i32(0) && _tableAndColumnIndex(tls, _pSrc, _i+i32(1), _9_zName, &_9_iLeft, &_9_iLeftCol) != 0 {
- goto _26
+ _1_i += 1
+ goto _6
+_9:
+ if _1_i < _1_nSrc {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(4 /* X1 */))) += 1
+ goto _12
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(98812), unsafe.Pointer(_9_zName))
- return i32(1)
-
-_26:
- _addWhereTerm(tls, _pParse, _pSrc, _9_iLeft, _9_iLeftCol, _i+i32(1), _9_iRightCol, _1_isOuter, (**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(44 /* X9 */))))))
- _j += 1
- goto _21
-
-_24:
-_20:
-_1:
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item {
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pRight }())) += uintptr(68)
- return &_pLeft
- }())) += uintptr(68)
- goto _0
-
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(8 /* X2 */))) += 1
+_12:
_3:
return i32(0)
}
-var _sqliteProcessJoinØ00__func__Ø000 [18]int8 // -
+var _exprSrcCountØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_sqliteProcessJoinØ00__func__Ø000[0], str(98876), 18)
+ crt.Xstrncpy(nil, &_exprSrcCountØ00__func__Ø000[0], str(96832), 13)
}
-func _tableAndColumnIndex(tls *crt.TLS, _pSrc *XSrcList, _N int32, _zCol *int8, _piTab *int32, _piCol *int32) (r0 int32) { // sqlite3.c:116799:1
- var _i int32 // sqlite3.c:116806:7
- _ = _i
- var _iCol int32 // sqlite3.c:116807:7
- _ = _iCol
+// Resolve names in the SELECT statement p and all of its descendants.
+func _resolveSelectStep(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) {
+ var _isCompound, _nCompound, _i, _7_nRef int32
+ var _7_zSavedContext *int8
+ var _db *Xsqlite3
+ var _6_pItem, _11_pItem *TSrcList_item
+ var _pGroupBy *XExprList
+ var _16_pItem *TExprList_item
+ var _pLeftmost, _5_pSub, _13_pSub *XSelect
+ var _pParse *XParse
+ var _sNC XNameContext
+ var _pOuterNC, _7_pNC *XNameContext
func() {
- if (_piTab == nil) != (_piCol == nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116809), unsafe.Pointer((*int8)(unsafe.Pointer(&_tableAndColumnIndexØ00__func__Ø000))), unsafe.Pointer(str(98896)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90520), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
- _i = i32(0)
-_2:
- if _i >= _N {
- goto _5
+ if ((_p.X3) & uint32(i32(4))) != 0 {
+ return i32(1)
}
-
- _iCol = _columnIndex(tls, (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i))).X4), _zCol)
- if _iCol < i32(0) {
- goto _6
+ _pOuterNC = (*XNameContext)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
+ _pParse = (*XParse)(_pWalker.X0)
+ _db = (*Xsqlite3)(_pParse.X0)
+ if ((_p.X3) & uint32(i32(64))) == uint32(i32(0)) {
+ _sqlite3SelectPrep(tls, _pParse, _p, _pOuterNC)
+ return func() int32 {
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ return i32(2)
+ }
+ return i32(1)
+ }()
}
-
- if _piTab == nil {
- goto _7
- }
-
- *_piTab = _i
- *_piCol = _iCol
+ _isCompound = bool2int((*XSelect)(_p.X13) != nil)
+ _nCompound = i32(0)
+ _pLeftmost = _p
_7:
- return i32(1)
-
-_6:
- _i += 1
- goto _2
-
-_5:
- return i32(0)
-}
-
-var _tableAndColumnIndexØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_tableAndColumnIndexØ00__func__Ø000[0], str(98920), 20)
-}
-
-func _columnIndex(tls *crt.TLS, _pTab *XTable, _zCol *int8) (r0 int32) { // sqlite3.c:116782:1
- var _i int32 // sqlite3.c:116783:7
- _ = _i
- _i = i32(0)
-_0:
- if _i >= int32(_pTab.X11) {
- goto _3
- }
-
- if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X0, _zCol) != i32(0) {
- goto _4
+ if _p == nil {
+ goto _8
}
- return _i
-
-_4:
- _i += 1
- goto _0
-
-_3:
- return i32(-1)
-}
-
-func _addWhereTerm(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList, _iLeft int32, _iColLeft int32, _iRight int32, _iColRight int32, _isOuterJoin int32, _ppWhere **XExpr) { // sqlite3.c:116834:1
- var _db *Xsqlite3 // sqlite3.c:116844:11
- _ = _db
- var _pE1 *XExpr // sqlite3.c:116845:8
- _ = _pE1
- var _pE2 *XExpr // sqlite3.c:116846:8
- _ = _pE2
- var _pEq *XExpr // sqlite3.c:116847:8
- _ = _pEq
- _db = (*Xsqlite3)(_pParse.X0)
- func() {
- if _iLeft >= _iRight {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116849), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(98940)))
- crt.X__builtin_abort(tls)
- }
- }()
func() {
- if (_pSrc.X0) <= _iRight {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116850), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(98956)))
+ if ((_p.X3) & uint32(i32(64))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90545), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(96845)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_iLeft))).X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116851), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(98976)))
+ if ((_p.X3) & uint32(i32(4))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90546), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(96876)))
crt.X__builtin_abort(tls)
}
}()
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(4))
+ sink5 = *p
+ }
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
+ if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X15)) != 0 || _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X16)) != 0 {
+ return i32(2)
+ }
+ if ((_p.X3) & uint32(i32(65536))) != 0 {
+ _5_pSub = (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X5)
+ func() {
+ if ((*XSrcList)(_p.X8).X0) != i32(1) || (*XExprList)(_p.X12) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90567), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(96907)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XSelect)(_5_pSub.X13) == nil || (*XExprList)(_5_pSub.X12) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90568), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(96939)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pSub)) + uintptr(56 /* X12 */))))) = (*XExprList)(_p.X12)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
+ }
+ _i = i32(0)
+_22:
+ if _i >= ((*XSrcList)(_p.X8).X0) {
+ goto _25
+ }
+ _6_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
+ if (*XSelect)(_6_pItem.X5) == nil {
+ goto _26
+ }
+ _7_nRef = i32(0)
+ _7_zSavedContext = _pParse.X65
+ _7_pNC = _pOuterNC
+_27:
+ if _7_pNC == nil {
+ goto _30
+ }
+ {
+ p := &_7_nRef
+ *p = (*p) + (_7_pNC.X5)
+ sink1 = *p
+ }
+ _7_pNC = (*XNameContext)(_7_pNC.X4)
+ goto _27
+_30:
+ if (_6_pItem.X2) != nil {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _6_pItem.X2
+ }
+ _sqlite3ResolveSelectNames(tls, _pParse, (*XSelect)(_6_pItem.X5), _pOuterNC)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _7_zSavedContext
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ return i32(2)
+ }
+ _7_pNC = _pOuterNC
+_34:
+ if _7_pNC == nil {
+ goto _37
+ }
+ {
+ p := &_7_nRef
+ *p = (*p) - (_7_pNC.X5)
+ sink1 = *p
+ }
+ _7_pNC = (*XNameContext)(_7_pNC.X4)
+ goto _34
+_37:
func() {
- if (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_iRight))).X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116852), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(98996)))
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(3)))<>uint(i32(31))) != i32(0) || _7_nRef > i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90595), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(96973)))
crt.X__builtin_abort(tls)
}
}()
- _pE1 = _sqlite3CreateColumnExpr(tls, _db, _pSrc, _iLeft, _iColLeft)
- _pE2 = _sqlite3CreateColumnExpr(tls, _db, _pSrc, _iRight, _iColRight)
- _pEq = _sqlite3PExpr(tls, _pParse, i32(78), _pE1, _pE2)
- if _pEq == nil || _isOuterJoin == 0 {
- goto _9
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEq)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1))
- sink5 = *p
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(bool2int(_7_nRef != i32(0))), 8, 3)
+_26:
+ _i += 1
+ goto _22
+_25:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */))) = uint16(i32(1))
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_p.X8)
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(16 /* X4 */))))) = _pOuterNC
+ if _sqlite3ResolveExprListNames(tls, &_sNC, (*XExprList)(_p.X0)) != 0 {
+ return i32(2)
}
func() {
- if ((_pEq.X2) & uint32(i32(24576))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116860), unsafe.Pointer((*int8)(unsafe.Pointer(&_addWhereTermØ00__func__Ø000))), unsafe.Pointer(str(99020)))
+ if ((_p.X3) & uint32(i32(8))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90613), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(97010)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEq)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(131072))
- sink5 = *p
+ _pGroupBy = (*XExprList)(_p.X10)
+ if (_pGroupBy != nil) || ((int32(_sNC.X7) & i32(16)) != i32(0)) {
+ i32(0)
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(8)|(int32(_sNC.X7)&i32(4096)))
+ sink5 = *p
+ }
+ goto _46
}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEq)) + uintptr(36 /* X11 */))) = int16(_pE2.X8)
-_9:
- *_ppWhere = _sqlite3ExprAnd(tls, _db, *_ppWhere, _pEq)
-}
-
-var _addWhereTermØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_addWhereTermØ00__func__Ø000[0], str(99068), 13)
-}
-
-func _sqlite3CreateColumnExpr(tls *crt.TLS, _db *Xsqlite3, _pSrc *XSrcList, _iSrc int32, _iCol int32) (r0 *XExpr) { // sqlite3.c:89855:1
- var _p *XExpr // sqlite3.c:89856:8
- _ = _p
- var _1_pItem *TSrcList_item // sqlite3.c:89858:25
- _ = _1_pItem
- _p = _sqlite3ExprAlloc(tls, _db, i32(152), nil, i32(0))
- if _p == nil {
- goto _0
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) & i32(-2))
+ sink14 = *p
}
-
- _1_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_iSrc)))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X14 */))))) = (*XTable)(_1_pItem.X4)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))) = _1_pItem.X11
- if int32((*XTable)(_p.X14).X10) != _iCol {
- goto _1
+_46:
+ if ((*XExpr)(_p.X11) != nil) && (_pGroupBy == nil) {
+ _sqlite3ErrorMsg(tls, _pParse, str(97042))
+ return i32(2)
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))) = int16(i32(-1))
- goto _2
-
-_1:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X9 */))) = int16(_iCol)
- {
- p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(52 /* X14 */)))
- *p = (*p) | (u64(1) << uint(func() int32 {
- if _iCol >= i32(64) {
- return i32(63)
- }
- return _iCol
- }()))
- sink15 = *p
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(8 /* X2 */))))) = (*XExprList)(_p.X0)
+ if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X11)) != 0 {
+ return i32(2)
}
-_2:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(4))
- sink5 = *p
+ if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X9)) != 0 {
+ return i32(2)
}
-_0:
- return _p
-}
-
-func _sqlite3PExpr(tls *crt.TLS, _pParse *XParse, _op int32, _pLeft *XExpr, _pRight *XExpr) (r0 *XExpr) { // sqlite3.c:91716:1
- var _p *XExpr // sqlite3.c:91722:8
- _ = _p
- if _op != i32(71) || (_pParse.X16) != i32(0) {
- goto _1
+ _i = i32(0)
+_51:
+ if _i >= ((*XSrcList)(_p.X8).X0) {
+ goto _54
}
-
- _p = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), _pLeft, _pRight)
- goto _2
-
-_1:
- _p = (*XExpr)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(48))))
- if _p == nil {
- goto _3
+ _11_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
+ if (((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0) && _sqlite3ResolveExprListNames(tls, &_sNC, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pItem)) + uintptr(60 /* X15 */))))))) != 0 {
+ return i32(2)
}
-
- crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(_op & i32(255))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(34 /* X10 */))) = int16(i32(-1))
-_3:
- _sqlite3ExprAttachSubtrees(tls, (*Xsqlite3)(_pParse.X0), _p, _pLeft, _pRight)
-_2:
- if _p == nil {
- goto _4
+ _i += 1
+ goto _51
+_54:
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(16 /* X4 */))))) = nil
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
}
-
- _sqlite3ExprCheckHeight(tls, _pParse, _p.X7)
-_4:
- return _p
-}
-
-func _sqlite3ExprAnd(tls *crt.TLS, _db *Xsqlite3, _pLeft *XExpr, _pRight *XExpr) (r0 *XExpr) { // sqlite3.c:91792:1
- var _4_pNew *XExpr // sqlite3.c:91802:10
- _ = _4_pNew
- if _pLeft != nil {
- goto _0
+ if ((_p.X3) & uint32(i32(65536))) != 0 {
+ _13_pSub = (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X5)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = (*XExprList)(_13_pSub.X12)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pSub)) + uintptr(56 /* X12 */))))) = nil
}
- return _pRight
-
-_0:
- if _pRight != nil {
- goto _2
+ if (_isCompound <= _nCompound) && _resolveOrderGroupBy(tls, &_sNC, _p, (*XExprList)(_p.X12), str(25745)) != 0 {
+ return i32(2)
}
- return _pLeft
-
-_2:
- if _exprAlwaysFalse(tls, _pLeft) == 0 && _exprAlwaysFalse(tls, _pRight) == 0 {
- goto _5
+ if (_db.X17) != 0 {
+ return i32(2)
}
-
- _sqlite3ExprDelete(tls, _db, _pLeft)
- _sqlite3ExprDelete(tls, _db, _pRight)
- return _sqlite3ExprAlloc(tls, _db, i32(134), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3IntTokens))+8*uintptr(i32(0)))), i32(0))
-
-_5:
- _4_pNew = _sqlite3ExprAlloc(tls, _db, i32(71), nil, i32(0))
- _sqlite3ExprAttachSubtrees(tls, _db, _4_pNew, _pLeft, _pRight)
- return _4_pNew
-}
-
-func _exprAlwaysFalse(tls *crt.TLS, _p *XExpr) (r0 int32) { // sqlite3.c:91777:1
- var _v int32 // sqlite3.c:91778:7
- _ = _v
- _v = i32(0)
- if ((_p.X2) & uint32(i32(1))) == uint32(i32(0)) {
- goto _0
+ if _pGroupBy == nil {
+ goto _61
}
- return i32(0)
-
-_0:
- if _sqlite3ExprIsInteger(tls, _p, &_v) != 0 {
- goto _1
+ if _resolveOrderGroupBy(tls, &_sNC, _p, _pGroupBy, str(25751)) != 0 || ((_db.X17) != 0) {
+ return i32(2)
}
- return i32(0)
-
-_1:
- return bool2int(_v == i32(0))
-}
-
-func _sqlite3ExprIsInteger(tls *crt.TLS, _p *XExpr, _pValue *int32) (r0 int32) { // sqlite3.c:92809:1
- var _rc int32 // sqlite3.c:92810:7
- _ = _rc
- var _4_v int32 // sqlite3.c:92828:11
- _ = _4_v
- _rc = i32(0)
- if _p != nil {
- goto _0
+ *func() **TExprList_item { _i = i32(0); return &_16_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroupBy)) + uintptr(8 /* X2 */)))))
+_64:
+ if _i >= (_pGroupBy.X0) {
+ goto _67
}
- return i32(0)
-
-_0:
- func() {
- if int32(_p.X0) == i32(134) && ((_p.X2)&uint32(i32(1024))) == uint32(i32(0)) && _sqlite3GetInt32(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))), &_rc) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIsIntegerØ00__func__Ø000))), unsafe.Pointer(str(99084)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((_p.X2) & uint32(i32(1024))) == 0 {
- goto _5
+ if (((*XExpr)(_16_pItem.X0).X2) & uint32(i32(2))) != uint32(i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(97086))
+ return i32(2)
}
-
- *_pValue = *(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))
- return i32(1)
-
-_5:
- switch int32(_p.X0) {
- case i32(155):
- goto _8
- case i32(156):
- goto _7
- default:
- goto _9
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_16_pItem }())) += uintptr(20)
+ goto _64
+_67:
+_61:
+ if ((*XSelect)(_p.X14) != nil) && (((*XExprList)(_p.X0).X0) != ((*XExprList)((*XSelect)(_p.X14).X0).X0)) {
+ _sqlite3SelectWrongNumTermsError(tls, _pParse, (*XSelect)(_p.X14))
+ return i32(2)
}
-
-_7:
- _rc = _sqlite3ExprIsInteger(tls, (*XExpr)(_p.X4), _pValue)
- goto _10
-
+ _p = (*XSelect)(_p.X13)
+ _nCompound += 1
+ goto _7
_8:
- if _sqlite3ExprIsInteger(tls, (*XExpr)(_p.X4), &_4_v) == 0 {
- goto _11
+ if _isCompound != 0 && _resolveCompoundOrderBy(tls, _pParse, _pLeftmost) != 0 {
+ return i32(2)
}
+ return i32(1)
- func() {
- if _4_v == i32(-2147483648) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92830), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIsIntegerØ00__func__Ø000))), unsafe.Pointer(str(99176)))
- crt.X__builtin_abort(tls)
- }
- }()
- *_pValue = -_4_v
- _rc = i32(1)
-_11:
- goto _10
-
-_9:
- goto _10
-
-_10:
- return _rc
-}
-
-var _sqlite3ExprIsIntegerØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprIsIntegerØ00__func__Ø000[0], str(99196), 21)
-}
-
-var _sqlite3IntTokens [2]XToken // sqlite3.c:17407:28
-
-func init() {
- _sqlite3IntTokens = [2]XToken{XToken{X0: str(3240), X1: u32(1)}, XToken{X0: str(51632), X1: u32(1)}}
-}
-
-func _sqlite3ExprAttachSubtrees(tls *crt.TLS, _db *Xsqlite3, _pRoot *XExpr, _pLeft *XExpr, _pRight *XExpr) { // sqlite3.c:91686:1
- if _pRoot != nil {
- goto _0
+ _ = _sNC
+ panic(0)
+}
+
+var _resolveSelectStepØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_resolveSelectStepØ00__func__Ø000[0], str(97145), 18)
+}
+
+// This routine walks an expression tree and resolves references to
+// table columns and result-set columns. At the same time, do error
+// checking on function usage and set a flag if any aggregate functions
+// are seen.
+//
+// To resolve table columns references we look for nodes (or subtrees) of the
+// form X.Y.Z or Y.Z or just Z where
+//
+// X: The name of a database. Ex: "main" or "temp" or
+// the symbolic name assigned to an ATTACH-ed database.
+//
+// Y: The name of a table in a FROM clause. Or in a trigger
+// one of the special names "old" or "new".
+//
+// Z: The name of a column in table Y.
+//
+// The node at the root of the subtree is modified as follows:
+//
+// Expr.op Changed to TK_COLUMN
+// Expr.pTab Points to the Table object for X.Y
+// Expr.iColumn The column index in X.Y. -1 for the rowid.
+// Expr.iTable The VDBE cursor number for X.Y
+//
+//
+// To resolve result-set references, look for expression nodes of the
+// form Z (with no X and Y prefix) where the Z matches the right-hand
+// size of an AS clause in the result-set of a SELECT. The Z expression
+// is replaced by a copy of the left-hand side of the result-set expression.
+// Table-name and function resolution occurs on the substituted expression
+// tree. For example, in:
+//
+// SELECT a+b AS x, c+d AS y FROM t1 ORDER BY x;
+//
+// The "x" term of the order by is replaced by "a+b" to render:
+//
+// SELECT a+b AS x, c+d AS y FROM t1 ORDER BY a+b;
+//
+// Function calls are checked to make sure that the function is
+// defined and that the correct number of arguments are specified.
+// If the function is an aggregate function, then the NC_HasAgg flag is
+// set and the opcode is changed from TK_FUNCTION to TK_AGG_FUNCTION.
+// If an expression contains aggregate functions then the EP_Agg
+// property on the expression is set.
+//
+// An error message is left in pParse if anything is amiss. The number
+// if errors is returned.
+func _sqlite3ResolveExprNames(tls *crt.TLS, _pNC *XNameContext, _pExpr *XExpr) (r0 int32) {
+ var _savedHasAgg uint16
+ var _1_pParse *XParse
+ var _w XWalker
+ if _pExpr == nil {
+ return i32(0)
}
-
- func() {
- if (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91693), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAttachSubtreesØ00__func__Ø000))), unsafe.Pointer(str(49304)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprDelete(tls, _db, _pLeft)
- _sqlite3ExprDelete(tls, _db, _pRight)
- goto _3
-
-_0:
- if _pRight == nil {
- goto _4
+ _1_pParse = (*XParse)(_pNC.X0)
+ if _sqlite3ExprCheckHeight(tls, _1_pParse, (_pExpr.X7)+((*XParse)(_pNC.X0).X57)) != 0 {
+ return i32(1)
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(16 /* X5 */))))) = _pRight
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(4 /* X2 */)))
- *p = (*p) | (uint32(i32(2097408)) & (_pRight.X2))
- sink5 = *p
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pParse)) + uintptr(420 /* X57 */)))
+ *p = (*p) + (_pExpr.X7)
+ sink1 = *p
}
-_4:
- if _pLeft == nil {
- goto _5
+ _savedHasAgg = uint16(int32(_pNC.X7) & i32(4112))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) & i32(-4113))
+ sink14 = *p
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(12 /* X4 */))))) = _pLeft
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = (*XParse)(_pNC.X0)
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _resolveExprStep
+ *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _resolveSelectStep
+ *(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(12 /* X3 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(16 /* X4 */))) = i32(0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pNC
+ _sqlite3WalkExpr(tls, &_w, _pExpr)
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRoot)) + uintptr(4 /* X2 */)))
- *p = (*p) | (uint32(i32(2097408)) & (_pLeft.X2))
- sink5 = *p
+ p := (*int32)(unsafe.Pointer(uintptr(_pNC.X0) + uintptr(420 /* X57 */)))
+ *p = (*p) - (_pExpr.X7)
+ sink1 = *p
}
-_5:
- _exprSetHeight(tls, _pRoot)
-_3:
-}
-
-var _sqlite3ExprAttachSubtreesØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprAttachSubtreesØ00__func__Ø000[0], str(99220), 26)
-}
-
-func _exprSetHeight(tls *crt.TLS, _p *XExpr) { // sqlite3.c:91551:1
- var _nHeight int32 // sqlite3.c:91552:7
- _ = _nHeight
- _nHeight = i32(0)
- _heightOfExpr(tls, (*XExpr)(_p.X4), &_nHeight)
- _heightOfExpr(tls, (*XExpr)(_p.X5), &_nHeight)
- if ((_p.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _0
+ if ((_pNC.X6) > i32(0)) || (((*XParse)(_w.X0).X16) > i32(0)) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(8))
+ sink5 = *p
+ }
}
-
- _heightOfSelect(tls, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), &_nHeight)
- goto _1
-
-_0:
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) == nil {
- goto _2
+ if (int32(_pNC.X7) & i32(16)) != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(2))
+ sink5 = *p
+ }
}
-
- _heightOfExprList(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))), &_nHeight)
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
- *p = (*p) | (uint32(i32(2097408)) & _sqlite3ExprListFlags(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))))
- sink5 = *p
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
+ *p = uint16(int32(*p) | int32(_savedHasAgg))
+ sink14 = *p
}
-_2:
-_1:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = _nHeight + i32(1)
+ return bool2int(((_pExpr.X2) & uint32(i32(8))) != uint32(i32(0)))
+
+ _ = _w
+ panic(0)
}
-func _heightOfExpr(tls *crt.TLS, _p *XExpr, _pnHeight *int32) { // sqlite3.c:91513:1
- if _p == nil {
+// Resolve all names for all expression in an expression list. This is
+// just like sqlite3ResolveExprNames() except that it works for an expression
+// list rather than a single expression.
+func _sqlite3ResolveExprListNames(tls *crt.TLS, _pNC *XNameContext, _pList *XExprList) (r0 int32) {
+ var _i int32
+ if _pList == nil {
goto _0
}
-
- if (_p.X7) <= (*_pnHeight) {
- goto _1
- }
-
- *_pnHeight = _p.X7
+ _i = i32(0)
_1:
-_0:
-}
-
-func _heightOfSelect(tls *crt.TLS, _p *XSelect, _pnHeight *int32) { // sqlite3.c:91528:1
- if _p == nil {
- goto _0
+ if _i >= (_pList.X0) {
+ goto _4
}
-
- _heightOfExpr(tls, (*XExpr)(_p.X9), _pnHeight)
- _heightOfExpr(tls, (*XExpr)(_p.X11), _pnHeight)
- _heightOfExpr(tls, (*XExpr)(_p.X15), _pnHeight)
- _heightOfExpr(tls, (*XExpr)(_p.X16), _pnHeight)
- _heightOfExprList(tls, (*XExprList)(_p.X0), _pnHeight)
- _heightOfExprList(tls, (*XExprList)(_p.X10), _pnHeight)
- _heightOfExprList(tls, (*XExprList)(_p.X12), _pnHeight)
- _heightOfSelect(tls, (*XSelect)(_p.X13), _pnHeight)
+ if _sqlite3ResolveExprNames(tls, _pNC, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0)) != 0 {
+ return i32(2)
+ }
+ _i += 1
+ goto _1
+_4:
_0:
+ return i32(0)
}
-func _heightOfExprList(tls *crt.TLS, _p *XExprList, _pnHeight *int32) { // sqlite3.c:91520:1
- var _1_i int32 // sqlite3.c:91522:9
- _ = _1_i
- if _p == nil {
- goto _0
+// pOrderBy is an ORDER BY or GROUP BY clause in SELECT statement pSelect.
+// The Name context of the SELECT statement is pNC. zType is either
+// "ORDER" or "GROUP" depending on which type of clause pOrderBy is.
+//
+// This routine resolves each term of the clause into an expression.
+// If the order-by term is an integer I between 1 and N (where N is the
+// number of columns in the result set of the SELECT) then the expression
+// in the resolution is a copy of the I-th result-set expression. If
+// the order-by term is an identifier that corresponds to the AS-name of
+// a result-set expression, then the term resolves to a copy of the
+// result-set expression. Otherwise, the expression is resolved in
+// the usual way - using sqlite3ResolveExprNames().
+//
+// This routine returns the number of errors. If errors occur, then
+// an appropriate error message might be left in pParse. (OOM errors
+// excepted.)
+func _resolveOrderGroupBy(tls *crt.TLS, _pNC *XNameContext, _pSelect *XSelect, _pOrderBy *XExprList, _zType *int8) (r0 int32) {
+ var _i, _j, _iCol, _nResult int32
+ var _pItem *TExprList_item
+ var _1_pE, _1_pE2 *XExpr
+ var _pParse *XParse
+ if _pOrderBy == nil {
+ return i32(0)
}
-
- _1_i = i32(0)
+ _nResult = (*XExprList)(_pSelect.X0).X0
+ _pParse = (*XParse)(_pNC.X0)
+ *func() **TExprList_item { _i = i32(0); return &_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
_1:
- if _1_i >= (_p.X0) {
+ if _i >= (_pOrderBy.X0) {
goto _4
}
-
- _heightOfExpr(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))).X0), _pnHeight)
- _1_i += 1
+ _1_pE = (*XExpr)(_pItem.X0)
+ _1_pE2 = _sqlite3ExprSkipCollate(tls, _1_pE)
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zType)) + 1*uintptr(i32(0))))) == i32(71) {
+ goto _5
+ }
+ _iCol = _resolveAsName(tls, _pParse, (*XExprList)(_pSelect.X0), _1_pE2)
+ if _iCol > i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_iCol)
+ goto _2
+ }
+_5:
+ if _sqlite3ExprIsInteger(tls, _1_pE2, &_iCol) == 0 {
+ goto _7
+ }
+ if (_iCol < i32(1)) || (_iCol > i32(65535)) {
+ _resolveOutOfRangeError(tls, _pParse, _zType, _i+i32(1), _nResult)
+ return i32(1)
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_iCol)
+ goto _2
+_7:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
+ if _sqlite3ResolveExprNames(tls, _pNC, _1_pE) != 0 {
+ return i32(1)
+ }
+ _j = i32(0)
+_11:
+ if _j >= ((*XExprList)(_pSelect.X0).X0) {
+ goto _14
+ }
+ if _sqlite3ExprCompare(tls, _1_pE, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSelect.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), i32(-1)) == i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_j + i32(1))
+ }
+ _j += 1
+ goto _11
+_14:
+_2:
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
goto _1
-
_4:
-_0:
+ return _sqlite3ResolveOrderGroupBy(tls, _pParse, _pSelect, _pOrderBy, _zType)
}
-func _sqlite3ExprListFlags(tls *crt.TLS, _pList *XExprList) (r0 uint32) { // sqlite3.c:92572:1
- var _i int32 // sqlite3.c:92573:7
- _ = _i
- var _m uint32 // sqlite3.c:92574:7
- _ = _m
- var _2_pExpr *XExpr // sqlite3.c:92577:13
- _ = _2_pExpr
- _m = u32(0)
- if _pList == nil {
+// pEList is a list of expressions which are really the result set of the
+// a SELECT statement. pE is a term in an ORDER BY or GROUP BY clause.
+// This routine checks to see if pE is a simple identifier which corresponds
+// to the AS-name of one of the terms of the expression list. If it is,
+// this routine return an integer between 1 and N where N is the number of
+// elements in pEList, corresponding to the matching entry. If there is
+// no match, or if pE is not a simple identifier, then this routine
+// return 0.
+//
+// pEList has been resolved. pE has not.
+func _resolveAsName(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _pE *XExpr) (r0 int32) {
+ var _i int32
+ var _1_zCol, _2_zAs *int8
+
+ if int32(_pE.X0) != i32(27) {
goto _0
}
-
+ _1_zCol = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pE)) + uintptr(8 /* X3 */)))))
_i = i32(0)
_1:
- if _i >= (_pList.X0) {
+ if _i >= (_pEList.X0) {
goto _4
}
-
- _2_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- func() {
- if _2_pExpr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92578), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListFlagsØ00__func__Ø000))), unsafe.Pointer(str(44808)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := &_m
- *p = (*p) | (_2_pExpr.X2)
- sink5 = *p
+ _2_zAs = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1
+ if (_2_zAs != nil) && (_sqlite3StrICmp(tls, _2_zAs, _1_zCol) == i32(0)) {
+ return _i + i32(1)
}
_i += 1
goto _1
-
_4:
_0:
- r0 = _m
- return
-}
-
-var _sqlite3ExprListFlagsØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprListFlagsØ00__func__Ø000[0], str(99248), 21)
+ return i32(0)
}
-func _sqlite3ExprCheckHeight(tls *crt.TLS, _pParse *XParse, _nHeight int32) (r0 int32) { // sqlite3.c:91492:1
- var _rc int32 // sqlite3.c:91493:7
- _ = _rc
- var _mxHeight int32 // sqlite3.c:91494:7
- _ = _mxHeight
- _rc = i32(0)
- _mxHeight = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(3))))
- if _nHeight <= _mxHeight {
- goto _0
+// Generate an ORDER BY or GROUP BY term out-of-range error.
+func _resolveOutOfRangeError(tls *crt.TLS, _pParse *XParse, _zType *int8, _i int32, _mx int32) {
+ _sqlite3ErrorMsg(tls, _pParse, str(97163), _i, unsafe.Pointer(_zType), _mx)
+}
+
+// Do a deep comparison of two expression trees. Return 0 if the two
+// expressions are completely identical. Return 1 if they differ only
+// by a COLLATE operator at the top level. Return 2 if there are differences
+// other than the top-level COLLATE operator.
+//
+// If any subelement of pB has Expr.iTable==(-1) then it is allowed
+// to compare equal to an equivalent element in pA with Expr.iTable==iTab.
+//
+// The pA side might be using TK_REGISTER. If that is the case and pB is
+// not using TK_REGISTER but is otherwise equivalent, then still return 0.
+//
+// Sometimes this routine will return 2 even if the two expressions
+// really are equivalent. If we cannot prove that the expressions are
+// identical, we return 2 just to be safe. So if this routine
+// returns 2, then you do not really know for certain if the two
+// expressions are the same. But if you get a 0 or 1 return, then you
+// can be sure the expressions are the same. In the places where
+// this routine is used, it does not hurt to get an extra 2 - that
+// just might result in some slightly slower code. But returning
+// an incorrect 0 or 1 could lead to a malfunction.
+func _sqlite3ExprCompare(tls *crt.TLS, _pA *XExpr, _pB *XExpr, _iTab int32) (r0 int32) {
+ var _combinedFlags uint32
+ if (_pA == nil) || (_pB == nil) {
+ return func() int32 {
+ if _pB == _pA {
+ return i32(0)
+ }
+ return i32(2)
+ }()
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(99272), _mxHeight)
- _rc = i32(1)
-_0:
- return _rc
-}
-
-func _setJoinExpr(tls *crt.TLS, _p *XExpr, _iTable int32) { // sqlite3.c:116893:1
- var _2_i int32 // sqlite3.c:116900:11
- _ = _2_i
-_0:
- if _p == nil {
- goto _1
+ _combinedFlags = (_pA.X2) | (_pB.X2)
+ if (_combinedFlags & uint32(i32(1024))) == 0 {
+ goto _4
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1))
- sink5 = *p
+ if ((((_pA.X2) & (_pB.X2)) & uint32(i32(1024))) != uint32(i32(0))) && ((*(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */)))))) == (*(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X3 */))))))) {
+ return i32(0)
}
- func() {
- if ((_p.X2) & uint32(i32(24576))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116896), unsafe.Pointer((*int8)(unsafe.Pointer(&_setJoinExprØ00__func__Ø000))), unsafe.Pointer(str(50976)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(131072))
- sink5 = *p
+ return i32(2)
+
+_4:
+ if int32(_pA.X0) == int32(_pB.X0) {
+ goto _7
}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X11 */))) = int16(_iTable)
- if int32(_p.X0) != i32(151) || (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) == nil {
- goto _5
+ if (int32(_pA.X0) == i32(94)) && (_sqlite3ExprCompare(tls, (*XExpr)(_pA.X4), _pB, _iTab) < i32(2)) {
+ return i32(1)
}
-
- _2_i = i32(0)
-_6:
- if _2_i >= ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))).X0) {
- goto _9
+ if (int32(_pB.X0) == i32(94)) && (_sqlite3ExprCompare(tls, _pA, (*XExpr)(_pB.X4), _iTab) < i32(2)) {
+ return i32(1)
}
+ return i32(2)
- _setJoinExpr(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(_2_i))).X0), _iTable)
- _2_i += 1
- goto _6
-
-_9:
-_5:
- _setJoinExpr(tls, (*XExpr)(_p.X4), _iTable)
- _p = (*XExpr)(_p.X5)
- goto _0
-
-_1:
-}
-
-var _setJoinExprØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_setJoinExprØ00__func__Ø000[0], str(99320), 12)
-}
-
-func _sqlite3MatchSpanName(tls *crt.TLS, _zSpan *int8, _zCol *int8, _zTab *int8, _zDb *int8) (r0 int32) { // sqlite3.c:89477:1
- var _n int32 // sqlite3.c:89483:7
- _ = _n
- _n = i32(0)
-_0:
+_7:
+ if int32(_pA.X0) == i32(152) || int32(_pA.X0) == i32(154) || (*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */)))))) == nil {
+ goto _14
+ }
+ if int32(_pA.X0) != i32(151) {
+ goto _15
+ }
+ if _sqlite3StrICmp(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */))))), *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X3 */)))))) != i32(0) {
+ return i32(2)
+ }
+ goto _17
+_15:
+ if crt.Xstrcmp(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */))))), *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X3 */)))))) != i32(0) {
+ return func() int32 {
+ if int32(_pA.X0) == i32(94) {
+ return i32(1)
+ }
+ return i32(2)
+ }()
+ }
+_17:
+_14:
+ if ((_pA.X2) & uint32(i32(16))) != ((_pB.X2) & uint32(i32(16))) {
+ return i32(2)
+ }
if func() int32 {
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) != 0 {
+ if (_combinedFlags & uint32(i32(16384))) == uint32(i32(0)) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89484), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MatchSpanNameØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95607), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCompareØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) == i32(46) {
- goto _6
+ }() == 0 {
+ goto _24
}
-
- _n += 1
- goto _0
-
-_6:
- if _zDb == nil || Xsqlite3_strnicmp(tls, _zSpan, _zDb, _n) == i32(0) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zDb)) + 1*uintptr(_n)))) == i32(0) {
- goto _9
+ if (_combinedFlags & uint32(i32(2048))) != 0 {
+ return i32(2)
}
- return i32(0)
-
-_9:
- {
- p := &_zSpan
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n+i32(1))))
- sink0 = *p
+ if _sqlite3ExprCompare(tls, (*XExpr)(_pA.X4), (*XExpr)(_pB.X4), _iTab) != 0 {
+ return i32(2)
+ }
+ if _sqlite3ExprCompare(tls, (*XExpr)(_pA.X5), (*XExpr)(_pB.X5), _iTab) != 0 {
+ return i32(2)
+ }
+ if _sqlite3ExprListCompare(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(20 /* X6 */)))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(20 /* X6 */)))))), _iTab) != 0 {
+ return i32(2)
}
- _n = i32(0)
-_10:
if func() int32 {
- if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) != 0 {
+ if (_combinedFlags & uint32(i32(8192))) == uint32(i32(0)) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89489), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MatchSpanNameØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95612), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCompareØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
- }() == 0 || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zSpan)) + 1*uintptr(_n)))) == i32(46) {
- goto _16
+ }() == 0 || int32(_pA.X0) == i32(97) {
+ goto _32
+ }
+ if int32(_pA.X9) != int32(_pB.X9) {
+ return i32(2)
+ }
+ if ((_pA.X8) != (_pB.X8)) && (((_pA.X8) != _iTab) || func() int32 {
+ if (_pB.X8) >= i32(0) {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCompareØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0) {
+ return i32(2)
}
+_32:
+_24:
+ return i32(0)
+}
- _n += 1
- goto _10
+var _sqlite3ExprCompareØ00__func__Ø000 [19]int8
-_16:
- if _zTab == nil || Xsqlite3_strnicmp(tls, _zSpan, _zTab, _n) == i32(0) && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zTab)) + 1*uintptr(_n)))) == i32(0) {
- goto _19
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCompareØ00__func__Ø000[0], str(97219), 19)
+}
+
+// Compare two ExprList objects. Return 0 if they are identical and
+// non-zero if they differ in any way.
+//
+// If any subelement of pB has Expr.iTable==(-1) then it is allowed
+// to compare equal to an equivalent element in pA with Expr.iTable==iTab.
+//
+// This routine might return non-zero for equivalent ExprLists. The
+// only consequence will be disabled optimizations. But this routine
+// must never return 0 if the two ExprList objects are different, or
+// a malfunction will result.
+//
+// Two NULL pointers are considered to be the same. But a NULL pointer
+// always differs from a non-NULL pointer.
+func _sqlite3ExprListCompare(tls *crt.TLS, _pA *XExprList, _pB *XExprList, _iTab int32) (r0 int32) {
+ var _i int32
+ var _1_pExprA, _1_pExprB *XExpr
+ if (_pA == nil) && (_pB == nil) {
+ return i32(0)
+ }
+ if (_pA == nil) || (_pB == nil) {
+ return i32(1)
+ }
+ if (_pA.X0) != (_pB.X0) {
+ return i32(1)
+ }
+ _i = i32(0)
+_5:
+ if _i >= (_pA.X0) {
+ goto _8
+ }
+ _1_pExprA = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ _1_pExprB = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ if int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3) != int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3) {
+ return i32(1)
+ }
+ if _sqlite3ExprCompare(tls, _1_pExprA, _1_pExprB, _iTab) != 0 {
+ return i32(1)
}
+ _i += 1
+ goto _5
+_8:
return i32(0)
+}
-_19:
- {
- p := &_zSpan
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_n+i32(1))))
- sink0 = *p
+// Check every term in the ORDER BY or GROUP BY clause pOrderBy of
+// the SELECT statement pSelect. If any term is reference to a
+// result set expression (as determined by the ExprList.a.u.x.iOrderByCol
+// field) then convert that term into a copy of the corresponding result set
+// column.
+//
+// If any errors are detected, add an error message to pParse and
+// return non-zero. Return zero if no errors are seen.
+func _sqlite3ResolveOrderGroupBy(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect, _pOrderBy *XExprList, _zType *int8) (r0 int32) {
+ var _i int32
+ var _db *Xsqlite3
+ var _pEList *XExprList
+ var _pItem *TExprList_item
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_pOrderBy == nil) || (((*Xsqlite3)(_pParse.X0).X17) != 0) {
+ return i32(0)
}
- if _zCol == nil || _sqlite3StrICmp(tls, _zSpan, _zCol) == i32(0) {
- goto _21
+ if (_pOrderBy.X0) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(97238), unsafe.Pointer(_zType))
+ return i32(1)
+ }
+ _pEList = (*XExprList)(_pSelect.X0)
+ func() {
+ if _pEList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90418), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResolveOrderGroupByØ00__func__Ø000))), unsafe.Pointer(str(45052)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *func() **TExprList_item { _i = i32(0); return &_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
+_5:
+ if _i >= (_pOrderBy.X0) {
+ goto _8
+ }
+ if ((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(16 /* X5 */))))).X0) == 0 {
+ goto _9
+ }
+ if int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))).X0) > (_pEList.X0) {
+ _resolveOutOfRangeError(tls, _pParse, _zType, _i+i32(1), _pEList.X0)
+ return i32(1)
}
+ _resolveAlias(tls, _pParse, _pEList, int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))).X0)-i32(1), (*XExpr)(_pItem.X0), _zType, i32(0))
+_9:
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
+ goto _5
+_8:
return i32(0)
-
-_21:
- return i32(1)
}
-var _sqlite3MatchSpanNameØ00__func__Ø000 [21]int8 // -
+var _sqlite3ResolveOrderGroupByØ00__func__Ø000 [27]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3MatchSpanNameØ00__func__Ø000[0], str(99332), 21)
+ crt.Xstrncpy(nil, &_sqlite3ResolveOrderGroupByØ00__func__Ø000[0], str(97269), 27)
}
-func _sqlite3IdListIndex(tls *crt.TLS, _pList *XIdList, _zName *int8) (r0 int32) { // sqlite3.c:103329:1
- var _i int32 // sqlite3.c:103330:7
- _ = _i
- if _pList != nil {
- goto _0
+// Error message for when two or more terms of a compound select have different
+// size result sets.
+func _sqlite3SelectWrongNumTermsError(tls *crt.TLS, _pParse *XParse, _p *XSelect) {
+ if ((_p.X3) & uint32(i32(512))) != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(97296))
+ goto _1
}
- return i32(-1)
-
-_0:
- _i = i32(0)
+ _sqlite3ErrorMsg(tls, _pParse, str(97342), unsafe.Pointer(_selectOpName(tls, int32(_p.X1))))
_1:
- if _i >= (_pList.X1) {
- goto _4
- }
+}
- if _sqlite3StrICmp(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pList.X0)+8*uintptr(_i))).X0, _zName) != i32(0) {
- goto _5
+// Name of the connection operator, used for error messages.
+func _selectOpName(tls *crt.TLS, _id int32) (r0 *int8) {
+ var _z *int8
+ switch _id {
+ case i32(116):
+ goto _1
+ case i32(117):
+ goto _3
+ case i32(118):
+ goto _2
+ default:
+ goto _4
}
- return _i
-
-_5:
- _i += 1
- goto _1
+_1:
+ _z = str(47100)
+ goto _5
+_2:
+ _z = str(25692)
+ goto _5
+_3:
+ _z = str(25685)
+ goto _5
_4:
- return i32(-1)
-}
-
-func _sqlite3TokenInit(tls *crt.TLS, _p *XToken, _z *int8) { // sqlite3.c:27927:1
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _z
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = uint32(_sqlite3Strlen30(tls, _z))
+ _z = str(25675)
+ goto _5
+_5:
+ return _z
}
-func _sqlite3ExprListSetName(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pName *XToken, _dequote int32) { // sqlite3.c:92490:1
- var _1_pItem *TExprList_item // sqlite3.c:92498:26
- _ = _1_pItem
+// Analyze the ORDER BY clause in a compound SELECT statement. Modify
+// each term of the ORDER BY clause is a constant integer between 1
+// and N where N is the number of columns in the compound SELECT.
+//
+// ORDER BY terms that are already an integer between 1 and N are
+// unmodified. ORDER BY terms that are integers outside the range of
+// 1 through N generate an error. ORDER BY terms that are expressions
+// are matched against result set expressions of compound SELECT
+// beginning with the left-most SELECT and working toward the right.
+// At the first match, the ORDER BY expression is transformed into
+// the integer column number.
+//
+// Return the number of errors seen.
+func _resolveCompoundOrderBy(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) (r0 int32) {
+ var _i, _moreToDo, _5_iCol int32
+ var _db *Xsqlite3
+ var _pOrderBy, _pEList *XExprList
+ var _4_pItem *TExprList_item
+ var _5_pE, _5_pDup, _11_pNew, _13_pParent *XExpr
+ _moreToDo = i32(1)
+ _pOrderBy = (*XExprList)(_pSelect.X12)
+ if _pOrderBy == nil {
+ return i32(0)
+ }
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_pOrderBy.X0) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(97424))
+ return i32(1)
+ }
+ _i = i32(0)
+_2:
+ if _i >= (_pOrderBy.X0) {
+ goto _5
+ }
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(13 /* X4 */))), int8(i32(0)), 1, 0)
+ _i += 1
+ goto _2
+_5:
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelect)) + uintptr(64 /* X14 */))))) = nil
+_6:
+ if (*XSelect)(_pSelect.X13) != nil {
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pSelect.X13) + uintptr(64 /* X14 */))))) = _pSelect
+ _pSelect = (*XSelect)(_pSelect.X13)
+ goto _6
+ }
+_8:
+ if _pSelect == nil || _moreToDo == 0 {
+ goto _9
+ }
+ _moreToDo = i32(0)
+ _pEList = (*XExprList)(_pSelect.X0)
func() {
- if _pList == nil && int32((*Xsqlite3)(_pParse.X0).X17) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92496), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetNameØ00__func__Ø000))), unsafe.Pointer(str(99356)))
+ if _pEList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90332), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(45052)))
crt.X__builtin_abort(tls)
}
}()
- if _pList == nil {
- goto _3
+ *func() **TExprList_item { _i = i32(0); return &_4_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
+_13:
+ if _i >= (_pOrderBy.X0) {
+ goto _16
}
-
+ _5_iCol = i32(-1)
+ if ((uint32(_4_pItem.X4) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ goto _14
+ }
+ _5_pE = _sqlite3ExprSkipCollate(tls, (*XExpr)(_4_pItem.X0))
+ if _sqlite3ExprIsInteger(tls, _5_pE, &_5_iCol) == 0 {
+ goto _18
+ }
+ if (_5_iCol <= i32(0)) || (_5_iCol > (_pEList.X0)) {
+ _resolveOutOfRangeError(tls, _pParse, str(25745), _i+i32(1), _pEList.X0)
+ return i32(1)
+ }
+ goto _21
+_18:
+ _5_iCol = _resolveAsName(tls, _pParse, _pEList, _5_pE)
+ if _5_iCol != i32(0) {
+ goto _22
+ }
+ _5_pDup = _sqlite3ExprDup(tls, _db, _5_pE, i32(0))
+ if (_db.X17) == 0 {
+ func() {
+ if _5_pDup == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90348), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(97458)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _5_iCol = _resolveOrderByTermToExprList(tls, _pParse, _pSelect, _5_pDup)
+ }
+ _sqlite3ExprDelete(tls, _db, _5_pDup)
+_22:
+_21:
+ if _5_iCol <= i32(0) {
+ goto _26
+ }
+ _11_pNew = _sqlite3Expr(tls, _db, i32(134), nil)
+ if _11_pNew == nil {
+ return i32(1)
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pNew)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1024))
+ sink5 = *p
+ }
+ *(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pNew)) + uintptr(8 /* X3 */))))) = _5_iCol
+ if (*XExpr)(_4_pItem.X0) == _5_pE {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem)) + uintptr(0 /* X0 */))))) = _11_pNew
+ goto _29
+ }
+ _13_pParent = (*XExpr)(_4_pItem.X0)
func() {
- if (_pList.X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92499), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetNameØ00__func__Ø000))), unsafe.Pointer(str(20888)))
+ if int32(_13_pParent.X0) != i32(94) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90365), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(97463)))
crt.X__builtin_abort(tls)
}
}()
- _1_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr((_pList.X0)-i32(1))))
+_32:
+ if int32((*XExpr)(_13_pParent.X4).X0) == i32(94) {
+ _13_pParent = (*XExpr)(_13_pParent.X4)
+ goto _32
+ }
func() {
- if (_1_pItem.X1) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92501), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetNameØ00__func__Ø000))), unsafe.Pointer(str(99396)))
+ if (*XExpr)(_13_pParent.X4) != _5_pE {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90367), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(97487)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(4 /* X1 */))) = _sqlite3DbStrNDup(tls, (*Xsqlite3)(_pParse.X0), _pName.X0, uint64(_pName.X1))
- if _dequote == 0 {
- goto _8
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pParent)) + uintptr(12 /* X4 */))))) = _11_pNew
+_29:
+ _sqlite3ExprDelete(tls, _db, _5_pE)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_5_iCol)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(13 /* X4 */))), int8(i32(1)), 1, 0)
+ goto _36
+_26:
+ _moreToDo = i32(1)
+_36:
+_14:
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_4_pItem }())) += uintptr(20)
+ goto _13
+_16:
+ _pSelect = (*XSelect)(_pSelect.X14)
+ goto _8
+_9:
+ _i = i32(0)
+_37:
+ if _i >= (_pOrderBy.X0) {
+ goto _40
}
-
- _sqlite3Dequote(tls, _1_pItem.X1)
-_8:
-_3:
+ if int32((uint32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X4)<>uint(i32(31))) == i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(97506), _i+i32(1))
+ return i32(1)
+ }
+ _i += 1
+ goto _37
+_40:
+ return i32(0)
}
-var _sqlite3ExprListSetNameØ00__func__Ø000 [23]int8 // -
+var _resolveCompoundOrderByØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprListSetNameØ00__func__Ø000[0], str(99412), 23)
+ crt.Xstrncpy(nil, &_resolveCompoundOrderByØ00__func__Ø000[0], str(97567), 23)
}
-func _selectPopWith(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) { // sqlite3.c:120812:1
- var _pParse *XParse // sqlite3.c:120813:9
- _ = _pParse
- var _1_pWith *XWith // sqlite3.c:120815:10
- _ = _1_pWith
- _pParse = (*XParse)(_pWalker.X0)
- if (*XWith)(_pParse.X70) == nil || (*XSelect)(_p.X13) != nil {
- goto _1
- }
-
- _1_pWith = (*XWith)(_findRightmost(tls, _p).X17)
- if _1_pWith == nil {
- goto _2
- }
-
+// pE is a pointer to an expression which is a single term in the
+// ORDER BY of a compound SELECT. The expression has not been
+// name resolved.
+//
+// At the point this routine is called, we already know that the
+// ORDER BY term is not an integer index into the result set. That
+// case is handled by the calling routine.
+//
+// Attempt to match pE against result set columns in the left-most
+// SELECT statement. Return the index i of the matching column,
+// as an indication to the caller that it should sort by the i-th column.
+// The left-most column is 1. In other words, the value returned is the
+// same integer value that would be used in the SQL statement to indicate
+// the column.
+//
+// If there is no match, return 0. Return -1 if an error occurs.
+func _resolveOrderByTermToExprList(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect, _pE *XExpr) (r0 int32) {
+ var _i, _rc int32
+ var _savedSuppErr uint8
+ var _db *Xsqlite3
+ var _pEList *XExprList
+ var _nc XNameContext
func() {
- if (*XWith)(_pParse.X70) != _1_pWith {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120817), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectPopWithØ00__func__Ø000))), unsafe.Pointer(str(99436)))
+ if _sqlite3ExprIsInteger(tls, _pE, &_i) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90240), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveOrderByTermToExprListØ00__func__Ø000))), unsafe.Pointer(str(97590)))
crt.X__builtin_abort(tls)
}
}()
- *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(476 /* X70 */))))) = (*XWith)(_1_pWith.X1)
-_2:
-_1:
-}
-
-func _findRightmost(tls *crt.TLS, _p *XSelect) (r0 *XSelect) { // sqlite3.c:116699:1
-_0:
- if (*XSelect)(_p.X14) == nil {
- goto _1
+ _pEList = (*XExprList)(_pSelect.X0)
+ crt.Xmemset(tls, (unsafe.Pointer)(&_nc), i32(0), u32(32))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_pSelect.X8)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(8 /* X2 */))))) = _pEList
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(28 /* X7 */))) = uint16(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(24 /* X6 */))) = i32(0)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _savedSuppErr = _db.X21
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) = uint8(i32(1))
+ _rc = _sqlite3ResolveExprNames(tls, &_nc, _pE)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) = _savedSuppErr
+ if _rc != 0 {
+ return i32(0)
}
+ _i = i32(0)
+_3:
+ if _i >= (_pEList.X0) {
+ goto _6
+ }
+ if _sqlite3ExprCompare(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), _pE, i32(-1)) < i32(2) {
+ return _i + i32(1)
+ }
+ _i += 1
+ goto _3
+_6:
+ return i32(0)
- _p = (*XSelect)(_p.X14)
- goto _0
-
-_1:
- return _p
+ _ = _nc
+ panic(0)
}
-var _selectPopWithØ00__func__Ø000 [14]int8 // -
+var _resolveOrderByTermToExprListØ00__func__Ø000 [29]int8
func init() {
- crt.Xstrncpy(nil, &_selectPopWithØ00__func__Ø000[0], str(99460), 14)
+ crt.Xstrncpy(nil, &_resolveOrderByTermToExprListØ00__func__Ø000[0], str(97622), 29)
}
-func _sqlite3ResolveSelectNames(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pOuterNC *XNameContext) { // sqlite3.c:90846:1
- var _w XWalker // sqlite3.c:90851:10
- _ = _w
- func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResolveSelectNamesØ00__func__Ø000))), unsafe.Pointer(str(768)))
- crt.X__builtin_abort(tls)
- }
- }()
+// This routine adds datatype and collating sequence information to
+// the Table structures of all FROM-clause subqueries in a
+// SELECT statement.
+//
+// Use this routine after name resolution.
+func _sqlite3SelectAddTypeInfo(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) {
+ var _w XWalker
crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _resolveExprStep
- *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _resolveSelectStep
+ *(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(12 /* X3 */))))) = _selectAddSubqueryTypeInfo
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _sqlite3ExprWalkNoop
*(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = _pParse
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pOuterNC
- _sqlite3WalkSelect(tls, &_w, _p)
+ _sqlite3WalkSelect(tls, &_w, _pSelect)
+ _ = _w
}
-var _sqlite3ResolveSelectNamesØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ResolveSelectNamesØ00__func__Ø000[0], str(99476), 26)
-}
-
-func _resolveExprStep(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:89920:1
- var _pNC *XNameContext // sqlite3.c:89921:15
- _ = _pNC
- var _pParse *XParse // sqlite3.c:89922:9
- _ = _pParse
- var _1_pSrcList *XSrcList // sqlite3.c:89933:13
- _ = _1_pSrcList
- var _1_i int32 // sqlite3.c:89934:9
- _ = _1_i
- var _4_zColumn *int8 // sqlite3.c:89972:18
- _ = _4_zColumn
- var _4_zTable *int8 // sqlite3.c:89973:18
- _ = _4_zTable
- var _4_zDb *int8 // sqlite3.c:89974:18
- _ = _4_zDb
- var _4_pRight *XExpr // sqlite3.c:89975:12
- _ = _4_pRight
- var _9_pList *XExprList // sqlite3.c:90001:16
- _ = _9_pList
- var _9_n int32 // sqlite3.c:90002:11
- _ = _9_n
- var _9_no_such_func int32 // sqlite3.c:90003:11
- _ = _9_no_such_func
- var _9_wrong_num_args int32 // sqlite3.c:90004:11
- _ = _9_wrong_num_args
- var _9_is_agg int32 // sqlite3.c:90005:11
- _ = _9_is_agg
- var _9_nId int32 // sqlite3.c:90006:11
- _ = _9_nId
- var _9_zId *int8 // sqlite3.c:90007:18
- _ = _9_zId
- var _9_pDef *XFuncDef // sqlite3.c:90008:15
- _ = _9_pDef
- var _9_enc uint8 // sqlite3.c:90009:10
- _ = _9_enc
- var _18_auth int32 // sqlite3.c:90049:15
- _ = _18_auth
- var _26_pNC2 *XNameContext // sqlite3.c:90094:21
- _ = _26_pNC2
- var _30_nRef int32 // sqlite3.c:90122:13
- _ = _30_nRef
- var _33_nLeft int32 // sqlite3.c:90146:11
- _ = _33_nLeft
- var _33_nRight int32 // sqlite3.c:90146:18
- _ = _33_nRight
- _pNC = (*XNameContext)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
+// This is a Walker.xSelectCallback callback for the sqlite3SelectTypeInfo()
+// interface.
+//
+// For each FROM-clause subquery, add Column.zType and Column.zColl
+// information to the Table structure that represents the result set
+// of that subquery.
+//
+// The Table structure that represents the result set was constructed
+// by selectExpander() but the type and collation information was omitted
+// at that point because identifiers had not yet been resolved. This
+// routine is called after identifier resolution.
+func _selectAddSubqueryTypeInfo(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) {
+ var _i int32
+ var _1_pTab *XTable
+ var _pTabList *XSrcList
+ var _pFrom *TSrcList_item
+ var _2_pSel *XSelect
+ var _pParse *XParse
func() {
- if _pNC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89925), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99504)))
+ if ((_p.X3) & uint32(i32(4))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121182), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectAddSubqueryTypeInfoØ00__func__Ø000))), unsafe.Pointer(str(97651)))
crt.X__builtin_abort(tls)
}
}()
- _pParse = (*XParse)(_pNC.X0)
func() {
- if _pParse != (*XParse)(_pWalker.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89927), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99512)))
+ if ((_p.X3) & uint32(i32(128))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121183), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectAddSubqueryTypeInfoØ00__func__Ø000))), unsafe.Pointer(str(97677)))
crt.X__builtin_abort(tls)
}
}()
- if ((_pExpr.X2) & uint32(i32(4))) == uint32(i32(0)) {
- goto _4
- }
- return i32(1)
-
-_4:
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(4))
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(128))
sink5 = *p
}
- if (*XSrcList)(_pNC.X1) == nil || ((*XSrcList)(_pNC.X1).X1) <= uint32(i32(0)) {
- goto _6
- }
-
- _1_pSrcList = (*XSrcList)(_pNC.X1)
- _1_i = i32(0)
-_7:
- if _1_i >= ((*XSrcList)(_pNC.X1).X0) {
- goto _10
+ _pParse = (*XParse)(_pWalker.X0)
+ _pTabList = (*XSrcList)(_p.X8)
+ *func() **TSrcList_item { _i = i32(0); return &_pFrom }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
+_4:
+ if _i >= (_pTabList.X0) {
+ goto _7
}
-
+ _1_pTab = (*XTable)(_pFrom.X4)
func() {
- if ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrcList))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i))).X11) < i32(0) || ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrcList))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i))).X11) >= (_pParse.X17) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89936), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99536)))
+ if _1_pTab == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121189), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectAddSubqueryTypeInfoØ00__func__Ø000))), unsafe.Pointer(str(43594)))
crt.X__builtin_abort(tls)
}
}()
- _1_i += 1
- goto _7
-
-_10:
-_6:
- switch int32(_pExpr.X0) {
- case i32(20):
- goto _19
- case i32(27):
- goto _15
- case i32(72):
- goto _29
- case i32(73):
- goto _22
- case i32(74):
- goto _20
- case i32(77):
- goto _24
- case i32(78):
- goto _23
- case i32(79):
- goto _27
- case i32(80):
- goto _26
- case i32(81):
- goto _25
- case i32(82):
- goto _28
- case i32(119):
- goto _18
- case i32(122):
- goto _16
- case i32(135):
- goto _21
- case i32(148):
- goto _30
- case i32(151):
- goto _17
- default:
- goto _31
+ if ((_1_pTab.X9) & uint32(i32(2))) == uint32(i32(0)) {
+ goto _10
}
-
-_15:
-_16:
- if int32(_pExpr.X0) != i32(27) {
- goto _32
+ _2_pSel = (*XSelect)(_pFrom.X5)
+ if _2_pSel == nil {
+ goto _11
}
-
- _4_zDb = nil
- _4_zTable = nil
- _4_zColumn = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
- goto _33
-
-_32:
- _notValid(tls, _pParse, _pNC, str(99604), i32(32))
- _4_pRight = (*XExpr)(_pExpr.X5)
- if int32(_4_pRight.X0) != i32(27) {
- goto _34
+_12:
+ if (*XSelect)(_2_pSel.X13) != nil {
+ _2_pSel = (*XSelect)(_2_pSel.X13)
+ goto _12
}
+ _sqlite3SelectAddColumnTypeAndCollation(tls, _pParse, _1_pTab, _2_pSel)
+_11:
+_10:
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pFrom }())) += uintptr(68)
+ goto _4
+_7:
+}
- _4_zDb = nil
- _4_zTable = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(8 /* X3 */)))))
- _4_zColumn = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pRight)) + uintptr(8 /* X3 */)))))
- goto _35
-
-_34:
+var _selectAddSubqueryTypeInfoØ00__func__Ø000 [26]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_selectAddSubqueryTypeInfoØ00__func__Ø000[0], str(97711), 26)
+}
+
+// This routine attempts to flatten subqueries as a performance optimization.
+// This routine returns 1 if it makes changes and 0 if no flattening occurs.
+//
+// To understand the concept of flattening, consider the following
+// query:
+//
+// SELECT a FROM (SELECT x+y AS a FROM t1 WHERE z<100) WHERE a>5
+//
+// The default way of implementing this query is to execute the
+// subquery first and store the results in a temporary table, then
+// run the outer query on that temporary table. This requires two
+// passes over the data. Furthermore, because the temporary table
+// has no indices, the WHERE clause on the outer query cannot be
+// optimized.
+//
+// This routine attempts to rewrite queries such as the above into
+// a single flat select, like this:
+//
+// SELECT x+y AS a FROM t1 WHERE z<100 AND a>5
+//
+// The code generated for this simplification gives the same result
+// but only has to scan the data once. And because indices might
+// exist on the table t1, a complete scan of the data might be
+// avoided.
+//
+// Flattening is only attempted if all of the following are true:
+//
+// (1) The subquery and the outer query do not both use aggregates.
+//
+// (2) The subquery is not an aggregate or (2a) the outer query is not a join
+// and (2b) the outer query does not use subqueries other than the one
+// FROM-clause subquery that is a candidate for flattening. (2b is
+// due to ticket [2f7170d73bf9abf80] from 2015-02-09.)
+//
+// (3) The subquery is not the right operand of a LEFT JOIN
+// or the subquery is not itself a join and the outer query is not
+// an aggregate.
+//
+// (4) The subquery is not DISTINCT.
+//
+// (**) At one point restrictions (4) and (5) defined a subset of DISTINCT
+// sub-queries that were excluded from this optimization. Restriction
+// (4) has since been expanded to exclude all DISTINCT subqueries.
+//
+// (6) The subquery does not use aggregates or the outer query is not
+// DISTINCT.
+//
+// (7) The subquery has a FROM clause. TODO: For subqueries without
+// A FROM clause, consider adding a FROM clause with the special
+// table sqlite_once that consists of a single row containing a
+// single NULL.
+//
+// (8) The subquery does not use LIMIT or the outer query is not a join.
+//
+// (9) The subquery does not use LIMIT or the outer query does not use
+// aggregates.
+//
+// (**) Restriction (10) was removed from the code on 2005-02-05 but we
+// accidently carried the comment forward until 2014-09-15. Original
+// text: "The subquery does not use aggregates or the outer query
+// does not use LIMIT."
+//
+// (11) The subquery and the outer query do not both have ORDER BY clauses.
+//
+// (**) Not implemented. Subsumed into restriction (3). Was previously
+// a separate restriction deriving from ticket #350.
+//
+// (13) The subquery and outer query do not both use LIMIT.
+//
+// (14) The subquery does not use OFFSET.
+//
+// (15) The outer query is not part of a compound select or the
+// subquery does not have a LIMIT clause.
+// (See ticket #2339 and ticket [02a8e81d44]).
+//
+// (16) The outer query is not an aggregate or the subquery does
+// not contain ORDER BY. (Ticket #2942) This used to not matter
+// until we introduced the group_concat() function.
+//
+// (17) The sub-query is not a compound select, or it is a UNION ALL
+// compound clause made up entirely of non-aggregate queries, and
+// the parent query:
+//
+// * is not itself part of a compound select,
+// * is not an aggregate or DISTINCT query, and
+// * is not a join
+//
+// The parent and sub-query may contain WHERE clauses. Subject to
+// rules (11), (13) and (14), they may also contain ORDER BY,
+// LIMIT and OFFSET clauses. The subquery cannot use any compound
+// operator other than UNION ALL because all the other compound
+// operators have an implied DISTINCT which is disallowed by
+// restriction (4).
+//
+// Also, each component of the sub-query must return the same number
+// of result columns. This is actually a requirement for any compound
+// SELECT statement, but all the code here does is make sure that no
+// such (illegal) sub-query is flattened. The caller will detect the
+// syntax error and return a detailed message.
+//
+// (18) If the sub-query is a compound select, then all terms of the
+// ORDER by clause of the parent must be simple references to
+// columns of the sub-query.
+//
+// (19) The subquery does not use LIMIT or the outer query does not
+// have a WHERE clause.
+//
+// (20) If the sub-query is a compound select, then it must not use
+// an ORDER BY clause. Ticket #3773. We could relax this constraint
+// somewhat by saying that the terms of the ORDER BY clause must
+// appear as unmodified result columns in the outer query. But we
+// have other optimizations in mind to deal with that case.
+//
+// (21) The subquery does not use LIMIT or the outer query is not
+// DISTINCT. (See ticket [752e1646fc]).
+//
+// (22) The subquery is not a recursive CTE.
+//
+// (23) The parent is not a recursive CTE, or the sub-query is not a
+// compound query. This restriction is because transforming the
+// parent to a compound query confuses the code that handles
+// recursive queries in multiSelect().
+//
+// (24) The subquery is not an aggregate that uses the built-in min() or
+// or max() functions. (Without this restriction, a query like:
+// "SELECT x FROM (SELECT max(y), x FROM t1)" would not necessarily
+// return the value X for which Y was maximal.)
+//
+//
+// In this routine, the "p" parameter is a pointer to the outer query.
+// The subquery is p->pSrc->a[iFrom]. isAgg is true if the outer query
+// uses aggregates and subqueryIsAgg is true if the subquery uses aggregates.
+//
+// If flattening is not attempted, this routine is a no-op and returns 0.
+// If flattening is attempted this routine returns 1.
+//
+// All of the expression analysis must occur on both the outer query and
+// the subquery before this routine runs.
+func _flattenSubquery(tls *crt.TLS, _pParse *XParse, _p *XSelect, _iFrom int32, _isAgg int32, _subqueryIsAgg int32) (r0 int32) {
+ var _iParent, _iNewParent, _isLeftJoin, _i, _17_ii, _25_nSubSrc int32
+ var _zSavedAuthContext, _33_zName *int8
+ var _25_jointype uint8
+ var _db *Xsqlite3
+ var _22_pTabToDel *XTable
+ var _pSrc, _pSubSrc *XSrcList
+ var _pSubitem *TSrcList_item
+ var _pList, _19_pOrderBy, _34_pOrderBy *XExprList
+ var _pParent, _pSub, _pSub1, _19_pNew, _19_pPrior *XSelect
+ var _pWhere, _19_pLimit, _19_pOffset *XExpr
+ var _23_pToplevel *XParse
+ var _39_x XSubstContext
+ _zSavedAuthContext = _pParse.X65
+ _iNewParent = i32(-1)
+ _isLeftJoin = i32(0)
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if int32(_4_pRight.X0) != i32(122) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89989), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99624)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119953), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
- _4_zDb = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(8 /* X3 */)))))
- _4_zTable = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_4_pRight.X4) + uintptr(8 /* X3 */)))))
- _4_zColumn = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_4_pRight.X5) + uintptr(8 /* X3 */)))))
-_35:
-_33:
- r0 = _lookupName(tls, _pParse, _4_zDb, _4_zTable, _4_zColumn, _pNC, _pExpr)
- return
-
-_17:
- _9_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
- _9_n = func() int32 {
- if _9_pList != nil {
- return (_9_pList.X0)
+ func() {
+ if (*XSelect)(_p.X13) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119954), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97737)))
+ crt.X__builtin_abort(tls)
}
- return i32(0)
}()
- _9_no_such_func = i32(0)
- _9_wrong_num_args = i32(0)
- _9_is_agg = i32(0)
- _9_enc = (*Xsqlite3)(_pParse.X0).X14
+ if (int32(_db.X13) & i32(1)) != i32(0) {
+ return i32(0)
+ }
+ _pSrc = (*XSrcList)(_p.X8)
func() {
- if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90011), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(43888)))
+ if _pSrc == nil || _iFrom < i32(0) || _iFrom >= (_pSrc.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119957), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97750)))
crt.X__builtin_abort(tls)
}
}()
- _9_zId = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
- _9_nId = _sqlite3Strlen30(tls, _9_zId)
- _9_pDef = _sqlite3FindFunction(tls, (*Xsqlite3)(_pParse.X0), _9_zId, _9_n, _9_enc, uint8(i32(0)))
- if _9_pDef != nil {
- goto _42
- }
-
- _9_pDef = _sqlite3FindFunction(tls, (*Xsqlite3)(_pParse.X0), _9_zId, i32(-2), _9_enc, uint8(i32(0)))
- if _9_pDef != nil {
+ _pSubitem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_iFrom)))
+ _iParent = _pSubitem.X11
+ _pSub = (*XSelect)(_pSubitem.X5)
+ func() {
+ if _pSub == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119961), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97787)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _subqueryIsAgg == 0 {
+ goto _11
+ }
+ if _isAgg != 0 {
+ return i32(0)
+ }
+ if (_pSrc.X0) > i32(1) {
+ return i32(0)
+ }
+ if ((((*XExpr)(_p.X9) != nil) && ((((*XExpr)(_p.X9).X2) & uint32(i32(2097152))) != uint32(i32(0)))) || ((_sqlite3ExprListFlags(tls, (*XExprList)(_p.X0)) & uint32(i32(2097152))) != uint32(i32(0)))) || ((_sqlite3ExprListFlags(tls, (*XExprList)(_p.X12)) & uint32(i32(2097152))) != uint32(i32(0))) {
+ return i32(0)
+ }
+_11:
+ _pSubSrc = (*XSrcList)(_pSub.X8)
+ func() {
+ if _pSubSrc == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119974), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97795)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((*XExpr)(_pSub.X15) != nil) && ((*XExpr)(_p.X15) != nil) {
+ return i32(0)
+ }
+ if (*XExpr)(_pSub.X16) != nil {
+ return i32(0)
+ }
+ if (((_p.X3) & uint32(i32(256))) != uint32(i32(0))) && ((*XExpr)(_pSub.X15) != nil) {
+ return i32(0)
+ }
+ if (_pSubSrc.X0) == i32(0) {
+ return i32(0)
+ }
+ if ((_pSub.X3) & uint32(i32(1))) != 0 {
+ return i32(0)
+ }
+ if ((*XExpr)(_pSub.X15) != nil) && (((_pSrc.X0) > i32(1)) || _isAgg != 0) {
+ return i32(0)
+ }
+ if (((_p.X3) & uint32(i32(1))) != uint32(i32(0))) && _subqueryIsAgg != 0 {
+ return i32(0)
+ }
+ if ((*XExprList)(_p.X12) != nil) && ((*XExprList)(_pSub.X12) != nil) {
+ return i32(0)
+ }
+ if _isAgg != 0 && ((*XExprList)(_pSub.X12) != nil) {
+ return i32(0)
+ }
+ if ((*XExpr)(_pSub.X15) != nil) && ((*XExpr)(_p.X9) != nil) {
+ return i32(0)
+ }
+ if ((*XExpr)(_pSub.X15) != nil) && (((_p.X3) & uint32(i32(1))) != uint32(i32(0))) {
+ return i32(0)
+ }
+ if ((_pSub.X3) & uint32(i32(12288))) != 0 {
+ return i32(0)
+ }
+ if (((_p.X3) & uint32(i32(8192))) != 0) && ((*XSelect)(_pSub.X13) != nil) {
+ return i32(0)
+ }
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem))+uintptr(36 /* X9 */))).X0) & i32(32)) == i32(0) {
goto _43
}
-
- _9_no_such_func = i32(1)
- goto _44
-
+ _isLeftJoin = i32(1)
+ if ((_pSubSrc.X0) > i32(1)) || _isAgg != 0 {
+ return i32(0)
+ }
_43:
- _9_wrong_num_args = i32(1)
-_44:
- goto _45
-
-_42:
- _9_is_agg = bool2int(*(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context)
- }{(*(*func(*crt.TLS, *Xsqlite3_context))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer)
- }{(_9_pDef.X5)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_context)
- }{nil})))
- if (int32(_9_pDef.X1) & i32(1024)) == 0 {
+ if (*XSelect)(_pSub.X13) == nil {
goto _46
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(266240))
- sink5 = *p
+ if (*XExprList)(_pSub.X12) != nil {
+ return i32(0)
}
- if _9_n != i32(2) {
- goto _47
+ if (_isAgg != 0 || (((_p.X3) & uint32(i32(1))) != uint32(i32(0)))) || ((_pSrc.X0) != i32(1)) {
+ return i32(0)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _exprProbability(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(1)))).X0))
- if (_pExpr.X8) >= i32(0) {
- goto _48
+ _pSub1 = _pSub
+_51:
+ if _pSub1 == nil {
+ goto _54
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(99644))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
-_48:
- goto _49
-
-_47:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = func() int32 {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pDef.X6)) + 1*uintptr(i32(0))))) == i32(117) {
- return i32(8388608)
+ func() {
+ if (*XSrcList)(_pSub.X8) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120059), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97803)))
+ crt.X__builtin_abort(tls)
}
- return i32(125829120)
}()
-_49:
-_46:
- _18_auth = _sqlite3AuthCheck(tls, _pParse, i32(31), nil, _9_pDef.X6, nil)
- if _18_auth == i32(0) {
- goto _52
+ func() {
+ if ((*XExprList)(_pSub.X0).X0) != ((*XExprList)(_pSub1.X0).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120060), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97817)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((((_pSub1.X3) & uint32(i32(9))) != uint32(i32(0))) || (((*XSelect)(_pSub1.X13) != nil) && (int32(_pSub1.X1) != i32(116)))) || (((*XSrcList)(_pSub1.X8).X0) < i32(1)) {
+ return i32(0)
}
-
- if _18_auth != i32(1) {
- goto _53
+ _pSub1 = (*XSelect)(_pSub1.X13)
+ goto _51
+_54:
+ if (*XExprList)(_p.X12) == nil {
+ goto _63
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(99716), unsafe.Pointer(_9_pDef.X6))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
-_53:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
- return i32(1)
-
-_52:
- if (int32(_9_pDef.X1) & i32(10240)) == 0 {
- goto _54
+ _17_ii = i32(0)
+_64:
+ if _17_ii >= ((*XExprList)(_p.X12).X0) {
+ goto _67
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(524288))
- sink5 = *p
+ if int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X12)+uintptr(8 /* X2 */)))))+20*uintptr(_17_ii)))))+uintptr(16 /* X5 */))))).X0) == i32(0) {
+ return i32(0)
}
-_54:
- if (int32(_9_pDef.X1) & i32(2048)) != i32(0) {
- goto _55
+ _17_ii += 1
+ goto _64
+_67:
+_63:
+_46:
+ if (Xsqlite3SelectTrace & i32(1)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(97859)
+ }(), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_pSub), _iFrom)
}
-
- _notValid(tls, _pParse, _pNC, str(99752), i32(34))
-_55:
-_45:
- if _9_is_agg == 0 || (int32(_pNC.X7)&i32(1)) != i32(0) {
- goto _57
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _pSubitem.X2
+ _i = _sqlite3AuthCheck(tls, _pParse, i32(21), nil, nil, nil)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _zSavedAuthContext
+ _pSub = (*XSelect)(_pSub.X13)
+_70:
+ if _pSub == nil {
+ goto _73
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(99780), _9_nId, unsafe.Pointer(_9_zId))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
- _9_is_agg = i32(0)
- goto _58
-
-_57:
- if _9_no_such_func == 0 || int32((*t19)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(144 /* X33 */))).X2) != i32(0) {
- goto _60
+ _19_pOrderBy = (*XExprList)(_p.X12)
+ _19_pLimit = (*XExpr)(_p.X15)
+ _19_pOffset = (*XExpr)(_p.X16)
+ _19_pPrior = (*XSelect)(_p.X13)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))))) = nil
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
+ _19_pNew = _sqlite3SelectDup(tls, _db, _p, i32(0))
+ _sqlite3SelectSetName(tls, _19_pNew, (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub))+uintptr(20 /* X6 */))))))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _19_pOffset
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _19_pLimit
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = _19_pOrderBy
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))))) = _pSrc
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = uint8(i32(116))
+ if _19_pNew == nil {
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _19_pPrior
+ goto _75
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(99816), _9_nId, unsafe.Pointer(_9_zId))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
- goto _61
-
-_60:
- if _9_wrong_num_args == 0 {
- goto _62
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pNew)) + uintptr(60 /* X13 */))))) = _19_pPrior
+ if _19_pPrior != nil {
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pPrior)) + uintptr(64 /* X14 */))))) = _19_pNew
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(99840), _9_nId, unsafe.Pointer(_9_zId))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(24 /* X6 */))) += 1
-_62:
-_61:
-_58:
- if _9_is_agg == 0 {
- goto _63
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pNew)) + uintptr(64 /* X14 */))))) = _p
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _19_pNew
+ if (Xsqlite3SelectTrace & i32(2)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(97887)
+ }(), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pNew))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_19_pNew))
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) & i32(-2))
- sink12 = *p
+_75:
+ if (_db.X17) != 0 {
+ return i32(1)
}
-_63:
- _sqlite3WalkExprList(tls, _pWalker, _9_pList)
- if _9_is_agg == 0 {
- goto _64
+ _pSub = (*XSelect)(_pSub.X13)
+ goto _70
+_73:
+ _pSub = store59(&_pSub1, (*XSelect)(_pSubitem.X5))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubitem.X1))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubitem.X2))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubitem.X3))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(4 /* X1 */))) = nil
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(8 /* X2 */))) = nil
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(12 /* X3 */))) = nil
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(20 /* X5 */))))) = nil
+ if func() int32 {
+ if (*XTable)(_pSubitem.X4) != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120177), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _81
}
-
- _26_pNC2 = _pNC
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(153))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(38 /* X12 */))) = uint8(i32(0))
-_65:
- if _26_pNC2 == nil || _sqlite3FunctionUsesThisSrc(tls, _pExpr, (*XSrcList)(_26_pNC2.X1)) != 0 {
- goto _66
+ _22_pTabToDel = (*XTable)(_pSubitem.X4)
+ if (_22_pTabToDel.X8) == uint32(i32(1)) {
+ _23_pToplevel = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }()
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_22_pTabToDel)) + uintptr(76 /* X21 */))))) = (*XTable)(_23_pToplevel.X68)
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_23_pToplevel)) + uintptr(468 /* X68 */))))) = _22_pTabToDel
+ goto _85
+ }
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_22_pTabToDel)) + uintptr(32 /* X8 */))) -= 1
+_85:
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(16 /* X4 */))))) = nil
+_81:
+ _pParent = _p
+_86:
+ if _pParent == nil {
+ goto _89
+ }
+ _25_jointype = uint8(i32(0))
+ _pSubSrc = (*XSrcList)(_pSub.X8)
+ _25_nSubSrc = _pSubSrc.X0
+ _pSrc = (*XSrcList)(_pParent.X8)
+ if _pSrc != nil {
+ func() {
+ if _pParent != _p {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120210), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97938)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _25_jointype = (*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(36 /* X9 */))).X0
+ goto _93
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(38 /* X12 */))) += 1
- _26_pNC2 = (*XNameContext)(_26_pNC2.X4)
- goto _65
-
-_66:
func() {
- if _9_pDef == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90101), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99888)))
+ if _pParent == _p {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120213), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97949)))
crt.X__builtin_abort(tls)
}
}()
- if _26_pNC2 == nil {
- goto _70
+ _pSrc = store60((**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent))+uintptr(40 /* X8 */))))), _sqlite3SrcListAppend(tls, _db, nil, nil, nil))
+ if _pSrc == nil {
+ func() {
+ if (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120216), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(47848)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _89
}
-
- i32(0)
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNC2)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) | (i32(16) | (int32(_9_pDef.X1) & i32(4096))))
- sink12 = *p
+_93:
+ if _25_nSubSrc <= i32(1) {
+ goto _99
}
-_70:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(40 /* X8 */))))) = store60(&_pSrc, _sqlite3SrcListEnlarge(tls, _db, _pSrc, _25_nSubSrc-i32(1), _iFrom+i32(1)))
+ if (_db.X17) != 0 {
+ goto _89
}
-_64:
- return i32(1)
-
-_18:
-_19:
-_20:
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _71
+_99:
+ _i = i32(0)
+_101:
+ if _i >= _25_nSubSrc {
+ goto _104
}
-
- _30_nRef = _pNC.X5
- _notValid(tls, _pParse, _pNC, str(99896), i32(38))
- _sqlite3WalkSelect(tls, _pWalker, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
+ _sqlite3IdListDelete(tls, _db, (*XIdList)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i+_iFrom))).X13))
func() {
- if (_pNC.X5) < _30_nRef {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90125), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99908)))
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i+_iFrom)))))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120248), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97960)))
crt.X__builtin_abort(tls)
}
}()
- if _30_nRef == (_pNC.X5) {
- goto _74
+ *(*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i+_iFrom))) = *(*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
+ _iNewParent = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X11
+ crt.Xmemset(tls, (unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i)))), i32(0), u32(68))
+ _i += 1
+ goto _101
+_104:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_iFrom)))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = _25_jointype
+ _pList = (*XExprList)(_pParent.X0)
+ _i = i32(0)
+_107:
+ if _i >= (_pList.X0) {
+ goto _110
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(32))
- sink5 = *p
+ if ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1) == nil {
+ _33_zName = _sqlite3DbStrDup(tls, _db, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X2)
+ _sqlite3Dequote(tls, _33_zName)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))))) + uintptr(4 /* X1 */))) = _33_zName
}
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) | i32(64))
- sink12 = *p
+ _i += 1
+ goto _107
+_110:
+ if (*XExprList)(_pSub.X12) == nil {
+ goto _112
}
-_74:
-_71:
- goto _31
-
-_21:
- _notValid(tls, _pParse, _pNC, str(99924), i32(38))
- goto _31
-
-_22:
-_23:
-_24:
-_25:
-_26:
-_27:
-_28:
-_29:
-_30:
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- goto _75
+ _34_pOrderBy = (*XExprList)(_pSub.X12)
+ _i = i32(0)
+_113:
+ if _i >= (_34_pOrderBy.X0) {
+ goto _116
}
-
- goto _31
-
-_75:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_34_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
+ _i += 1
+ goto _113
+_116:
func() {
- if (*XExpr)(_pExpr.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90148), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99936)))
+ if (*XExprList)(_pParent.X12) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120290), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(97993)))
crt.X__builtin_abort(tls)
}
}()
- _33_nLeft = _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4))
- if int32(_pExpr.X0) != i32(73) {
- goto _78
- }
-
- _33_nRight = _sqlite3ExprVectorSize(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
- if _33_nRight != _33_nLeft {
- goto _79
- }
-
- _33_nRight = _sqlite3ExprVectorSize(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(i32(1)))).X0))
-_79:
- goto _80
-
-_78:
func() {
- if (*XExpr)(_pExpr.X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90156), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveExprStepØ00__func__Ø000))), unsafe.Pointer(str(99952)))
+ if (*XSelect)(_pSub.X13) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120291), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(98014)))
crt.X__builtin_abort(tls)
}
}()
- _33_nRight = _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X5))
-_80:
- if _33_nLeft == _33_nRight {
- goto _83
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(56 /* X12 */))))) = _34_pOrderBy
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(56 /* X12 */))))) = nil
+_112:
+ _pWhere = _sqlite3ExprDup(tls, _db, (*XExpr)(_pSub.X9), i32(0))
+ if _isLeftJoin > i32(0) {
+ _setJoinExpr(tls, _pWhere, _iNewParent)
}
+ if _subqueryIsAgg != 0 {
+ func() {
+ if (*XExpr)(_pParent.X11) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120300), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(98030)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(52 /* X11 */))))) = (*XExpr)(_pParent.X9)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(44 /* X9 */))))) = _pWhere
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(52 /* X11 */))))) = _sqlite3ExprAnd(tls, _db, _sqlite3ExprDup(tls, _db, (*XExpr)(_pSub.X11), i32(0)), (*XExpr)(_pParent.X11))
+ func() {
+ if (*XExprList)(_pParent.X10) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120306), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(98050)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(48 /* X10 */))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)(_pSub.X10), i32(0))
+ goto _127
+ }
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(44 /* X9 */))))) = _sqlite3ExprAnd(tls, _db, _pWhere, (*XExpr)(_pParent.X9))
+_127:
+ if int32(_db.X17) == i32(0) {
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(0 /* X0 */))))) = _pParse
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(4 /* X1 */))) = _iParent
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(8 /* X2 */))) = _iNewParent
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(12 /* X3 */))) = _isLeftJoin
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(16 /* X4 */))))) = (*XExprList)(_pSub.X0)
+ _substSelect(tls, &_39_x, _pParent, i32(0))
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(8 /* X3 */)))
+ *p = (*p) | ((_pSub.X3) & uint32(i32(1)))
+ sink5 = *p
+ }
+ if (*XExpr)(_pSub.X15) != nil {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(68 /* X15 */))))) = (*XExpr)(_pSub.X15)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(68 /* X15 */))))) = nil
+ }
+ *func() **XSelect { _pParent = (*XSelect)(_pParent.X13); return &_pSub }() = (*XSelect)(_pSub.X13)
+ goto _86
+_89:
+ _sqlite3SelectDelete(tls, _db, _pSub1)
+ if (Xsqlite3SelectTrace & i32(256)) == 0 {
+ goto _130
+ }
+ if (Xsqlite3SelectTrace & i32(256)) != 0 {
+ _sqlite3DebugPrintf(tls, func() *int8 {
+ _sqlite3DebugPrintf(tls, str(45660), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(0)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
+ return str(98071)
+ }())
+ }
+ _sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
+_130:
+ return i32(1)
- _sqlite3ErrorMsg(tls, _pParse, str(44332))
-_83:
- goto _31
-
-_31:
- return func() int32 {
- if (_pParse.X16) != 0 || (((*Xsqlite3)(_pParse.X0).X17) != 0) {
- return i32(2)
- }
- return i32(0)
- }()
+ _ = _39_x
+ panic(0)
}
-var _resolveExprStepØ00__func__Ø000 [16]int8 // -
+var _flattenSubqueryØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_resolveExprStepØ00__func__Ø000[0], str(99972), 16)
+ crt.Xstrncpy(nil, &_flattenSubqueryØ00__func__Ø000[0], str(98090), 16)
}
-func _notValid(tls *crt.TLS, _pParse *XParse, _pNC *XNameContext, _zMsg *int8, _validMask int32) { // sqlite3.c:89878:1
- var _1_zIn *int8 // sqlite3.c:89886:16
- _ = _1_zIn
+func _substSelect(tls *crt.TLS, _pSubst *XSubstContext, _p *XSelect, _doPrior int32) {
+ var _i int32
+ var _pSrc *XSrcList
+ var _pItem *TSrcList_item
+ if _p == nil {
+ return
+ }
+_1:
+ _substExprList(tls, _pSubst, (*XExprList)(_p.X0))
+ _substExprList(tls, _pSubst, (*XExprList)(_p.X10))
+ _substExprList(tls, _pSubst, (*XExprList)(_p.X12))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X11 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_p.X11))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X9 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_p.X9))
+ _pSrc = (*XSrcList)(_p.X8)
func() {
- if (_validMask & i32(-39)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89884), unsafe.Pointer((*int8)(unsafe.Pointer(&_notValidØ00__func__Ø000))), unsafe.Pointer(str(99988)))
+ if _pSrc == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119777), unsafe.Pointer((*int8)(unsafe.Pointer(&_substSelectØ00__func__Ø000))), unsafe.Pointer(str(47821)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pNC.X7) & _validMask) == i32(0) {
- goto _2
+ *func() **TSrcList_item { _i = _pSrc.X0; return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc)) + uintptr(8 /* X2 */)))))
+_4:
+ if _i <= i32(0) {
+ goto _7
}
-
- _1_zIn = str(100040)
- if (int32(_pNC.X7) & i32(32)) == 0 {
- goto _3
+ _substSelect(tls, _pSubst, (*XSelect)(_pItem.X5), i32(1))
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _substExprList(tls, _pSubst, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */)))))))
}
-
- _1_zIn = str(100068)
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i -= 1; return &_pItem }())) += uintptr(68)
goto _4
-
-_3:
- if (int32(_pNC.X7) & i32(4)) == 0 {
- goto _5
+_7:
+ if _doPrior != 0 && (store59(&_p, (*XSelect)(_p.X13)) != nil) {
+ goto _1
}
-
- _1_zIn = str(100088)
-_5:
-_4:
- _sqlite3ErrorMsg(tls, _pParse, str(100108), unsafe.Pointer(_zMsg), unsafe.Pointer(_1_zIn))
-_2:
}
-var _notValidØ00__func__Ø000 [9]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_notValidØ00__func__Ø000[0], str(100128), 9)
+func _substExprList(tls *crt.TLS, _pSubst *XSubstContext, _pList *XExprList) {
+ var _i int32
+ if _pList == nil {
+ return
+ }
+ _i = i32(0)
+_1:
+ if _i >= (_pList.X0) {
+ goto _4
+ }
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))))) + uintptr(0 /* X0 */))))) = _substExpr(tls, _pSubst, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ _i += 1
+ goto _1
+_4:
}
-func _lookupName(tls *crt.TLS, _pParse *XParse, _zDb *int8, _zTab *int8, _zCol *int8, _pNC *XNameContext, _pExpr *XExpr) (r0 int32) { // sqlite3.c:89527:1
- var _i int32 // sqlite3.c:89535:7
- _ = _i
- var _j int32 // sqlite3.c:89535:10
- _ = _j
- var _cnt int32 // sqlite3.c:89536:7
- _ = _cnt
- var _cntTab int32 // sqlite3.c:89537:7
- _ = _cntTab
- var _nSubquery int32 // sqlite3.c:89538:7
- _ = _nSubquery
- var _db *Xsqlite3 // sqlite3.c:89539:11
- _ = _db
- var _pItem *TSrcList_item // sqlite3.c:89540:23
- _ = _pItem
- var _pMatch *TSrcList_item // sqlite3.c:89541:23
- _ = _pMatch
- var _pTopNC *XNameContext // sqlite3.c:89542:15
- _ = _pTopNC
- var _pSchema *XSchema // sqlite3.c:89543:10
- _ = _pSchema
- var _isTrigger int32 // sqlite3.c:89544:7
- _ = _isTrigger
- var _pTab *XTable // sqlite3.c:89545:9
- _ = _pTab
- var _pCol *XColumn // sqlite3.c:89546:10
- _ = _pCol
- var _6_pEList *XExprList // sqlite3.c:89584:14
- _ = _6_pEList
- var _6_pSrcList *XSrcList // sqlite3.c:89585:13
- _ = _6_pSrcList
- var _9_hit int32 // sqlite3.c:89593:15
- _ = _9_hit
- var _13_zTabName *int8 // sqlite3.c:89610:22
- _ = _13_zTabName
- var _21_op int32 // sqlite3.c:89654:11
- _ = _21_op
- var _25_iCol int32 // sqlite3.c:89667:13
- _ = _25_iCol
- var _36_zAs *int8 // sqlite3.c:89741:14
- _ = _36_zAs
- var _37_pOrig *XExpr // sqlite3.c:89743:16
- _ = _37_pOrig
- var _41_zErr *int8 // sqlite3.c:89795:16
- _ = _41_zErr
- var _45_n int32 // sqlite3.c:89815:9
- _ = _45_n
- _cnt = i32(0)
- _cntTab = i32(0)
- _nSubquery = i32(0)
- _db = (*Xsqlite3)(_pParse.X0)
- _pMatch = nil
- _pTopNC = _pNC
- _pSchema = nil
- _isTrigger = i32(0)
- _pTab = nil
+// Scan through the expression pExpr. Replace every reference to
+// a column in table number iTable with a copy of the iColumn-th
+// entry in pEList. (But leave references to the ROWID column
+// unchanged.)
+//
+// This routine is part of the flattening procedure. A subquery
+// whose result set is defined by pEList appears as entry in the
+// FROM clause of a SELECT such that the VDBE cursor assigned to that
+// FORM clause entry is iTable. This routine makes the necessary
+// changes to pExpr so that it refers directly to the source table
+// of the subquery rather the result set of the subquery.
+func _substExpr(tls *crt.TLS, _pSubst *XSubstContext, _pExpr *XExpr) (r0 *XExpr) {
+ var _6_db *Xsqlite3
+ var _4_pNew, _4_pCopy *XExpr
+ var _4_ifNullRow XExpr
+ if _pExpr == nil {
+ return nil
+ }
+ if (((_pExpr.X2) & uint32(i32(1))) != uint32(i32(0))) && (int32(_pExpr.X11) == (_pSubst.X1)) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(36 /* X11 */))) = int16(_pSubst.X2)
+ }
+ if int32(_pExpr.X0) != i32(152) || (_pExpr.X8) != (_pSubst.X1) {
+ goto _4
+ }
+ if int32(_pExpr.X9) < i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
+ goto _6
+ }
+ _4_pCopy = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSubst.X4)+uintptr(8 /* X2 */))))) + 20*uintptr(_pExpr.X9))).X0)
func() {
- if _pNC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89548), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100140)))
+ if (*XExprList)(_pSubst.X4) == nil || int32(_pExpr.X9) >= ((*XExprList)(_pSubst.X4).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119715), unsafe.Pointer((*int8)(unsafe.Pointer(&_substExprØ00__func__Ø000))), unsafe.Pointer(str(98106)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _zCol == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89549), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100144)))
+ if (*XExpr)(_pExpr.X4) != nil || (*XExpr)(_pExpr.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119716), unsafe.Pointer((*int8)(unsafe.Pointer(&_substExprØ00__func__Ø000))), unsafe.Pointer(str(96223)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89550), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100152)))
- crt.X__builtin_abort(tls)
+ if _sqlite3ExprIsVector(tls, _4_pCopy) != 0 {
+ _sqlite3VectorErrorMsg(tls, (*XParse)(_pSubst.X0), _4_pCopy)
+ goto _14
+ }
+ _6_db = (*Xsqlite3)((*XParse)(_pSubst.X0).X0)
+ if (_pSubst.X3) != 0 && (int32(_4_pCopy.X0) != i32(152)) {
+ crt.Xmemset(tls, (unsafe.Pointer)(&_4_ifNullRow), i32(0), u32(48))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_4_ifNullRow)) + uintptr(0 /* X0 */))) = uint8(i32(160))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_4_ifNullRow)) + uintptr(12 /* X4 */))))) = _4_pCopy
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_4_ifNullRow)) + uintptr(28 /* X8 */))) = _pSubst.X2
+ _4_pCopy = &_4_ifNullRow
+ }
+ _4_pNew = _sqlite3ExprDup(tls, _6_db, _4_pCopy, i32(0))
+ if (_4_pNew != nil) && (((_pExpr.X2) & uint32(i32(1))) != 0) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(36 /* X11 */))) = _pExpr.X11
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1))
+ sink5 = *p
}
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = i32(-1)
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = nil
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(131072))
- sink5 = *p
}
- if _zDb == nil {
- goto _6
+ _sqlite3ExprDelete(tls, _6_db, _pExpr)
+ _pExpr = _4_pNew
+_14:
+_6:
+ goto _19
+_4:
+ if (int32(_pExpr.X0) == i32(160)) && ((_pExpr.X8) == (_pSubst.X1)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _pSubst.X2
}
-
- if (int32(_pNC.X7) & i32(6)) == i32(0) {
- goto _7
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(12 /* X4 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_pExpr.X4))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(16 /* X5 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_pExpr.X5))
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ _substSelect(tls, _pSubst, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), i32(1))
+ goto _23
}
+ _substExprList(tls, _pSubst, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
+_23:
+_19:
+ return _pExpr
- _zDb = nil
- goto _8
-
-_7:
- _i = i32(0)
-_9:
- if _i >= (_db.X5) {
- goto _12
- }
-
- func() {
- if ((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89572), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100204)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3StrICmp(tls, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_i))).X0, _zDb) != i32(0) {
- goto _15
- }
+ _ = _4_ifNullRow
+ panic(0)
+}
- _pSchema = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i))).X4)
- goto _12
+var _substExprØ00__func__Ø000 [10]int8
-_15:
- _i += 1
- goto _9
+func init() {
+ crt.Xstrncpy(nil, &_substExprØ00__func__Ø000[0], str(98164), 10)
+}
-_12:
-_8:
-_6:
- func() {
- if _pNC == nil || _cnt != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89582), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100224)))
- crt.X__builtin_abort(tls)
- }
- }()
-_19:
- _6_pSrcList = (*XSrcList)(_pNC.X1)
- if _6_pSrcList == nil {
- goto _20
+func _sqlite3VectorErrorMsg(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) {
+ if ((_pExpr.X2) & uint32(i32(2048))) != 0 {
+ _sqlite3SubselectError(tls, _pParse, (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0).X0, i32(1))
+ goto _1
}
+ _sqlite3ErrorMsg(tls, _pParse, str(43181))
+_1:
+}
- *func() **TSrcList_item { _i = i32(0); return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pSrcList)) + uintptr(8 /* X2 */)))))
-_21:
- if _i >= (_6_pSrcList.X0) {
- goto _24
- }
+func _sqlite3SubselectError(tls *crt.TLS, _pParse *XParse, _nActual int32, _nExpect int32) {
+ var _zFmt *int8
+ _zFmt = str(98174)
+ _sqlite3ErrorMsg(tls, _pParse, _zFmt, _nActual, _nExpect)
+}
- _pTab = (*XTable)(_pItem.X4)
+var _substSelectØ00__func__Ø000 [12]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_substSelectØ00__func__Ø000[0], str(98218), 12)
+}
+
+// This routine is called to process a compound query form from
+// two or more separate queries using UNION, UNION ALL, EXCEPT, or
+// INTERSECT
+//
+// "p" points to the right-most of the two queries. the query on the
+// left is p->pPrior. The left query could also be a compound query
+// in which case this routine will be called recursively.
+//
+// The results of the total query are to be written into a destination
+// of type eDest with parameter iParm.
+//
+// Example 1: Consider a three-way compound SQL statement.
+//
+// SELECT a FROM t1 UNION SELECT b FROM t2 UNION SELECT c FROM t3
+//
+// This statement is parsed up as follows:
+//
+// SELECT c FROM t3
+// |
+// `-----> SELECT b FROM t2
+// |
+// `------> SELECT a FROM t1
+//
+// The arrows in the diagram above represent the Select.pPrior pointer.
+// So if this routine is called with p equal to the t3 query, then
+// pPrior will be the t2 query. p->op will be TK_UNION in this case.
+//
+// Notice that because of the way SQLite parses compound SELECTs, the
+// individual selects always group from left to right.
+func _multiSelect(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) {
+ var _rc, _iSub1, _iSub2, _8_addr, _8_nLimit, _14_unionTab, _14_priorOp, _14_addr, _21_iCont, _21_iBreak, _21_iStart, _23_tab1, _23_tab2, _23_iCont, _23_iBreak, _23_iStart, _23_addr, _23_r1, _26_i, _26_nCol, _31_addr int32
+ var _14_op uint8
+ var _db *Xsqlite3
+ var _v *TVdbe
+ var _pPrior, _pDelete, _22_pFirst, _25_pFirst, _26_pLoop *XSelect
+ var _14_pLimit, _14_pOffset, _23_pLimit, _23_pOffset *XExpr
+ var _26_pKeyInfo *XKeyInfo
+ var _26_apColl **XCollSeq
+ var _dest, _14_uniondest, _23_intersectdest XSelectDest
+ _rc = i32(0)
+ _pDelete = nil
+ _iSub1 = i32(0)
+ _iSub2 = i32(0)
func() {
- if _pTab == nil || (_pTab.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89590), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100240)))
+ if _p == nil || (*XSelect)(_p.X13) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118776), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98230)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(_pTab.X11) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89591), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100268)))
+ if ((_p.X3)&uint32(i32(8192))) != uint32(i32(0)) && int32(_p.X1) != i32(116) && int32(_p.X1) != i32(115) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118777), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98245)))
crt.X__builtin_abort(tls)
}
}()
- if (*XSelect)(_pItem.X5) == nil || (((*XSelect)(_pItem.X5).X3)&uint32(i32(2048))) == uint32(i32(0)) {
- goto _31
- }
-
- _9_hit = i32(0)
- _6_pEList = (*XExprList)((*XSelect)(_pItem.X5).X0)
- _j = i32(0)
-_32:
- if _j >= (_6_pEList.X0) {
- goto _35
- }
-
- if _sqlite3MatchSpanName(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X2, _zCol, _zTab, _zDb) == 0 {
- goto _36
- }
-
- _cnt += 1
- _cntTab = i32(2)
- _pMatch = _pItem
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(_j)
- _9_hit = i32(1)
-_36:
- _j += 1
- goto _32
-
-_35:
- if _9_hit == 0 && _zTab != nil {
- goto _38
- }
-
- goto _22
-
-_38:
-_31:
- if _zDb == nil || (*XSchema)(_pTab.X20) == _pSchema {
- goto _40
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pPrior = (*XSelect)(_p.X13)
+ _dest = *_pDest
+ if (*XExprList)(_pPrior.X12) != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(98313), unsafe.Pointer(_selectOpName(tls, int32(_p.X1))))
+ _rc = i32(1)
+ goto _multi_select_end
}
-
- goto _22
-
-_40:
- if _zTab == nil {
- goto _41
+ if (*XExpr)(_pPrior.X15) != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(98361), unsafe.Pointer(_selectOpName(tls, int32(_p.X1))))
+ _rc = i32(1)
+ goto _multi_select_end
}
-
- _13_zTabName = func() *int8 {
- if (_pItem.X3) != nil {
- return (_pItem.X3)
- }
- return (_pTab.X0)
- }()
+ _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if _13_zTabName == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89611), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100284)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118795), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3StrICmp(tls, _13_zTabName, _zTab) == i32(0) {
- goto _46
- }
-
- goto _22
-
-_46:
-_41:
- if i32(0) != postInc1(&_cntTab, int32(1)) {
- goto _47
- }
-
- _pMatch = _pItem
-_47:
- *func() **XColumn { _j = i32(0); return &_pCol }() = (*XColumn)(_pTab.X1)
-_48:
- if _j >= int32(_pTab.X11) {
- goto _51
- }
-
- if _sqlite3StrICmp(tls, _pCol.X0, _zCol) != i32(0) {
- goto _52
- }
-
- if _cnt != i32(1) {
- goto _53
- }
-
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X0) & i32(4)) == 0 {
- goto _54
+ if int32(_dest.X0) == i32(12) {
+ func() {
+ if (*XExprList)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118800), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98406)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp2(tls, _v, i32(110), _dest.X2, (*XExprList)(_p.X0).X0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_dest)) + uintptr(0 /* X0 */))) = uint8(i32(14))
}
-
- goto _49
-
-_54:
- if _nameInUsingClause(tls, (*XIdList)(_pItem.X13), _zCol) == 0 {
- goto _55
+ if ((_p.X3) & uint32(i32(1024))) != 0 {
+ _rc = _multiSelectValues(tls, _pParse, _p, &_dest)
+ goto _multi_select_end
}
-
- goto _49
-
-_55:
-_53:
- _cnt += 1
- _pMatch = _pItem
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(func() int32 {
- if _j == int32(_pTab.X10) {
- return i32(-1)
+ func() {
+ if (*XExprList)(_p.X0) == nil || (*XExprList)(_pPrior.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118815), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98416)))
+ crt.X__builtin_abort(tls)
}
- return int32(int16(_j))
- }())
- goto _51
-
-_52:
-_49:
- *(*uintptr)(unsafe.Pointer(func() **XColumn { _j += 1; return &_pCol }())) += uintptr(16)
- goto _48
-
-_51:
-_22:
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pItem }())) += uintptr(68)
- goto _21
-
-_24:
- if _pMatch == nil {
- goto _58
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _pMatch.X11
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = (*XTable)(_pMatch.X4)
+ }()
func() {
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMatch))+uintptr(36 /* X9 */))).X0) & i32(16)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89641), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100296)))
+ if ((*XExprList)(_p.X0).X0) != ((*XExprList)(_pPrior.X0).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118816), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98444)))
crt.X__builtin_abort(tls)
}
}()
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMatch))+uintptr(36 /* X9 */))).X0) & i32(8)) == i32(0) {
- goto _61
+ if ((_p.X3) & uint32(i32(8192))) != 0 {
+ _generateWithRecursiveQuery(tls, _pParse, _p, &_dest)
+ goto _21
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1048576))
- sink5 = *p
+ if (*XExprList)(_p.X12) != nil {
+ return _multiSelectOrderBy(tls, _pParse, _p, _pDest)
}
-_61:
- _pSchema = (*XSchema)((*XTable)(_pExpr.X14).X20)
-_58:
-_20:
- if _zDb != nil || _zTab == nil || _cntTab != i32(0) || (*XTable)(_pParse.X40) == nil {
- goto _65
+ switch int32(_p.X1) {
+ case i32(115):
+ goto _27
+ case i32(116):
+ goto _25
+ case i32(117):
+ goto _26
+ default:
+ goto _28
}
- _21_op = int32(_pParse.X45)
+_25:
+ _8_addr = i32(0)
func() {
- if _21_op != i32(109) && _21_op != i32(110) && _21_op != i32(108) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89655), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100332)))
+ if (*XExpr)(_pPrior.X15) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118836), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98484)))
crt.X__builtin_abort(tls)
}
}()
- if _21_op == i32(109) || _sqlite3StrICmp(tls, str(44324), _zTab) != i32(0) {
- goto _71
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = i32(1)
- _pTab = (*XTable)(_pParse.X40)
- goto _72
-
-_71:
- if _21_op == i32(108) || _sqlite3StrICmp(tls, str(44328), _zTab) != i32(0) {
- goto _74
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = i32(0)
- _pTab = (*XTable)(_pParse.X40)
- goto _75
-
-_74:
- _pTab = nil
-_75:
-_72:
- if _pTab == nil {
- goto _76
- }
-
- _pSchema = (*XSchema)(_pTab.X20)
- _cntTab += 1
- *func() **XColumn { _25_iCol = i32(0); return &_pCol }() = (*XColumn)(_pTab.X1)
-_77:
- if _25_iCol >= int32(_pTab.X11) {
- goto _80
- }
-
- if _sqlite3StrICmp(tls, _pCol.X0, _zCol) != i32(0) {
- goto _81
- }
-
- if _25_iCol != int32(_pTab.X10) {
- goto _82
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(12 /* X4 */))) = _p.X4
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(16 /* X5 */))) = _p.X5
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(68 /* X15 */))))) = (*XExpr)(_p.X15)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(72 /* X16 */))))) = (*XExpr)(_p.X16)
+ _iSub1 = _pParse.X59
+ _rc = _sqlite3Select(tls, _pParse, _pPrior, &_dest)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
+ if _rc != 0 {
+ goto _multi_select_end
}
-
- _25_iCol = i32(-1)
-_82:
- goto _80
-
-_81:
- *(*uintptr)(unsafe.Pointer(func() **XColumn { _25_iCol += 1; return &_pCol }())) += uintptr(16)
- goto _77
-
-_80:
- if _25_iCol < int32(_pTab.X11) || _sqlite3IsRowid(tls, _zCol) == 0 || ((_pTab.X9)&uint32(i32(64))) != uint32(i32(0)) {
- goto _85
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = _pPrior.X4
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = _pPrior.X5
+ if (_p.X4) == 0 {
+ goto _32
}
-
- _25_iCol = i32(-1)
-_85:
- if _25_iCol >= int32(_pTab.X11) {
- goto _86
+ _8_addr = _sqlite3VdbeAddOp1(tls, _v, i32(22), _p.X4)
+ _sqlite3VdbeComment(tls, _v, str(98500))
+ if (_p.X5) != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(149), _p.X4, (_p.X5)+i32(1), _p.X5)
}
-
- _cnt += 1
- if _25_iCol >= i32(0) {
- goto _87
+_32:
+ _iSub2 = _pParse.X59
+ _rc = _sqlite3Select(tls, _pParse, _p, &_dest)
+ _pDelete = (*XSelect)(_p.X13)
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEstAdd(tls, _p.X2, _pPrior.X2)
+ if ((((*XExpr)(_pPrior.X15) != nil) && _sqlite3ExprIsInteger(tls, (*XExpr)(_pPrior.X15), &_8_nLimit) != 0) && (_8_nLimit > i32(0))) && (int32(_p.X2) > int32(_sqlite3LogEst(tls, uint64(_8_nLimit)))) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEst(tls, uint64(_8_nLimit))
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = int8(i32(68))
- goto _88
-
-_87:
- if (_pExpr.X8) != i32(0) {
- goto _89
+ if _8_addr != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _8_addr)
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(148 /* X43 */)))
- *p = (*p) | func() uint32 {
- if _25_iCol >= i32(32) {
- return u32(4294967295)
+ goto _39
+_26:
+_27:
+ _14_op = u8(0)
+ _14_priorOp = i32(1)
+ if int32(_dest.X0) == _14_priorOp {
+ func() {
+ if (*XExpr)(_p.X15) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118892), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98528)))
+ crt.X__builtin_abort(tls)
}
- return (u32(1) << uint(_25_iCol))
}()
- sink5 = *p
- }
- goto _92
-
-_89:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(152 /* X44 */)))
- *p = (*p) | func() uint32 {
- if _25_iCol >= i32(32) {
- return u32(4294967295)
+ func() {
+ if (*XExpr)(_p.X16) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118893), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98541)))
+ crt.X__builtin_abort(tls)
}
- return (u32(1) << uint(_25_iCol))
}()
- sink5 = *p
- }
-_92:
-_88:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(_25_iCol)
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = _pTab
- _isTrigger = i32(1)
-_86:
-_76:
-_65:
- if _cnt != i32(0) || _cntTab != i32(1) || _pMatch == nil || (int32(_pNC.X7)&i32(32)) != i32(0) || _sqlite3IsRowid(tls, _zCol) == 0 || (((*XTable)(_pMatch.X4).X9)&uint32(i32(64))) != uint32(i32(0)) {
- goto _100
- }
-
- _cnt = i32(1)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(i32(-1))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = int8(i32(68))
-_100:
- if store40(&_6_pEList, (*XExprList)(_pNC.X2)) == nil || _zTab != nil || _cnt != i32(0) {
- goto _103
- }
-
- _j = i32(0)
-_104:
- if _j >= (_6_pEList.X0) {
- goto _107
- }
-
- _36_zAs = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_j))).X1
- if _36_zAs == nil || _sqlite3StrICmp(tls, _36_zAs, _zCol) != i32(0) {
- goto _109
+ _14_unionTab = _dest.X2
+ goto _45
}
-
+ _14_unionTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
func() {
- if (*XExpr)(_pExpr.X4) != nil || (*XExpr)(_pExpr.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89744), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100380)))
+ if (*XExprList)(_p.X12) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118900), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98555)))
crt.X__builtin_abort(tls)
}
}()
+ _14_addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _14_unionTab, i32(0))
func() {
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89745), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100416)))
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0))))) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118902), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98570)))
crt.X__builtin_abort(tls)
}
}()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = _14_addr
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_findRightmost(tls, _p))) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(32))
+ sink5 = *p
+ }
func() {
- if (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89746), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100436)))
+ if (*XExprList)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118905), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98406)))
crt.X__builtin_abort(tls)
}
}()
- _37_pOrig = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_j))).X0)
- if (int32(_pNC.X7)&i32(1)) != i32(0) || ((_37_pOrig.X2)&uint32(i32(2))) == uint32(i32(0)) {
- goto _118
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(100456), unsafe.Pointer(_36_zAs))
- return i32(2)
-
-_118:
- if _sqlite3ExprVectorSize(tls, _37_pOrig) == i32(1) {
- goto _119
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(44332))
- return i32(2)
-
-_119:
- _resolveAlias(tls, _pParse, _6_pEList, _j, _pExpr, str(196), _nSubquery)
- _cnt = i32(1)
- _pMatch = nil
+_45:
func() {
- if _zTab != nil || _zDb != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89759), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100488)))
+ if (*XExprList)(_pPrior.X12) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118910), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98595)))
crt.X__builtin_abort(tls)
}
}()
- goto _lookupname_end
-
-_109:
- _j += 1
- goto _104
-
-_107:
-_103:
- if _cnt == 0 {
- goto _123
- }
-
- goto _124
-
-_123:
- _pNC = (*XNameContext)(_pNC.X4)
- _nSubquery += 1
- if _pNC != nil {
- goto _19
- }
-
-_124:
- if _cnt != i32(0) || _zTab != nil || ((_pExpr.X2)&uint32(i32(64))) == uint32(i32(0)) {
- goto _127
+ _sqlite3SelectDestInit(tls, &_14_uniondest, _14_priorOp, _14_unionTab)
+ _iSub1 = _pParse.X59
+ _rc = _sqlite3Select(tls, _pParse, _pPrior, &_14_uniondest)
+ if _rc != 0 {
+ goto _multi_select_end
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(97))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = nil
- return i32(1)
-
-_127:
- if _cnt == i32(1) {
- goto _128
+ if int32(_p.X1) == i32(117) {
+ _14_op = uint8(i32(2))
+ goto _56
}
-
- _41_zErr = func() *int8 {
- if _cnt == i32(0) {
- return str(100508)
+ func() {
+ if int32(_p.X1) != i32(115) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118923), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98613)))
+ crt.X__builtin_abort(tls)
}
- return str(100524)
}()
- if _zDb == nil {
- goto _131
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(100548), unsafe.Pointer(_41_zErr), unsafe.Pointer(_zDb), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
- goto _132
-
-_131:
- if _zTab == nil {
- goto _133
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(51396), unsafe.Pointer(_41_zErr), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
- goto _134
-
-_133:
- _sqlite3ErrorMsg(tls, _pParse, str(51408), unsafe.Pointer(_41_zErr), unsafe.Pointer(_zCol))
-_134:
-_132:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTopNC)) + uintptr(24 /* X6 */))) += 1
-_128:
- if int32(_pExpr.X9) < i32(0) || _pMatch == nil {
- goto _136
- }
-
- _45_n = int32(_pExpr.X9)
- if _45_n < i32(64) {
- goto _137
+ _14_op = uint8(i32(1))
+_56:
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
+ _14_pLimit = (*XExpr)(_p.X15)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
+ _14_pOffset = (*XExpr)(_p.X16)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_14_uniondest)) + uintptr(0 /* X0 */))) = _14_op
+ _iSub2 = _pParse.X59
+ _rc = _sqlite3Select(tls, _pParse, _p, &_14_uniondest)
+ _sqlite3ExprListDelete(tls, _db, (*XExprList)(_p.X12))
+ _pDelete = (*XSelect)(_p.X13)
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
+ if int32(_p.X1) == i32(115) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEstAdd(tls, _p.X2, _pPrior.X2)
}
-
- _45_n = i32(63)
-_137:
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X15))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _14_pLimit
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _14_pOffset
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = i32(0)
func() {
- if (_pMatch.X11) != (_pExpr.X8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89820), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100564)))
+ if _14_unionTab != (_dest.X2) && int32(_dest.X0) == _14_priorOp {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118953), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98629)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMatch)) + uintptr(52 /* X14 */)))
- *p = (*p) | (u64(1) << uint(_45_n))
- sink15 = *p
+ if int32(_dest.X0) == _14_priorOp {
+ goto _63
}
-_136:
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_pExpr.X4))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(12 /* X4 */))))) = nil
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_pExpr.X5))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(16 /* X5 */))))) = nil
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(func() int32 {
- if _isTrigger != 0 {
- return i32(61)
+ func() {
+ if (*XExprList)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118956), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98406)))
+ crt.X__builtin_abort(tls)
}
- return i32(152)
- }())
-_lookupname_end:
- if _cnt != i32(1) {
- goto _142
+ }()
+ if int32(_dest.X0) != i32(9) {
+ goto _66
}
-
+ _22_pFirst = _p
+_67:
+ if (*XSelect)(_22_pFirst.X13) != nil {
+ _22_pFirst = (*XSelect)(_22_pFirst.X13)
+ goto _67
+ }
+ _generateColumnNames(tls, _pParse, (*XSrcList)(_22_pFirst.X8), (*XExprList)(_22_pFirst.X0))
+_66:
+ _21_iBreak = _sqlite3VdbeMakeLabel(tls, _v)
+ _21_iCont = _sqlite3VdbeMakeLabel(tls, _v)
+ _computeLimitRegisters(tls, _pParse, _p, _21_iBreak)
+ _sqlite3VdbeAddOp2(tls, _v, i32(37), _14_unionTab, _21_iBreak)
+ _21_iStart = _sqlite3VdbeCurrentAddr(tls, _v)
+ _selectInnerLoop(tls, _pParse, _p, (*XExprList)(_p.X0), _14_unionTab, nil, nil, &_dest, _21_iCont, _21_iBreak)
+ _sqlite3VdbeResolveLabel(tls, _v, _21_iCont)
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _14_unionTab, _21_iStart)
+ _sqlite3VdbeResolveLabel(tls, _v, _21_iBreak)
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _14_unionTab, i32(0))
+_63:
+ goto _39
+_28:
func() {
- if _pNC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89833), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(99504)))
+ if int32(_p.X1) != i32(118) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118976), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98675)))
crt.X__builtin_abort(tls)
}
}()
- if ((_pExpr.X2) & uint32(i32(4194304))) != uint32(i32(0)) {
- goto _145
- }
-
- _sqlite3AuthRead(tls, _pParse, _pExpr, _pSchema, (*XSrcList)(_pNC.X1))
-_145:
-_146:
+ _23_tab1 = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _23_tab2 = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
func() {
- if _pTopNC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89840), unsafe.Pointer((*int8)(unsafe.Pointer(&_lookupNameØ00__func__Ø000))), unsafe.Pointer(str(100596)))
+ if (*XExprList)(_p.X12) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118990), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98555)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTopNC)) + uintptr(20 /* X5 */))) += 1
- if _pTopNC != _pNC {
- goto _151
- }
-
- goto _148
-
-_151:
- _pTopNC = (*XNameContext)(_pTopNC.X4)
- goto _146
-
-_148:
- return i32(1)
-
-_142:
- return i32(2)
-}
-
-var _lookupNameØ00__func__Ø000 [11]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_lookupNameØ00__func__Ø000[0], str(100608), 11)
-}
-
-func _nameInUsingClause(tls *crt.TLS, _pUsing *XIdList, _zCol *int8) (r0 int32) { // sqlite3.c:89460:1
- var _1_k int32 // sqlite3.c:89462:9
- _ = _1_k
- if _pUsing == nil {
- goto _0
- }
-
- _1_k = i32(0)
-_1:
- if _1_k >= (_pUsing.X1) {
- goto _4
- }
-
- if _sqlite3StrICmp(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pUsing.X0)+8*uintptr(_1_k))).X0, _zCol) != i32(0) {
- goto _5
- }
- return i32(1)
-
-_5:
- _1_k += 1
- goto _1
-
-_4:
-_0:
- r0 = i32(0)
- return
-}
-
-func _sqlite3IsRowid(tls *crt.TLS, _z *int8) (r0 int32) { // sqlite3.c:92918:1
- if _sqlite3StrICmp(tls, _z, str(100620)) != i32(0) {
- goto _0
- }
- return i32(1)
-
-_0:
- if _sqlite3StrICmp(tls, _z, str(100628)) != i32(0) {
- goto _1
- }
- return i32(1)
-
-_1:
- if _sqlite3StrICmp(tls, _z, str(100636)) != i32(0) {
- goto _2
- }
- return i32(1)
-
-_2:
- return i32(0)
-}
-
-func _resolveAlias(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _iCol int32, _pExpr *XExpr, _zType *int8, _nSubquery int32) { // sqlite3.c:89411:1
- var _pOrig *XExpr // sqlite3.c:89419:8
- _ = _pOrig
- var _pDup *XExpr // sqlite3.c:89420:8
- _ = _pDup
- var _db *Xsqlite3 // sqlite3.c:89421:11
- _ = _db
+ _23_addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _23_tab1, i32(0))
func() {
- if _iCol < i32(0) || _iCol >= (_pEList.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89423), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveAliasØ00__func__Ø000))), unsafe.Pointer(str(100640)))
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0))))) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118993), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98570)))
crt.X__builtin_abort(tls)
}
}()
- _pOrig = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_iCol))).X0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = _23_addr
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_findRightmost(tls, _p))) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(32))
+ sink5 = *p
+ }
func() {
- if _pOrig == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89425), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveAliasØ00__func__Ø000))), unsafe.Pointer(str(100672)))
+ if (*XExprList)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118996), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98406)))
crt.X__builtin_abort(tls)
}
}()
- _db = (*Xsqlite3)(_pParse.X0)
- _pDup = _sqlite3ExprDup(tls, _db, _pOrig, i32(0))
- if _pDup != nil {
- goto _5
- }
- return
-
-_5:
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zType)) + 1*uintptr(i32(0))))) == i32(71) {
- goto _6
+ _sqlite3SelectDestInit(tls, &_23_intersectdest, i32(1), _23_tab1)
+ _iSub1 = _pParse.X59
+ _rc = _sqlite3Select(tls, _pParse, _pPrior, &_23_intersectdest)
+ if _rc != 0 {
+ goto _multi_select_end
}
-
- _incrAggFunctionDepth(tls, _pDup, _nSubquery)
-_6:
- if int32(_pExpr.X0) != i32(94) {
- goto _7
+ _23_addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _23_tab2, i32(0))
+ func() {
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1))))) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119010), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98695)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1)))) = _23_addr
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
+ _23_pLimit = (*XExpr)(_p.X15)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
+ _23_pOffset = (*XExpr)(_p.X16)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_23_intersectdest)) + uintptr(8 /* X2 */))) = _23_tab2
+ _iSub2 = _pParse.X59
+ _rc = _sqlite3Select(tls, _pParse, _p, &_23_intersectdest)
+ _pDelete = (*XSelect)(_p.X13)
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
+ if int32(_p.X2) > int32(_pPrior.X2) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _pPrior.X2
}
-
- _pDup = _sqlite3ExprAddCollateString(tls, _pParse, _pDup, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
-_7:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDup)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(4194304))
- sink5 = *p
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X15))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _23_pLimit
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _23_pOffset
+ func() {
+ if (*XExprList)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119031), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98406)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_dest.X0) != i32(9) {
+ goto _83
}
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(32768))
- sink5 = *p
+ _25_pFirst = _p
+_84:
+ if (*XSelect)(_25_pFirst.X13) != nil {
+ _25_pFirst = (*XSelect)(_25_pFirst.X13)
+ goto _84
}
- _sqlite3ExprDelete(tls, _db, _pExpr)
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pExpr), (unsafe.Pointer)(_pDup), u32(48))
- if ((_pExpr.X2)&uint32(i32(1024))) != uint32(i32(0)) || (*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))) == nil {
- goto _9
+ _generateColumnNames(tls, _pParse, (*XSrcList)(_25_pFirst.X8), (*XExprList)(_25_pFirst.X0))
+_83:
+ _23_iBreak = _sqlite3VdbeMakeLabel(tls, _v)
+ _23_iCont = _sqlite3VdbeMakeLabel(tls, _v)
+ _computeLimitRegisters(tls, _pParse, _p, _23_iBreak)
+ _sqlite3VdbeAddOp2(tls, _v, i32(37), _23_tab1, _23_iBreak)
+ _23_r1 = _sqlite3GetTempReg(tls, _pParse)
+ _23_iStart = _sqlite3VdbeAddOp2(tls, _v, i32(124), _23_tab1, _23_r1)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _23_tab2, _23_iCont, _23_r1, i32(0))
+ _sqlite3ReleaseTempReg(tls, _pParse, _23_r1)
+ _selectInnerLoop(tls, _pParse, _p, (*XExprList)(_p.X0), _23_tab1, nil, nil, &_dest, _23_iCont, _23_iBreak)
+ _sqlite3VdbeResolveLabel(tls, _v, _23_iCont)
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _23_tab1, _23_iStart)
+ _sqlite3VdbeResolveLabel(tls, _v, _23_iBreak)
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _23_tab2, i32(0))
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _23_tab1, i32(0))
+ goto _39
+_39:
+_21:
+ _explainComposite(tls, _pParse, int32(_p.X1), _iSub1, _iSub2, bool2int(int32(_p.X1) != i32(116)))
+ if ((_p.X3) & uint32(i32(32))) == 0 {
+ goto _86
}
-
func() {
- if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89446), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveAliasØ00__func__Ø000))), unsafe.Pointer(str(100684)))
+ if (*XSelect)(_p.X14) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119074), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98720)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))) = _sqlite3DbStrDup(tls, _db, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))))
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(65536))
- sink5 = *p
+ _26_nCol = (*XExprList)(_p.X0).X0
+ _26_pKeyInfo = _sqlite3KeyInfoAlloc(tls, _db, _26_nCol, i32(1))
+ if _26_pKeyInfo == nil {
+ _rc = _sqlite3NomemError(tls, i32(119078))
+ goto _multi_select_end
}
-_9:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pDup))
-}
-
-var _resolveAliasØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_resolveAliasØ00__func__Ø000[0], str(100732), 13)
-}
-
-func _incrAggFunctionDepth(tls *crt.TLS, _pExpr *XExpr, _N int32) { // sqlite3.c:89382:1
- var _1_w XWalker // sqlite3.c:89384:12
- _ = _1_w
- if _N <= i32(0) {
- goto _0
+ *func() ***XCollSeq { _26_i = i32(0); return &_26_apColl }() = (**XCollSeq)(unsafe.Pointer((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pKeyInfo)) + uintptr(20 /* X6 */)))))
+_90:
+ if _26_i >= _26_nCol {
+ goto _93
+ }
+ *_26_apColl = _multiSelectCollSeq(tls, _pParse, _p, _26_i)
+ if nil == (*_26_apColl) {
+ *_26_apColl = (*XCollSeq)(_db.X2)
+ }
+ *(*uintptr)(unsafe.Pointer(func() ***XCollSeq { _26_i += 1; return &_26_apColl }())) += uintptr(4)
+ goto _90
+_93:
+ _26_pLoop = _p
+_95:
+ if _26_pLoop == nil {
+ goto _98
+ }
+ _26_i = i32(0)
+_99:
+ if _26_i >= i32(2) {
+ goto _102
+ }
+ _31_addr = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLoop))+uintptr(32 /* X7 */))))) + 4*uintptr(_26_i)))
+ if _31_addr < i32(0) {
+ func() {
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLoop))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1))))) >= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119094), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(98732)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _102
}
+ _sqlite3VdbeChangeP2(tls, _v, uint32(_31_addr), _26_nCol)
+ _sqlite3VdbeChangeP4(tls, _v, _31_addr, (*int8)(unsafe.Pointer(_sqlite3KeyInfoRef(tls, _26_pKeyInfo))), i32(-5))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLoop))+uintptr(32 /* X7 */))))) + 4*uintptr(_26_i))) = i32(-1)
+ _26_i += 1
+ goto _99
+_102:
+ _26_pLoop = (*XSelect)(_26_pLoop.X13)
+ goto _95
+_98:
+ _sqlite3KeyInfoUnref(tls, _26_pKeyInfo)
+_86:
+_multi_select_end:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(12 /* X3 */))) = _dest.X3
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(16 /* X4 */))) = _dest.X4
+ _sqlite3SelectDelete(tls, _db, _pDelete)
+ return _rc
- crt.Xmemset(tls, (unsafe.Pointer)(&_1_w), i32(0), u32(28))
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_w)) + uintptr(4 /* X1 */))))) = _incrAggDepth
- *(*int32)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_1_w)) + uintptr(24 /* X6 */))))) = _N
- _sqlite3WalkExpr(tls, &_1_w, _pExpr)
-_0:
+ _ = _dest
+ _ = _14_uniondest
+ _ = _23_intersectdest
+ panic(0)
}
-func _incrAggDepth(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:89378:1
- if int32(_pExpr.X0) != i32(153) {
- goto _0
- }
+var _multiSelectØ00__func__Ø000 [12]int8
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(38 /* X12 */)))
- *p = uint8(int32(*p) + (*(*int32)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */)))))))
- sink2 = *p
- }
-_0:
- return i32(0)
+func init() {
+ crt.Xstrncpy(nil, &_multiSelectØ00__func__Ø000[0], str(98757), 12)
}
-func _sqlite3ExprAddCollateString(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _zC *int8) (r0 *XExpr) { // sqlite3.c:90995:1
- var _s XToken // sqlite3.c:90996:9
- _ = _s
+// Handle the special case of a compound-select that originates from a
+// VALUES clause. By handling this as a special case, we avoid deep
+// recursion, and thus do not need to enforce the SQLITE_LIMIT_COMPOUND_SELECT
+// on a VALUES clause.
+//
+// Because the Select object originates from a VALUES clause:
+// (1) It has no LIMIT or OFFSET
+// (2) All terms are UNION ALL
+// (3) There is no ORDER BY clause
+func _multiSelectValues(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) {
+ var _nRow, _rc int32
+ var _pPrior *XSelect
+ _nRow = i32(1)
+ _rc = i32(0)
func() {
- if _zC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90997), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAddCollateStringØ00__func__Ø000))), unsafe.Pointer(str(100748)))
+ if ((_p.X3) & uint32(i32(1024))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118702), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(98769)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3TokenInit(tls, &_s, _zC)
- return _sqlite3ExprAddCollateToken(tls, _pParse, _pExpr, &_s, i32(0))
-}
-
-var _sqlite3ExprAddCollateStringØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprAddCollateStringØ00__func__Ø000[0], str(100756), 28)
-}
-
-func _sqlite3ExprAddCollateToken(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _pCollName *XToken, _dequote int32) (r0 *XExpr) { // sqlite3.c:90979:1
- var _1_pNew *XExpr // sqlite3.c:90986:10
- _ = _1_pNew
- if (_pCollName.X1) <= uint32(i32(0)) {
- goto _0
- }
-
- _1_pNew = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(94), _pCollName, _dequote)
- if _1_pNew == nil {
- goto _1
- }
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(12 /* X4 */))))) = _pExpr
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pNew)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(4352))
- sink5 = *p
- }
- _pExpr = _1_pNew
-_1:
-_0:
- r0 = _pExpr
- return
-}
-
-func _sqlite3AuthRead(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _pSchema *XSchema, _pTabList *XSrcList) { // sqlite3.c:99562:1
- var _db *Xsqlite3 // sqlite3.c:99568:11
- _ = _db
- var _pTab *XTable // sqlite3.c:99569:9
- _ = _pTab
- var _zCol *int8 // sqlite3.c:99570:14
- _ = _zCol
- var _iSrc int32 // sqlite3.c:99571:7
- _ = _iSrc
- var _iDb int32 // sqlite3.c:99572:7
- _ = _iDb
- var _iCol int32 // sqlite3.c:99573:7
- _ = _iCol
- _db = (*Xsqlite3)(_pParse.X0)
- _pTab = nil
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
- }{(_db.X59)})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32, *int8, *int8, *int8, *int8) int32
- }{nil})) {
- goto _0
- }
- return
-
-_0:
- _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), _pSchema)
- if _iDb >= i32(0) {
- goto _1
- }
- return
-
-_1:
+_2:
func() {
- if int32(_pExpr.X0) != i32(152) && int32(_pExpr.X0) != i32(61) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99583), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(100784)))
+ if ((_p.X3) & uint32(i32(512))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118704), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(98797)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pExpr.X0) != i32(61) {
- goto _5
+ func() {
+ if int32(_p.X1) != i32(116) && (int32(_p.X1) != i32(119) || (*XSelect)(_p.X13) != nil) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118705), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(98821)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XExpr)(_p.X15) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118706), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(98528)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XExpr)(_p.X16) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118707), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(98541)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XSelect)(_p.X14) != nil && ((*XExprList)(_p.X0).X0) != ((*XExprList)((*XSelect)(_p.X14).X0).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118708), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(98873)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (*XSelect)(_p.X13) == nil {
+ goto _17
}
-
- _pTab = (*XTable)(_pParse.X40)
- goto _6
-
-_5:
func() {
- if _pTabList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(100832)))
+ if (*XSelect)((*XSelect)(_p.X13).X14) != _p {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118710), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(98930)))
crt.X__builtin_abort(tls)
}
}()
- _iSrc = i32(0)
-_9:
+ _p = (*XSelect)(_p.X13)
+ _nRow += 1
+ goto _2
+_17:
+_20:
+ if _p == nil {
+ goto _21
+ }
+ _pPrior = (*XSelect)(_p.X13)
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
+ _rc = _sqlite3Select(tls, _pParse, _p, _pDest)
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
+ if _rc != 0 {
+ goto _21
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(_nRow)
+ _p = (*XSelect)(_p.X14)
+ goto _20
+_21:
+ return _rc
+}
+
+var _multiSelectValuesØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_multiSelectValuesØ00__func__Ø000[0], str(98950), 18)
+}
+
+// This routine generates VDBE code to compute the content of a WITH RECURSIVE
+// query of the form:
+//
+// AS ( UNION [ALL] )
+// \___________/ \_______________/
+// p->pPrior p
+//
+//
+// There is exactly one reference to the recursive-table in the FROM clause
+// of recursive-query, marked with the SrcList->a[].fg.isRecursive flag.
+//
+// The setup-query runs once to generate an initial set of rows that go
+// into a Queue table. Rows are extracted from the Queue table one by
+// one. Each row extracted from Queue is output to pDest. Then the single
+// extracted row (now in the iCurrent table) becomes the content of the
+// recursive-table for a recursive-query run. The output of the recursive-query
+// is added back into the Queue table. Then another row is extracted from Queue
+// and the iteration continues until the Queue table is empty.
+//
+// If the compound query operator is UNION then no duplicate rows are ever
+// inserted into the Queue table. The iDistinct table keeps a copy of all rows
+// that have ever been inserted into Queue and causes duplicates to be
+// discarded. If the operator is UNION ALL, then duplicates are allowed.
+//
+// If the query has an ORDER BY, then entries in the Queue table are kept in
+// ORDER BY order and the first entry is extracted for each cycle. Without
+// an ORDER BY, the Queue table is just a FIFO.
+//
+// If a LIMIT clause is provided, then the iteration stops after LIMIT rows
+// have been output to pDest. A LIMIT of zero means to output no rows and a
+// negative LIMIT means to output all rows. If there is also an OFFSET clause
+// with a positive value, then the first OFFSET outputs are discarded rather
+// than being sent to pDest. The LIMIT count does not begin until after OFFSET
+// rows have been skipped.
+func _generateWithRecursiveQuery(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) {
+ var _nCol, _addrTop, _addrCont, _addrBreak, _iCurrent, _regCurrent, _iQueue, _iDistinct, _eDest, _i, _rc, _regLimit, _regOffset int32
+ var _v *TVdbe
+ var _pSrc *XSrcList
+ var _pOrderBy *XExprList
+ var _pSetup *XSelect
+ var _pLimit, _pOffset *XExpr
+ var _5_pKeyInfo *XKeyInfo
+ var _destQueue XSelectDest
+ _pSrc = (*XSrcList)(_p.X8)
+ _nCol = (*XExprList)(_p.X0).X0
+ _v = (*TVdbe)(_pParse.X2)
+ _pSetup = (*XSelect)(_p.X13)
+ _iCurrent = i32(0)
+ _iDistinct = i32(0)
+ _eDest = i32(5)
+ if _sqlite3AuthCheck(tls, _pParse, i32(33), nil, nil, nil) != 0 {
+ return
+ }
+ _addrBreak = _sqlite3VdbeMakeLabel(tls, _v)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(i32(320))
+ _computeLimitRegisters(tls, _pParse, _p, _addrBreak)
+ _pLimit = (*XExpr)(_p.X15)
+ _pOffset = (*XExpr)(_p.X16)
+ _regLimit = _p.X4
+ _regOffset = _p.X5
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = store36((**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(72 /* X16 */))))), nil)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(16 /* X5 */))), i32(0))
+ _pOrderBy = (*XExprList)(_p.X12)
+ _i = i32(0)
+_1:
if func() int32 {
- if _iSrc < (_pTabList.X0) {
+ if _i < (_pSrc.X0) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99588), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118583), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateWithRecursiveQueryØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
- goto _14
+ goto _6
}
-
- if (_pExpr.X8) != ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_iSrc))).X11) {
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i)))))+uintptr(36 /* X9 */))).X1)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _iCurrent = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X11
+ goto _6
+ }
+ _i += 1
+ goto _1
+_6:
+ _iQueue = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ if int32(_p.X1) == i32(115) {
+ _eDest = func() int32 {
+ if _pOrderBy != nil {
+ return i32(8)
+ }
+ return i32(6)
+ }()
+ _iDistinct = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ goto _11
+ }
+ _eDest = func() int32 {
+ if _pOrderBy != nil {
+ return i32(7)
+ }
+ return i32(5)
+ }()
+_11:
+ _sqlite3SelectDestInit(tls, &_destQueue, _eDest, _iQueue)
+ _regCurrent = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(113), _iCurrent, _regCurrent, _nCol)
+ if _pOrderBy != nil {
+ _5_pKeyInfo = _multiSelectOrderByKeyInfo(tls, _pParse, _p, i32(1))
+ _sqlite3VdbeAddOp4(tls, _v, i32(110), _iQueue, (_pOrderBy.X0)+i32(2), i32(0), (*int8)(unsafe.Pointer(_5_pKeyInfo)), i32(-5))
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_destQueue)) + uintptr(20 /* X5 */))))) = _pOrderBy
goto _15
}
-
- _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_iSrc))).X4)
- goto _14
-
+ _sqlite3VdbeAddOp2(tls, _v, i32(110), _iQueue, _nCol)
_15:
- _iSrc += 1
- goto _9
-
-_14:
-_6:
- _iCol = int32(_pExpr.X9)
- if func() int32 {
- if _pTab == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99596), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ _sqlite3VdbeComment(tls, _v, str(98968))
+ if _iDistinct != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = _sqlite3VdbeAddOp2(tls, _v, i32(110), _iDistinct, i32(0))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(32))
+ sink5 = *p
}
- return i32(0)
- }() == 0 {
- goto _18
}
- return
-
-_18:
- if _iCol < i32(0) {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSetup)) + uintptr(64 /* X14 */))))) = nil
+ _rc = _sqlite3Select(tls, _pParse, _pSetup, &_destQueue)
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSetup)) + uintptr(64 /* X14 */))))) = _p
+ if _rc != 0 {
+ goto _end_of_recursive_query
+ }
+ _addrTop = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iQueue, _addrBreak)
+ _sqlite3VdbeAddOp1(tls, _v, i32(126), _iCurrent)
+ if _pOrderBy != nil {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _iQueue, (_pOrderBy.X0)+i32(1), _regCurrent)
goto _19
}
-
+ _sqlite3VdbeAddOp2(tls, _v, i32(124), _iQueue, _regCurrent)
+_19:
+ _sqlite3VdbeAddOp1(tls, _v, i32(120), _iQueue)
+ _addrCont = _sqlite3VdbeMakeLabel(tls, _v)
+ _codeOffset(tls, _v, _regOffset, _addrCont)
+ _selectInnerLoop(tls, _pParse, _p, (*XExprList)(_p.X0), _iCurrent, nil, nil, _pDest, _addrCont, _addrBreak)
+ if _regLimit != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(48), _regLimit, _addrBreak)
+ }
+ _sqlite3VdbeResolveLabel(tls, _v, _addrCont)
+ if ((_p.X3) & uint32(i32(8))) != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(98980))
+ goto _22
+ }
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
+ _sqlite3Select(tls, _pParse, _p, &_destQueue)
func() {
- if _iCol >= int32(_pTab.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99599), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(46856)))
+ if (*XSelect)(_p.X13) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118659), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateWithRecursiveQueryØ00__func__Ø000))), unsafe.Pointer(str(97737)))
crt.X__builtin_abort(tls)
}
}()
- _zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol))).X0
- goto _22
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pSetup
+_22:
+ _sqlite3VdbeGoto(tls, _v, _addrTop)
+ _sqlite3VdbeResolveLabel(tls, _v, _addrBreak)
+_end_of_recursive_query:
+ _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExprList)(_p.X12))
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = _pOrderBy
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _pLimit
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _pOffset
+ _ = _destQueue
+}
-_19:
- if int32(_pTab.X10) < i32(0) {
- goto _23
+// Compute the iLimit and iOffset fields of the SELECT based on the
+// pLimit and pOffset expressions. pLimit and pOffset hold the expressions
+// that appear in the original SQL statement after the LIMIT and OFFSET
+// keywords. Or NULL if those keywords are omitted. iLimit and iOffset
+// are the integer memory register numbers for counters used to compute
+// the limit and offset. If there is no limit and/or offset, then
+// iLimit and iOffset are negative.
+//
+// This routine changes the values of iLimit and iOffset only if
+// a limit or offset is defined by pLimit and pOffset. iLimit and
+// iOffset should have been preset to appropriate default values (zero)
+// prior to calling this routine.
+//
+// The iOffset register (if it exists) is initialized to the value
+// of the OFFSET. The iLimit register is initialized to LIMIT. Register
+// iOffset+1 is initialized to LIMIT+OFFSET.
+//
+// Only if pLimit!=0 or pOffset!=0 do the limit registers get
+// redefined. The UNION ALL operator uses this property to force
+// the reuse of the same limit and offset registers across multiple
+// SELECT statements.
+func _computeLimitRegisters(tls *crt.TLS, _pParse *XParse, _p *XSelect, _iBreak int32) {
+ var _iLimit, _iOffset, _n int32
+ var _v *TVdbe
+ _v = nil
+ _iLimit = i32(0)
+ if (_p.X4) != 0 {
+ return
}
-
+ _sqlite3ExprCacheClear(tls, _pParse)
func() {
- if int32(_pTab.X10) >= int32(_pTab.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99602), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(100844)))
+ if (*XExpr)(_p.X16) != nil && (*XExpr)(_p.X15) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118411), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeLimitRegistersØ00__func__Ø000))), unsafe.Pointer(str(99022)))
crt.X__builtin_abort(tls)
}
}()
- _zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_pTab.X10))).X0
- goto _26
-
-_23:
- _zCol = str(100628)
-_26:
-_22:
+ if (*XExpr)(_p.X15) == nil {
+ goto _4
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = store1(&_iLimit, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
+ _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if _iDb < i32(0) || _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99607), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthReadØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118415), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeLimitRegistersØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- if i32(2) != _sqlite3AuthReadCol(tls, _pParse, _pTab.X0, _zCol, _iDb) {
- goto _30
+ if _sqlite3ExprIsInteger(tls, (*XExpr)(_p.X15), &_n) == 0 {
+ goto _7
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), _n, _iLimit)
+ _sqlite3VdbeComment(tls, _v, str(99052))
+ if _n == i32(0) {
+ _sqlite3VdbeGoto(tls, _v, _iBreak)
+ goto _9
+ }
+ if (_n >= i32(0)) && (int32(_p.X2) > int32(_sqlite3LogEst(tls, uint64(_n)))) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEst(tls, uint64(_n))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(16384))
+ sink5 = *p
+ }
+ }
+_9:
+ goto _12
+_7:
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)(_p.X15), _iLimit)
+ _sqlite3VdbeAddOp1(tls, _v, i32(17), _iLimit)
+ _sqlite3VdbeComment(tls, _v, str(99052))
+ _sqlite3VdbeAddOp2(tls, _v, i32(22), _iLimit, _iBreak)
+_12:
+ if (*XExpr)(_p.X16) != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = store1(&_iOffset, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) += 1
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)(_p.X16), _iOffset)
+ _sqlite3VdbeAddOp1(tls, _v, i32(17), _iOffset)
+ _sqlite3VdbeComment(tls, _v, str(99066))
+ _sqlite3VdbeAddOp3(tls, _v, i32(149), _iLimit, _iOffset+i32(1), _iOffset)
+ _sqlite3VdbeComment(tls, _v, str(99081))
}
+_4:
+}
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
-_30:
+// Clear all column cache entries.
+func _sqlite3ExprCacheClear(tls *crt.TLS, _pParse *XParse) {
+ var _i int32
+ if (((*Xsqlite3)(_pParse.X0).X6) & i32(4096)) != 0 {
+ crt.Xprintf(tls, str(99094))
+ }
+ _i = i32(0)
+_1:
+ if _i >= int32(_pParse.X13) {
+ goto _4
+ }
+ if (((*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X2) != 0) && (int32(_pParse.X7) < i32(8)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360 /* X49 */))))) + 4*uintptr(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19 /* X7 */))), uint8(1))))) = (*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X4
+ }
+ _i += 1
+ goto _1
+_4:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(25 /* X13 */))) = uint8(i32(0))
}
-var _sqlite3AuthReadØ00__func__Ø000 [16]int8 // -
+var _computeLimitRegistersØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3AuthReadØ00__func__Ø000[0], str(100868), 16)
+ crt.Xstrncpy(nil, &_computeLimitRegistersØ00__func__Ø000[0], str(99101), 22)
}
-func _sqlite3AuthReadCol(tls *crt.TLS, _pParse *XParse, _zTab *int8, _zCol *int8, _iDb int32) (r0 int32) { // sqlite3.c:99524:1
- var _db *Xsqlite3 // sqlite3.c:99530:11
- _ = _db
- var _zDb *int8 // sqlite3.c:99531:8
- _ = _zDb
- var _rc int32 // sqlite3.c:99532:7
- _ = _rc
- _db = (*Xsqlite3)(_pParse.X0)
- _zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
- goto _0
- }
- return i32(0)
-
-_0:
- _rc = (_db.X59)(tls, _db.X60, i32(20), _zTab, _zCol, _zDb, _pParse.X65)
- if _rc != i32(1) {
- goto _1
- }
-
- if (_db.X5) <= i32(2) && _iDb == i32(0) {
- goto _3
- }
+// Generate code for an unconditional jump to instruction iDest
+func _sqlite3VdbeGoto(tls *crt.TLS, _p *TVdbe, _iDest int32) (r0 int32) {
+ return _sqlite3VdbeAddOp3(tls, _p, i32(13), i32(0), _iDest, i32(0))
+}
- _sqlite3ErrorMsg(tls, _pParse, str(100884), unsafe.Pointer(_zDb), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
- goto _4
+var _generateWithRecursiveQueryØ00__func__Ø000 [27]int8
-_3:
- _sqlite3ErrorMsg(tls, _pParse, str(100920), unsafe.Pointer(_zTab), unsafe.Pointer(_zCol))
-_4:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = i32(23)
- goto _5
+func init() {
+ crt.Xstrncpy(nil, &_generateWithRecursiveQueryØ00__func__Ø000[0], str(99123), 27)
+}
+// The select statement passed as the second parameter is a compound SELECT
+// with an ORDER BY clause. This function allocates and returns a KeyInfo
+// structure suitable for implementing the ORDER BY.
+//
+// Space to hold the KeyInfo structure is obtained from malloc. The calling
+// function is responsible for ensuring that this structure is eventually
+// freed.
+func _multiSelectOrderByKeyInfo(tls *crt.TLS, _pParse *XParse, _p *XSelect, _nExtra int32) (r0 *XKeyInfo) {
+ var _nOrderBy, _1_i int32
+ var _db *Xsqlite3
+ var _pOrderBy *XExprList
+ var _2_pItem *TExprList_item
+ var _2_pTerm *XExpr
+ var _pRet *XKeyInfo
+ var _2_pColl *XCollSeq
+ _pOrderBy = (*XExprList)(_p.X12)
+ _nOrderBy = (*XExprList)(_p.X12).X0
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pRet = _sqlite3KeyInfoAlloc(tls, _db, _nOrderBy+_nExtra, i32(1))
+ if _pRet == nil {
+ goto _0
+ }
+ _1_i = i32(0)
_1:
- if _rc == i32(2) || _rc == i32(0) {
- goto _7
+ if _1_i >= _nOrderBy {
+ goto _4
}
-
- _sqliteAuthBadReturnCode(tls, _pParse)
-_7:
-_5:
- r0 = _rc
- return
-}
-
-func _exprProbability(tls *crt.TLS, _p *XExpr) (r0 int32) { // sqlite3.c:89900:1
- var _r float64 // sqlite3.c:89901:10
- _ = _r
- _r = -1
- if int32(_p.X0) == i32(132) {
- goto _0
+ _2_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_1_i)))
+ _2_pTerm = (*XExpr)(_2_pItem.X0)
+ if ((_2_pTerm.X2) & uint32(i32(256))) != 0 {
+ _2_pColl = _sqlite3ExprCollSeq(tls, _pParse, _2_pTerm)
+ goto _6
}
- return i32(-1)
-
-_0:
- _sqlite3AtoF(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))), &_r, _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))), uint8(i32(1)))
+ _2_pColl = _multiSelectCollSeq(tls, _pParse, _p, int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pItem))+uintptr(16 /* X5 */))))).X0)-i32(1))
+ if _2_pColl == nil {
+ _2_pColl = (*XCollSeq)(_db.X2)
+ }
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAddCollateString(tls, _pParse, _2_pTerm, _2_pColl.X0)
+_6:
func() {
- if _r < float64(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(89904), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprProbabilityØ00__func__Ø000))), unsafe.Pointer(str(100952)))
+ if _sqlite3KeyInfoIsWriteable(tls, _pRet) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118498), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByKeyInfoØ00__func__Ø000))), unsafe.Pointer(str(99150)))
crt.X__builtin_abort(tls)
}
}()
- if _r <= float64(1) {
- goto _3
- }
- return i32(-1)
-
-_3:
- return int32(_r * (1.34217728e+08))
-}
-
-var _exprProbabilityØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_exprProbabilityØ00__func__Ø000[0], str(100960), 16)
+ *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet))+uintptr(20 /* X6 */))))) + 4*uintptr(_1_i))) = _2_pColl
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet.X5)) + 1*uintptr(_1_i))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_1_i))).X3
+ _1_i += 1
+ goto _1
+_4:
+_0:
+ return _pRet
}
-func _sqlite3FunctionUsesThisSrc(tls *crt.TLS, _pExpr *XExpr, _pSrcList *XSrcList) (r0 int32) { // sqlite3.c:95798:1
- var _w XWalker // sqlite3.c:95799:10
- _ = _w
- var _cnt TSrcCount // sqlite3.c:95800:19
- _ = _cnt
+// Return the appropriate collating sequence for the iCol-th column of
+// the result set for the compound-select statement "p". Return NULL if
+// the column has no default collating sequence.
+//
+// The collating sequence for the compound select is taken from the
+// left-most term of the select that has a collating sequence.
+func _multiSelectCollSeq(tls *crt.TLS, _pParse *XParse, _p *XSelect, _iCol int32) (r0 *XCollSeq) {
+ var _pRet *XCollSeq
+ if (*XSelect)(_p.X13) != nil {
+ _pRet = _multiSelectCollSeq(tls, _pParse, (*XSelect)(_p.X13), _iCol)
+ goto _1
+ }
+ _pRet = nil
+_1:
func() {
- if int32(_pExpr.X0) != i32(153) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95801), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FunctionUsesThisSrcØ00__func__Ø000))), unsafe.Pointer(str(100976)))
+ if _iCol < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118459), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectCollSeqØ00__func__Ø000))), unsafe.Pointer(str(99182)))
crt.X__builtin_abort(tls)
}
}()
- crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _exprSrcCount
- *(**TSrcCount)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = &_cnt
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cnt)) + uintptr(0 /* X0 */))))) = _pSrcList
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cnt)) + uintptr(4 /* X1 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_cnt)) + uintptr(8 /* X2 */))) = i32(0)
- _sqlite3WalkExprList(tls, &_w, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
- return bool2int(((_cnt.X1) > i32(0)) || ((_cnt.X2) == i32(0)))
+ if (_pRet == nil) && func() int32 {
+ if _iCol < ((*XExprList)(_p.X0).X0) {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118463), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectCollSeqØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 {
+ _pRet = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_iCol))).X0))
+ }
+ return _pRet
}
-var _sqlite3FunctionUsesThisSrcØ00__func__Ø000 [27]int8 // -
+var _multiSelectCollSeqØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FunctionUsesThisSrcØ00__func__Ø000[0], str(101004), 27)
+ crt.Xstrncpy(nil, &_multiSelectCollSeqØ00__func__Ø000[0], str(99190), 19)
}
-func _exprSrcCount(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:95769:1
- var _1_i int32 // sqlite3.c:95776:9
- _ = _1_i
- var _1_p *TSrcCount // sqlite3.c:95777:21
- _ = _1_p
- var _1_pSrc *XSrcList // sqlite3.c:95778:13
- _ = _1_pSrc
- var _1_nSrc int32 // sqlite3.c:95779:9
- _ = _1_nSrc
- if int32(_pExpr.X0) != i32(152) && func() int32 {
- if int32(_pExpr.X0) == i32(154) {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95775), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprSrcCountØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
- return i32(0)
- }() == 0 {
- goto _3
- }
-
- _1_p = (*TSrcCount)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
- _1_pSrc = (*XSrcList)(_1_p.X0)
- _1_nSrc = func() int32 {
- if _1_pSrc != nil {
- return (_1_pSrc.X0)
- }
- return i32(0)
- }()
- _1_i = i32(0)
-_6:
- if _1_i >= _1_nSrc {
- goto _9
- }
-
- if (_pExpr.X8) != ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_1_i))).X11) {
- goto _10
- }
-
- goto _9
-
-_10:
- _1_i += 1
- goto _6
-
-_9:
- if _1_i >= _1_nSrc {
- goto _11
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(4 /* X1 */))) += 1
- goto _12
+var _multiSelectOrderByKeyInfoØ00__func__Ø000 [26]int8
-_11:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(8 /* X2 */))) += 1
-_12:
-_3:
- r0 = i32(0)
- return
+func init() {
+ crt.Xstrncpy(nil, &_multiSelectOrderByKeyInfoØ00__func__Ø000[0], str(99209), 26)
}
-var _exprSrcCountØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_exprSrcCountØ00__func__Ø000[0], str(101032), 13)
+// Add code to implement the OFFSET
+func _codeOffset(tls *crt.TLS, _v *TVdbe, _iOffset int32, _iContinue int32) {
+ if _iOffset > i32(0) {
+ _sqlite3VdbeAddOp3(tls, _v, i32(46), _iOffset, _iContinue, i32(1))
+ _sqlite3VdbeComment(tls, _v, str(25292))
+ }
}
-func _resolveSelectStep(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) (r0 int32) { // sqlite3.c:90508:1
- var _pOuterNC *XNameContext // sqlite3.c:90509:15
- _ = _pOuterNC
- var _sNC XNameContext // sqlite3.c:90510:15
- _ = _sNC
- var _isCompound int32 // sqlite3.c:90511:7
- _ = _isCompound
- var _nCompound int32 // sqlite3.c:90512:7
- _ = _nCompound
- var _pParse *XParse // sqlite3.c:90513:9
- _ = _pParse
- var _i int32 // sqlite3.c:90514:7
- _ = _i
- var _pGroupBy *XExprList // sqlite3.c:90515:12
- _ = _pGroupBy
- var _pLeftmost *XSelect // sqlite3.c:90516:10
- _ = _pLeftmost
- var _db *Xsqlite3 // sqlite3.c:90517:11
- _ = _db
- var _5_pSub *XSelect // sqlite3.c:90566:14
- _ = _5_pSub
- var _6_pItem *TSrcList_item // sqlite3.c:90576:27
- _ = _6_pItem
- var _7_pNC *XNameContext // sqlite3.c:90578:21
- _ = _7_pNC
- var _7_nRef int32 // sqlite3.c:90579:13
- _ = _7_nRef
- var _7_zSavedContext *int8 // sqlite3.c:90580:20
- _ = _7_zSavedContext
- var _11_pItem *TSrcList_item // sqlite3.c:90643:27
- _ = _11_pItem
- var _13_pSub *XSelect // sqlite3.c:90663:14
- _ = _13_pSub
- var _16_pItem *TExprList_item // sqlite3.c:90691:28
- _ = _16_pItem
+// This routine generates the code for the inside of the inner loop
+// of a SELECT.
+//
+// If srcTab is negative, then the pEList expressions
+// are evaluated in order to get the data for this row. If srcTab is
+// zero or more, then data is pulled from srcTab and pEList is used only
+// to get the number of columns and the collation sequence for each column.
+func _selectInnerLoop(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pEList *XExprList, _srcTab int32, _pSort *XSortCtx, _pDistinct *XDistinctCtx, _pDest *XSelectDest, _iContinue int32, _iBreak int32) {
+ var _i, _hasDistinct, _eDest, _iParm, _nResultCol, _nPrefixReg, _regResult, _regOrig, _11_j, _15_iJump, _15_regPrev, _23_r1, _25_r1, _26_addr, _28_r2, _31_r1, _40_nKey, _40_r1, _40_r2, _40_r3, _40_addrTest int32
+ var _7_ecelFlags uint8
+ var _v *TVdbe
+ var _40_pSO *XExprList
+ var _15_pOp *XVdbeOp
+ var _16_pColl *XCollSeq
+ _v = (*TVdbe)(_pParse.X2)
+ _eDest = int32(_pDest.X0)
+ _iParm = _pDest.X2
+ _nPrefixReg = i32(0)
func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90520), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117220), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(41861)))
crt.X__builtin_abort(tls)
}
}()
- if ((_p.X3) & uint32(i32(4))) == 0 {
- goto _2
- }
- return i32(1)
-
-_2:
- _pOuterNC = (*XNameContext)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
- _pParse = (*XParse)(_pWalker.X0)
- _db = (*Xsqlite3)(_pParse.X0)
- if ((_p.X3) & uint32(i32(64))) != uint32(i32(0)) {
- goto _3
- }
-
- _sqlite3SelectPrep(tls, _pParse, _p, _pOuterNC)
- return func() int32 {
- if (_pParse.X16) != 0 || ((_db.X17) != 0) {
- return i32(2)
- }
- return i32(1)
- }()
-
-_3:
- _isCompound = bool2int((*XSelect)(_p.X13) != nil)
- _nCompound = i32(0)
- _pLeftmost = _p
-_7:
- if _p == nil {
- goto _8
- }
-
func() {
- if ((_p.X3) & uint32(i32(64))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90545), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(101048)))
+ if _pEList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117221), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(45052)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if ((_p.X3) & uint32(i32(4))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90546), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(101080)))
- crt.X__builtin_abort(tls)
+ _hasDistinct = func() int32 {
+ if _pDistinct != nil {
+ return int32(_pDistinct.X1)
}
+ return i32(0)
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(4))
- sink5 = *p
+ if (_pSort != nil) && ((*XExprList)(_pSort.X0) == nil) {
+ _pSort = nil
}
- crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
- if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X15)) == 0 && _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X16)) == 0 {
- goto _14
+ if (_pSort == nil) && (_hasDistinct == 0) {
+ func() {
+ if _iContinue == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117225), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99235)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _codeOffset(tls, _v, _p.X5, _iContinue)
}
- return i32(2)
-
-_14:
- if ((_p.X3) & uint32(i32(65536))) == 0 {
- goto _15
+ _nResultCol = _pEList.X0
+ if (_pDest.X3) != i32(0) {
+ goto _12
}
-
- _5_pSub = (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X5)
- func() {
- if ((*XSrcList)(_p.X8).X0) != i32(1) || (*XExprList)(_p.X12) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90567), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(101112)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSelect)(_5_pSub.X13) == nil || (*XExprList)(_5_pSub.X12) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90568), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(101144)))
- crt.X__builtin_abort(tls)
+ if _pSort == nil {
+ goto _13
+ }
+ _nPrefixReg = (*XExprList)(_pSort.X0).X0
+ if (int32(_pSort.X7) & i32(1)) == 0 {
+ _nPrefixReg += 1
+ }
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nPrefixReg
+ sink1 = *p
+ }
+_13:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(12 /* X3 */))) = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nResultCol
+ sink1 = *p
+ }
+ goto _15
+_12:
+ if ((_pDest.X3) + _nResultCol) > (_pParse.X18) {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nResultCol
+ sink1 = *p
}
- }()
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pSub)) + uintptr(56 /* X12 */))))) = (*XExprList)(_p.X12)
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
+ }
_15:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(16 /* X4 */))) = _nResultCol
+ _regOrig = store1(&_regResult, _pDest.X3)
+ if _srcTab < i32(0) {
+ goto _17
+ }
_i = i32(0)
-_22:
- if _i >= ((*XSrcList)(_p.X8).X0) {
- goto _25
+_18:
+ if _i >= _nResultCol {
+ goto _21
}
-
- _6_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
- if (*XSelect)(_6_pItem.X5) == nil {
- goto _26
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _i, _regResult+_i)
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1))
+ _i += 1
+ goto _18
+_21:
+ goto _22
+_17:
+ if _eDest == i32(3) {
+ goto _23
}
-
- _7_nRef = i32(0)
- _7_zSavedContext = _pParse.X65
- _7_pNC = _pOuterNC
+ if ((_eDest == i32(10)) || (_eDest == i32(9))) || (_eDest == i32(13)) {
+ _7_ecelFlags = uint8(i32(1))
+ goto _27
+ }
+ _7_ecelFlags = uint8(i32(0))
_27:
- if _7_pNC == nil {
- goto _30
+ if _pSort == nil || _hasDistinct != i32(0) || _eDest == i32(12) || _eDest == i32(14) {
+ goto _31
}
-
{
- p := &_7_nRef
- *p = (*p) + (_7_pNC.X5)
- sink1 = *p
+ p := &_7_ecelFlags
+ *p = uint8(int32(*p) | i32(12))
+ sink2 = *p
}
- _7_pNC = (*XNameContext)(_7_pNC.X4)
- goto _27
-
-_30:
- if (_6_pItem.X2) == nil {
- goto _31
+ _i = _pSort.X1
+_32:
+ if _i >= ((*XExprList)(_pSort.X0).X0) {
+ goto _35
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _6_pItem.X2
+ if store1(&_11_j, int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSort.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))).X0)) > i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_11_j-i32(1))))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16((_i + i32(1)) - (_pSort.X1))
+ }
+ _i += 1
+ goto _32
+_35:
+ _regOrig = i32(0)
+ func() {
+ if _eDest != i32(11) && _eDest != i32(10) && _eDest != i32(13) && _eDest != i32(9) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117281), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99248)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
_31:
- _sqlite3ResolveSelectNames(tls, _pParse, (*XSelect)(_6_pItem.X5), _pOuterNC)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _7_zSavedContext
- if (_pParse.X16) == 0 && (_db.X17) == 0 {
- goto _33
+ _nResultCol = _sqlite3ExprCodeExprList(tls, _pParse, _pEList, _regResult, i32(0), _7_ecelFlags)
+_23:
+_22:
+ if _hasDistinct == 0 {
+ goto _42
}
- return i32(2)
-
-_33:
- _7_pNC = _pOuterNC
-_34:
- if _7_pNC == nil {
- goto _37
+ switch int32(_pDistinct.X1) {
+ case i32(1):
+ goto _45
+ case i32(2):
+ goto _44
+ default:
+ goto _46
}
+_44:
+ _15_regPrev = (_pParse.X18) + i32(1)
{
- p := &_7_nRef
- *p = (*p) - (_7_pNC.X5)
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nResultCol
sink1 = *p
}
- _7_pNC = (*XNameContext)(_7_pNC.X4)
- goto _34
-
-_37:
+ _sqlite3VdbeChangeToNoop(tls, _v, _pDistinct.X3)
+ _15_pOp = _sqlite3VdbeGetOp(tls, _v, _pDistinct.X3)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(59))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pOp)) + uintptr(4 /* X3 */))) = i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pOp)) + uintptr(8 /* X4 */))) = _15_regPrev
+ _15_iJump = _sqlite3VdbeCurrentAddr(tls, _v) + _nResultCol
+ _i = i32(0)
+_47:
+ if _i >= _nResultCol {
+ goto _50
+ }
+ _16_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if _i < (_nResultCol - i32(1)) {
+ _sqlite3VdbeAddOp3(tls, _v, i32(77), _regResult+_i, _15_iJump, _15_regPrev+_i)
+ goto _52
+ }
+ _sqlite3VdbeAddOp3(tls, _v, i32(78), _regResult+_i, _iContinue, _15_regPrev+_i)
+_52:
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_16_pColl)), i32(-3))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(128)))
+ _i += 1
+ goto _47
+_50:
func() {
- if int32((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(3)))<>uint(i32(31))) != i32(0) || _7_nRef > i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90595), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(101180)))
+ if _sqlite3VdbeCurrentAddr(tls, _v) != _15_iJump && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117327), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99326)))
crt.X__builtin_abort(tls)
}
}()
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(bool2int(_7_nRef != i32(0))), 8, 3)
-_26:
- _i += 1
- goto _22
-
-_25:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */))) = uint16(i32(1))
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_p.X8)
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(16 /* X4 */))))) = _pOuterNC
- if _sqlite3ResolveExprListNames(tls, &_sNC, (*XExprList)(_p.X0)) == 0 {
- goto _41
- }
- return i32(2)
-
-_41:
+ _sqlite3VdbeAddOp3(tls, _v, i32(64), _regResult, _15_regPrev, _nResultCol-i32(1))
+ goto _56
+_45:
+ _sqlite3VdbeChangeToNoop(tls, _v, _pDistinct.X3)
+ goto _56
+_46:
func() {
- if ((_p.X3) & uint32(i32(8))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90613), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveSelectStepØ00__func__Ø000))), unsafe.Pointer(str(101220)))
+ if int32(_pDistinct.X1) != i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117338), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99387)))
crt.X__builtin_abort(tls)
}
}()
- _pGroupBy = (*XExprList)(_p.X10)
- if _pGroupBy == nil && (int32(_sNC.X7)&i32(16)) == i32(0) {
- goto _45
- }
-
- i32(0)
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(8)|(int32(_sNC.X7)&i32(4096)))
- sink5 = *p
- }
- goto _46
-
-_45:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) & i32(-2))
- sink12 = *p
- }
-_46:
- if (*XExpr)(_p.X11) == nil || _pGroupBy != nil {
- goto _48
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(101252))
- return i32(2)
-
-_48:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(8 /* X2 */))))) = (*XExprList)(_p.X0)
- if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X11)) == 0 {
- goto _49
- }
- return i32(2)
-
-_49:
- if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)(_p.X9)) == 0 {
- goto _50
- }
- return i32(2)
-
-_50:
- _i = i32(0)
-_51:
- if _i >= ((*XSrcList)(_p.X8).X0) {
- goto _54
- }
-
- _11_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) == 0 || _sqlite3ResolveExprListNames(tls, &_sNC, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pItem)) + uintptr(60 /* X15 */))))))) == 0 {
- goto _56
- }
- return i32(2)
-
+ _codeDistinct(tls, _pParse, _pDistinct.X2, _iContinue, _nResultCol, _regResult)
+ goto _56
_56:
- _i += 1
- goto _51
-
-_54:
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(16 /* X4 */))))) = nil
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
- }
- if ((_p.X3) & uint32(i32(65536))) == 0 {
- goto _57
- }
-
- _13_pSub = (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X5)
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = (*XExprList)(_13_pSub.X12)
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pSub)) + uintptr(56 /* X12 */))))) = nil
-_57:
- if _isCompound > _nCompound || _resolveOrderGroupBy(tls, &_sNC, _p, (*XExprList)(_p.X12), str(25684)) == 0 {
- goto _59
- }
- return i32(2)
-
-_59:
- if (_db.X17) == 0 {
- goto _60
+ if _pSort == nil {
+ _codeOffset(tls, _v, _p.X5, _iContinue)
}
- return i32(2)
-
-_60:
- if _pGroupBy == nil {
+_42:
+ switch _eDest {
+ case i32(1):
goto _61
- }
-
- if _resolveOrderGroupBy(tls, &_sNC, _p, _pGroupBy, str(25692)) == 0 && (_db.X17) == 0 {
+ case i32(2):
+ goto _62
+ case i32(3):
+ goto _68
+ case i32(5):
goto _63
+ case i32(6):
+ goto _64
+ case i32(7):
+ goto _73
+ case i32(8):
+ goto _72
+ case i32(9):
+ goto _71
+ case i32(10):
+ goto _69
+ case i32(11):
+ goto _67
+ case i32(12):
+ goto _66
+ case i32(13):
+ goto _70
+ case i32(14):
+ goto _65
+ default:
+ goto _74
}
- return i32(2)
+_61:
+ _23_r1 = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regResult, _nResultCol, _23_r1)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _23_r1, _regResult, _nResultCol)
+ _sqlite3ReleaseTempReg(tls, _pParse, _23_r1)
+ goto _75
+_62:
+ _sqlite3VdbeAddOp3(tls, _v, i32(129), _iParm, _regResult, _nResultCol)
+ goto _75
_63:
- *func() **TExprList_item { _i = i32(0); return &_16_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroupBy)) + uintptr(8 /* X2 */)))))
_64:
- if _i >= (_pGroupBy.X0) {
- goto _67
+_65:
+_66:
+ _25_r1 = _sqlite3GetTempRange(tls, _pParse, _nPrefixReg+i32(1))
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regResult, _nResultCol, _25_r1+_nPrefixReg)
+ if _eDest == i32(6) {
+ _26_addr = _sqlite3VdbeCurrentAddr(tls, _v) + i32(4)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iParm+i32(1), _26_addr, _25_r1, i32(0))
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm+i32(1), _25_r1, _regResult, _nResultCol)
+ func() {
+ if _pSort != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117396), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99434)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- if (((*XExpr)(_16_pItem.X0).X2) & uint32(i32(2))) == uint32(i32(0)) {
- goto _68
+ if _pSort != nil {
+ _pushOntoSorter(tls, _pParse, _pSort, _p, _25_r1+_nPrefixReg, _regResult, i32(1), _nPrefixReg)
+ goto _80
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(101296))
- return i32(2)
-
-_68:
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_16_pItem }())) += uintptr(20)
- goto _64
-
+ _28_r2 = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp2(tls, _v, i32(117), _iParm, _28_r2)
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), _iParm, _25_r1, _28_r2)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
+ _sqlite3ReleaseTempReg(tls, _pParse, _28_r2)
+_80:
+ _sqlite3ReleaseTempRange(tls, _pParse, _25_r1, _nPrefixReg+i32(1))
+ goto _75
_67:
-_61:
- if (*XSelect)(_p.X14) == nil || ((*XExprList)(_p.X0).X0) == ((*XExprList)((*XSelect)(_p.X14).X0).X0) {
- goto _70
- }
-
- _sqlite3SelectWrongNumTermsError(tls, _pParse, (*XSelect)(_p.X14))
- return i32(2)
-
-_70:
- _p = (*XSelect)(_p.X13)
- _nCompound += 1
- goto _7
-
-_8:
- if _isCompound == 0 || _resolveCompoundOrderBy(tls, _pParse, _pLeftmost) == 0 {
- goto _72
- }
- return i32(2)
-
-_72:
- return i32(1)
-}
-
-var _resolveSelectStepØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_resolveSelectStepØ00__func__Ø000[0], str(101356), 18)
-}
-
-func _sqlite3ResolveExprNames(tls *crt.TLS, _pNC *XNameContext, _pExpr *XExpr) (r0 int32) { // sqlite3.c:90776:1
- var _savedHasAgg uint16 // sqlite3.c:90780:7
- _ = _savedHasAgg
- var _w XWalker // sqlite3.c:90781:10
- _ = _w
- var _1_pParse *XParse // sqlite3.c:90786:11
- _ = _1_pParse
- if _pExpr != nil {
- goto _0
+ if _pSort != nil {
+ _pushOntoSorter(tls, _pParse, _pSort, _p, _regResult, _regOrig, _nResultCol, _nPrefixReg)
+ goto _82
}
- return i32(0)
-
-_0:
- _1_pParse = (*XParse)(_pNC.X0)
- if _sqlite3ExprCheckHeight(tls, _1_pParse, (_pExpr.X7)+((*XParse)(_pNC.X0).X57)) == 0 {
- goto _1
+ _31_r1 = _sqlite3GetTempReg(tls, _pParse)
+ func() {
+ if _sqlite3Strlen30(tls, _pDest.X1) != _nResultCol {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117427), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99443)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp4(tls, _v, i32(101), _regResult, _nResultCol, _31_r1, _pDest.X1, _nResultCol)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _regResult, _nResultCol)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _31_r1, _regResult, _nResultCol)
+ _sqlite3ReleaseTempReg(tls, _pParse, _31_r1)
+_82:
+ goto _75
+_68:
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _iParm)
+ goto _75
+_69:
+ if _pSort != nil {
+ func() {
+ if _nResultCol > (_pDest.X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117451), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99488)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pushOntoSorter(tls, _pParse, _pSort, _p, _regResult, _regOrig, _nResultCol, _nPrefixReg)
+ goto _88
}
- return i32(1)
-
-_1:
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pParse)) + uintptr(420 /* X57 */)))
- *p = (*p) + (_pExpr.X7)
- sink1 = *p
+ func() {
+ if _nResultCol != (_pDest.X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117455), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99513)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _regResult != _iParm {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117456), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99538)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+_88:
+ goto _75
+_70:
+_71:
+ if _pSort != nil {
+ _pushOntoSorter(tls, _pParse, _pSort, _p, _regResult, _regOrig, _nResultCol, _nPrefixReg)
+ goto _94
}
- _savedHasAgg = uint16(int32(_pNC.X7) & i32(4112))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) & i32(-4113))
- sink12 = *p
+ if _eDest == i32(13) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(16), _pDest.X2)
+ goto _96
}
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = (*XParse)(_pNC.X0)
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _resolveExprStep
- *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _resolveSelectStep
- *(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(12 /* X3 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(16 /* X4 */))) = i32(0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pNC
- _sqlite3WalkExpr(tls, &_w, _pExpr)
- {
- p := (*int32)(unsafe.Pointer(uintptr(_pNC.X0) + uintptr(420 /* X57 */)))
- *p = (*p) - (_pExpr.X7)
- sink1 = *p
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), _regResult, _nResultCol)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _regResult, _nResultCol)
+_96:
+_94:
+ goto _75
+_72:
+_73:
+ _40_addrTest = i32(0)
+ _40_pSO = (*XExprList)(_pDest.X5)
+ func() {
+ if _40_pSO == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117493), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99555)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _40_nKey = _40_pSO.X0
+ _40_r1 = _sqlite3GetTempReg(tls, _pParse)
+ _40_r2 = _sqlite3GetTempRange(tls, _pParse, _40_nKey+i32(2))
+ _40_r3 = (_40_r2 + _40_nKey) + i32(1)
+ if _eDest == i32(8) {
+ _40_addrTest = _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iParm+i32(1), i32(0), _regResult, _nResultCol)
}
- if (_pNC.X6) <= i32(0) && ((*XParse)(_w.X0).X16) <= i32(0) {
- goto _3
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regResult, _nResultCol, _40_r3)
+ if _eDest == i32(8) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(128), _iParm+i32(1), _40_r3)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(8))
- sink5 = *p
+ _i = i32(0)
+_101:
+ if _i >= _40_nKey {
+ goto _104
}
-_3:
- if (int32(_pNC.X7) & i32(16)) == 0 {
- goto _4
+ _sqlite3VdbeAddOp2(tls, _v, i32(65), (_regResult+int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_40_pSO))+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))).X0))-i32(1), _40_r2+_i)
+ _i += 1
+ goto _101
+_104:
+ _sqlite3VdbeAddOp2(tls, _v, i32(116), _iParm, _40_r2+_40_nKey)
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _40_r2, _40_nKey+i32(2), _40_r1)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _40_r1, _40_r2, _40_nKey+i32(2))
+ if _40_addrTest != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _40_addrTest)
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(2))
- sink5 = *p
+ _sqlite3ReleaseTempReg(tls, _pParse, _40_r1)
+ _sqlite3ReleaseTempRange(tls, _pParse, _40_r2, _40_nKey+i32(2))
+ goto _75
+_74:
+ func() {
+ if _eDest != i32(4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117535), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(99559)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _75
+_75:
+ if (_pSort == nil) && (_p.X4) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(48), _p.X4, _iBreak)
+ }
+}
+
+var _selectInnerLoopØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_selectInnerLoopØ00__func__Ø000[0], str(99578), 16)
+}
+
+// Generate code that pushes the value of every element of the given
+// expression list into a sequence of registers beginning at target.
+//
+// Return the number of elements evaluated.
+//
+// The SQLITE_ECEL_DUP flag prevents the arguments from being
+// filled using OP_SCopy. OP_Copy must be used instead.
+//
+// The SQLITE_ECEL_FACTOR argument allows constant arguments to be
+// factored out into initialization code.
+//
+// The SQLITE_ECEL_REF flag means that expressions in the list with
+// ExprList.a[].u.x.iOrderByCol>0 have already been evaluated and stored
+// in registers at srcReg, and so the value can be copied from there.
+func _sqlite3ExprCodeExprList(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _target int32, _srcReg int32, _flags uint8) (r0 int32) {
+ var _i, _j, _n, _6_inReg int32
+ var _copyOp uint8
+ var _v *TVdbe
+ var _pItem *TExprList_item
+ var _1_pExpr *XExpr
+ var _7_pOp *XVdbeOp
+ _copyOp = uint8(func() int32 {
+ if (int32(_flags) & i32(1)) != 0 {
+ return i32(64)
+ }
+ return i32(65)
+ }())
+ _v = (*TVdbe)(_pParse.X2)
+ func() {
+ if _pList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeExprListØ00__func__Ø000))), unsafe.Pointer(str(90087)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _target <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95150), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeExprListØ00__func__Ø000))), unsafe.Pointer(str(99594)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*TVdbe)(_pParse.X2) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95151), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeExprListØ00__func__Ø000))), unsafe.Pointer(str(99603)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _n = _pList.X0
+ if (_pParse.X11) == 0 {
+ {
+ p := &_flags
+ *p = uint8(int32(*p) & i32(-3))
+ sink2 = *p
+ }
}
-_4:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNC)) + uintptr(28 /* X7 */)))
- *p = uint16(int32(*p) | int32(_savedHasAgg))
- sink12 = *p
+ *func() *int32 {
+ _pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
+ return &_i
+ }() = i32(0)
+_9:
+ if _i >= _n {
+ goto _12
}
- return bool2int(((_pExpr.X2) & uint32(i32(8))) != uint32(i32(0)))
-}
-
-func _sqlite3ResolveExprListNames(tls *crt.TLS, _pNC *XNameContext, _pList *XExprList) (r0 int32) { // sqlite3.c:90821:1
- var _i int32 // sqlite3.c:90825:7
- _ = _i
- if _pList == nil {
- goto _0
+ _1_pExpr = (*XExpr)(_pItem.X0)
+ if (int32(_flags)&i32(4)) == i32(0) || store1(&_j, int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))).X0)) <= i32(0) {
+ goto _14
}
-
- _i = i32(0)
-_1:
- if _i >= (_pList.X0) {
- goto _4
+ if (int32(_flags) & i32(8)) != 0 {
+ _i -= 1
+ _n -= 1
+ goto _16
}
-
- if _sqlite3ResolveExprNames(tls, _pNC, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0)) == 0 {
- goto _5
+ _sqlite3VdbeAddOp2(tls, _v, int32(_copyOp), (_j+_srcReg)-i32(1), _target+_i)
+_16:
+ goto _17
+_14:
+ if ((int32(_flags) & i32(2)) != i32(0)) && _sqlite3ExprIsConstant(tls, _1_pExpr) != 0 {
+ _sqlite3ExprCodeAtInit(tls, _pParse, _1_pExpr, _target+_i)
+ goto _20
}
- return i32(2)
+ _6_inReg = _sqlite3ExprCodeTarget(tls, _pParse, _1_pExpr, _target+_i)
+ if _6_inReg == (_target + _i) {
+ goto _21
+ }
+ if (((int32(_copyOp) == i32(64)) && (int32(store40(&_7_pOp, _sqlite3VdbeGetOp(tls, _v, i32(-1))).X0) == i32(64))) && ((((_7_pOp.X3) + (_7_pOp.X5)) + i32(1)) == _6_inReg)) && ((((_7_pOp.X4) + (_7_pOp.X5)) + i32(1)) == (_target + _i)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_7_pOp)) + uintptr(12 /* X5 */))) += 1
+ goto _26
+ }
+ _sqlite3VdbeAddOp2(tls, _v, int32(_copyOp), _6_inReg, _target+_i)
+_26:
+_21:
+_20:
+_17:
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
+ goto _9
+_12:
+ return _n
+}
-_5:
- _i += 1
- goto _1
+var _sqlite3ExprCodeExprListØ00__func__Ø000 [24]int8
-_4:
-_0:
- r0 = i32(0)
- return
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeExprListØ00__func__Ø000[0], str(99620), 24)
}
-func _resolveOrderGroupBy(tls *crt.TLS, _pNC *XNameContext, _pSelect *XSelect, _pOrderBy *XExprList, _zType *int8) (r0 int32) { // sqlite3.c:90450:1
- var _i int32 // sqlite3.c:90456:7
- _ = _i
- var _j int32 // sqlite3.c:90456:10
- _ = _j
- var _iCol int32 // sqlite3.c:90457:7
- _ = _iCol
- var _pItem *TExprList_item // sqlite3.c:90458:24
- _ = _pItem
- var _pParse *XParse // sqlite3.c:90459:9
- _ = _pParse
- var _nResult int32 // sqlite3.c:90460:7
- _ = _nResult
- var _1_pE *XExpr // sqlite3.c:90466:10
- _ = _1_pE
- var _1_pE2 *XExpr // sqlite3.c:90467:10
- _ = _1_pE2
- if _pOrderBy != nil {
- goto _0
- }
- return i32(0)
+// Walk an expression tree. Return non-zero if the expression is constant
+// and 0 if it involves variables or function calls.
+//
+// For the purposes of this function, a double-quoted string (ex: "abc")
+// is considered a variable but a single-quoted string (ex: 'abc') is
+// a constant.
+func _sqlite3ExprIsConstant(tls *crt.TLS, _p *XExpr) (r0 int32) {
+ return _exprIsConst(tls, _p, i32(1), i32(0))
+}
-_0:
- _nResult = (*XExprList)(_pSelect.X0).X0
- _pParse = (*XParse)(_pNC.X0)
- *func() **TExprList_item { _i = i32(0); return &_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
-_1:
- if _i >= (_pOrderBy.X0) {
- goto _4
- }
+func _exprIsConst(tls *crt.TLS, _p *XExpr, _initFlag int32, _iCur int32) (r0 int32) {
+ var _w XWalker
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */))) = uint8(_initFlag)
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _exprNodeIsConstant
+ *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _selectNodeIsConstant
+ *(*int32)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))) = _iCur
+ _sqlite3WalkExpr(tls, &_w, _p)
+ return int32(_w.X5)
- _1_pE = (*XExpr)(_pItem.X0)
- _1_pE2 = _sqlite3ExprSkipCollate(tls, _1_pE)
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zType)) + 1*uintptr(i32(0))))) == i32(71) {
- goto _5
+ _ = _w
+ panic(0)
+}
+
+// These routines are Walker callbacks used to check expressions to
+// see if they are "constant" for some definition of constant. The
+// Walker.eCode value determines the type of "constant" we are looking
+// for.
+//
+// These callback routines are used to implement the following:
+//
+// sqlite3ExprIsConstant() pWalker->eCode==1
+// sqlite3ExprIsConstantNotJoin() pWalker->eCode==2
+// sqlite3ExprIsTableConstant() pWalker->eCode==3
+// sqlite3ExprIsConstantOrFunction() pWalker->eCode==4 or 5
+//
+// In all cases, the callbacks set Walker.eCode=0 and abort if the expression
+// is found to not be a constant.
+//
+// The sqlite3ExprIsConstantOrFunction() is used for evaluating expressions
+// in a CREATE TABLE statement. The Walker.eCode value is 5 when parsing
+// an existing schema and 4 when processing a new statement. A bound
+// parameter raises an error for new statements, but is silently converted
+// to NULL for existing schemas. This allows sqlite_master tables that
+// contain a bound parameter because they were generated by older versions
+// of SQLite to be parsed by newer versions of SQLite without raising a
+// malformed schema error.
+func _exprNodeIsConstant(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ if (int32(_pWalker.X5) == i32(2)) && (((_pExpr.X2) & uint32(i32(1))) != uint32(i32(0))) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ return i32(2)
}
-
- _iCol = _resolveAsName(tls, _pParse, (*XExprList)(_pSelect.X0), _1_pE2)
- if _iCol <= i32(0) {
+ switch int32(_pExpr.X0) {
+ case i32(27):
+ goto _4
+ case i32(135):
+ goto _9
+ case i32(151):
+ goto _3
+ case i32(152):
+ goto _5
+ case i32(153):
goto _6
- }
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_iCol)
- goto _2
-
-_6:
-_5:
- if _sqlite3ExprIsInteger(tls, _1_pE2, &_iCol) == 0 {
+ case i32(154):
goto _7
- }
-
- if _iCol >= i32(1) && _iCol <= i32(65535) {
- goto _9
- }
-
- _resolveOutOfRangeError(tls, _pParse, _zType, _i+i32(1), _nResult)
- return i32(1)
-
-_9:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_iCol)
- goto _2
-
-_7:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
- if _sqlite3ResolveExprNames(tls, _pNC, _1_pE) == 0 {
+ case i32(160):
+ goto _8
+ default:
goto _10
}
- return i32(1)
-
-_10:
- _j = i32(0)
-_11:
- if _j >= ((*XExprList)(_pSelect.X0).X0) {
- goto _14
- }
- if _sqlite3ExprCompare(tls, _1_pE, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSelect.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), i32(-1)) != i32(0) {
- goto _15
+_3:
+ if (int32(_pWalker.X5) >= i32(4)) || (((_pExpr.X2) & uint32(i32(524288))) != uint32(i32(0))) {
+ return i32(0)
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_j + i32(1))
-_15:
- _j += 1
- goto _11
-
-_14:
-_2:
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
- goto _1
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ return i32(2)
_4:
- return _sqlite3ResolveOrderGroupBy(tls, _pParse, _pSelect, _pOrderBy, _zType)
-}
-
-func _resolveAsName(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _pE *XExpr) (r0 int32) { // sqlite3.c:90189:1
- var _i int32 // sqlite3.c:90194:7
- _ = _i
- var _1_zCol *int8 // sqlite3.c:90199:10
- _ = _1_zCol
- var _2_zAs *int8 // sqlite3.c:90201:12
- _ = _2_zAs
-
- if int32(_pE.X0) != i32(27) {
- goto _0
+_5:
+_6:
+_7:
+ if (int32(_pWalker.X5) == i32(3)) && ((_pExpr.X8) == (*(*int32)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))) {
+ return i32(0)
}
+_8:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ return i32(2)
- _1_zCol = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pE)) + uintptr(8 /* X3 */)))))
- _i = i32(0)
-_1:
- if _i >= (_pEList.X0) {
- goto _4
+_9:
+ if int32(_pWalker.X5) == i32(5) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
+ goto _17
}
-
- _2_zAs = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1
- if _2_zAs == nil || _sqlite3StrICmp(tls, _2_zAs, _1_zCol) != i32(0) {
- goto _6
+ if int32(_pWalker.X5) == i32(4) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ return i32(2)
}
- return _i + i32(1)
-
-_6:
- _i += 1
- goto _1
-
-_4:
-_0:
- r0 = i32(0)
- return
+_17:
+_10:
+ return i32(0)
}
-func _resolveOutOfRangeError(tls *crt.TLS, _pParse *XParse, _zType *int8, _i int32, _mx int32) { // sqlite3.c:90275:1
- _sqlite3ErrorMsg(tls, _pParse, str(101376), _i, unsafe.Pointer(_zType), _mx)
+func _selectNodeIsConstant(tls *crt.TLS, _pWalker *XWalker, _NotUsed *XSelect) (r0 int32) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ return i32(2)
}
-func _sqlite3ExprCompare(tls *crt.TLS, _pA *XExpr, _pB *XExpr, _iTab int32) (r0 int32) { // sqlite3.c:95578:1
- var _combinedFlags uint32 // sqlite3.c:95579:7
- _ = _combinedFlags
- if _pA != nil && _pB != nil {
- goto _1
- }
- return func() int32 {
- if _pB == _pA {
- return i32(0)
+// Factor out the code of the given expression to initialization time.
+//
+// If regDest>=0 then the result is always stored in that register and the
+// result is not reusable. If regDest<0 then this routine is free to
+// store the value whereever it wants. The register where the expression
+// is stored is returned. When regDest<0, two identical expressions will
+// code to the same register.
+func _sqlite3ExprCodeAtInit(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _regDest int32) (r0 int32) {
+ var _1_i int32
+ var _p *XExprList
+ var _1_pItem, _4_pItem *TExprList_item
+ func() {
+ if (_pParse.X11) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeAtInitØ00__func__Ø000))), unsafe.Pointer(str(99644)))
+ crt.X__builtin_abort(tls)
}
- return i32(2)
}()
-
-_1:
- _combinedFlags = (_pA.X2) | (_pB.X2)
- if (_combinedFlags & uint32(i32(1024))) == 0 {
- goto _4
- }
-
- if (((_pA.X2)&(_pB.X2))&uint32(i32(1024))) == uint32(i32(0)) || (*(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */)))))) != (*(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X3 */)))))) {
- goto _6
+ _p = (*XExprList)(_pParse.X27)
+ if _regDest >= i32(0) || _p == nil {
+ goto _3
}
- return i32(0)
-
-_6:
- return i32(2)
-
+ *func() *int32 {
+ _1_pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */)))))
+ return &_1_i
+ }() = _p.X0
_4:
- if int32(_pA.X0) == int32(_pB.X0) {
+ if _1_i <= i32(0) {
goto _7
}
-
- if int32(_pA.X0) != i32(94) || _sqlite3ExprCompare(tls, (*XExpr)(_pA.X4), _pB, _iTab) >= i32(2) {
- goto _9
- }
- return i32(1)
-
-_9:
- if int32(_pB.X0) != i32(94) || _sqlite3ExprCompare(tls, _pA, (*XExpr)(_pB.X4), _iTab) >= i32(2) {
- goto _11
+ if (((uint32((_1_pItem.X4)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0) && (_sqlite3ExprCompare(tls, (*XExpr)(_1_pItem.X0), _pExpr, i32(-1)) == i32(0)) {
+ /* X5 */
+ return *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(16)))))
}
- return i32(1)
-
-_11:
- return i32(2)
-
+ *func() *int32 { *(*uintptr)(unsafe.Pointer(&_1_pItem)) += uintptr(20); return &_1_i }() -= 1
+ goto _4
_7:
- if int32(_pA.X0) == i32(152) || int32(_pA.X0) == i32(154) || (*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */)))))) == nil {
- goto _14
+_3:
+ _pExpr = _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _pExpr, i32(0))
+ _p = _sqlite3ExprListAppend(tls, _pParse, _p, _pExpr)
+ if _p == nil {
+ goto _10
}
-
- if int32(_pA.X0) != i32(151) {
- goto _15
+ _4_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 20*uintptr((_p.X0)-i32(1))))
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(13 /* X4 */))), int8(bool2int(_regDest < i32(0))), 4, 2)
+ if _regDest < i32(0) {
+ _regDest = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
}
+ *(*int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem)) + uintptr(16 /* X5 */))))) = _regDest
+_10:
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(80 /* X27 */))))) = _p
+ return _regDest
+}
- if _sqlite3StrICmp(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */))))), *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X3 */)))))) == i32(0) {
- goto _16
- }
- return i32(2)
+var _sqlite3ExprCodeAtInitØ00__func__Ø000 [22]int8
-_16:
- goto _17
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeAtInitØ00__func__Ø000[0], str(99666), 22)
+}
-_15:
- if crt.Xstrcmp(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(8 /* X3 */))))), *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(8 /* X3 */)))))) == i32(0) {
- goto _18
+// Change the opcode at addr into OP_Noop
+func _sqlite3VdbeChangeToNoop(tls *crt.TLS, _p *TVdbe, _addr int32) (r0 int32) {
+ var _pOp *XVdbeOp
+ if ((*Xsqlite3)(_p.X0).X17) != 0 {
+ return i32(0)
}
- return func() int32 {
- if int32(_pA.X0) == i32(94) {
- return i32(1)
+ func() {
+ if _addr < i32(0) || _addr >= (_p.X27) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeToNoopØ00__func__Ø000))), unsafe.Pointer(str(99688)))
+ crt.X__builtin_abort(tls)
}
- return i32(2)
}()
+ _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_addr)))
+ _freeP4(tls, (*Xsqlite3)(_p.X0), int32(_pOp.X1), *(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(0))
+ *(**int8)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = nil
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(164))
+ return i32(1)
+}
-_18:
-_17:
-_14:
- if ((_pA.X2) & uint32(i32(16))) == ((_pB.X2) & uint32(i32(16))) {
- goto _21
- }
- return i32(2)
-
-_21:
- if func() int32 {
- if (_combinedFlags & uint32(i32(16384))) == uint32(i32(0)) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95607), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCompareØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _24
- }
-
- if (_combinedFlags & uint32(i32(2048))) == 0 {
- goto _25
- }
- return i32(2)
-
-_25:
- if _sqlite3ExprCompare(tls, (*XExpr)(_pA.X4), (*XExpr)(_pB.X4), _iTab) == 0 {
- goto _26
- }
- return i32(2)
-
-_26:
- if _sqlite3ExprCompare(tls, (*XExpr)(_pA.X5), (*XExpr)(_pB.X5), _iTab) == 0 {
- goto _27
- }
- return i32(2)
+var _sqlite3VdbeChangeToNoopØ00__func__Ø000 [24]int8
-_27:
- if _sqlite3ExprListCompare(tls, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(20 /* X6 */)))))), (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB)) + uintptr(20 /* X6 */)))))), _iTab) == 0 {
- goto _28
- }
- return i32(2)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeChangeToNoopØ00__func__Ø000[0], str(99711), 24)
+}
-_28:
- if func() int32 {
- if (_combinedFlags & uint32(i32(8192))) == uint32(i32(0)) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95612), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCompareØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+// Return the address of the next instruction to be inserted.
+func _sqlite3VdbeCurrentAddr(tls *crt.TLS, _p *TVdbe) (r0 int32) {
+ func() {
+ if (_p.X5) != uint32(i32(381479589)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72061), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCurrentAddrØ00__func__Ø000))), unsafe.Pointer(str(37642)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 || int32(_pA.X0) == i32(97) {
- goto _32
- }
-
- if int32(_pA.X9) == int32(_pB.X9) {
- goto _33
- }
- return i32(2)
-
-_33:
- if (_pA.X8) == (_pB.X8) || (_pA.X8) == _iTab && func() int32 {
- if (_pB.X8) >= i32(0) {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95615), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCompareØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
}
- return i32(0)
- }() == 0 {
- goto _38
- }
- return i32(2)
-
-_38:
-_32:
-_24:
- r0 = i32(0)
- return
+ }()
+ return _p.X27
}
-var _sqlite3ExprCompareØ00__func__Ø000 [19]int8 // -
+var _sqlite3VdbeCurrentAddrØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCompareØ00__func__Ø000[0], str(101432), 19)
+ crt.Xstrncpy(nil, &_sqlite3VdbeCurrentAddrØ00__func__Ø000[0], str(99735), 23)
}
-func _sqlite3ExprListCompare(tls *crt.TLS, _pA *XExprList, _pB *XExprList, _iTab int32) (r0 int32) { // sqlite3.c:95636:1
- var _i int32 // sqlite3.c:95637:7
- _ = _i
- var _1_pExprA *XExpr // sqlite3.c:95642:10
- _ = _1_pExprA
- var _1_pExprB *XExpr // sqlite3.c:95643:10
- _ = _1_pExprB
- if _pA != nil || _pB != nil {
- goto _1
- }
- return i32(0)
+// Add code that will check to make sure the N registers starting at iMem
+// form a distinct entry. iTab is a sorting index that holds previously
+// seen combinations of the N values. A new entry is made in iTab
+// if the current N values are new.
+//
+// A jump to addrRepeat is made and the N+1 values are popped from the
+// stack if the top N elements are not distinct.
+func _codeDistinct(tls *crt.TLS, _pParse *XParse, _iTab int32, _addrRepeat int32, _N int32, _iMem int32) {
+ var _r1 int32
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
+ _r1 = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iTab, _addrRepeat, _iMem, _N)
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _iMem, _N, _r1)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iTab, _r1, _iMem, _N)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
+ _sqlite3ReleaseTempReg(tls, _pParse, _r1)
+}
-_1:
- if _pA != nil && _pB != nil {
- goto _3
+// Allocate a single new register for use to hold some intermediate result.
+func _sqlite3GetTempReg(tls *crt.TLS, _pParse *XParse) (r0 int32) {
+ if int32(_pParse.X7) == i32(0) {
+ /* X18 */
+ return preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44))), 1)
}
- return i32(1)
+ /* X49 */ /* X7 */
+ return *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360))))) + 4*uintptr(preInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19))), byte(255)))))
+}
-_3:
- if (_pA.X0) == (_pB.X0) {
- goto _4
+// Deallocate a register, making available for reuse for some other
+// purpose.
+//
+// If a register is currently being used by the column cache, then
+// the deallocation is deferred until the column cache line that uses
+// the register becomes stale.
+func _sqlite3ReleaseTempReg(tls *crt.TLS, _pParse *XParse, _iReg int32) {
+ var _1_i int32
+ var _1_p *TyColCache
+ if _iReg == 0 || int32(_pParse.X7) >= i32(8) {
+ goto _1
}
- return i32(1)
-
-_4:
- _i = i32(0)
-_5:
- if _i >= (_pA.X0) {
- goto _8
+ *func() **TyColCache { _1_i = i32(0); return &_1_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
+_2:
+ if _1_i >= int32(_pParse.X13) {
+ goto _5
}
-
- _1_pExprA = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- _1_pExprB = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- if int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3) == int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pB))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3) {
- goto _9
+ if (_1_p.X4) == _iReg {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(6 /* X2 */))) = uint8(i32(1))
+ return
}
- return i32(1)
-
-_9:
- if _sqlite3ExprCompare(tls, _1_pExprA, _1_pExprB, _iTab) == 0 {
- goto _10
- }
- return i32(1)
-
-_10:
- _i += 1
- goto _5
-
-_8:
- return i32(0)
+ *(*uintptr)(unsafe.Pointer(func() **TyColCache { _1_i += 1; return &_1_p }())) += uintptr(20)
+ goto _2
+_5:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360 /* X49 */))))) + 4*uintptr(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19 /* X7 */))), uint8(1))))) = _iReg
+_1:
}
-func _sqlite3ResolveOrderGroupBy(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect, _pOrderBy *XExprList, _zType *int8) (r0 int32) { // sqlite3.c:90399:1
- var _i int32 // sqlite3.c:90405:7
- _ = _i
- var _db *Xsqlite3 // sqlite3.c:90406:11
- _ = _db
- var _pEList *XExprList // sqlite3.c:90407:12
- _ = _pEList
- var _pItem *TExprList_item // sqlite3.c:90408:24
- _ = _pItem
- _db = (*Xsqlite3)(_pParse.X0)
- if _pOrderBy != nil && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- goto _1
- }
- return i32(0)
-
-_1:
- if (_pOrderBy.X0) <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))) {
- goto _2
+// Allocate or deallocate a block of nReg consecutive registers.
+func _sqlite3GetTempRange(tls *crt.TLS, _pParse *XParse, _nReg int32) (r0 int32) {
+ var _i, _n int32
+ if _nReg == i32(1) {
+ return _sqlite3GetTempReg(tls, _pParse)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(101452), unsafe.Pointer(_zType))
- return i32(1)
-
-_2:
- _pEList = (*XExprList)(_pSelect.X0)
- func() {
- if _pEList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90418), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResolveOrderGroupByØ00__func__Ø000))), unsafe.Pointer(str(46300)))
- crt.X__builtin_abort(tls)
+ _i = _pParse.X15
+ _n = _pParse.X14
+ if _nReg <= _n {
+ func() {
+ if _usedAsColumnCache(tls, _pParse, _i, (_i+_n)-i32(1)) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(96056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetTempRangeØ00__func__Ø000))), unsafe.Pointer(str(99758)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(32 /* X15 */)))
+ *p = (*p) + _nReg
+ sink1 = *p
}
- }()
- *func() **TExprList_item { _i = i32(0); return &_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
-_5:
- if _i >= (_pOrderBy.X0) {
- goto _8
- }
-
- if ((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(16 /* X5 */))))).X0) == 0 {
- goto _9
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(28 /* X14 */)))
+ *p = (*p) - _nReg
+ sink1 = *p
+ }
+ goto _4
}
-
- if int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))).X0) <= (_pEList.X0) {
- goto _10
+ _i = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nReg
+ sink1 = *p
}
-
- _resolveOutOfRangeError(tls, _pParse, _zType, _i+i32(1), _pEList.X0)
- return i32(1)
-
-_10:
- _resolveAlias(tls, _pParse, _pEList, int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(16 /* X5 */))))).X0)-i32(1), (*XExpr)(_pItem.X0), _zType, i32(0))
-_9:
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
- goto _5
-
-_8:
- return i32(0)
-}
-
-var _sqlite3ResolveOrderGroupByØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ResolveOrderGroupByØ00__func__Ø000[0], str(101484), 27)
+_4:
+ return _i
}
-func _sqlite3SelectWrongNumTermsError(tls *crt.TLS, _pParse *XParse, _p *XSelect) { // sqlite3.c:119118:1
- if ((_p.X3) & uint32(i32(512))) == 0 {
- goto _0
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(101512))
- goto _1
-
+// Return true if any register in the range iFrom..iTo (inclusive)
+// is used as part of the column cache.
+//
+// This routine is used within assert() and testcase() macros only
+// and does not appear in a normal build.
+func _usedAsColumnCache(tls *crt.TLS, _pParse *XParse, _iFrom int32, _iTo int32) (r0 int32) {
+ var _i, _1_r int32
+ var _p *TyColCache
+ *func() **TyColCache { _i = i32(0); return &_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
_0:
- _sqlite3ErrorMsg(tls, _pParse, str(101560), unsafe.Pointer(_selectOpName(tls, int32(_p.X1))))
-_1:
-}
-
-func _selectOpName(tls *crt.TLS, _id int32) (r0 *int8) { // sqlite3.c:117647:1
- var _z *int8 // sqlite3.c:117648:8
- _ = _z
- switch _id {
- case i32(116):
- goto _1
- case i32(117):
+ if _i >= int32(_pParse.X13) {
goto _3
- case i32(118):
- goto _2
- default:
- goto _4
}
-
-_1:
- _z = str(48472)
- goto _5
-
-_2:
- _z = str(25616)
- goto _5
-
-_3:
- _z = str(25608)
- goto _5
-
-_4:
- _z = str(25596)
- goto _5
-
-_5:
- return _z
-}
-
-func _resolveCompoundOrderBy(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) (r0 int32) { // sqlite3.c:90301:1
- var _i int32 // sqlite3.c:90305:7
- _ = _i
- var _pOrderBy *XExprList // sqlite3.c:90306:12
- _ = _pOrderBy
- var _pEList *XExprList // sqlite3.c:90307:12
- _ = _pEList
- var _db *Xsqlite3 // sqlite3.c:90308:11
- _ = _db
- var _moreToDo int32 // sqlite3.c:90309:7
- _ = _moreToDo
- var _4_pItem *TExprList_item // sqlite3.c:90329:26
- _ = _4_pItem
- var _5_iCol int32 // sqlite3.c:90334:11
- _ = _5_iCol
- var _5_pE *XExpr // sqlite3.c:90335:12
- _ = _5_pE
- var _5_pDup *XExpr // sqlite3.c:90335:17
- _ = _5_pDup
- var _11_pNew *XExpr // sqlite3.c:90357:14
- _ = _11_pNew
- var _13_pParent *XExpr // sqlite3.c:90364:16
- _ = _13_pParent
- _moreToDo = i32(1)
- _pOrderBy = (*XExprList)(_pSelect.X12)
- if _pOrderBy != nil {
- goto _0
+ _1_r = _p.X4
+ if (_1_r >= _iFrom) && (_1_r <= _iTo) {
+ return i32(1)
}
+ *(*uintptr)(unsafe.Pointer(func() **TyColCache { _i += 1; return &_p }())) += uintptr(20)
+ goto _0
+_3:
return i32(0)
+}
-_0:
- _db = (*Xsqlite3)(_pParse.X0)
- if (_pOrderBy.X0) <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))) {
- goto _1
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(101644))
- return i32(1)
-
-_1:
- _i = i32(0)
-_2:
- if _i >= (_pOrderBy.X0) {
- goto _5
- }
+var _sqlite3GetTempRangeØ00__func__Ø000 [20]int8
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(13 /* X4 */))), int8(i32(0)), 1, 0)
- _i += 1
- goto _2
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3GetTempRangeØ00__func__Ø000[0], str(99795), 20)
+}
-_5:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelect)) + uintptr(64 /* X14 */))))) = nil
-_6:
- if (*XSelect)(_pSelect.X13) == nil {
- goto _7
+// Generate code that will push the record in registers regData
+// through regData+nData-1 onto the sorter.
+func _pushOntoSorter(tls *crt.TLS, _pParse *XParse, _pSort *XSortCtx, _pSelect *XSelect, _regData int32, _regOrigData int32, _nData int32, _nPrefixReg int32) {
+ var _bSeq, _nExpr, _nBase, _regBase, _regRecord, _nOBSat, _op, _iLimit, _5_regPrevKey, _5_addrFirst, _5_addrJmp, _5_nKey, _11_addr, _11_r1, _13_iBrk int32
+ var _v *TVdbe
+ var _5_pKI *XKeyInfo
+ var _5_pOp *XVdbeOp
+ _v = (*TVdbe)(_pParse.X2)
+ _bSeq = bool2int((int32(_pSort.X7) & i32(1)) == i32(0))
+ _nExpr = (*XExprList)(_pSort.X0).X0
+ _nBase = (_nExpr + _bSeq) + _nData
+ _regRecord = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _nOBSat = _pSort.X1
+ func() {
+ if _bSeq != i32(0) && _bSeq != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117043), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(99815)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _nData != i32(1) && _regData != _regOrigData && _regOrigData != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117044), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(99834)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _nPrefixReg != 0 {
+ func() {
+ if _nPrefixReg != (_nExpr + _bSeq) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117046), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(99885)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _regBase = (_regData - _nExpr) - _bSeq
+ goto _10
}
-
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pSelect.X13) + uintptr(64 /* X14 */))))) = _pSelect
- _pSelect = (*XSelect)(_pSelect.X13)
- goto _6
-
-_7:
-_8:
- if _pSelect == nil || _moreToDo == 0 {
- goto _9
+ _regBase = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nBase
+ sink1 = *p
}
-
- _moreToDo = i32(0)
- _pEList = (*XExprList)(_pSelect.X0)
+_10:
func() {
- if _pEList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90332), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(46300)))
+ if (_pSelect.X5) != i32(0) && (_pSelect.X4) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117052), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(99908)))
crt.X__builtin_abort(tls)
}
}()
- *func() **TExprList_item { _i = i32(0); return &_4_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
-_13:
- if _i >= (_pOrderBy.X0) {
- goto _16
- }
-
- _5_iCol = i32(-1)
- if ((uint32(_4_pItem.X4) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _17
+ _iLimit = func() int32 {
+ if (_pSelect.X5) != 0 {
+ return ((_pSelect.X5) + i32(1))
+ }
+ return (_pSelect.X4)
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSort)) + uintptr(24 /* X6 */))) = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3ExprCodeExprList(tls, _pParse, (*XExprList)(_pSort.X0), _regBase, _regOrigData, uint8(i32(1)|func() int32 {
+ if _regOrigData != 0 {
+ return i32(4)
+ }
+ return i32(0)
+ }()))
+ if _bSeq != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(116), _pSort.X2, _regBase+_nExpr)
}
-
- goto _14
-
-_17:
- _5_pE = _sqlite3ExprSkipCollate(tls, (*XExpr)(_4_pItem.X0))
- if _sqlite3ExprIsInteger(tls, _5_pE, &_5_iCol) == 0 {
- goto _18
+ if (_nPrefixReg == i32(0)) && (_nData > i32(0)) {
+ _sqlite3ExprCodeMove(tls, _pParse, _regData, (_regBase+_nExpr)+_bSeq, _nData)
}
-
- if _5_iCol > i32(0) && _5_iCol <= (_pEList.X0) {
- goto _20
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regBase+_nOBSat, _nBase-_nOBSat, _regRecord)
+ if _nOBSat <= i32(0) {
+ goto _21
}
-
- _resolveOutOfRangeError(tls, _pParse, str(25684), _i+i32(1), _pEList.X0)
- return i32(1)
-
-_20:
- goto _21
-
-_18:
- _5_iCol = _resolveAsName(tls, _pParse, _pEList, _5_pE)
- if _5_iCol != i32(0) {
- goto _22
+ _5_regPrevKey = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + (_pSort.X1)
+ sink1 = *p
}
-
- _5_pDup = _sqlite3ExprDup(tls, _db, _5_pE, i32(0))
- if (_db.X17) != 0 {
+ _5_nKey = (_nExpr - (_pSort.X1)) + _bSeq
+ if _bSeq != 0 {
+ _5_addrFirst = _sqlite3VdbeAddOp1(tls, _v, i32(22), _regBase+_nExpr)
goto _23
}
-
- func() {
- if _5_pDup == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90348), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(101680)))
- crt.X__builtin_abort(tls)
- }
- }()
- _5_iCol = _resolveOrderByTermToExprList(tls, _pParse, _pSelect, _5_pDup)
+ _5_addrFirst = _sqlite3VdbeAddOp1(tls, _v, i32(112), _pSort.X2)
_23:
- _sqlite3ExprDelete(tls, _db, _5_pDup)
-_22:
-_21:
- if _5_iCol <= i32(0) {
- goto _26
+ _sqlite3VdbeAddOp3(tls, _v, i32(98), _5_regPrevKey, _regBase, _pSort.X1)
+ _5_pOp = _sqlite3VdbeGetOp(tls, _v, _pSort.X5)
+ if ((*Xsqlite3)(_pParse.X0).X17) != 0 {
+ return
}
-
- _11_pNew = _sqlite3Expr(tls, _db, i32(134), nil)
- if _11_pNew != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pOp)) + uintptr(8 /* X4 */))) = _5_nKey + _nData
+ _5_pKI = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pOp)) + uintptr(16 /* X6 */))))))
+ crt.Xmemset(tls, (unsafe.Pointer)(_5_pKI.X5), i32(0), uint32(_5_pKI.X2))
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_5_pKI)), i32(-5))
+ *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pOp)) + uintptr(16 /* X6 */))))))) = _keyInfoFromExprList(tls, _pParse, (*XExprList)(_pSort.X0), _nOBSat, int32(_5_pKI.X3)-i32(1))
+ _5_addrJmp = _sqlite3VdbeCurrentAddr(tls, _v)
+ _sqlite3VdbeAddOp3(tls, _v, i32(18), _5_addrJmp+i32(1), i32(0), _5_addrJmp+i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSort)) + uintptr(16 /* X4 */))) = _sqlite3VdbeMakeLabel(tls, _v)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSort)) + uintptr(12 /* X3 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(14), _pSort.X3, _pSort.X4)
+ _sqlite3VdbeAddOp1(tls, _v, i32(135), _pSort.X2)
+ if _iLimit != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(22), _iLimit, _pSort.X6)
+ }
+ _sqlite3VdbeJumpHere(tls, _v, _5_addrFirst)
+ _sqlite3ExprCodeMove(tls, _pParse, _regBase, _5_regPrevKey, _pSort.X1)
+ _sqlite3VdbeJumpHere(tls, _v, _5_addrJmp)
+_21:
+ if (int32(_pSort.X7) & i32(1)) != 0 {
+ _op = i32(127)
goto _27
}
- return i32(1)
-
+ _op = i32(128)
_27:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pNew)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1024))
- sink5 = *p
- }
- *(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pNew)) + uintptr(8 /* X3 */))))) = _5_iCol
- if (*XExpr)(_4_pItem.X0) != _5_pE {
+ _sqlite3VdbeAddOp4Int(tls, _v, _op, _pSort.X2, _regRecord, _regBase+_nOBSat, _nBase-_nOBSat)
+ if _iLimit == 0 {
goto _28
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem)) + uintptr(0 /* X0 */))))) = _11_pNew
- goto _29
-
-_28:
- _13_pParent = (*XExpr)(_4_pItem.X0)
- func() {
- if int32(_13_pParent.X0) != i32(94) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90365), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(101688)))
- crt.X__builtin_abort(tls)
- }
- }()
-_32:
- if int32((*XExpr)(_13_pParent.X4).X0) != i32(94) {
- goto _33
+ _11_r1 = i32(0)
+ _11_addr = _sqlite3VdbeAddOp1(tls, _v, i32(47), _iLimit)
+ _sqlite3VdbeAddOp1(tls, _v, i32(33), _pSort.X2)
+ if (_pSort.X8) != 0 {
+ _11_r1 = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _pSort.X2, _nExpr, _11_r1)
+ _sqlite3VdbeComment(tls, _v, str(61696))
+ }
+ _sqlite3VdbeAddOp1(tls, _v, i32(120), _pSort.X2)
+ if (_pSort.X8) != 0 {
+ _13_iBrk = _sqlite3VdbeCurrentAddr(tls, _v) + i32(2)
+ _sqlite3VdbeAddOp3(tls, _v, i32(78), _regBase+_nExpr, _13_iBrk, _11_r1)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(128)))
}
+ _sqlite3VdbeJumpHere(tls, _v, _11_addr)
+_28:
+}
- _13_pParent = (*XExpr)(_13_pParent.X4)
- goto _32
+var _pushOntoSorterØ00__func__Ø000 [15]int8
-_33:
+func init() {
+ crt.Xstrncpy(nil, &_pushOntoSorterØ00__func__Ø000[0], str(99950), 15)
+}
+
+// Generate code to move content from registers iFrom...iFrom+nReg-1
+// over to iTo..iTo+nReg-1. Keep the column cache up-to-date.
+func _sqlite3ExprCodeMove(tls *crt.TLS, _pParse *XParse, _iFrom int32, _iTo int32, _nReg int32) {
func() {
- if (*XExpr)(_13_pParent.X4) != _5_pE {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90367), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveCompoundOrderByØ00__func__Ø000))), unsafe.Pointer(str(101712)))
+ if _iFrom < (_iTo+_nReg) && (_iFrom+_nReg) > _iTo {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94255), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeMoveØ00__func__Ø000))), unsafe.Pointer(str(99965)))
crt.X__builtin_abort(tls)
}
}()
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pParent)) + uintptr(12 /* X4 */))))) = _11_pNew
-_29:
- _sqlite3ExprDelete(tls, _db, _5_pE)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_5_iCol)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(13 /* X4 */))), int8(i32(1)), 1, 0)
- goto _36
-
-_26:
- _moreToDo = i32(1)
-_36:
-_14:
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_4_pItem }())) += uintptr(20)
- goto _13
-
-_16:
- _pSelect = (*XSelect)(_pSelect.X14)
- goto _8
-
-_9:
- _i = i32(0)
-_37:
- if _i >= (_pOrderBy.X0) {
- goto _40
- }
-
- if int32((uint32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X4)<>uint(i32(31))) != i32(0) {
- goto _41
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(101732), _i+i32(1))
- return i32(1)
-
-_41:
- _i += 1
- goto _37
-
-_40:
- return i32(0)
+ _sqlite3VdbeAddOp3(tls, (*TVdbe)(_pParse.X2), i32(63), _iFrom, _iTo, _nReg)
+ _sqlite3ExprCacheRemove(tls, _pParse, _iFrom, _nReg)
}
-var _resolveCompoundOrderByØ00__func__Ø000 [23]int8 // -
+var _sqlite3ExprCodeMoveØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_resolveCompoundOrderByØ00__func__Ø000[0], str(101796), 23)
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeMoveØ00__func__Ø000[0], str(100000), 20)
}
-func _resolveOrderByTermToExprList(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect, _pE *XExpr) (r0 int32) { // sqlite3.c:90228:1
- var _i int32 // sqlite3.c:90233:7
- _ = _i
- var _pEList *XExprList // sqlite3.c:90234:12
- _ = _pEList
- var _nc XNameContext // sqlite3.c:90235:15
- _ = _nc
- var _db *Xsqlite3 // sqlite3.c:90236:11
- _ = _db
- var _rc int32 // sqlite3.c:90237:7
- _ = _rc
- var _savedSuppErr uint8 // sqlite3.c:90238:6
- _ = _savedSuppErr
+// Given an expression list, generate a KeyInfo structure that records
+// the collating sequence for each expression in that expression list.
+//
+// If the ExprList is an ORDER BY or GROUP BY clause then the resulting
+// KeyInfo structure is appropriate for initializing a virtual index to
+// implement that clause. If the ExprList is the result set of a SELECT
+// then the KeyInfo structure is appropriate for initializing a virtual
+// index to implement a DISTINCT test.
+//
+// Space to hold the KeyInfo structure is obtained from malloc. The calling
+// function is responsible for seeing that this structure is eventually
+// freed.
+func _keyInfoFromExprList(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _iStart int32, _nExtra int32) (r0 *XKeyInfo) {
+ var _nExpr, _i int32
+ var _db *Xsqlite3
+ var _pItem *TExprList_item
+ var _pInfo *XKeyInfo
+ var _2_pColl *XCollSeq
+ _db = (*Xsqlite3)(_pParse.X0)
+ _nExpr = _pList.X0
+ _pInfo = _sqlite3KeyInfoAlloc(tls, _db, _nExpr-_iStart, _nExtra+i32(1))
+ if _pInfo == nil {
+ goto _0
+ }
func() {
- if _sqlite3ExprIsInteger(tls, _pE, &_i) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90240), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveOrderByTermToExprListØ00__func__Ø000))), unsafe.Pointer(str(101820)))
+ if _sqlite3KeyInfoIsWriteable(tls, _pInfo) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117632), unsafe.Pointer((*int8)(unsafe.Pointer(&_keyInfoFromExprListØ00__func__Ø000))), unsafe.Pointer(str(100020)))
crt.X__builtin_abort(tls)
}
}()
- _pEList = (*XExprList)(_pSelect.X0)
- crt.Xmemset(tls, (unsafe.Pointer)(&_nc), i32(0), u32(32))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(0 /* X0 */))))) = _pParse
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(4 /* X1 */))))) = (*XSrcList)(_pSelect.X8)
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(8 /* X2 */))))) = _pEList
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(28 /* X7 */))) = uint16(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_nc)) + uintptr(24 /* X6 */))) = i32(0)
- _db = (*Xsqlite3)(_pParse.X0)
- _savedSuppErr = _db.X21
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) = uint8(i32(1))
- _rc = _sqlite3ResolveExprNames(tls, &_nc, _pE)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) = _savedSuppErr
- if _rc == 0 {
- goto _2
- }
- return i32(0)
-
-_2:
- _i = i32(0)
+ *func() **TExprList_item { _i = _iStart; return &_pItem }() = (*TExprList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))))) + uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr(_iStart)))))*uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr(20)))))))))))
_3:
- if _i >= (_pEList.X0) {
+ if _i >= _nExpr {
goto _6
}
-
- if _sqlite3ExprCompare(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), _pE, i32(-1)) >= i32(2) {
- goto _7
+ _2_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pItem.X0))
+ if _2_pColl == nil {
+ _2_pColl = (*XCollSeq)(_db.X2)
}
- return _i + i32(1)
-
-_7:
- _i += 1
+ *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_i-_iStart))) = _2_pColl
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo.X5)) + 1*uintptr(_i-_iStart))) = _pItem.X3
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
goto _3
-
_6:
- return i32(0)
+_0:
+ return _pInfo
}
-var _resolveOrderByTermToExprListØ00__func__Ø000 [29]int8 // -
+var _keyInfoFromExprListØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_resolveOrderByTermToExprListØ00__func__Ø000[0], str(101852), 29)
+ crt.Xstrncpy(nil, &_keyInfoFromExprListØ00__func__Ø000[0], str(100053), 20)
}
-func _sqlite3SelectAddTypeInfo(tls *crt.TLS, _pParse *XParse, _pSelect *XSelect) { // sqlite3.c:121210:1
- var _w XWalker // sqlite3.c:121212:10
- _ = _w
- crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*func(*crt.TLS, *XWalker, *XSelect))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(12 /* X3 */))))) = _selectAddSubqueryTypeInfo
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _sqlite3ExprWalkNoop
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = _pParse
- _sqlite3WalkSelect(tls, &_w, _pSelect)
+func _sqlite3ReleaseTempRange(tls *crt.TLS, _pParse *XParse, _iReg int32, _nReg int32) {
+ if _nReg == i32(1) {
+ _sqlite3ReleaseTempReg(tls, _pParse, _iReg)
+ return
+ }
+ _sqlite3ExprCacheRemove(tls, _pParse, _iReg, _nReg)
+ if _nReg > (_pParse.X14) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(28 /* X14 */))) = _nReg
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(32 /* X15 */))) = _iReg
+ }
}
-func _selectAddSubqueryTypeInfo(tls *crt.TLS, _pWalker *XWalker, _p *XSelect) { // sqlite3.c:121176:1
- var _pParse *XParse // sqlite3.c:121177:9
- _ = _pParse
- var _i int32 // sqlite3.c:121178:7
- _ = _i
- var _pTabList *XSrcList // sqlite3.c:121179:11
- _ = _pTabList
- var _pFrom *TSrcList_item // sqlite3.c:121180:23
- _ = _pFrom
- var _1_pTab *XTable // sqlite3.c:121188:11
- _ = _1_pTab
- var _2_pSel *XSelect // sqlite3.c:121192:14
- _ = _2_pSel
+// Resolve label "x" to be the address of the next instruction to
+// be inserted. The parameter "x" must have been obtained from
+// a prior call to sqlite3VdbeMakeLabel().
+func _sqlite3VdbeResolveLabel(tls *crt.TLS, _v *TVdbe, _x int32) {
+ var _j int32
+ var _p *XParse
+ _p = (*XParse)(_v.X3)
+ _j = i32(-1) - _x
func() {
- if ((_p.X3) & uint32(i32(4))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121182), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectAddSubqueryTypeInfoØ00__func__Ø000))), unsafe.Pointer(str(101884)))
+ if (_v.X5) != uint32(i32(381479589)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeResolveLabelØ00__func__Ø000))), unsafe.Pointer(str(44897)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if ((_p.X3) & uint32(i32(128))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121183), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectAddSubqueryTypeInfoØ00__func__Ø000))), unsafe.Pointer(str(101912)))
+ if _j >= (_p.X25) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71804), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeResolveLabelØ00__func__Ø000))), unsafe.Pointer(str(100073)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(128))
- sink5 = *p
- }
- _pParse = (*XParse)(_pWalker.X0)
- _pTabList = (*XSrcList)(_p.X8)
- *func() **TSrcList_item { _i = i32(0); return &_pFrom }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
-_4:
- if _i >= (_pTabList.X0) {
- goto _7
- }
-
- _1_pTab = (*XTable)(_pFrom.X4)
func() {
- if _1_pTab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121189), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectAddSubqueryTypeInfoØ00__func__Ø000))), unsafe.Pointer(str(44760)))
+ if _j < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(71805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeResolveLabelØ00__func__Ø000))), unsafe.Pointer(str(100085)))
crt.X__builtin_abort(tls)
}
}()
- if ((_1_pTab.X9) & uint32(i32(2))) == uint32(i32(0)) {
- goto _10
- }
-
- _2_pSel = (*XSelect)(_pFrom.X5)
- if _2_pSel == nil {
- goto _11
- }
-
-_12:
- if (*XSelect)(_2_pSel.X13) == nil {
- goto _13
+ if (_p.X26) != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X26)) + 4*uintptr(_j))) = _v.X27
}
+}
- _2_pSel = (*XSelect)(_2_pSel.X13)
- goto _12
-
-_13:
- _sqlite3SelectAddColumnTypeAndCollation(tls, _pParse, _1_pTab, _2_pSel)
-_11:
-_10:
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pFrom }())) += uintptr(68)
- goto _4
+var _sqlite3VdbeResolveLabelØ00__func__Ø000 [24]int8
-_7:
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeResolveLabelØ00__func__Ø000[0], str(100090), 24)
}
-var _selectAddSubqueryTypeInfoØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_selectAddSubqueryTypeInfoØ00__func__Ø000[0], str(101948), 26)
-}
-
-func _flattenSubquery(tls *crt.TLS, _pParse *XParse, _p *XSelect, _iFrom int32, _isAgg int32, _subqueryIsAgg int32) (r0 int32) { // sqlite3.c:119929:1
- var _zSavedAuthContext *int8 // sqlite3.c:119936:14
- _ = _zSavedAuthContext
- var _pParent *XSelect // sqlite3.c:119937:10
- _ = _pParent
- var _pSub *XSelect // sqlite3.c:119938:10
- _ = _pSub
- var _pSub1 *XSelect // sqlite3.c:119939:10
- _ = _pSub1
- var _pSrc *XSrcList // sqlite3.c:119940:11
- _ = _pSrc
- var _pSubSrc *XSrcList // sqlite3.c:119941:11
- _ = _pSubSrc
- var _pList *XExprList // sqlite3.c:119942:12
- _ = _pList
- var _iParent int32 // sqlite3.c:119943:7
- _ = _iParent
- var _iNewParent int32 // sqlite3.c:119944:7
- _ = _iNewParent
- var _isLeftJoin int32 // sqlite3.c:119945:7
- _ = _isLeftJoin
- var _i int32 // sqlite3.c:119946:7
- _ = _i
- var _pWhere *XExpr // sqlite3.c:119947:8
- _ = _pWhere
- var _pSubitem *TSrcList_item // sqlite3.c:119948:23
- _ = _pSubitem
- var _db *Xsqlite3 // sqlite3.c:119949:11
- _ = _db
- var _17_ii int32 // sqlite3.c:120072:11
- _ = _17_ii
- var _19_pNew *XSelect // sqlite3.c:120123:12
- _ = _19_pNew
- var _19_pOrderBy *XExprList // sqlite3.c:120124:14
- _ = _19_pOrderBy
- var _19_pLimit *XExpr // sqlite3.c:120125:10
- _ = _19_pLimit
- var _19_pOffset *XExpr // sqlite3.c:120126:10
- _ = _19_pOffset
- var _19_pPrior *XSelect // sqlite3.c:120127:12
- _ = _19_pPrior
- var _22_pTabToDel *XTable // sqlite3.c:120178:11
- _ = _22_pTabToDel
- var _23_pToplevel *XParse // sqlite3.c:120180:13
- _ = _23_pToplevel
- var _25_nSubSrc int32 // sqlite3.c:120203:9
- _ = _25_nSubSrc
- var _25_jointype uint8 // sqlite3.c:120204:8
- _ = _25_jointype
- var _33_zName *int8 // sqlite3.c:120270:14
- _ = _33_zName
- var _34_pOrderBy *XExprList // sqlite3.c:120286:16
- _ = _34_pOrderBy
- var _39_x XSubstContext // sqlite3.c:120312:20
- _ = _39_x
- _zSavedAuthContext = _pParse.X65
- _iNewParent = i32(-1)
- _isLeftJoin = i32(0)
- _db = (*Xsqlite3)(_pParse.X0)
+func _multiSelectOrderBy(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) {
+ var _i, _j, _regAddrA, _regAddrB, _addrSelectA, _addrSelectB, _regOutA, _regOutB, _addrOutA, _addrOutB, _addrEofA, _addrEofA_noB, _addrEofB, _addrAltB, _addrAeqB, _addrAgtB, _regLimitA, _regLimitB, _regPrev, _savedLimit, _savedOffset, _labelCmpr, _labelEnd, _addr1, _op, _nOrderBy, _iSub1, _iSub2, _9_nExpr int32
+ var _aPermute *int32
+ var _db *Xsqlite3
+ var _v *TVdbe
+ var _pOrderBy *XExprList
+ var _2_pItem, _5_pItem *TExprList_item
+ var _pPrior, _24_pFirst *XSelect
+ var _4_pNew *XExpr
+ var _pKeyDup, _pKeyMerge *XKeyInfo
+ var _destA, _destB XSelectDest
+ _addrOutB = i32(0)
+ _pKeyDup = nil
func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119953), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(768)))
+ if (*XExprList)(_p.X12) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119400), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100114)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XSelect)(_p.X13) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119954), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(101976)))
+ if _pKeyDup != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119401), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100129)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_db.X13) & i32(1)) == i32(0) {
- goto _4
- }
- return i32(0)
-
-_4:
- _pSrc = (*XSrcList)(_p.X8)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _v = (*TVdbe)(_pParse.X2)
func() {
- if _pSrc == nil || _iFrom < i32(0) || _iFrom >= (_pSrc.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119957), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(101992)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119404), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- _pSubitem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_iFrom)))
- _iParent = _pSubitem.X11
- _pSub = (*XSelect)(_pSubitem.X5)
+ _labelEnd = _sqlite3VdbeMakeLabel(tls, _v)
+ _labelCmpr = _sqlite3VdbeMakeLabel(tls, _v)
+ _op = int32(_p.X1)
+ _pPrior = (*XSelect)(_p.X13)
func() {
- if _pSub == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119961), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102032)))
+ if (*XExprList)(_pPrior.X12) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119413), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100140)))
crt.X__builtin_abort(tls)
}
}()
- if _subqueryIsAgg == 0 {
- goto _11
- }
-
- if _isAgg == 0 {
- goto _12
+ _pOrderBy = (*XExprList)(_p.X12)
+ func() {
+ if _pOrderBy == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119415), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100160)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nOrderBy = _pOrderBy.X0
+ if _op == i32(116) {
+ goto _10
}
- return i32(0)
-
-_12:
- if (_pSrc.X0) <= i32(1) {
- goto _13
+ _i = i32(1)
+_11:
+ if int32(_db.X17) != i32(0) || _i > ((*XExprList)(_p.X0).X0) {
+ goto _15
}
- return i32(0)
-
-_13:
- if ((*XExpr)(_p.X9) == nil || (((*XExpr)(_p.X9).X2)&uint32(i32(2097152))) == uint32(i32(0))) && (_sqlite3ExprListFlags(tls, (*XExprList)(_p.X0))&uint32(i32(2097152))) == uint32(i32(0)) && (_sqlite3ExprListFlags(tls, (*XExprList)(_p.X12))&uint32(i32(2097152))) == uint32(i32(0)) {
- goto _17
+ *func() **TExprList_item { _j = i32(0); return &_2_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
+_16:
+ if _j >= _nOrderBy {
+ goto _19
}
- return i32(0)
-
-_17:
-_11:
- _pSubSrc = (*XSrcList)(_pSub.X8)
func() {
- if _pSubSrc == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119974), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102040)))
+ if int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pItem))+uintptr(16 /* X5 */))))).X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119426), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100169)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExpr)(_pSub.X15) == nil || (*XExpr)(_p.X15) == nil {
- goto _21
+ if int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pItem))+uintptr(16 /* X5 */))))).X0) == _i {
+ goto _19
}
- return i32(0)
-
-_21:
- if (*XExpr)(_pSub.X16) == nil {
- goto _22
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _j += 1; return &_2_pItem }())) += uintptr(20)
+ goto _16
+_19:
+ if _j != _nOrderBy {
+ goto _23
}
- return i32(0)
-
-_22:
- if ((_p.X3)&uint32(i32(256))) == uint32(i32(0)) || (*XExpr)(_pSub.X15) == nil {
- goto _24
- }
- return i32(0)
-
-_24:
- if (_pSubSrc.X0) != i32(0) {
- goto _25
- }
- return i32(0)
-
-_25:
- if ((_pSub.X3) & uint32(i32(1))) == 0 {
- goto _26
+ _4_pNew = _sqlite3Expr(tls, _db, i32(134), nil)
+ if _4_pNew == nil {
+ return _sqlite3NomemError(tls, i32(119431))
}
- return i32(0)
-
-_26:
- if (*XExpr)(_pSub.X15) == nil || (_pSrc.X0) <= i32(1) && _isAgg == 0 {
- goto _29
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1024))
+ sink5 = *p
}
- return i32(0)
-
-_29:
- if ((_p.X3)&uint32(i32(1))) == uint32(i32(0)) || _subqueryIsAgg == 0 {
- goto _31
+ *(*int32)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(8 /* X3 */))))) = _i
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = store42(&_pOrderBy, _sqlite3ExprListAppend(tls, _pParse, _pOrderBy, _4_pNew))
+ if _pOrderBy != nil {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(postInc1(&_nOrderBy, int32(1)))))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_i)
}
- return i32(0)
-
-_31:
- if (*XExprList)(_p.X12) == nil || (*XExprList)(_pSub.X12) == nil {
- goto _33
+_23:
+ _i += 1
+ goto _11
+_15:
+_10:
+ _aPermute = (*int32)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(4)*uint32(_nOrderBy+i32(1)))))
+ if _aPermute == nil {
+ goto _26
}
- return i32(0)
-
-_33:
- if _isAgg == 0 || (*XExprList)(_pSub.X12) == nil {
- goto _35
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPermute)) + 4*uintptr(i32(0)))) = _nOrderBy
+ *func() **TExprList_item { _i = i32(1); return &_5_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
+_27:
+ if _i > _nOrderBy {
+ goto _30
}
- return i32(0)
-
+ func() {
+ if int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pItem))+uintptr(16 /* X5 */))))).X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119452), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100169)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pItem))+uintptr(16 /* X5 */))))).X0) > ((*XExprList)(_p.X0).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119453), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100194)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPermute)) + 4*uintptr(_i))) = int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pItem))+uintptr(16 /* X5 */))))).X0) - i32(1)
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_5_pItem }())) += uintptr(20)
+ goto _27
+_30:
+ _pKeyMerge = _multiSelectOrderByKeyInfo(tls, _pParse, _p, i32(1))
+ goto _35
+_26:
+ _pKeyMerge = nil
_35:
- if (*XExpr)(_pSub.X15) == nil || (*XExpr)(_p.X9) == nil {
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = _pOrderBy
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(56 /* X12 */))))) = _sqlite3ExprListDup(tls, (*Xsqlite3)(_pParse.X0), _pOrderBy, i32(0))
+ if _op == i32(116) {
+ _regPrev = i32(0)
goto _37
}
- return i32(0)
-
-_37:
- if (*XExpr)(_pSub.X15) == nil || ((_p.X3)&uint32(i32(1))) == uint32(i32(0)) {
- goto _39
- }
- return i32(0)
-
-_39:
- if ((_pSub.X3) & uint32(i32(12288))) == 0 {
- goto _40
- }
- return i32(0)
-
-_40:
- if ((_p.X3)&uint32(i32(8192))) == 0 || (*XSelect)(_pSub.X13) == nil {
- goto _42
- }
- return i32(0)
-
-_42:
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem))+uintptr(36 /* X9 */))).X0) & i32(32)) == i32(0) {
- goto _43
- }
-
- _isLeftJoin = i32(1)
- if (_pSubSrc.X0) <= i32(1) && _isAgg == 0 {
- goto _45
- }
- return i32(0)
-
-_45:
-_43:
- if (*XSelect)(_pSub.X13) == nil {
- goto _46
- }
-
- if (*XExprList)(_pSub.X12) == nil {
- goto _47
- }
- return i32(0)
-
-_47:
- if _isAgg == 0 && ((_p.X3)&uint32(i32(1))) == uint32(i32(0)) && (_pSrc.X0) == i32(1) {
- goto _50
- }
- return i32(0)
-
-_50:
- _pSub1 = _pSub
-_51:
- if _pSub1 == nil {
- goto _54
- }
-
+ _9_nExpr = (*XExprList)(_p.X0).X0
func() {
- if (*XSrcList)(_pSub.X8) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120059), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102048)))
+ if _nOrderBy < _9_nExpr && (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119474), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100235)))
crt.X__builtin_abort(tls)
}
}()
+ _regPrev = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + (_9_nExpr + i32(1))
+ sink1 = *p
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _regPrev)
+ _pKeyDup = _sqlite3KeyInfoAlloc(tls, _db, _9_nExpr, i32(1))
+ if _pKeyDup == nil {
+ goto _41
+ }
func() {
- if ((*XExprList)(_pSub.X0).X0) != ((*XExprList)(_pSub1.X0).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120060), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102064)))
+ if _sqlite3KeyInfoIsWriteable(tls, _pKeyDup) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119480), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(100271)))
crt.X__builtin_abort(tls)
}
}()
- if ((_pSub1.X3)&uint32(i32(9))) == uint32(i32(0)) && ((*XSelect)(_pSub1.X13) == nil || int32(_pSub1.X1) == i32(116)) && ((*XSrcList)(_pSub1.X8).X0) >= i32(1) {
- goto _62
+ _i = i32(0)
+_44:
+ if _i >= _9_nExpr {
+ goto _47
}
- return i32(0)
-
-_62:
- _pSub1 = (*XSelect)(_pSub1.X13)
- goto _51
-
-_54:
- if (*XExprList)(_p.X12) == nil {
+ *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyDup))+uintptr(20 /* X6 */))))) + 4*uintptr(_i))) = _multiSelectCollSeq(tls, _pParse, _p, _i)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyDup.X5)) + 1*uintptr(_i))) = uint8(i32(0))
+ _i += 1
+ goto _44
+_47:
+_41:
+_37:
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(64 /* X14 */))))) = nil
+ _sqlite3ResolveOrderGroupBy(tls, _pParse, _p, (*XExprList)(_p.X12), str(25745))
+ if (*XSelect)(_pPrior.X13) == nil {
+ _sqlite3ResolveOrderGroupBy(tls, _pParse, _pPrior, (*XExprList)(_pPrior.X12), str(25745))
+ }
+ _computeLimitRegisters(tls, _pParse, _p, _labelEnd)
+ if (_p.X4) != 0 && (_op == i32(116)) {
+ _regLimitA = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _regLimitB = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(64), func() int32 {
+ if (_p.X5) != 0 {
+ return ((_p.X5) + i32(1))
+ }
+ return (_p.X4)
+ }(), _regLimitA)
+ _sqlite3VdbeAddOp2(tls, _v, i32(64), _regLimitA, _regLimitB)
+ goto _53
+ }
+ _regLimitA = store1(&_regLimitB, i32(0))
+_53:
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X15))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X16))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
+ _regAddrA = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _regAddrB = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _regOutA = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _regOutB = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3SelectDestInit(tls, &_destA, i32(13), _regAddrA)
+ _sqlite3SelectDestInit(tls, &_destB, i32(13), _regAddrB)
+ _addrSelectA = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
+ _addr1 = _sqlite3VdbeAddOp3(tls, _v, i32(15), _regAddrA, i32(0), _addrSelectA)
+ _sqlite3VdbeComment(tls, _v, str(100306))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(12 /* X4 */))) = _regLimitA
+ _iSub1 = _pParse.X59
+ _sqlite3Select(tls, _pParse, _pPrior, &_destA)
+ _sqlite3VdbeEndCoroutine(tls, _v, _regAddrA)
+ _sqlite3VdbeJumpHere(tls, _v, _addr1)
+ _addrSelectB = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
+ _addr1 = _sqlite3VdbeAddOp3(tls, _v, i32(15), _regAddrB, i32(0), _addrSelectB)
+ _sqlite3VdbeComment(tls, _v, str(100318))
+ _savedLimit = _p.X4
+ _savedOffset = _p.X5
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = _regLimitB
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = i32(0)
+ _iSub2 = _pParse.X59
+ _sqlite3Select(tls, _pParse, _p, &_destB)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = _savedLimit
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = _savedOffset
+ _sqlite3VdbeEndCoroutine(tls, _v, _regAddrB)
+ _sqlite3VdbeNoopComment(tls, _v, str(100331))
+ _addrOutA = _generateOutputSubroutine(tls, _pParse, _p, &_destA, _pDest, _regOutA, _regPrev, _pKeyDup, _labelEnd)
+ if (_op == i32(116)) || (_op == i32(115)) {
+ _sqlite3VdbeNoopComment(tls, _v, str(100352))
+ _addrOutB = _generateOutputSubroutine(tls, _pParse, _p, &_destB, _pDest, _regOutB, _regPrev, _pKeyDup, _labelEnd)
+ }
+ _sqlite3KeyInfoUnref(tls, _pKeyDup)
+ if (_op == i32(117)) || (_op == i32(118)) {
+ _addrEofA_noB = store1(&_addrEofA, _labelEnd)
+ goto _58
+ }
+ _sqlite3VdbeNoopComment(tls, _v, str(100373))
+ _addrEofA = _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutB, _addrOutB)
+ _addrEofA_noB = _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrB, _labelEnd)
+ _sqlite3VdbeGoto(tls, _v, _addrEofA)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEstAdd(tls, _p.X2, _pPrior.X2)
+_58:
+ if _op != i32(118) {
+ goto _59
+ }
+ _addrEofB = _addrEofA
+ if int32(_p.X2) > int32(_pPrior.X2) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _pPrior.X2
+ }
+ goto _61
+_59:
+ _sqlite3VdbeNoopComment(tls, _v, str(100390))
+ _addrEofB = _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutA, _addrOutA)
+ _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _labelEnd)
+ _sqlite3VdbeGoto(tls, _v, _addrEofB)
+_61:
+ _sqlite3VdbeNoopComment(tls, _v, str(100407))
+ _addrAltB = _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutA, _addrOutA)
+ _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _addrEofA)
+ _sqlite3VdbeGoto(tls, _v, _labelCmpr)
+ if _op == i32(116) {
+ _addrAeqB = _addrAltB
goto _63
}
-
- _17_ii = i32(0)
-_64:
- if _17_ii >= ((*XExprList)(_p.X12).X0) {
- goto _67
+ if _op == i32(118) {
+ _addrAeqB = _addrAltB
+ _addrAltB += 1
+ goto _65
}
-
- if int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X12)+uintptr(8 /* X2 */)))))+20*uintptr(_17_ii)))))+uintptr(16 /* X5 */))))).X0) != i32(0) {
+ _sqlite3VdbeNoopComment(tls, _v, str(100425))
+ _addrAeqB = _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _addrEofA)
+ _sqlite3VdbeGoto(tls, _v, _labelCmpr)
+_65:
+_63:
+ _sqlite3VdbeNoopComment(tls, _v, str(100443))
+ _addrAgtB = _sqlite3VdbeCurrentAddr(tls, _v)
+ if (_op == i32(116)) || (_op == i32(115)) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutB, _addrOutB)
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrB, _addrEofB)
+ _sqlite3VdbeGoto(tls, _v, _labelCmpr)
+ _sqlite3VdbeJumpHere(tls, _v, _addr1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _addrEofA_noB)
+ _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrB, _addrEofB)
+ _sqlite3VdbeResolveLabel(tls, _v, _labelCmpr)
+ _sqlite3VdbeAddOp4(tls, _v, i32(96), i32(0), i32(0), i32(0), (*int8)(unsafe.Pointer(_aPermute)), i32(-12))
+ _sqlite3VdbeAddOp4(tls, _v, i32(98), _destA.X3, _destB.X3, _nOrderBy, (*int8)(unsafe.Pointer(_pKeyMerge)), i32(-5))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)))
+ _sqlite3VdbeAddOp3(tls, _v, i32(18), _addrAltB, _addrAeqB, _addrAgtB)
+ _sqlite3VdbeResolveLabel(tls, _v, _labelEnd)
+ if int32(_pDest.X0) != i32(9) {
goto _68
}
- return i32(0)
-
-_68:
- _17_ii += 1
- goto _64
-
-_67:
-_63:
-_46:
- if (Xsqlite3SelectTrace & i32(1)) == 0 {
+ _24_pFirst = _pPrior
+_69:
+ if (*XSelect)(_24_pFirst.X13) != nil {
+ _24_pFirst = (*XSelect)(_24_pFirst.X13)
goto _69
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(102108)
- }(), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_pSub), _iFrom)
-_69:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _pSubitem.X2
- _i = _sqlite3AuthCheck(tls, _pParse, i32(21), nil, nil, nil)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _zSavedAuthContext
- _pSub = (*XSelect)(_pSub.X13)
-_70:
- if _pSub == nil {
- goto _73
+ _generateColumnNames(tls, _pParse, (*XSrcList)(_24_pFirst.X8), (*XExprList)(_24_pFirst.X0))
+_68:
+ if (*XSelect)(_p.X13) != nil {
+ _sqlite3SelectDelete(tls, _db, (*XSelect)(_p.X13))
}
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(64 /* X14 */))))) = _p
+ _explainComposite(tls, _pParse, int32(_p.X1), _iSub1, _iSub2, i32(0))
+ return bool2int((_pParse.X16) != i32(0))
- _19_pOrderBy = (*XExprList)(_p.X12)
- _19_pLimit = (*XExpr)(_p.X15)
- _19_pOffset = (*XExpr)(_p.X16)
- _19_pPrior = (*XSelect)(_p.X13)
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))))) = nil
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
- _19_pNew = _sqlite3SelectDup(tls, _db, _p, i32(0))
- _sqlite3SelectSetName(tls, _19_pNew, (*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub))+uintptr(20 /* X6 */))))))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _19_pOffset
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _19_pLimit
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = _19_pOrderBy
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X8 */))))) = _pSrc
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = uint8(i32(116))
- if _19_pNew != nil {
- goto _74
- }
+ _ = _destA
+ _ = _destB
+ panic(0)
+}
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _19_pPrior
- goto _75
+var _multiSelectOrderByØ00__func__Ø000 [19]int8
-_74:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pNew)) + uintptr(60 /* X13 */))))) = _19_pPrior
- if _19_pPrior == nil {
- goto _76
- }
+func init() {
+ crt.Xstrncpy(nil, &_multiSelectOrderByØ00__func__Ø000[0], str(100461), 19)
+}
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pPrior)) + uintptr(64 /* X14 */))))) = _19_pNew
-_76:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pNew)) + uintptr(64 /* X14 */))))) = _p
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _19_pNew
- if (Xsqlite3SelectTrace & i32(2)) == 0 {
- goto _77
- }
+// Insert the end of a co-routine
+func _sqlite3VdbeEndCoroutine(tls *crt.TLS, _v *TVdbe, _regYield int32) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(53), _regYield)
+ *(*uint8)(unsafe.Pointer(uintptr(_v.X3) + uintptr(19 /* X7 */))) = uint8(i32(0))
+ *(*int32)(unsafe.Pointer(uintptr(_v.X3) + uintptr(28 /* X14 */))) = i32(0)
+}
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(102136)
- }(), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pNew))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_19_pNew))
-_77:
-_75:
- if (_db.X17) == 0 {
- goto _78
+func _sqlite3VdbeNoopComment(tls *crt.TLS, _p *TVdbe, _zFormat *int8, args ...interface{}) {
+ var _ap []interface{}
+ if _p != nil {
+ _sqlite3VdbeAddOp0(tls, _p, i32(164))
+ _ap = args
+ _vdbeVComment(tls, _p, _zFormat, _ap)
+ _ap = nil
+ }
+}
+
+// Code an output subroutine for a coroutine implementation of a
+// SELECT statment.
+//
+// The data to be output is contained in pIn->iSdst. There are
+// pIn->nSdst columns to be output. pDest is where the output should
+// be sent.
+//
+// regReturn is the number of the register holding the subroutine
+// return address.
+//
+// If regPrev>0 then it is the first register in a vector that
+// records the previous output. mem[regPrev] is a flag that is false
+// if there has been no previous output. If regPrev>0 then code is
+// generated to suppress duplicates. pKeyInfo is used for comparing
+// keys.
+//
+// If the LIMIT found in p->iLimit is reached, jump immediately to
+// iBreak.
+func _generateOutputSubroutine(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pIn *XSelectDest, _pDest *XSelectDest, _regReturn int32, _regPrev int32, _pKeyInfo *XKeyInfo, _iBreak int32) (r0 int32) {
+ var _iContinue, _addr, _1_addr1, _1_addr2, _3_r1, _3_r2, _4_r1 int32
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
+ _addr = _sqlite3VdbeCurrentAddr(tls, _v)
+ _iContinue = _sqlite3VdbeMakeLabel(tls, _v)
+ if _regPrev != 0 {
+ _1_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(22), _regPrev)
+ _1_addr2 = _sqlite3VdbeAddOp4(tls, _v, i32(98), _pIn.X3, _regPrev+i32(1), _pIn.X4, (*int8)(unsafe.Pointer(_sqlite3KeyInfoRef(tls, _pKeyInfo))), i32(-5))
+ _sqlite3VdbeAddOp3(tls, _v, i32(18), _1_addr2+i32(2), _iContinue, _1_addr2+i32(2))
+ _sqlite3VdbeJumpHere(tls, _v, _1_addr1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(64), _pIn.X3, _regPrev+i32(1), (_pIn.X4)-i32(1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _regPrev)
+ }
+ if ((*Xsqlite3)(_pParse.X0).X17) != 0 {
+ return i32(0)
}
- return i32(1)
-
-_78:
- _pSub = (*XSelect)(_pSub.X13)
- goto _70
-
-_73:
- _pSub = store57(&_pSub1, (*XSelect)(_pSubitem.X5))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubitem.X1))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubitem.X2))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubitem.X3))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(4 /* X1 */))) = nil
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(8 /* X2 */))) = nil
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(12 /* X3 */))) = nil
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(20 /* X5 */))))) = nil
- if func() int32 {
- if (*XTable)(_pSubitem.X4) != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120177), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ _codeOffset(tls, _v, _p.X5, _iContinue)
+ func() {
+ if int32(_pDest.X0) == i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119182), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(100480)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _81
- }
-
- _22_pTabToDel = (*XTable)(_pSubitem.X4)
- if (_22_pTabToDel.X8) != uint32(i32(1)) {
- goto _82
- }
-
- _23_pToplevel = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
}
- return _pParse
}()
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_22_pTabToDel)) + uintptr(76 /* X21 */))))) = (*XTable)(_23_pToplevel.X68)
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_23_pToplevel)) + uintptr(468 /* X68 */))))) = _22_pTabToDel
- goto _85
-
-_82:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_22_pTabToDel)) + uintptr(32 /* X8 */))) -= 1
-_85:
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(16 /* X4 */))))) = nil
-_81:
- _pParent = _p
-_86:
- if _pParent == nil {
- goto _89
- }
-
- _25_jointype = uint8(i32(0))
- _pSubSrc = (*XSrcList)(_pSub.X8)
- _25_nSubSrc = _pSubSrc.X0
- _pSrc = (*XSrcList)(_pParent.X8)
- if _pSrc == nil {
- goto _90
- }
-
func() {
- if _pParent != _p {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120210), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102188)))
+ if int32(_pDest.X0) == i32(14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119183), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(100505)))
crt.X__builtin_abort(tls)
}
}()
- _25_jointype = (*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubitem)) + uintptr(36 /* X9 */))).X0
- goto _93
+ switch int32(_pDest.X0) {
+ case i32(10):
+ goto _9
+ case i32(11):
+ goto _8
+ case i32(12):
+ goto _7
+ case i32(13):
+ goto _10
+ default:
+ goto _11
+ }
-_90:
+_7:
+ _3_r1 = _sqlite3GetTempReg(tls, _pParse)
+ _3_r2 = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _pIn.X3, _pIn.X4, _3_r1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(117), _pDest.X2, _3_r2)
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), _pDest.X2, _3_r1, _3_r2)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
+ _sqlite3ReleaseTempReg(tls, _pParse, _3_r2)
+ _sqlite3ReleaseTempReg(tls, _pParse, _3_r1)
+ goto _12
+_8:
+ _4_r1 = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp4(tls, _v, i32(101), _pIn.X3, _pIn.X4, _4_r1, _pDest.X1, _pIn.X4)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _pIn.X3, _pIn.X4)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _pDest.X2, _4_r1, _pIn.X3, _pIn.X4)
+ _sqlite3ReleaseTempReg(tls, _pParse, _4_r1)
+ goto _12
+_9:
func() {
- if _pParent == _p {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120213), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102200)))
+ if (_pIn.X4) != i32(1) && (_pParse.X16) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119220), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(100529)))
crt.X__builtin_abort(tls)
}
}()
- _pSrc = store58((**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent))+uintptr(40 /* X8 */))))), _sqlite3SrcListAppend(tls, _db, nil, nil, nil))
- if _pSrc != nil {
- goto _96
+ _sqlite3ExprCodeMove(tls, _pParse, _pIn.X3, _pDest.X2, i32(1))
+ goto _12
+_10:
+ if (_pDest.X3) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(12 /* X3 */))) = _sqlite3GetTempRange(tls, _pParse, _pIn.X4)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(16 /* X4 */))) = _pIn.X4
}
-
+ _sqlite3ExprCodeMove(tls, _pParse, _pIn.X3, _pDest.X3, _pIn.X4)
+ _sqlite3VdbeAddOp1(tls, _v, i32(16), _pDest.X2)
+ goto _12
+_11:
func() {
- if (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120216), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(49304)))
+ if int32(_pDest.X0) != i32(9) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(119249), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(100561)))
crt.X__builtin_abort(tls)
}
}()
- goto _89
-
-_96:
-_93:
- if _25_nSubSrc <= i32(1) {
- goto _99
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), _pIn.X3, _pIn.X4)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _pIn.X3, _pIn.X4)
+ goto _12
+_12:
+ if (_p.X4) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(48), _p.X4, _iBreak)
}
+ _sqlite3VdbeResolveLabel(tls, _v, _iContinue)
+ _sqlite3VdbeAddOp1(tls, _v, i32(52), _regReturn)
+ return _addr
+}
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(40 /* X8 */))))) = store58(&_pSrc, _sqlite3SrcListEnlarge(tls, _db, _pSrc, _25_nSubSrc-i32(1), _iFrom+i32(1)))
- if (_db.X17) == 0 {
- goto _100
+// Make a new pointer to a KeyInfo object
+func _sqlite3KeyInfoRef(tls *crt.TLS, _p *XKeyInfo) (r0 *XKeyInfo) {
+ if _p != nil {
+ func() {
+ if (_p.X0) <= uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3KeyInfoRefØ00__func__Ø000))), unsafe.Pointer(str(13857)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) += 1
}
+ return _p
+}
- goto _89
+var _sqlite3KeyInfoRefØ00__func__Ø000 [18]int8
-_100:
-_99:
- _i = i32(0)
-_101:
- if _i >= _25_nSubSrc {
- goto _104
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3KeyInfoRefØ00__func__Ø000[0], str(100586), 18)
+}
- _sqlite3IdListDelete(tls, _db, (*XIdList)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i+_iFrom))).X13))
- func() {
- if int32((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i+_iFrom)))))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120248), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102212)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i+_iFrom))) = *(*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i)))
- _iNewParent = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X11
- crt.Xmemset(tls, (unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i)))), i32(0), u32(68))
- _i += 1
- goto _101
+var _generateOutputSubroutineØ00__func__Ø000 [25]int8
-_104:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_iFrom)))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = _25_jointype
- _pList = (*XExprList)(_pParent.X0)
- _i = i32(0)
-_107:
- if _i >= (_pList.X0) {
- goto _110
- }
+func init() {
+ crt.Xstrncpy(nil, &_generateOutputSubroutineØ00__func__Ø000[0], str(100604), 25)
+}
- if ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1) != nil {
- goto _111
+// Find (an approximate) sum of two LogEst values. This computation is
+// not a simple "+" operator because LogEst is stored as a logarithmic
+// value.
+//
+func _sqlite3LogEstAdd(tls *crt.TLS, _a int16, _b int16) (r0 int16) {
+ if int32(_a) < int32(_b) {
+ goto _0
}
-
- _33_zName = _sqlite3DbStrDup(tls, _db, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X2)
- _sqlite3Dequote(tls, _33_zName)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))))) + uintptr(4 /* X1 */))) = _33_zName
-_111:
- _i += 1
- goto _107
-
-_110:
- if (*XExprList)(_pSub.X12) == nil {
- goto _112
+ if int32(_a) > (int32(_b) + i32(49)) {
+ return _a
+ }
+ if int32(_a) > (int32(_b) + i32(31)) {
+ return int16(int32(_a) + i32(1))
}
+ return int16(int32(_a) + int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LogEstAddØ00xØ001)) + 1*uintptr(int32(_a)-int32(_b))))))
- _34_pOrderBy = (*XExprList)(_pSub.X12)
- _i = i32(0)
-_113:
- if _i >= (_34_pOrderBy.X0) {
- goto _116
+_0:
+ if int32(_b) > (int32(_a) + i32(49)) {
+ return _b
+ }
+ if int32(_b) > (int32(_a) + i32(31)) {
+ return int16(int32(_b) + i32(1))
}
+ return int16(int32(_b) + int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LogEstAddØ00xØ001)) + 1*uintptr(int32(_b)-int32(_a))))))
+}
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_34_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
- _i += 1
- goto _113
+var _sqlite3LogEstAddØ00xØ001 [32]uint8
-_116:
+func init() {
+ _sqlite3LogEstAddØ00xØ001 = [32]uint8{10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2}
+}
+
+// Generate code that will tell the VDBE the names of columns
+// in the result set. This information is used to provide the
+// azCol[] values in the callback.
+func _generateColumnNames(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pEList *XExprList) {
+ var _i, _fullNames, _shortNames, _4_iCol int32
+ var _3_zName, _4_zCol, _8_zName, _10_z *int8
+ var _db *Xsqlite3
+ var _pTab *XTable
+ var _v *TVdbe
+ var _2_p *XExpr
+ _v = (*TVdbe)(_pParse.X2)
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_pParse.X54) != 0 {
+ return
+ }
+ if ((_pParse.X4) != 0) || ((_db.X17) != 0) {
+ return
+ }
func() {
- if (*XExprList)(_pParent.X12) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120290), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102248)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118115), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XSelect)(_pSub.X13) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120291), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102272)))
+ if _pTabList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118116), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(100629)))
crt.X__builtin_abort(tls)
}
}()
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(56 /* X12 */))))) = _34_pOrderBy
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(56 /* X12 */))))) = nil
-_112:
- _pWhere = _sqlite3ExprDup(tls, _db, (*XExpr)(_pSub.X9), i32(0))
- if _isLeftJoin <= i32(0) {
- goto _121
- }
-
- _setJoinExpr(tls, _pWhere, _iNewParent)
-_121:
- if _subqueryIsAgg == 0 {
- goto _122
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(16 /* X4 */))) = uint8(i32(1))
+ _fullNames = bool2int(((_db.X6) & i32(4)) != i32(0))
+ _shortNames = bool2int(((_db.X6) & i32(64)) != i32(0))
+ _sqlite3VdbeSetNumCols(tls, _v, _pEList.X0)
+ _i = i32(0)
+_7:
+ if _i >= (_pEList.X0) {
+ goto _10
}
-
- func() {
- if (*XExpr)(_pParent.X11) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120300), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102288)))
- crt.X__builtin_abort(tls)
+ _2_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ if func() int32 {
+ if _2_p == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118124), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
}
- }()
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(52 /* X11 */))))) = (*XExpr)(_pParent.X9)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(44 /* X9 */))))) = _pWhere
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(52 /* X11 */))))) = _sqlite3ExprAnd(tls, _db, _sqlite3ExprDup(tls, _db, (*XExpr)(_pSub.X11), i32(0)), (*XExpr)(_pParent.X11))
+ return i32(0)
+ }() != 0 {
+ goto _8
+ }
+ if ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1) != nil {
+ _3_zName = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1
+ _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _3_zName, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+ goto _15
+ }
+ if int32(_2_p.X0) != i32(152) && int32(_2_p.X0) != i32(154) || store44(&_pTab, _tableWithCursor(tls, _pTabList, _2_p.X8)) == nil {
+ goto _18
+ }
+ _4_iCol = int32(_2_p.X9)
+ if _4_iCol < i32(0) {
+ _4_iCol = int32(_pTab.X10)
+ }
func() {
- if (*XExprList)(_pParent.X10) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120306), unsafe.Pointer((*int8)(unsafe.Pointer(&_flattenSubqueryØ00__func__Ø000))), unsafe.Pointer(str(102308)))
+ if _4_iCol != i32(-1) && (_4_iCol < i32(0) || _4_iCol >= int32(_pTab.X11)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(118134), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(94506)))
crt.X__builtin_abort(tls)
}
}()
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(48 /* X10 */))))) = _sqlite3ExprListDup(tls, _db, (*XExprList)(_pSub.X10), i32(0))
- goto _127
-
-_122:
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(44 /* X9 */))))) = _sqlite3ExprAnd(tls, _db, _pWhere, (*XExpr)(_pParent.X9))
-_127:
- if int32(_db.X17) != i32(0) {
- goto _128
- }
-
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(0 /* X0 */))))) = _pParse
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(4 /* X1 */))) = _iParent
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(8 /* X2 */))) = _iNewParent
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(12 /* X3 */))) = _isLeftJoin
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_39_x)) + uintptr(16 /* X4 */))))) = (*XExprList)(_pSub.X0)
- _substSelect(tls, &_39_x, _pParent, i32(0))
-_128:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(8 /* X3 */)))
- *p = (*p) | ((_pSub.X3) & uint32(i32(1)))
- sink5 = *p
- }
- if (*XExpr)(_pSub.X15) == nil {
- goto _129
+ if _4_iCol < i32(0) {
+ _4_zCol = str(27227)
+ goto _25
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParent)) + uintptr(68 /* X15 */))))) = (*XExpr)(_pSub.X15)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSub)) + uintptr(68 /* X15 */))))) = nil
-_129:
- *func() **XSelect { _pParent = (*XSelect)(_pParent.X13); return &_pSub }() = (*XSelect)(_pSub.X13)
- goto _86
-
-_89:
- _sqlite3SelectDelete(tls, _db, _pSub1)
- if (Xsqlite3SelectTrace & i32(256)) == 0 {
- goto _130
+ _4_zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_4_iCol))).X0
+_25:
+ if (_shortNames == 0) && (_fullNames == 0) {
+ _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _sqlite3DbStrDup(tls, _db, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X2), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))
+ goto _28
}
-
- if (Xsqlite3SelectTrace & i32(256)) == 0 {
- goto _131
+ if _fullNames != 0 {
+ _8_zName = nil
+ _8_zName = _sqlite3MPrintf(tls, _db, str(8018), unsafe.Pointer(_pTab.X0), unsafe.Pointer(_4_zCol))
+ _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _8_zName, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))
+ goto _30
}
-
- _sqlite3DebugPrintf(tls, func() *int8 {
- _sqlite3DebugPrintf(tls, str(46944), ((_pParse.X35)*i32(2))-i32(2), unsafe.Pointer(str(196)), unsafe.Pointer((*int8)(unsafe.Pointer((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(20 /* X6 */)))))), unsafe.Pointer(_p))
- return str(102332)
- }())
-_131:
- _sqlite3TreeViewSelect(tls, nil, _p, uint8(i32(0)))
-_130:
- return i32(1)
+ _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _4_zCol, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+_30:
+_28:
+ goto _31
+_18:
+ _10_z = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X2
+ _10_z = func() *int8 {
+ if _10_z == nil {
+ return _sqlite3MPrintf(tls, _db, str(100641), _i+i32(1))
+ }
+ return _sqlite3DbStrDup(tls, _db, _10_z)
+ }()
+ _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _10_z, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer) int32
+ }{_sqlite3MallocSize})))
+_31:
+_15:
+_8:
+ _i += 1
+ goto _7
+_10:
+ _generateColumnTypes(tls, _pParse, _pTabList, _pEList)
}
-var _flattenSubqueryØ00__func__Ø000 [16]int8 // -
+var _generateColumnNamesØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_flattenSubqueryØ00__func__Ø000[0], str(102352), 16)
+ crt.Xstrncpy(nil, &_generateColumnNamesØ00__func__Ø000[0], str(100650), 20)
}
-func _substSelect(tls *crt.TLS, _pSubst *XSubstContext, _p *XSelect, _doPrior int32) { // sqlite3.c:119761:1
- var _pSrc *XSrcList // sqlite3.c:119766:11
- _ = _pSrc
- var _pItem *TSrcList_item // sqlite3.c:119767:23
- _ = _pItem
- var _i int32 // sqlite3.c:119768:7
- _ = _i
- if _p != nil {
- goto _0
+// Return the Table objecct in the SrcList that has cursor iCursor.
+// Or return NULL if no such Table object exists in the SrcList.
+func _tableWithCursor(tls *crt.TLS, _pList *XSrcList, _iCursor int32) (r0 *XTable) {
+ var _j int32
+ _j = i32(0)
+_0:
+ if _j >= (_pList.X0) {
+ goto _3
}
- return
+ if ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 68*uintptr(_j))).X11) == _iCursor {
+ /* X2 */
+ return (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8))))) + 68*uintptr(_j))).X4)
+ }
+ _j += 1
+ goto _0
+_3:
+ return nil
+}
+// Generate code that will tell the VDBE the declaration types of columns
+// in the result set.
+func _generateColumnTypes(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pEList *XExprList) {
+ var _i int32
+ var _1_zType *int8
+ var _v *TVdbe
+ var _1_p *XExpr
+ var _sNC XNameContext
+ _v = (*TVdbe)(_pParse.X2)
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = _pTabList
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(16 /* X4 */))))) = nil
+ _i = i32(0)
_0:
-_1:
- _substExprList(tls, _pSubst, (*XExprList)(_p.X0))
- _substExprList(tls, _pSubst, (*XExprList)(_p.X10))
- _substExprList(tls, _pSubst, (*XExprList)(_p.X12))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X11 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_p.X11))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X9 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_p.X9))
- _pSrc = (*XSrcList)(_p.X8)
+ if _i >= (_pEList.X0) {
+ goto _3
+ }
+ _1_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ _1_zType = _columnTypeImpl(tls, &_sNC, _1_p, nil)
+ _sqlite3VdbeSetColName(tls, _v, _i, i32(1), _1_zType, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+ _i += 1
+ goto _0
+_3:
+ _ = _sNC
+}
+
+// Unless an "EXPLAIN QUERY PLAN" command is being processed, this function
+// is a no-op. Otherwise, it adds a single row of output to the EQP result,
+// where the caption is of one of the two forms:
+//
+// "COMPOSITE SUBQUERIES iSub1 and iSub2 (op)"
+// "COMPOSITE SUBQUERIES iSub1 and iSub2 USING TEMP B-TREE (op)"
+//
+// where iSub1 and iSub2 are the integers passed as the corresponding
+// function parameters, and op is the text representation of the parameter
+// of the same name. The parameter "op" must be one of TK_UNION, TK_EXCEPT,
+// TK_INTERSECT or TK_ALL. The first form is used if argument bUseTmp is
+// false, or the second form if it is true.
+func _explainComposite(tls *crt.TLS, _pParse *XParse, _op int32, _iSub1 int32, _iSub2 int32, _bUseTmp int32) {
+ var _1_zMsg *int8
+ var _1_v *TVdbe
func() {
- if _pSrc == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119777), unsafe.Pointer((*int8)(unsafe.Pointer(&_substSelectØ00__func__Ø000))), unsafe.Pointer(str(49276)))
+ if _op != i32(115) && _op != i32(117) && _op != i32(118) && _op != i32(116) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117714), unsafe.Pointer((*int8)(unsafe.Pointer(&_explainCompositeØ00__func__Ø000))), unsafe.Pointer(str(100670)))
crt.X__builtin_abort(tls)
}
}()
- *func() **TSrcList_item { _i = _pSrc.X0; return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc)) + uintptr(8 /* X2 */)))))
-_4:
- if _i <= i32(0) {
- goto _7
+ if int32(_pParse.X54) == i32(2) {
+ _1_v = (*TVdbe)(_pParse.X2)
+ _1_zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(100734), _iSub1, _iSub2, unsafe.Pointer(func() *int8 {
+ if _bUseTmp != 0 {
+ return str(100771)
+ }
+ return str(0)
+ }()), unsafe.Pointer(_selectOpName(tls, _op)))
+ _sqlite3VdbeAddOp4(tls, _1_v, i32(165), _pParse.X58, i32(0), i32(0), _1_zMsg, i32(-1))
}
+}
- _substSelect(tls, _pSubst, (*XSelect)(_pItem.X5), i32(1))
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _8
- }
+var _explainCompositeØ00__func__Ø000 [17]int8
- _substExprList(tls, _pSubst, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */)))))))
-_8:
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i -= 1; return &_pItem }())) += uintptr(68)
- goto _4
+func init() {
+ crt.Xstrncpy(nil, &_explainCompositeØ00__func__Ø000[0], str(100790), 17)
+}
-_7:
- if _doPrior != 0 && (store57(&_p, (*XSelect)(_p.X13)) != nil) {
- goto _1
- }
+// Return the maximum height of any expression tree referenced
+// by the select statement passed as an argument.
+func _sqlite3SelectExprHeight(tls *crt.TLS, _p *XSelect) (r0 int32) {
+ var _nHeight int32
+ _nHeight = i32(0)
+ _heightOfSelect(tls, _p, &_nHeight)
+ return _nHeight
}
-func _substExprList(tls *crt.TLS, _pSubst *XSubstContext, _pList *XExprList) { // sqlite3.c:119751:1
- var _i int32 // sqlite3.c:119755:7
- _ = _i
- if _pList != nil {
- goto _0
+// Make copies of relevant WHERE clause terms of the outer query into
+// the WHERE clause of subquery. Example:
+//
+// SELECT * FROM (SELECT a AS x, c-d AS y FROM t1) WHERE x=5 AND y=10;
+//
+// Transformed into:
+//
+// SELECT * FROM (SELECT a AS x, c-d AS y FROM t1 WHERE a=5 AND c-d=10)
+// WHERE x=5 AND y=10;
+//
+// The hope is that the terms added to the inner query will make it more
+// efficient.
+//
+// Do not attempt this optimization if:
+//
+// (1) The inner query is an aggregate. (In that case, we'd really want
+// to copy the outer WHERE-clause terms onto the HAVING clause of the
+// inner query. But they probably won't help there so do not bother.)
+//
+// (2) The inner query is the recursive part of a common table expression.
+//
+// (3) The inner query has a LIMIT clause (since the changes to the WHERE
+// close would change the meaning of the LIMIT).
+//
+// (4) The inner query is the right operand of a LEFT JOIN. (The caller
+// enforces this restriction since this routine does not have enough
+// information to know.)
+//
+// (5) The WHERE clause expression originates in the ON or USING clause
+// of a LEFT JOIN.
+//
+// Return 0 if no changes are made and non-zero if one or more WHERE clause
+// terms are duplicated into the subquery.
+func _pushDownWhereTerms(tls *crt.TLS, _pParse *XParse, _pSubq *XSelect, _pWhere *XExpr, _iCursor int32) (r0 int32) {
+ var _nChng int32
+ var _pX *XSelect
+ var _pNew *XExpr
+ var _6_x XSubstContext
+ _nChng = i32(0)
+ if _pWhere == nil {
+ return i32(0)
}
- return
-
-_0:
- _i = i32(0)
+ _pX = _pSubq
_1:
- if _i >= (_pList.X0) {
+ if _pX == nil {
goto _4
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))))) + uintptr(0 /* X0 */))))) = _substExpr(tls, _pSubst, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- _i += 1
+ if ((_pX.X3) & uint32(i32(8200))) != uint32(i32(0)) {
+ return i32(0)
+ }
+ _pX = (*XSelect)(_pX.X13)
goto _1
-
_4:
-}
-
-func _substExpr(tls *crt.TLS, _pSubst *XSubstContext, _pExpr *XExpr) (r0 *XExpr) { // sqlite3.c:119700:1
- var _4_pNew *XExpr // sqlite3.c:119712:12
- _ = _4_pNew
- var _4_pCopy *XExpr // sqlite3.c:119713:12
- _ = _4_pCopy
- var _4_ifNullRow XExpr // sqlite3.c:119714:12
- _ = _4_ifNullRow
- var _6_db *Xsqlite3 // sqlite3.c:119720:17
- _ = _6_db
- if _pExpr != nil {
- goto _0
+ if (*XExpr)(_pSubq.X15) != nil {
+ return i32(0)
}
- return nil
-
-_0:
- if ((_pExpr.X2)&uint32(i32(1))) == uint32(i32(0)) || int32(_pExpr.X11) != (_pSubst.X1) {
- goto _2
+_7:
+ if int32(_pWhere.X0) == i32(71) {
+ {
+ p := &_nChng
+ *p = (*p) + _pushDownWhereTerms(tls, _pParse, _pSubq, (*XExpr)(_pWhere.X5), _iCursor)
+ sink1 = *p
+ }
+ _pWhere = (*XExpr)(_pWhere.X4)
+ goto _7
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(36 /* X11 */))) = int16(_pSubst.X2)
-_2:
- if int32(_pExpr.X0) != i32(152) || (_pExpr.X8) != (_pSubst.X1) {
- goto _4
+ if ((_pWhere.X2) & uint32(i32(1))) != uint32(i32(0)) {
+ return i32(0)
}
-
- if int32(_pExpr.X9) >= i32(0) {
- goto _5
+ if _sqlite3ExprIsTableConstant(tls, _pWhere, _iCursor) == 0 {
+ goto _10
+ }
+ _nChng += 1
+_11:
+ if _pSubq != nil {
+ _pNew = _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _pWhere, i32(0))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(0 /* X0 */))))) = _pParse
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(4 /* X1 */))) = _iCursor
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(8 /* X2 */))) = _iCursor
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(12 /* X3 */))) = i32(0)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(16 /* X4 */))))) = (*XExprList)(_pSubq.X0)
+ _pNew = _substExpr(tls, &_6_x, _pNew)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubq)) + uintptr(44 /* X9 */))))) = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)(_pSubq.X9), _pNew)
+ _pSubq = (*XSelect)(_pSubq.X13)
+ goto _11
}
+_10:
+ return _nChng
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
- goto _6
+ _ = _6_x
+ panic(0)
+}
-_5:
- _4_pCopy = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSubst.X4)+uintptr(8 /* X2 */))))) + 20*uintptr(_pExpr.X9))).X0)
- func() {
- if (*XExprList)(_pSubst.X4) == nil || int32(_pExpr.X9) >= ((*XExprList)(_pSubst.X4).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119715), unsafe.Pointer((*int8)(unsafe.Pointer(&_substExprØ00__func__Ø000))), unsafe.Pointer(str(102368)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XExpr)(_pExpr.X4) != nil || (*XExpr)(_pExpr.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119716), unsafe.Pointer((*int8)(unsafe.Pointer(&_substExprØ00__func__Ø000))), unsafe.Pointer(str(100380)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3ExprIsVector(tls, _4_pCopy) == 0 {
- goto _13
- }
+// Walk an expression tree. Return non-zero if the expression is constant
+// for any single row of the table with cursor iCur. In other words, the
+// expression must not refer to any non-deterministic function nor any
+// table other than iCur.
+func _sqlite3ExprIsTableConstant(tls *crt.TLS, _p *XExpr, _iCur int32) (r0 int32) {
+ return _exprIsConst(tls, _p, i32(3), _iCur)
+}
- _sqlite3VectorErrorMsg(tls, (*XParse)(_pSubst.X0), _4_pCopy)
- goto _14
+// Mark all temporary registers as being unavailable for reuse.
+func _sqlite3ClearTempRegCache(tls *crt.TLS, _pParse *XParse) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(19 /* X7 */))) = uint8(i32(0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(28 /* X14 */))) = i32(0)
+}
-_13:
- _6_db = (*Xsqlite3)((*XParse)(_pSubst.X0).X0)
- if (_pSubst.X3) == 0 || int32(_4_pCopy.X0) == i32(152) {
- goto _16
+// Check to see if the pThis entry of pTabList is a self-join of a prior view.
+// If it is, then return the SrcList_item for the prior view. If it is not,
+// then return 0.
+func _isSelfJoinView(tls *crt.TLS, _pTabList *XSrcList, _pThis *TSrcList_item) (r0 *TSrcList_item) {
+ var _pItem *TSrcList_item
+ _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
+_0:
+ if uintptr(unsafe.Pointer(_pItem)) >= uintptr(unsafe.Pointer(_pThis)) {
+ goto _3
}
-
- crt.Xmemset(tls, (unsafe.Pointer)(&_4_ifNullRow), i32(0), u32(48))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_4_ifNullRow)) + uintptr(0 /* X0 */))) = uint8(i32(160))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_4_ifNullRow)) + uintptr(12 /* X4 */))))) = _4_pCopy
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_4_ifNullRow)) + uintptr(28 /* X8 */))) = _pSubst.X2
- _4_pCopy = &_4_ifNullRow
-_16:
- _4_pNew = _sqlite3ExprDup(tls, _6_db, _4_pCopy, i32(0))
- if _4_pNew == nil || ((_pExpr.X2)&uint32(i32(1))) == 0 {
- goto _18
+ if (*XSelect)(_pItem.X5) == nil {
+ goto _1
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(36 /* X11 */))) = _pExpr.X11
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1))
- sink5 = *p
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ goto _1
}
-_18:
- _sqlite3ExprDelete(tls, _6_db, _pExpr)
- _pExpr = _4_pNew
-_14:
-_6:
- goto _19
-
-_4:
- if int32(_pExpr.X0) != i32(160) || (_pExpr.X8) != (_pSubst.X1) {
- goto _21
+ if (_pItem.X2) == nil {
+ goto _1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _pSubst.X2
-_21:
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(12 /* X4 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_pExpr.X4))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(16 /* X5 */))))) = _substExpr(tls, _pSubst, (*XExpr)(_pExpr.X5))
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _22
+ if Xsqlite3_stricmp(tls, _pItem.X1, _pThis.X1) != i32(0) {
+ goto _1
}
-
- _substSelect(tls, _pSubst, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))), i32(1))
- goto _23
-
-_22:
- _substExprList(tls, _pSubst, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
-_23:
-_19:
- r0 = _pExpr
- return
-}
-
-var _substExprØ00__func__Ø000 [10]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_substExprØ00__func__Ø000[0], str(102428), 10)
-}
-
-func _sqlite3VectorErrorMsg(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) { // sqlite3.c:93361:1
- if ((_pExpr.X2) & uint32(i32(2048))) == 0 {
- goto _0
+ if Xsqlite3_stricmp(tls, _pItem.X2, _pThis.X2) != i32(0) {
+ goto _1
}
+ if _sqlite3ExprCompare(tls, (*XExpr)((*XSelect)(_pThis.X5).X9), (*XExpr)((*XSelect)(_pItem.X5).X9), i32(-1)) != 0 {
+ goto _1
+ }
+ return _pItem
- _sqlite3SubselectError(tls, _pParse, (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0).X0, i32(1))
- goto _1
-
-_0:
- _sqlite3ErrorMsg(tls, _pParse, str(44332))
_1:
+ *(*uintptr)(unsafe.Pointer(&_pItem)) += uintptr(68)
+ goto _0
+_3:
+ return nil
}
-func _sqlite3SubselectError(tls *crt.TLS, _pParse *XParse, _nActual int32, _nExpect int32) { // sqlite3.c:93344:1
- var _zFmt *int8 // sqlite3.c:93345:14
- _ = _zFmt
- _zFmt = str(102440)
- _sqlite3ErrorMsg(tls, _pParse, _zFmt, _nActual, _nExpect)
+func _sqlite3VdbeChangeP1(tls *crt.TLS, _p *TVdbe, _addr uint32, _val int32) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sqlite3VdbeGetOp(tls, _p, int32(_addr)))) + uintptr(4 /* X3 */))) = _val
}
-var _substSelectØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_substSelectØ00__func__Ø000[0], str(102484), 12)
+// Change the value of the opcode, or P1, P2, P3, or P5 operands
+// for a specific instruction.
+func _sqlite3VdbeChangeOpcode(tls *crt.TLS, _p *TVdbe, _addr uint32, _iNewOpcode uint8) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sqlite3VdbeGetOp(tls, _p, int32(_addr)))) + uintptr(0 /* X0 */))) = _iNewOpcode
}
-func _multiSelect(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) { // sqlite3.c:118757:1
- var _rc int32 // sqlite3.c:118762:7
- _ = _rc
- var _pPrior *XSelect // sqlite3.c:118763:10
- _ = _pPrior
- var _v *TVdbe // sqlite3.c:118764:8
- _ = _v
- var _dest XSelectDest // sqlite3.c:118765:14
- _ = _dest
- var _pDelete *XSelect // sqlite3.c:118766:10
- _ = _pDelete
- var _db *Xsqlite3 // sqlite3.c:118767:11
- _ = _db
- var _iSub1 int32 // sqlite3.c:118769:7
- _ = _iSub1
- var _iSub2 int32 // sqlite3.c:118770:7
- _ = _iSub2
- var _8_addr int32 // sqlite3.c:118834:11
- _ = _8_addr
- var _8_nLimit int32 // sqlite3.c:118835:11
- _ = _8_nLimit
- var _14_unionTab int32 // sqlite3.c:118878:11
- _ = _14_unionTab
- var _14_op uint8 // sqlite3.c:118879:10
- _ = _14_op
- var _14_priorOp int32 // sqlite3.c:118880:11
- _ = _14_priorOp
- var _14_pLimit *XExpr // sqlite3.c:118881:12
- _ = _14_pLimit
- var _14_pOffset *XExpr // sqlite3.c:118881:21
- _ = _14_pOffset
- var _14_addr int32 // sqlite3.c:118882:11
- _ = _14_addr
- var _14_uniondest XSelectDest // sqlite3.c:118883:18
- _ = _14_uniondest
- var _21_iCont int32 // sqlite3.c:118955:13
- _ = _21_iCont
- var _21_iBreak int32 // sqlite3.c:118955:20
- _ = _21_iBreak
- var _21_iStart int32 // sqlite3.c:118955:28
- _ = _21_iStart
- var _22_pFirst *XSelect // sqlite3.c:118958:18
- _ = _22_pFirst
- var _23_tab1 int32 // sqlite3.c:118977:11
- _ = _23_tab1
- var _23_tab2 int32 // sqlite3.c:118977:17
- _ = _23_tab2
- var _23_iCont int32 // sqlite3.c:118978:11
- _ = _23_iCont
- var _23_iBreak int32 // sqlite3.c:118978:18
- _ = _23_iBreak
- var _23_iStart int32 // sqlite3.c:118978:26
- _ = _23_iStart
- var _23_pLimit *XExpr // sqlite3.c:118979:12
- _ = _23_pLimit
- var _23_pOffset *XExpr // sqlite3.c:118979:21
- _ = _23_pOffset
- var _23_addr int32 // sqlite3.c:118980:11
- _ = _23_addr
- var _23_intersectdest XSelectDest // sqlite3.c:118981:18
- _ = _23_intersectdest
- var _23_r1 int32 // sqlite3.c:118982:11
- _ = _23_r1
- var _25_pFirst *XSelect // sqlite3.c:119033:16
- _ = _25_pFirst
- var _26_i int32 // sqlite3.c:119068:9
- _ = _26_i
- var _26_pKeyInfo *XKeyInfo // sqlite3.c:119069:13
- _ = _26_pKeyInfo
- var _26_pLoop *XSelect // sqlite3.c:119070:12
- _ = _26_pLoop
- var _26_apColl **XCollSeq // sqlite3.c:119071:13
- _ = _26_apColl
- var _26_nCol int32 // sqlite3.c:119072:9
- _ = _26_nCol
- var _31_addr int32 // sqlite3.c:119090:13
- _ = _31_addr
- _rc = i32(0)
- _pDelete = nil
- _iSub1 = i32(0)
- _iSub2 = i32(0)
+// Generate the beginning of the loop used for WHERE clause processing.
+// The return value is a pointer to an opaque structure that contains
+// information needed to terminate the loop. Later, the calling routine
+// should invoke sqlite3WhereEnd() with the return value of this function
+// in order to complete the WHERE clause processing.
+//
+// If an error occurs, this routine returns NULL.
+//
+// The basic idea is to do a nested loop, one loop for each table in
+// the FROM clause of a select. (INSERT and UPDATE statements are the
+// same as a SELECT with only a single table in the FROM clause.) For
+// example, if the SQL is this:
+//
+// SELECT * FROM t1, t2, t3 WHERE ...;
+//
+// Then the code generated is conceptually like the following:
+//
+// foreach row1 in t1 do \ Code generated
+// foreach row2 in t2 do |-- by sqlite3WhereBegin()
+// foreach row3 in t3 do /
+// ...
+// end \ Code generated
+// end |-- by sqlite3WhereEnd()
+// end /
+//
+// Note that the loops might not be nested in the order in which they
+// appear in the FROM clause if a different order is better able to make
+// use of indices. Note also that when the IN operator appears in
+// the WHERE clause, it might result in additional nested loops for
+// scanning through all values on the right-hand side of the IN.
+//
+// There are Btree cursors associated with each table. t1 uses cursor
+// number pTabList->a[0].iCursor. t2 uses the cursor pTabList->a[1].iCursor.
+// And so forth. This routine generates code to open those VDBE cursors
+// and sqlite3WhereEnd() generates the code to close them.
+//
+// The code that sqlite3WhereBegin() generates leaves the cursors named
+// in pTabList pointing at their appropriate entries. The [...] code
+// can use OP_Column and OP_Rowid opcodes on these cursors to extract
+// data from the various tables of the loop.
+//
+// If the WHERE clause is empty, the foreach loops must each scan their
+// entire tables. Thus a three-way join is an O(N^3) operation. But if
+// the tables have indices and there are terms in the WHERE clause that
+// refer to those indices, a complete table scan can be avoided and the
+// code will run much faster. Most of the work of this routine is checking
+// to see if there are indices that can be used to speed up the loop.
+//
+// Terms of the WHERE clause are also used to limit which rows actually
+// make it to the "..." in the middle of the loop. After each "foreach",
+// terms of the WHERE clause that use only terms in that loop and outer
+// loops are evaluated and if false a jump is made around all subsequent
+// inner loops (or around the "..." if the test occurs within the inner-
+// most loop)
+//
+// OUTER JOINS
+//
+// An outer join of tables t1 and t2 is conceptally coded as follows:
+//
+// foreach row1 in t1 do
+// flag = 0
+// foreach row2 in t2 do
+// start:
+// ...
+// flag = 1
+// end
+// if flag==0 then
+// move the row2 cursor to a null row
+// goto start
+// fi
+// end
+//
+// ORDER BY CLAUSE PROCESSING
+//
+// pOrderBy is a pointer to the ORDER BY clause (or the GROUP BY clause
+// if the WHERE_GROUPBY flag is set in wctrlFlags) of a SELECT statement
+// if there is one. If there is no ORDER BY clause or if this routine
+// is called from an UPDATE or DELETE statement, then pOrderBy is NULL.
+//
+// The iIdxCur parameter is the cursor number of an index. If
+// WHERE_OR_SUBCLAUSE is set, iIdxCur is the cursor number of an index
+// to use for OR clause processing. The WHERE clause should use this
+// specific cursor. If WHERE_ONEPASS_DESIRED is set, then iIdxCur is
+// the first cursor in an array of cursors for all indices. iIdxCur should
+// be used to compute the appropriate cursor depending on which index is
+// used.
+func _sqlite3WhereBegin(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pWhere *XExpr, _pOrderBy *XExprList, _pResultSet *XExprList, _wctrlFlags uint16, _iAuxArg int32) (r0 *XWhereInfo) {
+ var _nByteWInfo, _nTabList, _ii, _rc, _23_wsFlags, _23_bOnerow, _27_iDb, _29_iCur, _31_op, _33_n, _37_iIndexCur, _37_op, _45_addrExplain, _45_wsFlags int32
+ var _notReady, _9_m, _17_tabUsed, _33_b uint64
+ var _29_pVTab *int8
+ var _bFordelete uint8
+ var _db *Xsqlite3
+ var _27_pTab *XTable
+ var _v *TVdbe
+ var _27_pTabItem *TSrcList_item
+ var _37_pIx, _39_pJ *XIndex
+ var _pWInfo *XWhereInfo
+ var _pLoop *XWhereLoop
+ var _pLevel *XWhereLevel
+ var _19_pTerm, _19_pEnd *XWhereTerm
+ var _pMaskSet *XWhereMaskSet
+ var _sWLB XWhereLoopBuilder
+ _v = (*TVdbe)(_pParse.X2)
+ _bFordelete = u8(0)
func() {
- if _p == nil || (*XSelect)(_p.X13) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118776), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102496)))
+ if (int32(_wctrlFlags)&i32(8)) != i32(0) && ((int32(_wctrlFlags)&i32(4)) == i32(0) || (int32(_wctrlFlags)&i32(32)) != i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134785), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(100807)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if ((_p.X3)&uint32(i32(8192))) != uint32(i32(0)) && int32(_p.X1) != i32(116) && int32(_p.X1) != i32(115) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118777), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102512)))
+ if (int32(_wctrlFlags)&i32(32)) != i32(0) && (int32(_wctrlFlags)&i32(16384)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(100935)))
crt.X__builtin_abort(tls)
}
}()
_db = (*Xsqlite3)(_pParse.X0)
- _pPrior = (*XSelect)(_p.X13)
- _dest = *_pDest
- if (*XExprList)(_pPrior.X12) == nil {
- goto _7
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(102580), unsafe.Pointer(_selectOpName(tls, int32(_p.X1))))
- _rc = i32(1)
- goto _multi_select_end
-
-_7:
- if (*XExpr)(_pPrior.X15) == nil {
- goto _8
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sWLB), i32(0), u32(24))
+ if (_pOrderBy != nil) && ((_pOrderBy.X0) >= i32(64)) {
+ _pOrderBy = nil
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(102628), unsafe.Pointer(_selectOpName(tls, int32(_p.X1))))
- _rc = i32(1)
- goto _multi_select_end
-
-_8:
- _v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118795), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(43120)))
- crt.X__builtin_abort(tls)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(8 /* X2 */))))) = _pOrderBy
+ if (int32(_db.X13) & i32(32)) != i32(0) {
+ {
+ p := &_wctrlFlags
+ *p = uint16(int32(*p) & i32(-257))
+ sink14 = *p
}
- }()
- if int32(_dest.X0) != i32(12) {
- goto _11
}
-
- func() {
- if (*XExprList)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118800), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102676)))
- crt.X__builtin_abort(tls)
+ if (_pTabList.X0) > i32(64) {
+ _sqlite3ErrorMsg(tls, _pParse, str(101009), i32(64))
+ return nil
+ }
+ _nTabList = func() int32 {
+ if (int32(_wctrlFlags) & i32(32)) != 0 {
+ return i32(1)
}
+ return (_pTabList.X0)
}()
- _sqlite3VdbeAddOp2(tls, _v, i32(110), _dest.X2, (*XExprList)(_p.X0).X0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_dest)) + uintptr(0 /* X0 */))) = uint8(i32(14))
-_11:
- if ((_p.X3) & uint32(i32(1024))) == 0 {
- goto _14
+ _nByteWInfo = int32(((u32(820) + (uint32(_nTabList-i32(1)) * u32(76))) + uint32(i32(7))) & uint32(i32(-8)))
+ _pWInfo = (*XWhereInfo)(_sqlite3DbMallocRawNN(tls, _db, uint64(uint32(_nByteWInfo)+u32(72))))
+ if (_db.X17) != 0 {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pWInfo))
+ _pWInfo = nil
+ goto _whereBeginError
}
-
- _rc = _multiSelectValues(tls, _pParse, _p, &_dest)
- goto _multi_select_end
-
-_14:
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(4 /* X1 */))))) = _pTabList
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(8 /* X2 */))))) = _pOrderBy
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(16 /* X4 */))))) = _pWhere
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(12 /* X3 */))))) = _pResultSet
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */))))) + 4*uintptr(i32(0)))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */)))))+4*uintptr(i32(1)))), i32(-1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(46 /* X11 */))) = uint8(_nTabList)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(36 /* X8 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(32 /* X7 */))), _sqlite3VdbeMakeLabel(tls, _v))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(44 /* X10 */))) = _wctrlFlags
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(20 /* X5 */))) = int16(_iAuxArg)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(40 /* X9 */))) = int32(_pParse.X42)
+ crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(47 /* X12 */)))), i32(0), u32(29))
+ crt.Xmemset(tls, (unsafe.Pointer)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0))))), i32(0), u32(72)+(uint32(_nTabList)*u32(76)))
func() {
- if (*XExprList)(_p.X0) == nil || (*XExprList)(_pPrior.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118815), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102688)))
+ if int32(_pWInfo.X14) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101037)))
crt.X__builtin_abort(tls)
}
}()
+ _pMaskSet = (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(484 /* X23 */)))
+ *(**XWhereInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(0 /* X0 */))))) = _pWInfo
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(4 /* X1 */))))) = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
+ *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(12 /* X3 */))))) = (*XWhereLoop)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pWInfo)))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_nByteWInfo)))))))))
func() {
- if ((*XExprList)(_p.X0).X0) != ((*XExprList)(_pPrior.X0).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118816), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102716)))
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer((*XWhereLoop)(_sWLB.X3)))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134858), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101067)))
crt.X__builtin_abort(tls)
}
}()
- if ((_p.X3) & uint32(i32(8192))) == 0 {
- goto _20
- }
-
- _generateWithRecursiveQuery(tls, _pParse, _p, &_dest)
- goto _21
-
-_20:
- if (*XExprList)(_p.X12) == nil {
- goto _22
- }
- return _multiSelectOrderBy(tls, _pParse, _p, _pDest)
-
-_22:
- switch int32(_p.X1) {
- case i32(115):
- goto _27
- case i32(116):
- goto _25
- case i32(117):
- goto _26
- default:
- goto _28
+ _whereLoopInit(tls, (*XWhereLoop)(_sWLB.X3))
+ *(*int8)(unsafe.Pointer(uintptr(_sWLB.X3) + uintptr(16 /* X2 */))) = int8(i32(42))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet)) + uintptr(0 /* X0 */))) = i32(0)
+ _sqlite3WhereClauseInit(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _pWInfo)
+ _sqlite3WhereSplit(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _pWhere, uint8(i32(71)))
+ _ii = i32(0)
+_18:
+ if _ii >= ((*XWhereClause)(_sWLB.X1).X3) {
+ goto _21
}
-
-_25:
- _8_addr = i32(0)
- func() {
- if (*XExpr)(_pPrior.X15) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118836), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102756)))
- crt.X__builtin_abort(tls)
+ if (_nTabList == i32(0)) || _sqlite3ExprIsConstantNotJoin(tls, (*XExpr)((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X5)+48*uintptr(_ii))).X0)) != 0 {
+ _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X5)+48*uintptr(_ii))).X0), _pWInfo.X8, i32(16))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X5)+48*uintptr(_ii))))) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(4))
+ sink14 = *p
}
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(12 /* X4 */))) = _p.X4
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(16 /* X5 */))) = _p.X5
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(68 /* X15 */))))) = (*XExpr)(_p.X15)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(72 /* X16 */))))) = (*XExpr)(_p.X16)
- _iSub1 = _pParse.X59
- _rc = _sqlite3Select(tls, _pParse, _pPrior, &_dest)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
- if _rc == 0 {
- goto _31
- }
-
- goto _multi_select_end
-
-_31:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = _pPrior.X4
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = _pPrior.X5
- if (_p.X4) == 0 {
- goto _32
}
-
- _8_addr = _sqlite3VdbeAddOp1(tls, _v, i32(22), _p.X4)
- _sqlite3VdbeComment(tls, _v, str(102772))
- if (_p.X5) == 0 {
- goto _33
+ _ii += 1
+ goto _18
+_21:
+ if _nTabList != i32(0) {
+ goto _24
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(149), _p.X4, (_p.X5)+i32(1), _p.X5)
-_33:
-_32:
- _iSub2 = _pParse.X59
- _rc = _sqlite3Select(tls, _pParse, _p, &_dest)
- _pDelete = (*XSelect)(_p.X13)
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEstAdd(tls, _p.X2, _pPrior.X2)
- if (*XExpr)(_pPrior.X15) == nil || _sqlite3ExprIsInteger(tls, (*XExpr)(_pPrior.X15), &_8_nLimit) == 0 || _8_nLimit <= i32(0) || int32(_p.X2) <= int32(_sqlite3LogEst(tls, uint64(_8_nLimit))) {
- goto _37
+ if _pOrderBy != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = int8(_pOrderBy.X0)
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEst(tls, uint64(_8_nLimit))
-_37:
- if _8_addr == 0 {
- goto _38
+ if (int32(_wctrlFlags) & i32(256)) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(1))
}
-
- _sqlite3VdbeJumpHere(tls, _v, _8_addr)
-_38:
- goto _39
-
-_26:
+_24:
+ _ii = i32(0)
_27:
- _14_op = u8(0)
- _14_priorOp = i32(1)
- if int32(_dest.X0) != _14_priorOp {
- goto _40
+ if _ii >= (_pTabList.X0) {
+ goto _30
}
-
+ _createMask(tls, _pMaskSet, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_ii))).X11)
+ _sqlite3WhereTabFuncArgs(tls, _pParse, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_ii))), (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))))
+ _ii += 1
+ goto _27
+_30:
+ _ii = i32(0)
+_31:
+ if _ii >= (_pTabList.X0) {
+ goto _34
+ }
+ _9_m = _sqlite3WhereGetMask(tls, _pMaskSet, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_ii))).X11)
func() {
- if (*XExpr)(_p.X15) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118892), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102800)))
+ if _9_m != (u64(1) << uint(_ii)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101099)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if (*XExpr)(_p.X16) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118893), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102816)))
- crt.X__builtin_abort(tls)
+ _ii += 1
+ goto _31
+_34:
+ _sqlite3WhereExprAnalyze(tls, _pTabList, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))))
+ if (_db.X17) != 0 {
+ goto _whereBeginError
+ }
+ if (int32(_wctrlFlags) & i32(256)) == 0 {
+ goto _38
+ }
+ if _isDistinctRedundant(tls, _pParse, _pTabList, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _pResultSet) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(1))
+ goto _40
+ }
+ if _pOrderBy == nil {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(44 /* X10 */)))
+ *p = uint16(int32(*p) | i32(128))
+ sink14 = *p
}
- }()
- _14_unionTab = _dest.X2
- goto _45
-
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(8 /* X2 */))))) = _pResultSet
+ }
_40:
- _14_unionTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- func() {
- if (*XExprList)(_p.X12) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118900), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102832)))
- crt.X__builtin_abort(tls)
- }
- }()
- _14_addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _14_unionTab, i32(0))
- func() {
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0))))) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118902), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102848)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = _14_addr
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_findRightmost(tls, _p))) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(32))
- sink5 = *p
+_38:
+ if _nTabList == i32(1) && _whereShortCut(tls, &_sWLB) != i32(0) {
+ goto _43
}
- func() {
- if (*XExprList)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118905), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102676)))
- crt.X__builtin_abort(tls)
- }
- }()
-_45:
- func() {
- if (*XExprList)(_pPrior.X12) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118910), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102876)))
- crt.X__builtin_abort(tls)
+ _rc = _whereLoopAddAll(tls, &_sWLB)
+ if _rc != 0 {
+ goto _whereBeginError
+ }
+ _wherePathSolver(tls, _pWInfo, int16(i32(0)))
+ if (_db.X17) != 0 {
+ goto _whereBeginError
+ }
+ if (*XExprList)(_pWInfo.X2) == nil {
+ goto _46
+ }
+ _wherePathSolver(tls, _pWInfo, int16(int32(_pWInfo.X21)+i32(1)))
+ if (_db.X17) != 0 {
+ goto _whereBeginError
+ }
+_46:
+_43:
+ if ((*XExprList)(_pWInfo.X2) == nil) && (((_db.X6) & i32(131072)) != i32(0)) {
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = u64(18446744073709551615)
+ }
+ if (_pParse.X16) != 0 || func() int32 {
+ if (_db.X17) != 0 {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134972), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
}
- }()
- _sqlite3SelectDestInit(tls, &_14_uniondest, _14_priorOp, _14_unionTab)
- _iSub1 = _pParse.X59
- _rc = _sqlite3Select(tls, _pParse, _pPrior, &_14_uniondest)
- if _rc == 0 {
- goto _54
+ return i32(0)
+ }() != 0 {
+ goto _whereBeginError
}
-
- goto _multi_select_end
-
-_54:
- if int32(_p.X1) != i32(117) {
- goto _55
+ if int32(_pWInfo.X11) < i32(2) || _pResultSet == nil || (int32(_db.X13)&i32(1024)) != i32(0) {
+ goto _56
}
-
- _14_op = uint8(i32(2))
- goto _56
-
-_55:
- func() {
- if int32(_p.X1) != i32(115) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118923), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102896)))
- crt.X__builtin_abort(tls)
+ _17_tabUsed = _sqlite3WhereExprListUsage(tls, _pMaskSet, _pResultSet)
+ if (*XExprList)(_sWLB.X2) != nil {
+ {
+ p := &_17_tabUsed
+ *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_sWLB.X2))
+ sink17 = *p
}
- }()
- _14_op = uint8(i32(1))
-_56:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
- _14_pLimit = (*XExpr)(_p.X15)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
- _14_pOffset = (*XExpr)(_p.X16)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_14_uniondest)) + uintptr(0 /* X0 */))) = _14_op
- _iSub2 = _pParse.X59
- _rc = _sqlite3Select(tls, _pParse, _p, &_14_uniondest)
- _sqlite3ExprListDelete(tls, _db, (*XExprList)(_p.X12))
- _pDelete = (*XSelect)(_p.X13)
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
- if int32(_p.X1) != i32(115) {
+ }
+_58:
+ if int32(_pWInfo.X11) < i32(2) {
goto _59
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEstAdd(tls, _p.X2, _pPrior.X2)
+ _pLoop = (*XWhereLoop)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(int32(_pWInfo.X11)-i32(1)))).X18)
+ if (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */)))))+68*uintptr(_pLoop.X3)))))+uintptr(36 /* X9 */))).X0) & i32(8)) == i32(0) {
+ goto _59
+ }
+ if ((int32(_wctrlFlags) & i32(256)) == i32(0)) && (((_pLoop.X9) & uint32(i32(4096))) == uint32(i32(0))) {
+ goto _59
+ }
+ if (_17_tabUsed & (_pLoop.X1)) != uint64(i32(0)) {
+ goto _59
+ }
+ _19_pEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)((*XWhereClause)(_sWLB.X1).X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X3)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
+ _19_pTerm = (*XWhereTerm)((*XWhereClause)(_sWLB.X1).X5)
+_64:
+ if uintptr(unsafe.Pointer(_19_pTerm)) >= uintptr(unsafe.Pointer(_19_pEnd)) {
+ goto _67
+ }
+ if (((_19_pTerm.X12) & (_pLoop.X1)) != uint64(i32(0))) && ((((*XExpr)(_19_pTerm.X0).X2) & uint32(i32(1))) == uint32(i32(0))) {
+ goto _67
+ }
+ *(*uintptr)(unsafe.Pointer(&_19_pTerm)) += uintptr(48)
+ goto _64
+_67:
+ if uintptr(unsafe.Pointer(_19_pTerm)) < uintptr(unsafe.Pointer(_19_pEnd)) {
+ goto _59
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(46 /* X11 */))) -= 1
+ _nTabList -= 1
+ goto _58
_59:
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X15))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _14_pLimit
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _14_pOffset
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = i32(0)
+_56:
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr(_pWInfo.X0) + uintptr(144 /* X42 */)))
+ *p = (*p) + uint32(_pWInfo.X21)
+ sink5 = *p
+ }
func() {
- if _14_unionTab != (_dest.X2) && int32(_dest.X0) == _14_priorOp {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118953), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102912)))
+ if (int32(_wctrlFlags)&i32(4)) != i32(0) && int32(_pWInfo.X11) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135040), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101114)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_dest.X0) == _14_priorOp {
- goto _63
+ if (int32(_wctrlFlags) & i32(4)) == i32(0) {
+ goto _74
}
-
- func() {
- if (*XExprList)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118956), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102676)))
- crt.X__builtin_abort(tls)
+ _23_wsFlags = int32((*XWhereLoop)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(i32(0)))).X18).X9)
+ _23_bOnerow = bool2int((_23_wsFlags & i32(4096)) != i32(0))
+ if _23_bOnerow == 0 && ((int32(_wctrlFlags)&i32(8)) == i32(0) || i32(0) != (_23_wsFlags&i32(1024))) {
+ goto _77
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(49 /* X14 */))) = uint8(func() int32 {
+ if _23_bOnerow != 0 {
+ return i32(1)
}
- }()
- if int32(_dest.X0) != i32(9) {
- goto _66
+ return i32(2)
+ }())
+ if (((*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X4).X9)&uint32(i32(32))) != uint32(i32(0)) || (_23_wsFlags&i32(64)) == 0 {
+ goto _81
}
-
- _22_pFirst = _p
-_67:
- if (*XSelect)(_22_pFirst.X13) == nil {
- goto _68
+ if (int32(_wctrlFlags) & i32(8)) != 0 {
+ _bFordelete = uint8(i32(8))
}
-
- _22_pFirst = (*XSelect)(_22_pFirst.X13)
- goto _67
-
-_68:
- _generateColumnNames(tls, _pParse, (*XSrcList)(_22_pFirst.X8), (*XExprList)(_22_pFirst.X0))
-_66:
- _21_iBreak = _sqlite3VdbeMakeLabel(tls, _v)
- _21_iCont = _sqlite3VdbeMakeLabel(tls, _v)
- _computeLimitRegisters(tls, _pParse, _p, _21_iBreak)
- _sqlite3VdbeAddOp2(tls, _v, i32(37), _14_unionTab, _21_iBreak)
- _21_iStart = _sqlite3VdbeCurrentAddr(tls, _v)
- _selectInnerLoop(tls, _pParse, _p, (*XExprList)(_p.X0), _14_unionTab, nil, nil, &_dest, _21_iCont, _21_iBreak)
- _sqlite3VdbeResolveLabel(tls, _v, _21_iCont)
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _14_unionTab, _21_iStart)
- _sqlite3VdbeResolveLabel(tls, _v, _21_iBreak)
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _14_unionTab, i32(0))
-_63:
- goto _39
-
-_28:
+ *(*uint32)(unsafe.Pointer(uintptr((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))).X18) + uintptr(40 /* X9 */))) = uint32(_23_wsFlags & i32(-65))
+_81:
+_77:
+_74:
+ *func() **XWhereLevel { _ii = i32(0); return &_pLevel }() = (*XWhereLevel)(unsafe.Pointer((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(744 /* X24 */)))))
+_83:
+ if _ii >= _nTabList {
+ goto _86
+ }
+ _27_pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
+ _27_pTab = (*XTable)(_27_pTabItem.X4)
+ _27_iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_27_pTab.X20))
+ _pLoop = (*XWhereLoop)(_pLevel.X18)
+ if (((_27_pTab.X9) & uint32(i32(2))) != uint32(i32(0))) || ((*XSelect)(_27_pTab.X3) != nil) {
+ goto _89
+ }
+ if ((_pLoop.X9) & uint32(i32(1024))) != uint32(i32(0)) {
+ _29_pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _27_pTab)))
+ _29_iCur = _27_pTabItem.X11
+ _sqlite3VdbeAddOp4(tls, _v, i32(158), _29_iCur, i32(0), i32(0), _29_pVTab, i32(-8))
+ goto _91
+ }
+ if (_27_pTab.X16) != 0 {
+ goto _93
+ }
+ if ((_pLoop.X9)&uint32(i32(64))) != uint32(i32(0)) || (int32(_wctrlFlags)&i32(32)) != i32(0) {
+ goto _95
+ }
+ _31_op = i32(106)
+ if int32(_pWInfo.X14) != i32(0) {
+ _31_op = i32(107)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */))))) + 4*uintptr(i32(0)))) = _27_pTabItem.X11
+ }
+ _sqlite3OpenTable(tls, _pParse, _27_pTabItem.X11, _27_iDb, _27_pTab, _31_op)
func() {
- if int32(_p.X1) != i32(118) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118976), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102960)))
+ if (_27_pTabItem.X11) != (_pLevel.X1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135090), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101175)))
crt.X__builtin_abort(tls)
}
}()
- _23_tab1 = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _23_tab2 = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ if int32(_pWInfo.X14) != i32(0) || int32(_27_pTab.X11) >= i32(64) || ((_27_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) {
+ goto _101
+ }
+ _33_b = _27_pTabItem.X14
+ _33_n = i32(0)
+_102:
+ if _33_b == 0 {
+ goto _105
+ }
+ *func() *int32 { _33_b = _33_b >> uint(i32(1)); return &_33_n }() += 1
+ goto _102
+_105:
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)((unsafe.Pointer)(uintptr(_33_n))), i32(-11))
func() {
- if (*XExprList)(_p.X12) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118990), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102832)))
+ if _33_n > int32(_27_pTab.X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135098), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101210)))
crt.X__builtin_abort(tls)
}
}()
- _23_addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _23_tab1, i32(0))
+_101:
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_bFordelete))
+ goto _108
+_95:
+ _sqlite3TableLock(tls, _pParse, _27_iDb, _27_pTab.X7, uint8(i32(0)), _27_pTab.X0)
+_108:
+_93:
+_91:
+_89:
+ if ((_pLoop.X9) & uint32(i32(512))) == 0 {
+ goto _109
+ }
+ _37_pIx = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
+ _37_op = i32(106)
func() {
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0))))) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118993), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102848)))
+ if _iAuxArg == i32(0) && (int32(_pWInfo.X10)&i32(4)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135120), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101224)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = _23_addr
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_findRightmost(tls, _p))) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(32))
- sink5 = *p
+ if ((((_27_pTab.X9) & uint32(i32(32))) != uint32(i32(0))) && (int32((uint32(_37_pIx.X16)<>uint(i32(30))) == i32(2))) && ((int32(_wctrlFlags) & i32(32)) != i32(0)) {
+ _37_iIndexCur = _pLevel.X1
+ _37_op = i32(0)
+ goto _116
+ }
+ if int32(_pWInfo.X14) == i32(0) {
+ goto _117
}
+ _39_pJ = (*XIndex)((*XTable)(_27_pTabItem.X4).X2)
+ _37_iIndexCur = _iAuxArg
func() {
- if (*XExprList)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118996), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102676)))
+ if (int32(_wctrlFlags) & i32(4)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135131), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101286)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3SelectDestInit(tls, &_23_intersectdest, i32(1), _23_tab1)
- _iSub1 = _pParse.X59
- _rc = _sqlite3Select(tls, _pParse, _pPrior, &_23_intersectdest)
- if _rc == 0 {
- goto _77
+_120:
+ if func() int32 {
+ if _39_pJ != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 && (_39_pJ != _37_pIx) {
+ _37_iIndexCur += 1
+ _39_pJ = (*XIndex)(_39_pJ.X5)
+ goto _120
}
-
- goto _multi_select_end
-
-_77:
- _23_addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _23_tab2, i32(0))
+ _37_op = i32(107)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */))))) + 4*uintptr(i32(1)))) = _37_iIndexCur
+ goto _125
+_117:
+ if _iAuxArg != 0 && ((int32(_wctrlFlags) & i32(32)) != i32(0)) {
+ _37_iIndexCur = _iAuxArg
+ _37_op = i32(105)
+ goto _128
+ }
+ _37_iIndexCur = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+_128:
+_125:
+_116:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(8 /* X2 */))) = _37_iIndexCur
func() {
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1))))) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119010), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102980)))
+ if (*XSchema)(_37_pIx.X6) != (*XSchema)(_27_pTab.X20) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135145), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101321)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1)))) = _23_addr
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
- _23_pLimit = (*XExpr)(_p.X15)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
- _23_pOffset = (*XExpr)(_p.X16)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_23_intersectdest)) + uintptr(8 /* X2 */))) = _23_tab2
- _iSub2 = _pParse.X59
- _rc = _sqlite3Select(tls, _pParse, _p, &_23_intersectdest)
- _pDelete = (*XSelect)(_p.X13)
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
- if int32(_p.X2) <= int32(_pPrior.X2) {
- goto _80
- }
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _pPrior.X2
-_80:
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X15))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _23_pLimit
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _23_pOffset
func() {
- if (*XExprList)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119031), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(102676)))
+ if _37_iIndexCur < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(101349)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_dest.X0) != i32(9) {
- goto _83
+ if _37_op == 0 {
+ goto _133
+ }
+ _sqlite3VdbeAddOp3(tls, _v, _37_op, _37_iIndexCur, _37_pIx.X11, _27_iDb)
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _37_pIx)
+ if (((((_pLoop.X9) & uint32(i32(15))) != uint32(i32(0))) && (((_pLoop.X9) & uint32(i32(32770))) == uint32(i32(0)))) && ((int32(_pWInfo.X10) & i32(1)) == i32(0))) && (int32(_pWInfo.X16) != i32(2)) {
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(2)))
+ }
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(_37_pIx.X0))
+_133:
+_109:
+ if _27_iDb >= i32(0) {
+ _sqlite3CodeVerifySchema(tls, _pParse, _27_iDb)
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XWhereLevel { _ii += 1; return &_pLevel }())) += uintptr(76)
+ goto _83
+_86:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(56 /* X18 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
+ if (_db.X17) != 0 {
+ goto _whereBeginError
+ }
+ _notReady = u64(18446744073709551615)
+ _ii = i32(0)
+_140:
+ if _ii >= _nTabList {
+ goto _143
+ }
+ _pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_ii)))
+ _45_wsFlags = int32((*XWhereLoop)(_pLevel.X18).X9)
+ if (((*XWhereLoop)(_pLevel.X18).X9) & uint32(i32(16384))) == uint32(i32(0)) {
+ goto _144
}
+ _constructAutomaticIndex(tls, _pParse, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_pLevel.X11))), _notReady, _pLevel)
+ if (_db.X17) != 0 {
+ goto _whereBeginError
+ }
+_144:
+ _45_addrExplain = _sqlite3WhereExplainOneScan(tls, _pParse, _pTabList, _pLevel, _ii, int32(_pLevel.X11), _wctrlFlags)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(32 /* X8 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
+ _notReady = _sqlite3WhereCodeOneLoopStart(tls, _pWInfo, _ii, _notReady)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(32 /* X7 */))) = _pLevel.X6
+ if ((_45_wsFlags & i32(8192)) == i32(0)) && ((int32(_wctrlFlags) & i32(32)) == i32(0)) {
+ }
+ _ii += 1
+ goto _140
+_143:
+ return _pWInfo
- _25_pFirst = _p
-_84:
- if (*XSelect)(_25_pFirst.X13) == nil {
- goto _85
+_whereBeginError:
+ if _pWInfo != nil {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(144 /* X42 */))) = uint32(_pWInfo.X9)
+ _whereInfoFree(tls, _db, _pWInfo)
}
+ return nil
- _25_pFirst = (*XSelect)(_25_pFirst.X13)
- goto _84
+ _ = _sWLB
+ _ = _45_addrExplain
+ panic(0)
+}
-_85:
- _generateColumnNames(tls, _pParse, (*XSrcList)(_25_pFirst.X8), (*XExprList)(_25_pFirst.X0))
-_83:
- _23_iBreak = _sqlite3VdbeMakeLabel(tls, _v)
- _23_iCont = _sqlite3VdbeMakeLabel(tls, _v)
- _computeLimitRegisters(tls, _pParse, _p, _23_iBreak)
- _sqlite3VdbeAddOp2(tls, _v, i32(37), _23_tab1, _23_iBreak)
- _23_r1 = _sqlite3GetTempReg(tls, _pParse)
- _23_iStart = _sqlite3VdbeAddOp2(tls, _v, i32(124), _23_tab1, _23_r1)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _23_tab2, _23_iCont, _23_r1, i32(0))
- _sqlite3ReleaseTempReg(tls, _pParse, _23_r1)
- _selectInnerLoop(tls, _pParse, _p, (*XExprList)(_p.X0), _23_tab1, nil, nil, &_dest, _23_iCont, _23_iBreak)
- _sqlite3VdbeResolveLabel(tls, _v, _23_iCont)
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _23_tab1, _23_iStart)
- _sqlite3VdbeResolveLabel(tls, _v, _23_iBreak)
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _23_tab2, i32(0))
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _23_tab1, i32(0))
- goto _39
+var _sqlite3WhereBeginØ00__func__Ø000 [18]int8
-_39:
-_21:
- _explainComposite(tls, _pParse, int32(_p.X1), _iSub1, _iSub2, bool2int(int32(_p.X1) != i32(116)))
- if ((_p.X3) & uint32(i32(32))) == 0 {
- goto _86
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WhereBeginØ00__func__Ø000[0], str(101362), 18)
+}
- func() {
- if (*XSelect)(_p.X14) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119074), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(103008)))
- crt.X__builtin_abort(tls)
- }
- }()
- _26_nCol = (*XExprList)(_p.X0).X0
- _26_pKeyInfo = _sqlite3KeyInfoAlloc(tls, _db, _26_nCol, i32(1))
- if _26_pKeyInfo != nil {
- goto _89
- }
+// Convert bulk memory into a valid WhereLoop that can be passed
+// to whereLoopClear harmlessly.
+func _whereLoopInit(tls *crt.TLS, _p *XWhereLoop) {
+ *(***XWhereTerm)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X13 */))))) = (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X15 */)))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X10 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = uint16(i32(3))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X9 */))) = uint32(i32(0))
+}
- _rc = _sqlite3NomemError(tls, i32(119078))
- goto _multi_select_end
+// Initialize a preallocated WhereClause structure.
+func _sqlite3WhereClauseInit(tls *crt.TLS, _pWC *XWhereClause, _pWInfo *XWhereInfo) {
+ *(**XWhereInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(0 /* X0 */))))) = _pWInfo
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(4 /* X1 */))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(12 /* X3 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(16 /* X4 */))) = i32(8)
+ *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(20 /* X5 */))))) = (*XWhereTerm)(unsafe.Pointer((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(24 /* X6 */)))))
+}
-_89:
- *func() ***XCollSeq { _26_i = i32(0); return &_26_apColl }() = (**XCollSeq)(unsafe.Pointer((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pKeyInfo)) + uintptr(20 /* X6 */)))))
-_90:
- if _26_i >= _26_nCol {
- goto _93
+// This routine identifies subexpressions in the WHERE clause where
+// each subexpression is separated by the AND operator or some other
+// operator specified in the op parameter. The WhereClause structure
+// is filled with pointers to subexpressions. For example:
+//
+// WHERE a=='hello' AND coalesce(b,11)<10 AND (c+12!=d OR c==22)
+// \________/ \_______________/ \________________/
+// slot[0] slot[1] slot[2]
+//
+// The original WHERE clause in pExpr is unaltered. All this routine
+// does is make slot[] entries point to substructure within pExpr.
+//
+// In the previous sentence and in the diagram, "slot[]" refers to
+// the WhereClause.a[] array. The slot[] array grows as needed to contain
+// all terms of the WHERE clause.
+func _sqlite3WhereSplit(tls *crt.TLS, _pWC *XWhereClause, _pExpr *XExpr, _op uint8) {
+ var _pE2 *XExpr
+ _pE2 = _sqlite3ExprSkipCollate(tls, _pExpr)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(8 /* X2 */))) = _op
+ if _pE2 == nil {
+ return
}
-
- *_26_apColl = _multiSelectCollSeq(tls, _pParse, _p, _26_i)
- if nil != (*_26_apColl) {
- goto _94
+ if int32(_pE2.X0) != int32(_op) {
+ _whereClauseInsert(tls, _pWC, _pExpr, uint16(i32(0)))
+ goto _2
}
+ _sqlite3WhereSplit(tls, _pWC, (*XExpr)(_pE2.X4), _op)
+ _sqlite3WhereSplit(tls, _pWC, (*XExpr)(_pE2.X5), _op)
+_2:
+}
- *_26_apColl = (*XCollSeq)(_db.X2)
-_94:
- *(*uintptr)(unsafe.Pointer(func() ***XCollSeq { _26_i += 1; return &_26_apColl }())) += uintptr(4)
- goto _90
-
-_93:
- _26_pLoop = _p
-_95:
- if _26_pLoop == nil {
- goto _98
+// Add a single new WhereTerm entry to the WhereClause object pWC.
+// The new WhereTerm object is constructed from Expr p and with wtFlags.
+// The index in pWC->a[] of the new WhereTerm is returned on success.
+// 0 is returned if the new WhereTerm could not be added due to a memory
+// allocation error. The memory allocation failure will be recorded in
+// the db->mallocFailed flag so that higher-level functions can detect it.
+//
+// This routine will increase the size of the pWC->a[] array as necessary.
+//
+// If the wtFlags argument includes TERM_DYNAMIC, then responsibility
+// for freeing the expression p is assumed by the WhereClause object pWC.
+// This is true even if this routine fails to allocate a new WhereTerm.
+//
+// WARNING: This routine might reallocate the space used to store
+// WhereTerms. All pointers to WhereTerms should be invalidated after
+// calling this routine. Such pointers may be reinitialized by referencing
+// the pWC->a[] array.
+func _whereClauseInsert(tls *crt.TLS, _pWC *XWhereClause, _p *XExpr, _wtFlags uint16) (r0 int32) {
+ var _idx int32
+ var _1_db *Xsqlite3
+ var _pTerm, _1_pOld *XWhereTerm
+ if (_pWC.X3) < (_pWC.X4) {
+ goto _0
}
-
- _26_i = i32(0)
-_99:
- if _26_i >= i32(2) {
- goto _102
+ _1_pOld = (*XWhereTerm)(_pWC.X5)
+ _1_db = (*Xsqlite3)((*XParse)((*XWhereInfo)(_pWC.X0).X0).X0)
+ *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(20 /* X5 */))))) = (*XWhereTerm)(_sqlite3DbMallocRawNN(tls, _1_db, uint64((u32(48)*uint32(_pWC.X4))*uint32(i32(2)))))
+ if (*XWhereTerm)(_pWC.X5) != nil {
+ goto _1
+ }
+ if (int32(_wtFlags) & i32(1)) != 0 {
+ _sqlite3ExprDelete(tls, _1_db, _p)
}
+ *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(20 /* X5 */))))) = _1_pOld
+ return i32(0)
- _31_addr = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLoop))+uintptr(32 /* X7 */))))) + 4*uintptr(_26_i)))
- if _31_addr >= i32(0) {
- goto _103
+_1:
+ crt.Xmemcpy(tls, _pWC.X5, (unsafe.Pointer)(_1_pOld), u32(48)*uint32(_pWC.X3))
+ if _1_pOld != (*XWhereTerm)(unsafe.Pointer((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC))+uintptr(24 /* X6 */))))) {
+ _sqlite3DbFree(tls, _1_db, (unsafe.Pointer)(_1_pOld))
}
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(16 /* X4 */))) = int32(uint32(_sqlite3DbMallocSize(tls, _1_db, _pWC.X5)) / u32(48))
+_0:
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(store1(&_idx, postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC))+uintptr(12 /* X3 */))), int32(1))))))
+ if (_p != nil) && (((_p.X2) & uint32(i32(262144))) != uint32(i32(0))) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(8 /* X2 */))) = int16(int32(_sqlite3LogEst(tls, uint64(_p.X8))) - i32(270))
+ goto _6
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(8 /* X2 */))) = int16(i32(1))
+_6:
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(0 /* X0 */))))) = _sqlite3ExprSkipCollate(tls, _p)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */))) = _wtFlags
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(4 /* X1 */))))) = _pWC
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(16 /* X7 */))) = i32(-1)
+ crt.Xmemset(tls, (unsafe.Pointer)((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm))+uintptr(12 /* X4 */)))), i32(0), u32(36))
+ return _idx
+}
+
+// Walk an expression tree. Return non-zero if the expression is constant
+// that does no originate from the ON or USING clauses of a join.
+// Return 0 if it involves variables or function calls or terms from
+// an ON or USING clause.
+func _sqlite3ExprIsConstantNotJoin(tls *crt.TLS, _p *XExpr) (r0 int32) {
+ return _exprIsConst(tls, _p, i32(2), i32(0))
+}
+// Generate code for a boolean expression such that a jump is made
+// to the label "dest" if the expression is false but execution
+// continues straight thru if the expression is true.
+//
+// If the expression evaluates to NULL (neither true nor false) then
+// jump if jumpIfNull is SQLITE_JUMPIFNULL or fall through if jumpIfNull
+// is 0.
+func _sqlite3ExprIfFalse(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _jumpIfNull int32) {
+ var _op, _regFree1, _regFree2, _r1, _r2, _3_d2, _10_destIfNull int32
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
+ _op = i32(0)
+ _regFree1 = i32(0)
+ _regFree2 = i32(0)
func() {
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLoop))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1))))) >= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119094), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectØ00__func__Ø000))), unsafe.Pointer(str(103020)))
+ if _jumpIfNull != i32(16) && _jumpIfNull != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95403), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101380)))
crt.X__builtin_abort(tls)
}
}()
- goto _102
-
-_103:
- _sqlite3VdbeChangeP2(tls, _v, uint32(_31_addr), _26_nCol)
- _sqlite3VdbeChangeP4(tls, _v, _31_addr, (*int8)(unsafe.Pointer(_sqlite3KeyInfoRef(tls, _26_pKeyInfo))), i32(-5))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pLoop))+uintptr(32 /* X7 */))))) + 4*uintptr(_26_i))) = i32(-1)
- _26_i += 1
- goto _99
-
-_102:
- _26_pLoop = (*XSelect)(_26_pLoop.X13)
- goto _95
-
-_98:
- _sqlite3KeyInfoUnref(tls, _26_pKeyInfo)
-_86:
-_multi_select_end:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(12 /* X3 */))) = _dest.X3
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(16 /* X4 */))) = _dest.X4
- _sqlite3SelectDelete(tls, _db, _pDelete)
- return _rc
-}
-
-var _multiSelectØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_multiSelectØ00__func__Ø000[0], str(103048), 12)
-}
-
-func _multiSelectValues(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) { // sqlite3.c:118694:1
- var _pPrior *XSelect // sqlite3.c:118699:10
- _ = _pPrior
- var _nRow int32 // sqlite3.c:118700:7
- _ = _nRow
- var _rc int32 // sqlite3.c:118701:7
- _ = _rc
- _nRow = i32(1)
- _rc = i32(0)
+ if func() int32 {
+ if _v == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return
+ }
+ if _pExpr == nil {
+ return
+ }
+ _op = ((int32(_pExpr.X0) + i32(1)) ^ i32(1)) - i32(1)
func() {
- if ((_p.X3) & uint32(i32(1024))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118702), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(103060)))
+ if int32(_pExpr.X0) == i32(75) && _op != i32(76) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95429), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101427)))
crt.X__builtin_abort(tls)
}
}()
-_2:
func() {
- if ((_p.X3) & uint32(i32(512))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118704), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(103088)))
+ if int32(_pExpr.X0) == i32(76) && _op != i32(75) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101466)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(_p.X1) != i32(116) && (int32(_p.X1) != i32(119) || (*XSelect)(_p.X13) != nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118705), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(103112)))
+ if int32(_pExpr.X0) == i32(77) && _op != i32(78) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101505)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XExpr)(_p.X15) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118706), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(102800)))
+ if int32(_pExpr.X0) == i32(78) && _op != i32(77) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95432), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101535)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XExpr)(_p.X16) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118707), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(102816)))
+ if int32(_pExpr.X0) == i32(81) && _op != i32(82) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95433), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101565)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XSelect)(_p.X14) != nil && ((*XExprList)(_p.X0).X0) != ((*XExprList)((*XSelect)(_p.X14).X0).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118708), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(103164)))
+ if int32(_pExpr.X0) == i32(80) && _op != i32(79) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95434), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101595)))
crt.X__builtin_abort(tls)
}
}()
- if (*XSelect)(_p.X13) != nil {
- goto _16
- }
-
- goto _17
-
-_16:
func() {
- if (*XSelect)((*XSelect)(_p.X13).X14) != _p {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118710), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectValuesØ00__func__Ø000))), unsafe.Pointer(str(103224)))
+ if int32(_pExpr.X0) == i32(79) && _op != i32(80) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95435), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101625)))
crt.X__builtin_abort(tls)
}
}()
- _p = (*XSelect)(_p.X13)
- _nRow += 1
- goto _2
-
-_17:
-_20:
- if _p == nil {
- goto _21
- }
-
- _pPrior = (*XSelect)(_p.X13)
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
- _rc = _sqlite3Select(tls, _pParse, _p, _pDest)
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
- if _rc == 0 {
- goto _22
+ func() {
+ if int32(_pExpr.X0) == i32(82) && _op != i32(81) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(101655)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ switch int32(_pExpr.X0) {
+ case i32(19):
+ goto _34
+ case i32(70):
+ goto _33
+ case i32(71):
+ goto _32
+ case i32(72):
+ goto _35
+ case i32(73):
+ goto _45
+ case i32(74):
+ goto _46
+ case i32(75):
+ goto _43
+ case i32(76):
+ goto _44
+ case i32(77):
+ goto _41
+ case i32(78):
+ goto _42
+ case i32(79):
+ goto _39
+ case i32(80):
+ goto _38
+ case i32(81):
+ goto _37
+ case i32(82):
+ goto _40
+ case i32(148):
+ goto _36
+ default:
+ goto _47
}
- goto _21
-
-_22:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(_nRow)
- _p = (*XSelect)(_p.X14)
- goto _20
-
-_21:
- return _rc
+_32:
+ _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
+ _sqlite3ExprCachePush(tls, _pParse)
+ _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
+ _sqlite3ExprCachePop(tls, _pParse)
+ goto _48
+_33:
+ _3_d2 = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X4), _3_d2, _jumpIfNull^i32(16))
+ _sqlite3ExprCachePush(tls, _pParse)
+ _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
+ _sqlite3VdbeResolveLabel(tls, _v, _3_d2)
+ _sqlite3ExprCachePop(tls, _pParse)
+ goto _48
+_34:
+ _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
+ goto _48
+_35:
+_36:
+ _op = func() int32 {
+ if int32(_pExpr.X0) == i32(72) {
+ return i32(77)
+ }
+ return i32(78)
+ }()
+ _jumpIfNull = i32(128)
+_37:
+_38:
+_39:
+_40:
+_41:
+_42:
+ if _sqlite3ExprIsVector(tls, (*XExpr)(_pExpr.X4)) != 0 {
+ goto _default_expr
+ }
+ _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
+ _r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X5), &_regFree2)
+ _codeCompare(tls, _pParse, (*XExpr)(_pExpr.X4), (*XExpr)(_pExpr.X5), _op, _r1, _r2, _dest, _jumpIfNull)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ goto _48
+_43:
+_44:
+ _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
+ _sqlite3VdbeAddOp2(tls, _v, _op, _r1, _dest)
+ goto _48
+_45:
+ _exprCodeBetween(tls, _pParse, _pExpr, _dest, _sqlite3ExprIfFalse, _jumpIfNull)
+ goto _48
+_46:
+ if _jumpIfNull != 0 {
+ _sqlite3ExprCodeIN(tls, _pParse, _pExpr, _dest, _dest)
+ goto _53
+ }
+ _10_destIfNull = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3ExprCodeIN(tls, _pParse, _pExpr, _dest, _10_destIfNull)
+ _sqlite3VdbeResolveLabel(tls, _v, _10_destIfNull)
+_53:
+ goto _48
+_47:
+_default_expr:
+ if _exprAlwaysFalse(tls, _pExpr) != 0 {
+ _sqlite3VdbeGoto(tls, _v, _dest)
+ goto _55
+ }
+ if _exprAlwaysTrue(tls, _pExpr) != 0 {
+ goto _57
+ }
+ _r1 = _sqlite3ExprCodeTemp(tls, _pParse, _pExpr, &_regFree1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(22), _r1, _dest, bool2int(_jumpIfNull != i32(0)))
+_57:
+_55:
+ goto _48
+_48:
+ _sqlite3ReleaseTempReg(tls, _pParse, _regFree1)
+ _sqlite3ReleaseTempReg(tls, _pParse, _regFree2)
}
-var _multiSelectValuesØ00__func__Ø000 [18]int8 // -
+var _sqlite3ExprIfFalseØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_multiSelectValuesØ00__func__Ø000[0], str(103244), 18)
+ crt.Xstrncpy(nil, &_sqlite3ExprIfFalseØ00__func__Ø000[0], str(101685), 19)
}
-func _generateWithRecursiveQuery(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) { // sqlite3.c:118544:1
- var _pSrc *XSrcList // sqlite3.c:118549:11
- _ = _pSrc
- var _nCol int32 // sqlite3.c:118550:7
- _ = _nCol
- var _v *TVdbe // sqlite3.c:118551:8
- _ = _v
- var _pSetup *XSelect // sqlite3.c:118552:10
- _ = _pSetup
- var _addrTop int32 // sqlite3.c:118553:7
- _ = _addrTop
- var _addrCont int32 // sqlite3.c:118554:7
- _ = _addrCont
- var _addrBreak int32 // sqlite3.c:118554:17
- _ = _addrBreak
- var _iCurrent int32 // sqlite3.c:118555:7
- _ = _iCurrent
- var _regCurrent int32 // sqlite3.c:118556:7
- _ = _regCurrent
- var _iQueue int32 // sqlite3.c:118557:7
- _ = _iQueue
- var _iDistinct int32 // sqlite3.c:118558:7
- _ = _iDistinct
- var _eDest int32 // sqlite3.c:118559:7
- _ = _eDest
- var _destQueue XSelectDest // sqlite3.c:118560:14
- _ = _destQueue
- var _i int32 // sqlite3.c:118561:7
- _ = _i
- var _rc int32 // sqlite3.c:118562:7
- _ = _rc
- var _pOrderBy *XExprList // sqlite3.c:118563:12
- _ = _pOrderBy
- var _pLimit *XExpr // sqlite3.c:118564:8
- _ = _pLimit
- var _pOffset *XExpr // sqlite3.c:118564:17
- _ = _pOffset
- var _regLimit int32 // sqlite3.c:118565:7
- _ = _regLimit
- var _regOffset int32 // sqlite3.c:118565:17
- _ = _regOffset
- var _5_pKeyInfo *XKeyInfo // sqlite3.c:118606:13
- _ = _5_pKeyInfo
- _pSrc = (*XSrcList)(_p.X8)
- _nCol = (*XExprList)(_p.X0).X0
- _v = (*TVdbe)(_pParse.X2)
- _pSetup = (*XSelect)(_p.X13)
- _iCurrent = i32(0)
- _iDistinct = i32(0)
- _eDest = i32(5)
- if _sqlite3AuthCheck(tls, _pParse, i32(33), nil, nil, nil) == 0 {
- goto _0
- }
- return
-
-_0:
- _addrBreak = _sqlite3VdbeMakeLabel(tls, _v)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = int16(i32(320))
- _computeLimitRegisters(tls, _pParse, _p, _addrBreak)
- _pLimit = (*XExpr)(_p.X15)
- _pOffset = (*XExpr)(_p.X16)
- _regLimit = _p.X4
- _regOffset = _p.X5
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = store34((**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(72 /* X16 */))))), nil)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(16 /* X5 */))), i32(0))
- _pOrderBy = (*XExprList)(_p.X12)
+// Remove from the column cache any entries that were added since the
+// the previous sqlite3ExprCachePush operation. In other words, restore
+// the cache to the state it was in prior the most recent Push.
+func _sqlite3ExprCachePop(tls *crt.TLS, _pParse *XParse) {
+ var _i int32
_i = i32(0)
-_1:
- if func() int32 {
- if _i < (_pSrc.X0) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118583), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateWithRecursiveQueryØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ func() {
+ if (_pParse.X23) < i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94086), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCachePopØ00__func__Ø000))), unsafe.Pointer(str(101704)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _6
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(64 /* X23 */))) -= 1
+ if (((*Xsqlite3)(_pParse.X0).X6) & i32(4096)) != 0 {
+ crt.Xprintf(tls, str(101727), _pParse.X23)
}
-
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_i)))))+uintptr(36 /* X9 */))).X1)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _7
+_3:
+ if _i >= int32(_pParse.X13) {
+ goto _4
+ }
+ if ((*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X3) > (_pParse.X23) {
+ _cacheEntryClear(tls, _pParse, _i)
+ goto _6
}
-
- _iCurrent = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X11
- goto _6
-
-_7:
_i += 1
- goto _1
-
_6:
- _iQueue = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- if int32(_p.X1) != i32(115) {
- goto _8
- }
+ goto _3
+_4:
+}
- _eDest = func() int32 {
- if _pOrderBy != nil {
- return i32(8)
- }
- return i32(6)
- }()
- _iDistinct = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- goto _11
+var _sqlite3ExprCachePopØ00__func__Ø000 [20]int8
-_8:
- _eDest = func() int32 {
- if _pOrderBy != nil {
- return i32(7)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCachePopØ00__func__Ø000[0], str(101739), 20)
+}
+
+// Generate code for a boolean expression such that a jump is made
+// to the label "dest" if the expression is true but execution
+// continues straight thru if the expression is false.
+//
+// If the expression evaluates to NULL (neither true nor false), then
+// take the jump if the jumpIfNull flag is SQLITE_JUMPIFNULL.
+//
+// This code depends on the fact that certain token values (ex: TK_EQ)
+// are the same as opcode values (ex: OP_Eq) that implement the corresponding
+// operation. Special comments in vdbe.c and the mkopcodeh.awk script in
+// the make process cause these values to align. Assert()s in the code
+// below verify that the numbers are aligned correctly.
+func _sqlite3ExprIfTrue(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _jumpIfNull int32) {
+ var _op, _regFree1, _regFree2, _r1, _r2, _2_d2, _8_destIfFalse, _8_destIfNull int32
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
+ _op = i32(0)
+ _regFree1 = i32(0)
+ _regFree2 = i32(0)
+ func() {
+ if _jumpIfNull != i32(16) && _jumpIfNull != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95280), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfTrueØ00__func__Ø000))), unsafe.Pointer(str(101380)))
+ crt.X__builtin_abort(tls)
}
- return i32(5)
}()
-_11:
- _sqlite3SelectDestInit(tls, &_destQueue, _eDest, _iQueue)
- _regCurrent = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp3(tls, _v, i32(113), _iCurrent, _regCurrent, _nCol)
- if _pOrderBy == nil {
+ if func() int32 {
+ if _v == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95281), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfTrueØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return
+ }
+ if func() int32 {
+ if _pExpr == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95282), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfTrueØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return
+ }
+ _op = int32(_pExpr.X0)
+ switch _op {
+ case i32(19):
+ goto _12
+ case i32(70):
+ goto _11
+ case i32(71):
+ goto _10
+ case i32(72):
+ goto _13
+ case i32(73):
+ goto _23
+ case i32(74):
+ goto _24
+ case i32(75):
+ goto _21
+ case i32(76):
+ goto _22
+ case i32(77):
+ goto _19
+ case i32(78):
+ goto _20
+ case i32(79):
+ goto _17
+ case i32(80):
+ goto _16
+ case i32(81):
+ goto _15
+ case i32(82):
+ goto _18
+ case i32(148):
goto _14
+ default:
+ goto _25
}
- _5_pKeyInfo = _multiSelectOrderByKeyInfo(tls, _pParse, _p, i32(1))
- _sqlite3VdbeAddOp4(tls, _v, i32(110), _iQueue, (_pOrderBy.X0)+i32(2), i32(0), (*int8)(unsafe.Pointer(_5_pKeyInfo)), i32(-5))
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_destQueue)) + uintptr(20 /* X5 */))))) = _pOrderBy
- goto _15
-
+_10:
+ _2_d2 = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X4), _2_d2, _jumpIfNull^i32(16))
+ _sqlite3ExprCachePush(tls, _pParse)
+ _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
+ _sqlite3VdbeResolveLabel(tls, _v, _2_d2)
+ _sqlite3ExprCachePop(tls, _pParse)
+ goto _26
+_11:
+ _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
+ _sqlite3ExprCachePush(tls, _pParse)
+ _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
+ _sqlite3ExprCachePop(tls, _pParse)
+ goto _26
+_12:
+ _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
+ goto _26
+_13:
_14:
- _sqlite3VdbeAddOp2(tls, _v, i32(110), _iQueue, _nCol)
+ _op = func() int32 {
+ if _op == i32(72) {
+ return i32(78)
+ }
+ return i32(77)
+ }()
+ _jumpIfNull = i32(128)
_15:
- _sqlite3VdbeComment(tls, _v, str(103264))
- if _iDistinct == 0 {
- goto _16
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = _sqlite3VdbeAddOp2(tls, _v, i32(110), _iDistinct, i32(0))
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(32))
- sink5 = *p
- }
_16:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = nil
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSetup)) + uintptr(64 /* X14 */))))) = nil
- _rc = _sqlite3Select(tls, _pParse, _pSetup, &_destQueue)
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSetup)) + uintptr(64 /* X14 */))))) = _p
- if _rc == 0 {
- goto _17
- }
-
- goto _end_of_recursive_query
-
_17:
- _addrTop = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iQueue, _addrBreak)
- _sqlite3VdbeAddOp1(tls, _v, i32(126), _iCurrent)
- if _pOrderBy == nil {
- goto _18
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _iQueue, (_pOrderBy.X0)+i32(1), _regCurrent)
- goto _19
-
_18:
- _sqlite3VdbeAddOp2(tls, _v, i32(124), _iQueue, _regCurrent)
_19:
- _sqlite3VdbeAddOp1(tls, _v, i32(120), _iQueue)
- _addrCont = _sqlite3VdbeMakeLabel(tls, _v)
- _codeOffset(tls, _v, _regOffset, _addrCont)
- _selectInnerLoop(tls, _pParse, _p, (*XExprList)(_p.X0), _iCurrent, nil, nil, _pDest, _addrCont, _addrBreak)
- if _regLimit == 0 {
- goto _20
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(48), _regLimit, _addrBreak)
_20:
- _sqlite3VdbeResolveLabel(tls, _v, _addrCont)
- if ((_p.X3) & uint32(i32(8))) == 0 {
- goto _21
+ if _sqlite3ExprIsVector(tls, (*XExpr)(_pExpr.X4)) != 0 {
+ goto _default_expr
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(103276))
- goto _22
-
+ _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
+ _r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X5), &_regFree2)
+ _codeCompare(tls, _pParse, (*XExpr)(_pExpr.X4), (*XExpr)(_pExpr.X5), _op, _r1, _r2, _dest, _jumpIfNull)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ goto _26
_21:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
- _sqlite3Select(tls, _pParse, _p, &_destQueue)
- func() {
- if (*XSelect)(_p.X13) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118659), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateWithRecursiveQueryØ00__func__Ø000))), unsafe.Pointer(str(101976)))
- crt.X__builtin_abort(tls)
+_22:
+ i32(0)
+ i32(0)
+ _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
+ _sqlite3VdbeAddOp2(tls, _v, _op, _r1, _dest)
+ goto _26
+_23:
+ _exprCodeBetween(tls, _pParse, _pExpr, _dest, _sqlite3ExprIfTrue, _jumpIfNull)
+ goto _26
+_24:
+ _8_destIfFalse = _sqlite3VdbeMakeLabel(tls, _v)
+ _8_destIfNull = func() int32 {
+ if _jumpIfNull != 0 {
+ return _dest
}
+ return _8_destIfFalse
}()
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pSetup
-_22:
- _sqlite3VdbeGoto(tls, _v, _addrTop)
- _sqlite3VdbeResolveLabel(tls, _v, _addrBreak)
-_end_of_recursive_query:
- _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), (*XExprList)(_p.X12))
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = _pOrderBy
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = _pLimit
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = _pOffset
+ _sqlite3ExprCodeIN(tls, _pParse, _pExpr, _8_destIfFalse, _8_destIfNull)
+ _sqlite3VdbeGoto(tls, _v, _dest)
+ _sqlite3VdbeResolveLabel(tls, _v, _8_destIfFalse)
+ goto _26
+_25:
+_default_expr:
+ if _exprAlwaysTrue(tls, _pExpr) != 0 {
+ _sqlite3VdbeGoto(tls, _v, _dest)
+ goto _33
+ }
+ if _exprAlwaysFalse(tls, _pExpr) != 0 {
+ goto _35
+ }
+ _r1 = _sqlite3ExprCodeTemp(tls, _pParse, _pExpr, &_regFree1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(21), _r1, _dest, bool2int(_jumpIfNull != i32(0)))
+_35:
+_33:
+ goto _26
+_26:
+ _sqlite3ReleaseTempReg(tls, _pParse, _regFree1)
+ _sqlite3ReleaseTempReg(tls, _pParse, _regFree2)
}
-func _computeLimitRegisters(tls *crt.TLS, _pParse *XParse, _p *XSelect, _iBreak int32) { // sqlite3.c:118397:1
- var _v *TVdbe // sqlite3.c:118398:8
- _ = _v
- var _iLimit int32 // sqlite3.c:118399:7
- _ = _iLimit
- var _iOffset int32 // sqlite3.c:118400:7
- _ = _iOffset
- var _n int32 // sqlite3.c:118401:7
- _ = _n
- _v = nil
- _iLimit = i32(0)
- if (_p.X4) == 0 {
- goto _0
+var _sqlite3ExprIfTrueØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprIfTrueØ00__func__Ø000[0], str(101759), 18)
+}
+
+// Generate code to evaluate an expression and store the results
+// into a register. Return the register number where the results
+// are stored.
+//
+// If the register is a temporary register that can be deallocated,
+// then write its number into *pReg. If the result register is not
+// a temporary, then set *pReg to zero.
+//
+// If pExpr is a constant, then this routine might generate this
+// code to fill the register in the initialization section of the
+// VDBE program, in order to factor it out of the evaluation loop.
+func _sqlite3ExprCodeTemp(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _pReg *int32) (r0 int32) {
+ var _r2, _2_r1 int32
+ _pExpr = _sqlite3ExprSkipCollate(tls, _pExpr)
+ if (((_pParse.X11) != 0) && (int32(_pExpr.X0) != i32(157))) && _sqlite3ExprIsConstantNotJoin(tls, _pExpr) != 0 {
+ *_pReg = i32(0)
+ _r2 = _sqlite3ExprCodeAtInit(tls, _pParse, _pExpr, i32(-1))
+ goto _3
}
- return
+ _2_r1 = _sqlite3GetTempReg(tls, _pParse)
+ _r2 = _sqlite3ExprCodeTarget(tls, _pParse, _pExpr, _2_r1)
+ if _r2 == _2_r1 {
+ *_pReg = _2_r1
+ goto _5
+ }
+ _sqlite3ReleaseTempReg(tls, _pParse, _2_r1)
+ *_pReg = i32(0)
+_5:
+_3:
+ return _r2
+}
-_0:
- _sqlite3ExprCacheClear(tls, _pParse)
+// Generate code for a comparison operator.
+func _codeCompare(tls *crt.TLS, _pParse *XParse, _pLeft *XExpr, _pRight *XExpr, _opcode int32, _in1 int32, _in2 int32, _dest int32, _jumpIfNull int32) (r0 int32) {
+ var _p5, _addr int32
+ var _p4 *XCollSeq
+ _p4 = _sqlite3BinaryCompareCollSeq(tls, _pParse, _pLeft, _pRight)
+ _p5 = int32(_binaryCompareP5(tls, _pLeft, _pRight, _jumpIfNull))
+ _addr = _sqlite3VdbeAddOp4(tls, (*TVdbe)(_pParse.X2), _opcode, _in2, _dest, _in1, (*int8)((unsafe.Pointer)(_p4)), i32(-3))
+ _sqlite3VdbeChangeP5(tls, (*TVdbe)(_pParse.X2), uint16(uint8(_p5)))
+ return _addr
+}
+
+// Return a pointer to the collation sequence that should be used by
+// a binary comparison operator comparing pLeft and pRight.
+//
+// If the left hand expression has a collating sequence type, then it is
+// used. Otherwise the collation sequence for the right hand expression
+// is used, or the default (BINARY) if neither expression has a collating
+// type.
+//
+// Argument pRight (but not pLeft) may be a null pointer. In this case,
+// it is not considered.
+func _sqlite3BinaryCompareCollSeq(tls *crt.TLS, _pParse *XParse, _pLeft *XExpr, _pRight *XExpr) (r0 *XCollSeq) {
+ var _pColl *XCollSeq
func() {
- if (*XExpr)(_p.X16) != nil && (*XExpr)(_p.X15) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118411), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeLimitRegistersØ00__func__Ø000))), unsafe.Pointer(str(103320)))
+ if _pLeft == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91184), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BinaryCompareCollSeqØ00__func__Ø000))), unsafe.Pointer(str(42746)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExpr)(_p.X15) == nil {
- goto _4
+ if ((_pLeft.X2) & uint32(i32(256))) != 0 {
+ _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pLeft)
+ goto _3
}
+ if (_pRight != nil) && (((_pRight.X2) & uint32(i32(256))) != uint32(i32(0))) {
+ _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pRight)
+ goto _6
+ }
+ _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pLeft)
+ if _pColl == nil {
+ _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pRight)
+ }
+_6:
+_3:
+ return _pColl
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = store1(&_iLimit, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
- _v = _sqlite3GetVdbe(tls, _pParse)
+var _sqlite3BinaryCompareCollSeqØ00__func__Ø000 [28]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3BinaryCompareCollSeqØ00__func__Ø000[0], str(101777), 28)
+}
+
+// Return the P5 value that should be used for a binary comparison
+// opcode (OP_Eq, OP_Ge etc.) used to compare pExpr1 and pExpr2.
+func _binaryCompareP5(tls *crt.TLS, _pExpr1 *XExpr, _pExpr2 *XExpr, _jumpIfNull int32) (r0 uint8) {
+ var _aff uint8
+ _aff = uint8(_sqlite3ExprAffinity(tls, _pExpr2))
+ _aff = uint8(int32(uint8(_sqlite3CompareAffinity(tls, _pExpr1, int8(_aff)))) | int32(uint8(_jumpIfNull)))
+ return _aff
+}
+
+// Generate code for a BETWEEN operator.
+//
+// x BETWEEN y AND z
+//
+// The above is equivalent to
+//
+// x>=y AND x<=z
+//
+// Code it as such, taking care to do the common subexpression
+// elimination of x.
+//
+// The xJumpIf parameter determines details:
+//
+// NULL: Store the boolean result in reg[dest]
+// sqlite3ExprIfTrue: Jump to dest if true
+// sqlite3ExprIfFalse: Jump to dest if false
+//
+// The jumpIfNull parameter is ignored if xJumpIf is NULL.
+func _exprCodeBetween(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _xJump func(*crt.TLS, *XParse, *XExpr, int32, int32), _jumpIfNull int32) {
+ var _regFree1 int32
+ var _exprAnd, _compLeft, _compRight, _exprX XExpr
+ _regFree1 = i32(0)
+ crt.Xmemset(tls, (unsafe.Pointer)(&_compLeft), i32(0), u32(48))
+ crt.Xmemset(tls, (unsafe.Pointer)(&_compRight), i32(0), u32(48))
+ crt.Xmemset(tls, (unsafe.Pointer)(&_exprAnd), i32(0), u32(48))
func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118415), unsafe.Pointer((*int8)(unsafe.Pointer(&_computeLimitRegistersØ00__func__Ø000))), unsafe.Pointer(str(43120)))
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95222), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprCodeBetweenØ00__func__Ø000))), unsafe.Pointer(str(42778)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3ExprIsInteger(tls, (*XExpr)(_p.X15), &_n) == 0 {
- goto _7
+ _exprX = *(*XExpr)(_pExpr.X4)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnd)) + uintptr(0 /* X0 */))) = uint8(i32(71))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnd)) + uintptr(12 /* X4 */))))) = &_compLeft
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnd)) + uintptr(16 /* X5 */))))) = &_compRight
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compLeft)) + uintptr(0 /* X0 */))) = uint8(i32(82))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compLeft)) + uintptr(12 /* X4 */))))) = &_exprX
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compLeft)) + uintptr(16 /* X5 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compRight)) + uintptr(0 /* X0 */))) = uint8(i32(80))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compRight)) + uintptr(12 /* X4 */))))) = &_exprX
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compRight)) + uintptr(16 /* X5 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
+ _exprToRegister(tls, &_exprX, _exprCodeVector(tls, _pParse, &_exprX, &_regFree1))
+ if _xJump != nil {
+ _xJump(tls, _pParse, &_exprAnd, _dest, _jumpIfNull)
+ goto _3
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(56), _n, _iLimit)
- _sqlite3VdbeComment(tls, _v, str(103352))
- if _n != i32(0) {
- goto _8
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprX)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(1))
+ sink5 = *p
}
+ _sqlite3ExprCodeTarget(tls, _pParse, &_exprAnd, _dest)
+_3:
+ _sqlite3ReleaseTempReg(tls, _pParse, _regFree1)
+ _ = _exprAnd
+ _ = _compLeft
+ _ = _compRight
+ _ = _exprX
+}
- _sqlite3VdbeGoto(tls, _v, _iBreak)
- goto _9
+var _exprCodeBetweenØ00__func__Ø000 [16]int8
-_8:
- if _n < i32(0) || int32(_p.X2) <= int32(_sqlite3LogEst(tls, uint64(_n))) {
- goto _11
- }
+func init() {
+ crt.Xstrncpy(nil, &_exprCodeBetweenØ00__func__Ø000[0], str(101805), 16)
+}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEst(tls, uint64(_n))
+// Convert a scalar expression node to a TK_REGISTER referencing
+// register iReg. The caller must ensure that iReg already contains
+// the correct value for the expression.
+func _exprToRegister(tls *crt.TLS, _p *XExpr, _iReg int32) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(38 /* X12 */))) = _p.X0
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(i32(157))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))) = _iReg
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(16384))
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
+ *p = (*p) & uint32(i32(-4097))
sink5 = *p
}
-_11:
-_9:
- goto _12
-
-_7:
- _sqlite3ExprCode(tls, _pParse, (*XExpr)(_p.X15), _iLimit)
- _sqlite3VdbeAddOp1(tls, _v, i32(17), _iLimit)
- _sqlite3VdbeComment(tls, _v, str(103352))
- _sqlite3VdbeAddOp2(tls, _v, i32(22), _iLimit, _iBreak)
-_12:
- if (*XExpr)(_p.X16) == nil {
- goto _13
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = store1(&_iOffset, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) += 1
- _sqlite3ExprCode(tls, _pParse, (*XExpr)(_p.X16), _iOffset)
- _sqlite3VdbeAddOp1(tls, _v, i32(17), _iOffset)
- _sqlite3VdbeComment(tls, _v, str(103368))
- _sqlite3VdbeAddOp3(tls, _v, i32(149), _iLimit, _iOffset+i32(1), _iOffset)
- _sqlite3VdbeComment(tls, _v, str(103384))
-_13:
-_4:
}
-func _sqlite3ExprCacheClear(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:94224:1
- var _i int32 // sqlite3.c:94225:7
- _ = _i
- if (((*Xsqlite3)(_pParse.X0).X6) & i32(4096)) == 0 {
- goto _0
+// Evaluate an expression (either a vector or a scalar expression) and store
+// the result in continguous temporary registers. Return the index of
+// the first register used to store the result.
+//
+// If the returned result register is a temporary scalar, then also write
+// that register number into *piFreeable. If the returned result register
+// is not a temporary or if the expression is a vector set *piFreeable
+// to 0.
+func _exprCodeVector(tls *crt.TLS, _pParse *XParse, _p *XExpr, _piFreeable *int32) (r0 int32) {
+ var _iResult, _nResult, _4_i int32
+ _nResult = _sqlite3ExprVectorSize(tls, _p)
+ if _nResult == i32(1) {
+ _iResult = _sqlite3ExprCodeTemp(tls, _pParse, _p, _piFreeable)
+ goto _1
}
-
- crt.Xprintf(tls, str(103400))
-_0:
- _i = i32(0)
-_1:
- if _i >= int32(_pParse.X13) {
- goto _4
+ *_piFreeable = i32(0)
+ if int32(_p.X0) == i32(119) {
+ _iResult = _sqlite3CodeSubselect(tls, _pParse, _p, i32(0), i32(0))
+ goto _3
}
-
- if ((*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */)))))+20*uintptr(_i))).X2) == 0 || int32(_pParse.X7) >= i32(8) {
- goto _6
+ _iResult = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nResult
+ sink1 = *p
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360 /* X49 */))))) + 4*uintptr(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19 /* X7 */))), uint8(1))))) = (*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X4
-_6:
- _i += 1
- goto _1
-
+ _4_i = i32(0)
_4:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(25 /* X13 */))) = uint8(i32(0))
-}
-
-var _computeLimitRegistersØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_computeLimitRegistersØ00__func__Ø000[0], str(103408), 22)
-}
-
-func _sqlite3VdbeGoto(tls *crt.TLS, _p *TVdbe, _iDest int32) (r0 int32) { // sqlite3.c:71647:1
- return _sqlite3VdbeAddOp3(tls, _p, i32(13), i32(0), _iDest, i32(0))
-}
-
-var _generateWithRecursiveQueryØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_generateWithRecursiveQueryØ00__func__Ø000[0], str(103432), 27)
-}
-
-func _multiSelectOrderByKeyInfo(tls *crt.TLS, _pParse *XParse, _p *XSelect, _nExtra int32) (r0 *XKeyInfo) { // sqlite3.c:118478:1
- var _pOrderBy *XExprList // sqlite3.c:118479:12
- _ = _pOrderBy
- var _nOrderBy int32 // sqlite3.c:118480:7
- _ = _nOrderBy
- var _db *Xsqlite3 // sqlite3.c:118481:11
- _ = _db
- var _pRet *XKeyInfo // sqlite3.c:118482:11
- _ = _pRet
- var _1_i int32 // sqlite3.c:118484:9
- _ = _1_i
- var _2_pItem *TExprList_item // sqlite3.c:118486:28
- _ = _2_pItem
- var _2_pTerm *XExpr // sqlite3.c:118487:12
- _ = _2_pTerm
- var _2_pColl *XCollSeq // sqlite3.c:118488:15
- _ = _2_pColl
- _pOrderBy = (*XExprList)(_p.X12)
- _nOrderBy = (*XExprList)(_p.X12).X0
- _db = (*Xsqlite3)(_pParse.X0)
- _pRet = _sqlite3KeyInfoAlloc(tls, _db, _nOrderBy+_nExtra, i32(1))
- if _pRet == nil {
- goto _0
+ if _4_i >= _nResult {
+ goto _7
}
-
- _1_i = i32(0)
+ _sqlite3ExprCodeFactorable(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(_4_i))).X0), _4_i+_iResult)
+ _4_i += 1
+ goto _4
+_7:
+_3:
_1:
- if _1_i >= _nOrderBy {
- goto _4
- }
+ return _iResult
+}
- _2_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_1_i)))
- _2_pTerm = (*XExpr)(_2_pItem.X0)
- if ((_2_pTerm.X2) & uint32(i32(256))) == 0 {
- goto _5
+// Generate code that will evaluate expression pExpr and store the
+// results in register target. The results are guaranteed to appear
+// in register target. If the expression is constant, then this routine
+// might choose to code the expression at initialization time.
+func _sqlite3ExprCodeFactorable(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) {
+ if ((_pParse.X11) != 0) && _sqlite3ExprIsConstant(tls, _pExpr) != 0 {
+ _sqlite3ExprCodeAtInit(tls, _pParse, _pExpr, _target)
+ goto _2
}
+ _sqlite3ExprCode(tls, _pParse, _pExpr, _target)
+_2:
+}
- _2_pColl = _sqlite3ExprCollSeq(tls, _pParse, _2_pTerm)
- goto _6
-
-_5:
- _2_pColl = _multiSelectCollSeq(tls, _pParse, _p, int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pItem))+uintptr(16 /* X5 */))))).X0)-i32(1))
- if _2_pColl != nil {
- goto _7
+// Generate code for an IN expression.
+//
+// x IN (SELECT ...)
+// x IN (value, value, ...)
+//
+// The left-hand side (LHS) is a scalar or vector expression. The
+// right-hand side (RHS) is an array of zero or more scalar values, or a
+// subquery. If the RHS is a subquery, the number of result columns must
+// match the number of columns in the vector on the LHS. If the RHS is
+// a list of values, the LHS must be a scalar.
+//
+// The IN operator is true if the LHS value is contained within the RHS.
+// The result is false if the LHS is definitely not in the RHS. The
+// result is NULL if the presence of the LHS in the RHS cannot be
+// determined due to NULLs.
+//
+// This routine generates code that jumps to destIfFalse if the LHS is not
+// contained within the RHS. If due to NULLs we cannot determine if the LHS
+// is contained in the RHS then jump to destIfNull. If the LHS is contained
+// within the RHS then fall through.
+//
+// See the separate in-operator.md documentation file in the canonical
+// SQLite source tree for additional information.
+func _sqlite3ExprCodeIN(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _destIfFalse int32, _destIfNull int32) {
+ var _rRhsHasNull, _eType, _rLhs, _rLhsOrig, _nVector, _iDummy, _i, _destStep2, _destStep6, _addrTruthOp, _destNotNull, _addrTop, _1_j, _1_cnt, _6_labelOk, _6_r2, _6_regToFree, _6_regCkNull, _6_ii, _23_r3 int32
+ var _aiMap *int32
+ var _zAff *int8
+ var _v *TVdbe
+ var _6_pList *XExprList
+ var _pLeft, _15_p, _23_p *XExpr
+ var _6_pColl, _23_pColl *XCollSeq
+ _rRhsHasNull = i32(0)
+ _aiMap = nil
+ _zAff = nil
+ _destStep6 = i32(0)
+ _pLeft = (*XExpr)(_pExpr.X4)
+ if _sqlite3ExprCheckIN(tls, _pParse, _pExpr) != 0 {
+ return
}
-
- _2_pColl = (*XCollSeq)(_db.X2)
-_7:
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))))) + uintptr(0 /* X0 */))))) = _sqlite3ExprAddCollateString(tls, _pParse, _2_pTerm, _2_pColl.X0)
-_6:
+ _zAff = _exprINAffinity(tls, _pParse, _pExpr)
+ _nVector = _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4))
+ _aiMap = (*int32)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64((uint32(_nVector)*u32(5))+uint32(i32(1)))))
+ if ((*Xsqlite3)(_pParse.X0).X17) != 0 {
+ goto _sqlite3ExprCodeIN_oom_error
+ }
+ _v = (*TVdbe)(_pParse.X2)
func() {
- if _sqlite3KeyInfoIsWriteable(tls, _pRet) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118498), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByKeyInfoØ00__func__Ø000))), unsafe.Pointer(str(103460)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93723), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet))+uintptr(20 /* X6 */))))) + 4*uintptr(_1_i))) = _2_pColl
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet.X5)) + 1*uintptr(_1_i))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_1_i))).X3
- _1_i += 1
- goto _1
-
-_4:
-_0:
- r0 = _pRet
- return
-}
-
-func _multiSelectCollSeq(tls *crt.TLS, _pParse *XParse, _p *XSelect, _iCol int32) (r0 *XCollSeq) { // sqlite3.c:118452:1
- var _pRet *XCollSeq // sqlite3.c:118453:11
- _ = _pRet
- if (*XSelect)(_p.X13) == nil {
- goto _0
- }
-
- _pRet = _multiSelectCollSeq(tls, _pParse, (*XSelect)(_p.X13), _iCol)
- goto _1
-
-_0:
- _pRet = nil
-_1:
+ _sqlite3VdbeNoopComment(tls, _v, str(101821))
+ _eType = _sqlite3FindInIndex(tls, _pParse, _pExpr, uint32(i32(3)), func() *int32 {
+ if _destIfFalse == _destIfNull {
+ return nil
+ }
+ return &_rRhsHasNull
+ }(), _aiMap)
func() {
- if _iCol < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118459), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectCollSeqØ00__func__Ø000))), unsafe.Pointer(str(103492)))
+ if (_pParse.X16) == 0 && _nVector != i32(1) && _eType != i32(2) && _eType != i32(3) && _eType != i32(4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93729), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(101835)))
crt.X__builtin_abort(tls)
}
}()
- if _pRet != nil || func() int32 {
- if _iCol < ((*XExprList)(_p.X0).X0) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118463), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectCollSeqØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _7
+ _i = i32(0)
+_12:
+ if _i >= _nVector {
+ goto _15
}
-
- _pRet = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_iCol))).X0))
-_7:
- return _pRet
-}
-
-var _multiSelectCollSeqØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_multiSelectCollSeqØ00__func__Ø000[0], str(103500), 19)
-}
-
-var _multiSelectOrderByKeyInfoØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_multiSelectOrderByKeyInfoØ00__func__Ø000[0], str(103520), 26)
-}
-
-func _codeOffset(tls *crt.TLS, _v *TVdbe, _iOffset int32, _iContinue int32) { // sqlite3.c:117145:1
- if _iOffset <= i32(0) {
- goto _0
+ _1_cnt = store1(&_1_j, i32(0))
+_16:
+ if _1_j >= _nVector {
+ goto _19
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(46), _iOffset, _iContinue, i32(1))
- _sqlite3VdbeComment(tls, _v, str(25148))
-_0:
-}
-
-func _selectInnerLoop(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pEList *XExprList, _srcTab int32, _pSort *XSortCtx, _pDistinct *XDistinctCtx, _pDest *XSelectDest, _iContinue int32, _iBreak int32) { // sqlite3.c:117193:1
- var _v *TVdbe // sqlite3.c:117204:8
- _ = _v
- var _i int32 // sqlite3.c:117205:7
- _ = _i
- var _hasDistinct int32 // sqlite3.c:117206:7
- _ = _hasDistinct
- var _eDest int32 // sqlite3.c:117207:7
- _ = _eDest
- var _iParm int32 // sqlite3.c:117208:7
- _ = _iParm
- var _nResultCol int32 // sqlite3.c:117209:7
- _ = _nResultCol
- var _nPrefixReg int32 // sqlite3.c:117210:7
- _ = _nPrefixReg
- var _regResult int32 // sqlite3.c:117217:7
- _ = _regResult
- var _regOrig int32 // sqlite3.c:117218:7
- _ = _regOrig
- var _7_ecelFlags uint8 // sqlite3.c:117260:8
- _ = _7_ecelFlags
- var _11_j int32 // sqlite3.c:117275:13
- _ = _11_j
- var _15_pOp *XVdbeOp // sqlite3.c:117294:16
- _ = _15_pOp
- var _15_iJump int32 // sqlite3.c:117295:13
- _ = _15_iJump
- var _15_regPrev int32 // sqlite3.c:117296:13
- _ = _15_regPrev
- var _16_pColl *XCollSeq // sqlite3.c:117316:19
- _ = _16_pColl
- var _23_r1 int32 // sqlite3.c:117355:11
- _ = _23_r1
- var _25_r1 int32 // sqlite3.c:117379:11
- _ = _25_r1
- var _26_addr int32 // sqlite3.c:117392:13
- _ = _26_addr
- var _28_r2 int32 // sqlite3.c:117402:13
- _ = _28_r2
- var _31_r1 int32 // sqlite3.c:117426:13
- _ = _31_r1
- var _40_nKey int32 // sqlite3.c:117488:11
- _ = _40_nKey
- var _40_r1 int32 // sqlite3.c:117489:11
- _ = _40_r1
- var _40_r2 int32 // sqlite3.c:117489:15
- _ = _40_r2
- var _40_r3 int32 // sqlite3.c:117489:19
- _ = _40_r3
- var _40_addrTest int32 // sqlite3.c:117490:11
- _ = _40_addrTest
- var _40_pSO *XExprList // sqlite3.c:117491:16
- _ = _40_pSO
- _v = (*TVdbe)(_pParse.X2)
- _eDest = int32(_pDest.X0)
- _iParm = _pDest.X2
- _nPrefixReg = i32(0)
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_1_j)))) == _i {
+ _1_cnt += 1
+ }
+ _1_j += 1
+ goto _16
+_19:
func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117220), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(42900)))
+ if _1_cnt != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93738), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(101944)))
crt.X__builtin_abort(tls)
}
}()
+ _i += 1
+ goto _12
+_15:
+ _sqlite3ExprCachePush(tls, _pParse)
+ _rLhsOrig = _exprCodeVector(tls, _pParse, _pLeft, &_iDummy)
+ _i = i32(0)
+_23:
+ if _i >= _nVector || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_i)))) != _i {
+ goto _27
+ }
+ _i += 1
+ goto _23
+_27:
+ if _i == _nVector {
+ _rLhs = _rLhsOrig
+ goto _29
+ }
+ _rLhs = _sqlite3GetTempRange(tls, _pParse, _nVector)
+ _i = i32(0)
+_30:
+ if _i >= _nVector {
+ goto _33
+ }
+ _sqlite3VdbeAddOp3(tls, _v, i32(64), _rLhsOrig+_i, _rLhs+(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_i)))), i32(0))
+ _i += 1
+ goto _30
+_33:
+_29:
+ if _eType != i32(5) {
+ goto _34
+ }
+ _6_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _6_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4))
+ _6_labelOk = _sqlite3VdbeMakeLabel(tls, _v)
+ _6_regCkNull = i32(0)
func() {
- if _pEList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117221), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(46300)))
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93778), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(42778)))
crt.X__builtin_abort(tls)
}
}()
- _hasDistinct = func() int32 {
- if _pDistinct != nil {
- return int32(_pDistinct.X1)
- }
- return i32(0)
- }()
- if _pSort == nil || (*XExprList)(_pSort.X0) != nil {
- goto _7
+ if _destIfNull != _destIfFalse {
+ _6_regCkNull = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp3(tls, _v, i32(84), _rLhs, _rLhs, _6_regCkNull)
}
-
- _pSort = nil
-_7:
- if _pSort != nil || _hasDistinct != 0 {
- goto _9
+ _6_ii = i32(0)
+_38:
+ if _6_ii >= (_6_pList.X0) {
+ goto _41
+ }
+ _6_r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_6_ii))).X0), &_6_regToFree)
+ if _6_regCkNull != 0 && _sqlite3ExprCanBeNull(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_6_ii))).X0)) != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(84), _6_regCkNull, _6_r2, _6_regCkNull)
+ }
+ if (_6_ii < ((_6_pList.X0) - i32(1))) || (_destIfNull != _destIfFalse) {
+ _sqlite3VdbeAddOp4(tls, _v, i32(78), _rLhs, _6_labelOk, _6_r2, (*int8)((unsafe.Pointer)(_6_pColl)), i32(-3))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(i32(0))))))
+ goto _46
}
-
func() {
- if _iContinue == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117225), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103548)))
+ if _destIfNull != _destIfFalse {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93795), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(101951)))
crt.X__builtin_abort(tls)
}
}()
- _codeOffset(tls, _v, _p.X5, _iContinue)
-_9:
- _nResultCol = _pEList.X0
- if (_pDest.X3) != i32(0) {
- goto _12
+ _sqlite3VdbeAddOp4(tls, _v, i32(77), _rLhs, _destIfFalse, _6_r2, (*int8)((unsafe.Pointer)(_6_pColl)), i32(-3))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(i32(0)))))|i32(16)))
+_46:
+ _sqlite3ReleaseTempReg(tls, _pParse, _6_regToFree)
+ _6_ii += 1
+ goto _38
+_41:
+ if _6_regCkNull != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), _6_regCkNull, _destIfNull)
+ _sqlite3VdbeGoto(tls, _v, _destIfFalse)
}
-
- if _pSort == nil {
- goto _13
+ _sqlite3VdbeResolveLabel(tls, _v, _6_labelOk)
+ _sqlite3ReleaseTempReg(tls, _pParse, _6_regCkNull)
+ goto _sqlite3ExprCodeIN_finished
+_34:
+ if _destIfNull == _destIfFalse {
+ _destStep2 = _destIfFalse
+ goto _51
}
-
- _nPrefixReg = (*XExprList)(_pSort.X0).X0
- if (int32(_pSort.X7) & i32(1)) != 0 {
- goto _14
+ _destStep2 = store1(&_destStep6, _sqlite3VdbeMakeLabel(tls, _v))
+_51:
+ _i = i32(0)
+_52:
+ if _i >= _nVector {
+ goto _55
}
-
- _nPrefixReg += 1
-_14:
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nPrefixReg
- sink1 = *p
+ _15_p = _sqlite3VectorFieldSubexpr(tls, (*XExpr)(_pExpr.X4), _i)
+ if _sqlite3ExprCanBeNull(tls, _15_p) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), _rLhs+_i, _destStep2)
}
-_13:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(12 /* X3 */))) = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nResultCol
- sink1 = *p
+ _i += 1
+ goto _52
+_55:
+ if _eType == i32(1) {
+ _sqlite3VdbeAddOp3(tls, _v, i32(31), _pExpr.X8, _destIfFalse, _rLhs)
+ _addrTruthOp = _sqlite3VdbeAddOp0(tls, _v, i32(13))
+ goto _58
}
- goto _15
-
-_12:
- if ((_pDest.X3) + _nResultCol) <= (_pParse.X18) {
- goto _16
+ _sqlite3VdbeAddOp4(tls, _v, i32(100), _rLhs, _nVector, i32(0), _zAff, _nVector)
+ if _destIfFalse == _destIfNull {
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _pExpr.X8, _destIfFalse, _rLhs, _nVector)
+ goto _sqlite3ExprCodeIN_finished
}
-
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nResultCol
- sink1 = *p
+ _addrTruthOp = _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _pExpr.X8, i32(0), _rLhs, _nVector)
+_58:
+ if _rRhsHasNull != 0 && (_nVector == i32(1)) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(76), _rRhsHasNull, _destIfFalse)
}
-_16:
-_15:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(16 /* X4 */))) = _nResultCol
- _regOrig = store1(&_regResult, _pDest.X3)
- if _srcTab < i32(0) {
- goto _17
+ if _destIfFalse == _destIfNull {
+ _sqlite3VdbeGoto(tls, _v, _destIfFalse)
}
-
+ if _destStep6 != 0 {
+ _sqlite3VdbeResolveLabel(tls, _v, _destStep6)
+ }
+ _addrTop = _sqlite3VdbeAddOp2(tls, _v, i32(37), _pExpr.X8, _destIfFalse)
+ if _nVector > i32(1) {
+ _destNotNull = _sqlite3VdbeMakeLabel(tls, _v)
+ goto _65
+ }
+ _destNotNull = _destIfFalse
+_65:
_i = i32(0)
-_18:
- if _i >= _nResultCol {
- goto _21
+_66:
+ if _i >= _nVector {
+ goto _69
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _i, _regResult+_i)
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1))
+ _23_r3 = _sqlite3GetTempReg(tls, _pParse)
+ _23_p = _sqlite3VectorFieldSubexpr(tls, _pLeft, _i)
+ _23_pColl = _sqlite3ExprCollSeq(tls, _pParse, _23_p)
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _pExpr.X8, _i, _23_r3)
+ _sqlite3VdbeAddOp4(tls, _v, i32(77), _rLhs+_i, _destNotNull, _23_r3, (*int8)((unsafe.Pointer)(_23_pColl)), i32(-3))
+ _sqlite3ReleaseTempReg(tls, _pParse, _23_r3)
_i += 1
- goto _18
-
-_21:
- goto _22
-
-_17:
- if _eDest == i32(3) {
- goto _23
+ goto _66
+_69:
+ _sqlite3VdbeAddOp2(tls, _v, i32(13), i32(0), _destIfNull)
+ if _nVector > i32(1) {
+ _sqlite3VdbeResolveLabel(tls, _v, _destNotNull)
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _pExpr.X8, _addrTop+i32(1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(13), i32(0), _destIfFalse)
}
-
- if _eDest != i32(10) && _eDest != i32(9) && _eDest != i32(13) {
- goto _26
+ _sqlite3VdbeJumpHere(tls, _v, _addrTruthOp)
+_sqlite3ExprCodeIN_finished:
+ if _rLhs != _rLhsOrig {
+ _sqlite3ReleaseTempReg(tls, _pParse, _rLhs)
}
+ _sqlite3ExprCachePop(tls, _pParse)
+ _sqlite3VdbeComment(tls, _v, str(101975))
+_sqlite3ExprCodeIN_oom_error:
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_aiMap))
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_zAff))
+ _ = _iDummy
+}
- _7_ecelFlags = uint8(i32(1))
- goto _27
-
-_26:
- _7_ecelFlags = uint8(i32(0))
-_27:
- if _pSort == nil || _hasDistinct != i32(0) || _eDest == i32(12) || _eDest == i32(14) {
- goto _31
+// Expr pIn is an IN(...) expression. This function checks that the
+// sub-select on the RHS of the IN() operator has the same number of
+// columns as the vector on the LHS. Or, if the RHS of the IN() is not
+// a sub-query, that the LHS is a vector of size 1.
+func _sqlite3ExprCheckIN(tls *crt.TLS, _pParse *XParse, _pIn *XExpr) (r0 int32) {
+ var _nVector int32
+ _nVector = _sqlite3ExprVectorSize(tls, (*XExpr)(_pIn.X4))
+ if ((_pIn.X2) & uint32(i32(2048))) == 0 {
+ goto _0
}
-
- {
- p := &_7_ecelFlags
- *p = uint8(int32(*p) | i32(12))
- sink2 = *p
+ if _nVector != ((*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(20 /* X6 */)))))).X0).X0) {
+ _sqlite3SubselectError(tls, _pParse, (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(20 /* X6 */)))))).X0).X0, _nVector)
+ return i32(1)
}
- _i = _pSort.X1
-_32:
- if _i >= ((*XExprList)(_pSort.X0).X0) {
- goto _35
+ goto _2
+_0:
+ if _nVector != i32(1) {
+ _sqlite3VectorErrorMsg(tls, _pParse, (*XExpr)(_pIn.X4))
+ return i32(1)
}
+_2:
+ return i32(0)
+}
- if store1(&_11_j, int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSort.X0)+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))).X0)) <= i32(0) {
- goto _36
- }
+var _sqlite3ExprCodeINØ00__func__Ø000 [18]int8
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_11_j-i32(1))))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16((_i + i32(1)) - (_pSort.X1))
-_36:
- _i += 1
- goto _32
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeINØ00__func__Ø000[0], str(101987), 18)
+}
-_35:
- _regOrig = i32(0)
+func _sqlite3FindInIndex(tls *crt.TLS, _pParse *XParse, _pX *XExpr, _inFlags uint32, _prRhsHasNull *int32, _aiMap *int32) (r0 int32) {
+ var _4_iDb int16
+ var _eType, _iTab, _mustBeUnique, _1_i, _4_nExpr, _5_iAddr, _6_affinity_ok, _6_i, _7_iCol, _13_j, _16_iAddr, _20_rMayHaveNull, _25_i, _25_n int32
+ var _7_idxaff, _7_cmpaff int8
+ var _20_savedNQueryLoop uint32
+ var _10_colUsed, _10_mCol uint64
+ var _4_db *Xsqlite3
+ var _4_pTab *XTable
+ var _v *TVdbe
+ var _1_pEList, _4_pEList *XExprList
+ var _p *XSelect
+ var _7_pLhs, _13_pLhs, _13_pRhs *XExpr
+ var _6_pIdx *XIndex
+ var _13_pReq *XCollSeq
+ _eType = i32(0)
+ _iTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if _eDest != i32(11) && _eDest != i32(10) && _eDest != i32(13) && _eDest != i32(9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117281), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103564)))
+ if int32(_pX.X0) != i32(74) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93103), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(102005)))
crt.X__builtin_abort(tls)
}
}()
-_31:
- _nResultCol = _sqlite3ExprCodeExprList(tls, _pParse, _pEList, _regResult, i32(0), _7_ecelFlags)
-_23:
-_22:
- if _hasDistinct == 0 {
- goto _42
+ _mustBeUnique = bool2int((_inFlags & uint32(i32(4))) != uint32(i32(0)))
+ if _prRhsHasNull == nil || ((_pX.X2)&uint32(i32(2048))) == 0 {
+ goto _3
}
-
- switch int32(_pDistinct.X1) {
- case i32(1):
- goto _45
- case i32(2):
- goto _44
- default:
- goto _46
+ _1_pEList = (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */)))))).X0)
+ _1_i = i32(0)
+_4:
+ if _1_i >= (_1_pEList.X0) {
+ goto _7
}
-
-_44:
- _15_regPrev = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nResultCol
- sink1 = *p
+ if _sqlite3ExprCanBeNull(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))).X0)) != 0 {
+ goto _7
}
- _sqlite3VdbeChangeToNoop(tls, _v, _pDistinct.X3)
- _15_pOp = _sqlite3VdbeGetOp(tls, _v, _pDistinct.X3)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(59))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pOp)) + uintptr(4 /* X3 */))) = i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pOp)) + uintptr(8 /* X4 */))) = _15_regPrev
- _15_iJump = _sqlite3VdbeCurrentAddr(tls, _v) + _nResultCol
- _i = i32(0)
-_47:
- if _i >= _nResultCol {
- goto _50
+ _1_i += 1
+ goto _4
+_7:
+ if _1_i == (_1_pEList.X0) {
+ _prRhsHasNull = nil
}
-
- _16_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if _i >= (_nResultCol - i32(1)) {
- goto _51
+_3:
+ if (_pParse.X16) != i32(0) || store59(&_p, _isCandidateForInOpt(tls, _pX)) == nil {
+ goto _11
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(77), _regResult+_i, _15_iJump, _15_regPrev+_i)
- goto _52
-
-_51:
- _sqlite3VdbeAddOp3(tls, _v, i32(78), _regResult+_i, _iContinue, _15_regPrev+_i)
-_52:
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_16_pColl)), i32(-3))
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(128)))
- _i += 1
- goto _47
-
-_50:
+ _4_db = (*Xsqlite3)(_pParse.X0)
+ _4_pEList = (*XExprList)(_p.X0)
+ _4_nExpr = _4_pEList.X0
func() {
- if _sqlite3VdbeCurrentAddr(tls, _v) != _15_iJump && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117327), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103644)))
+ if (*XExprList)(_p.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(46087)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp3(tls, _v, i32(64), _regResult, _15_regPrev, _nResultCol-i32(1))
- goto _56
-
-_45:
- _sqlite3VdbeChangeToNoop(tls, _v, _pDistinct.X3)
- goto _56
-
-_46:
func() {
- if int32(_pDistinct.X1) != i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117338), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103708)))
+ if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0)+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(102019)))
crt.X__builtin_abort(tls)
}
}()
- _codeDistinct(tls, _pParse, _pDistinct.X2, _iContinue, _nResultCol, _regResult)
- goto _56
-
-_56:
- if _pSort != nil {
- goto _59
- }
-
- _codeOffset(tls, _v, _p.X5, _iContinue)
-_59:
-_42:
- switch _eDest {
- case i32(1):
- goto _61
- case i32(2):
- goto _62
- case i32(3):
- goto _68
- case i32(5):
- goto _63
- case i32(6):
- goto _64
- case i32(7):
- goto _73
- case i32(8):
- goto _72
- case i32(9):
- goto _71
- case i32(10):
- goto _69
- case i32(11):
- goto _67
- case i32(12):
- goto _66
- case i32(13):
- goto _70
- case i32(14):
- goto _65
- default:
- goto _74
- }
-
-_61:
- _23_r1 = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regResult, _nResultCol, _23_r1)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _23_r1, _regResult, _nResultCol)
- _sqlite3ReleaseTempReg(tls, _pParse, _23_r1)
- goto _75
-
-_62:
- _sqlite3VdbeAddOp3(tls, _v, i32(129), _iParm, _regResult, _nResultCol)
- goto _75
-
-_63:
-_64:
-_65:
-_66:
- _25_r1 = _sqlite3GetTempRange(tls, _pParse, _nPrefixReg+i32(1))
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regResult, _nResultCol, _25_r1+_nPrefixReg)
- if _eDest != i32(6) {
- goto _76
- }
-
- _26_addr = _sqlite3VdbeCurrentAddr(tls, _v) + i32(4)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iParm+i32(1), _26_addr, _25_r1, i32(0))
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm+i32(1), _25_r1, _regResult, _nResultCol)
func() {
- if _pSort != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117396), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103756)))
+ if (*XSrcList)(_p.X8) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(102044)))
crt.X__builtin_abort(tls)
}
}()
-_76:
- if _pSort == nil {
- goto _79
+ _4_pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
+ _4_iDb = int16(_sqlite3SchemaToIndex(tls, _4_db, (*XSchema)(_4_pTab.X20)))
+ _sqlite3CodeVerifySchema(tls, _pParse, int32(_4_iDb))
+ _sqlite3TableLock(tls, _pParse, int32(_4_iDb), _4_pTab.X7, uint8(i32(0)), _4_pTab.X0)
+ func() {
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93142), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(41861)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_4_nExpr == i32(1)) && (int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0).X9) < i32(0)) {
+ _5_iAddr = _sqlite3VdbeAddOp0(tls, _v, i32(20))
+ _sqlite3OpenTable(tls, _pParse, _iTab, int32(_4_iDb), _4_pTab, i32(106))
+ _eType = i32(1)
+ _sqlite3VdbeJumpHere(tls, _v, _5_iAddr)
+ goto _22
}
-
- _pushOntoSorter(tls, _pParse, _pSort, _p, _25_r1+_nPrefixReg, _regResult, i32(1), _nPrefixReg)
- goto _80
-
-_79:
- _28_r2 = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp2(tls, _v, i32(117), _iParm, _28_r2)
- _sqlite3VdbeAddOp3(tls, _v, i32(118), _iParm, _25_r1, _28_r2)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
- _sqlite3ReleaseTempReg(tls, _pParse, _28_r2)
-_80:
- _sqlite3ReleaseTempRange(tls, _pParse, _25_r1, _nPrefixReg+i32(1))
- goto _75
-
-_67:
- if _pSort == nil {
- goto _81
+ _6_affinity_ok = i32(1)
+ _6_i = i32(0)
+_23:
+ if _6_i >= _4_nExpr || _6_affinity_ok == 0 {
+ goto _27
+ }
+ _7_pLhs = _sqlite3VectorFieldSubexpr(tls, (*XExpr)(_pX.X4), _6_i)
+ _7_iCol = int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_6_i))).X0).X9)
+ _7_idxaff = _sqlite3TableColumnAffinity(tls, _4_pTab, _7_iCol)
+ _7_cmpaff = _sqlite3CompareAffinity(tls, _7_pLhs, _7_idxaff)
+ switch int32(_7_cmpaff) {
+ case i32(65):
+ goto _29
+ case i32(66):
+ goto _30
+ default:
+ goto _31
}
- _pushOntoSorter(tls, _pParse, _pSort, _p, _regResult, _regOrig, _nResultCol, _nPrefixReg)
- goto _82
-
-_81:
- _31_r1 = _sqlite3GetTempReg(tls, _pParse)
+_29:
+ goto _32
+_30:
func() {
- if _sqlite3Strlen30(tls, _pDest.X1) != _nResultCol {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117427), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103768)))
+ if int32(_7_idxaff) != i32(66) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93176), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(102055)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp4(tls, _v, i32(101), _regResult, _nResultCol, _31_r1, _pDest.X1, _nResultCol)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _regResult, _nResultCol)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _31_r1, _regResult, _nResultCol)
- _sqlite3ReleaseTempReg(tls, _pParse, _31_r1)
-_82:
- goto _75
-
-_68:
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _iParm)
- goto _75
-
-_69:
- if _pSort == nil {
- goto _85
+ goto _32
+_31:
+ _6_affinity_ok = bool2int(int32(_7_idxaff) >= i32(67))
+_32:
+ _6_i += 1
+ goto _23
+_27:
+ if _6_affinity_ok == 0 {
+ goto _35
}
-
+ _6_pIdx = (*XIndex)(_4_pTab.X2)
+_36:
+ if _6_pIdx == nil || _eType != i32(0) {
+ goto _40
+ }
+ if int32(_6_pIdx.X14) < _4_nExpr {
+ goto _37
+ }
+ if int32(_6_pIdx.X14) >= i32(63) {
+ goto _37
+ }
+ if _mustBeUnique == 0 {
+ goto _43
+ }
+ if (int32(_6_pIdx.X13) > _4_nExpr) || ((int32(_6_pIdx.X14) > _4_nExpr) && (int32(_6_pIdx.X15) == i32(0))) {
+ goto _37
+ }
+_43:
+ _10_colUsed = uint64(i32(0))
+ _6_i = i32(0)
+_47:
+ if _6_i >= _4_nExpr {
+ goto _50
+ }
+ _13_pLhs = _sqlite3VectorFieldSubexpr(tls, (*XExpr)(_pX.X4), _6_i)
+ _13_pRhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_6_i))).X0)
+ _13_pReq = _sqlite3BinaryCompareCollSeq(tls, _pParse, _13_pLhs, _13_pRhs)
func() {
- if _nResultCol > (_pDest.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117451), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103816)))
+ if _13_pReq == nil && int32(_13_pRhs.X9) != i32(-1) && (_pParse.X16) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93209), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(102079)))
crt.X__builtin_abort(tls)
}
}()
- _pushOntoSorter(tls, _pParse, _pSort, _p, _regResult, _regOrig, _nResultCol, _nPrefixReg)
- goto _88
-
-_85:
+ _13_j = i32(0)
+_55:
+ if _13_j >= _4_nExpr {
+ goto _58
+ }
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx.X1)) + 2*uintptr(_13_j)))) != int32(_13_pRhs.X9) {
+ goto _56
+ }
func() {
- if _nResultCol != (_pDest.X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117455), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103844)))
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx.X8)) + 4*uintptr(_13_j)))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(93212), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(102130)))
crt.X__builtin_abort(tls)
}
}()
+ if (_13_pReq != nil) && (_sqlite3StrICmp(tls, _13_pReq.X0, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx.X8)) + 4*uintptr(_13_j)))) != i32(0)) {
+ goto _56
+ }
+ goto _58
+_56:
+ _13_j += 1
+ goto _55
+_58:
+ if _13_j == _4_nExpr {
+ goto _50
+ }
+ _10_mCol = u64(1) << uint(_13_j)
+ if (_10_mCol & _10_colUsed) != 0 {
+ goto _50
+ }
+ {
+ p := &_10_colUsed
+ *p = (*p) | _10_mCol
+ sink17 = *p
+ }
+ if _aiMap != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_6_i))) = _13_j
+ }
+ _6_i += 1
+ goto _47
+_50:
func() {
- if _regResult != _iParm {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117456), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103872)))
+ if _6_i != _4_nExpr && _10_colUsed == ((u64(1)<= _25_n {
+ goto _91
}
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_25_i))) = _25_i
+ _25_i += 1
+ goto _88
+_91:
+_87:
+ return _eType
+}
- _pushOntoSorter(tls, _pParse, _pSort, _p, _regResult, _regOrig, _nResultCol, _nPrefixReg)
- goto _94
+var _sqlite3FindInIndexØ00__func__Ø000 [19]int8
-_93:
- if _eDest != i32(13) {
- goto _95
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FindInIndexØ00__func__Ø000[0], str(102217), 19)
+}
- _sqlite3VdbeAddOp1(tls, _v, i32(16), _pDest.X2)
- goto _96
+// Return FALSE if there is no chance that the expression can be NULL.
+//
+// If the expression might be NULL or if the expression is too complex
+// to tell return TRUE.
+//
+// This routine is used as an optimization, to skip OP_IsNull opcodes
+// when we know that a value cannot be NULL. Hence, a false positive
+// (returning TRUE when in fact the expression can never be NULL) might
+// be a small performance hit but is otherwise harmless. On the other
+// hand, a false negative (returning FALSE when the result could be NULL)
+// will likely result in an incorrect answer. So when in doubt, return
+// TRUE.
+func _sqlite3ExprCanBeNull(tls *crt.TLS, _p *XExpr) (r0 int32) {
+ var _op uint8
+_0:
+ if (int32(_p.X0) == i32(156)) || (int32(_p.X0) == i32(155)) {
+ _p = (*XExpr)(_p.X4)
+ goto _0
+ }
+ _op = _p.X0
+ if int32(_op) == i32(157) {
+ _op = _p.X12
+ }
+ switch int32(_op) {
+ case i32(97):
+ goto _6
+ case i32(132):
+ goto _7
+ case i32(133):
+ goto _8
+ case i32(134):
+ goto _5
+ case i32(152):
+ goto _9
+ default:
+ goto _10
+ }
-_95:
- _sqlite3VdbeAddOp2(tls, _v, i32(67), _regResult, _nResultCol)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _regResult, _nResultCol)
-_96:
-_94:
- goto _75
+_5:
+_6:
+_7:
+_8:
+ return i32(0)
-_72:
-_73:
- _40_addrTest = i32(0)
- _40_pSO = (*XExprList)(_pDest.X5)
+_9:
func() {
- if _40_pSO == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117493), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103892)))
+ if (*XTable)(_p.X14) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92867), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCanBeNullØ00__func__Ø000))), unsafe.Pointer(str(102236)))
crt.X__builtin_abort(tls)
}
}()
- _40_nKey = _40_pSO.X0
- _40_r1 = _sqlite3GetTempReg(tls, _pParse)
- _40_r2 = _sqlite3GetTempRange(tls, _pParse, _40_nKey+i32(2))
- _40_r3 = (_40_r2 + _40_nKey) + i32(1)
- if _eDest != i32(8) {
- goto _99
- }
+ return bool2int((((_p.X2) & uint32(i32(1048576))) != uint32(i32(0))) || ((int32(_p.X9) >= i32(0)) && (int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_p.X14).X1)+16*uintptr(_p.X9))).X3) == i32(0))))
- _40_addrTest = _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iParm+i32(1), i32(0), _regResult, _nResultCol)
-_99:
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regResult, _nResultCol, _40_r3)
- if _eDest != i32(8) {
- goto _100
- }
+_10:
+ return i32(1)
+}
- _sqlite3VdbeAddOp2(tls, _v, i32(128), _iParm+i32(1), _40_r3)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
-_100:
- _i = i32(0)
-_101:
- if _i >= _40_nKey {
- goto _104
- }
+var _sqlite3ExprCanBeNullØ00__func__Ø000 [21]int8
- _sqlite3VdbeAddOp2(tls, _v, i32(65), (_regResult+int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_40_pSO))+uintptr(8 /* X2 */)))))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))).X0))-i32(1), _40_r2+_i)
- _i += 1
- goto _101
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCanBeNullØ00__func__Ø000[0], str(102247), 21)
+}
-_104:
- _sqlite3VdbeAddOp2(tls, _v, i32(116), _iParm, _40_r2+_40_nKey)
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _40_r2, _40_nKey+i32(2), _40_r1)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _40_r1, _40_r2, _40_nKey+i32(2))
- if _40_addrTest == 0 {
- goto _105
+func _isCandidateForInOpt(tls *crt.TLS, _pX *XExpr) (r0 *XSelect) {
+ var _i int32
+ var _pTab *XTable
+ var _pSrc *XSrcList
+ var _pEList *XExprList
+ var _p *XSelect
+ var _2_pRes *XExpr
+ if ((_pX.X2) & uint32(i32(2048))) == uint32(i32(0)) {
+ return nil
+ }
+ if ((_pX.X2) & uint32(i32(32))) != uint32(i32(0)) {
+ return nil
+ }
+ _p = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */))))))
+ if (*XSelect)(_p.X13) != nil {
+ return nil
+ }
+ if ((_p.X3) & uint32(i32(9))) != 0 {
+ return nil
}
-
- _sqlite3VdbeJumpHere(tls, _v, _40_addrTest)
-_105:
- _sqlite3ReleaseTempReg(tls, _pParse, _40_r1)
- _sqlite3ReleaseTempRange(tls, _pParse, _40_r2, _40_nKey+i32(2))
- goto _75
-
-_74:
func() {
- if _eDest != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117535), unsafe.Pointer((*int8)(unsafe.Pointer(&_selectInnerLoopØ00__func__Ø000))), unsafe.Pointer(str(103896)))
+ if (*XExprList)(_p.X10) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92948), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(46719)))
crt.X__builtin_abort(tls)
}
}()
- goto _75
-
-_75:
- if _pSort != nil || (_p.X4) == 0 {
- goto _109
+ if (*XExpr)(_p.X15) != nil {
+ return nil
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(48), _p.X4, _iBreak)
-_109:
+ func() {
+ if (*XExpr)(_p.X16) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92950), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(98541)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (*XExpr)(_p.X9) != nil {
+ return nil
+ }
+ _pSrc = (*XSrcList)(_p.X8)
+ func() {
+ if _pSrc == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92953), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(47821)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pSrc.X0) != i32(1) {
+ return nil
+ }
+ if (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X5) != nil {
+ return nil
+ }
+ _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
+ func() {
+ if _pTab == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92957), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(43594)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XSelect)(_pTab.X3) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92958), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(102268)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pTab.X16) != 0 {
+ return nil
+ }
+ _pEList = (*XExprList)(_p.X0)
+ func() {
+ if _pEList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92961), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(45052)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _i = i32(0)
+_21:
+ if _i >= (_pEList.X0) {
+ goto _24
+ }
+ _2_pRes = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ if int32(_2_pRes.X0) != i32(152) {
+ return nil
+ }
+ func() {
+ if (_2_pRes.X8) != ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92966), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(102285)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _i += 1
+ goto _21
+_24:
+ return _p
}
-var _selectInnerLoopØ00__func__Ø000 [16]int8 // -
+var _isCandidateForInOptØ00__func__Ø000 [20]int8
func init() {
- crt.Xstrncpy(nil, &_selectInnerLoopØ00__func__Ø000[0], str(103916), 16)
+ crt.Xstrncpy(nil, &_isCandidateForInOptØ00__func__Ø000[0], str(102318), 20)
}
-func _sqlite3ExprCodeExprList(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _target int32, _srcReg int32, _flags uint8) (r0 int32) { // sqlite3.c:95138:1
- var _pItem *TExprList_item // sqlite3.c:95145:24
- _ = _pItem
- var _i int32 // sqlite3.c:95146:7
- _ = _i
- var _j int32 // sqlite3.c:95146:10
- _ = _j
- var _n int32 // sqlite3.c:95146:13
- _ = _n
- var _copyOp uint8 // sqlite3.c:95147:6
- _ = _copyOp
- var _v *TVdbe // sqlite3.c:95148:8
- _ = _v
- var _1_pExpr *XExpr // sqlite3.c:95155:10
- _ = _1_pExpr
- var _6_inReg int32 // sqlite3.c:95166:11
- _ = _6_inReg
- var _7_pOp *XVdbeOp // sqlite3.c:95168:16
- _ = _7_pOp
- _copyOp = uint8(func() int32 {
- if (int32(_flags) & i32(1)) != 0 {
- return i32(64)
+// Record the fact that the schema cookie will need to be verified
+// for database iDb. The code to actually verify the schema cookie
+// will occur at the end of the top-level VDBE and will be generated
+// later, by sqlite3FinishCoding().
+func _sqlite3CodeVerifySchema(tls *crt.TLS, _pParse *XParse, _iDb int32) {
+ var _pToplevel *XParse
+ _pToplevel = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
}
- return i32(65)
- }())
- _v = (*TVdbe)(_pParse.X2)
+ return _pParse
+ }()
func() {
- if _pList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95149), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeExprListØ00__func__Ø000))), unsafe.Pointer(str(92252)))
+ if _iDb < i32(0) || _iDb >= ((*Xsqlite3)(_pParse.X0).X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(102338)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _target <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95150), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeExprListØ00__func__Ø000))), unsafe.Pointer(str(103932)))
+ if (*XBtree)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(_iDb))).X1) == nil && _iDb != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103757), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(102368)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*TVdbe)(_pParse.X2) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95151), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeExprListØ00__func__Ø000))), unsafe.Pointer(str(103944)))
+ if _iDb >= i32(12) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103758), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(102406)))
crt.X__builtin_abort(tls)
}
}()
- _n = _pList.X0
- if (_pParse.X11) != 0 {
- goto _8
- }
-
- {
- p := &_flags
- *p = uint8(int32(*p) & i32(-3))
- sink2 = *p
- }
-_8:
- *func() *int32 {
- _pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
- return &_i
- }() = i32(0)
-_9:
- if _i >= _n {
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, (*Xsqlite3)(_pParse.X0), _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103759), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(102432)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if bool2int(((_pToplevel.X30)&(u32(1)<ix[]
+// array will never overflow.
+func _createMask(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _iCursor int32) {
+ func() {
+ if (_pMaskSet.X0) >= i32(64) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130573), unsafe.Pointer((*int8)(unsafe.Pointer(&_createMaskØ00__func__Ø000))), unsafe.Pointer(str(102690)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[64]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet))+uintptr(4 /* X1 */))))) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet))+uintptr(0 /* X0 */))), int32(1))))) = _iCursor
}
-func _exprNodeIsConstant(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:92610:1
- if int32(_pWalker.X5) != i32(2) || ((_pExpr.X2)&uint32(i32(1))) == uint32(i32(0)) {
- goto _1
- }
+var _createMaskØ00__func__Ø000 [11]int8
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- return i32(2)
+func init() {
+ crt.Xstrncpy(nil, &_createMaskØ00__func__Ø000[0], str(102728), 11)
+}
-_1:
- switch int32(_pExpr.X0) {
- case i32(27):
- goto _4
- case i32(135):
- goto _9
- case i32(151):
- goto _3
- case i32(152):
- goto _5
- case i32(153):
- goto _6
- case i32(154):
+// For table-valued-functions, transform the function arguments into
+// new WHERE clause terms.
+//
+// Each function argument translates into an equality constraint against
+// a HIDDEN column in the table.
+func _sqlite3WhereTabFuncArgs(tls *crt.TLS, _pParse *XParse, _pItem *TSrcList_item, _pWC *XWhereClause) {
+ var _j, _k int32
+ var _pTab *XTable
+ var _pArgs *XExprList
+ var _pColRef, _pTerm *XExpr
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) == i32(0) {
+ return
+ }
+ _pTab = (*XTable)(_pItem.X4)
+ func() {
+ if _pTab == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130367), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereTabFuncArgsØ00__func__Ø000))), unsafe.Pointer(str(43594)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pArgs = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */))))))
+ if _pArgs == nil {
+ return
+ }
+ _j = store1(&_k, i32(0))
+_4:
+ if _j >= (_pArgs.X0) {
goto _7
- case i32(160):
+ }
+_8:
+ if (_k < int32(_pTab.X11)) && ((int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_k))).X6) & i32(2)) == i32(0)) {
+ _k += 1
goto _8
- default:
- goto _10
}
-
-_3:
- if int32(_pWalker.X5) < i32(4) && ((_pExpr.X2)&uint32(i32(524288))) == uint32(i32(0)) {
- goto _12
+ if _k >= int32(_pTab.X11) {
+ _sqlite3ErrorMsg(tls, _pParse, str(102739), unsafe.Pointer(_pTab.X0), _j)
+ return
}
- return i32(0)
-
-_12:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- return i32(2)
-
-_4:
-_5:
-_6:
-_7:
- if int32(_pWalker.X5) != i32(3) || (_pExpr.X8) != (*(*int32)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */)))))) {
- goto _15
- }
- return i32(0)
-
-_15:
-_8:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- return i32(2)
-
-_9:
- if int32(_pWalker.X5) != i32(5) {
- goto _16
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
- goto _17
-
-_16:
- if int32(_pWalker.X5) != i32(4) {
- goto _18
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- return i32(2)
-
-_18:
-_17:
-_10:
- r0 = i32(0)
- return
-}
-
-func _selectNodeIsConstant(tls *crt.TLS, _pWalker *XWalker, _NotUsed *XSelect) (r0 int32) { // sqlite3.c:92666:1
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- return i32(2)
-}
-
-func _sqlite3ExprCodeAtInit(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _regDest int32) (r0 int32) { // sqlite3.c:94988:1
- var _p *XExprList // sqlite3.c:94993:12
- _ = _p
- var _1_pItem *TExprList_item // sqlite3.c:94997:26
- _ = _1_pItem
- var _1_i int32 // sqlite3.c:94998:9
- _ = _1_i
- var _4_pItem *TExprList_item // sqlite3.c:95008:27
- _ = _4_pItem
- func() {
- if (_pParse.X11) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeAtInitØ00__func__Ø000))), unsafe.Pointer(str(103988)))
- crt.X__builtin_abort(tls)
- }
- }()
- _p = (*XExprList)(_pParse.X27)
- if _regDest >= i32(0) || _p == nil {
- goto _3
- }
-
- *func() *int32 {
- _1_pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */)))))
- return &_1_i
- }() = _p.X0
-_4:
- if _1_i <= i32(0) {
- goto _7
- }
-
- if ((uint32((_1_pItem.X4)>>uint(i32(2)))<>uint(i32(31))) == 0 || _sqlite3ExprCompare(tls, (*XExpr)(_1_pItem.X0), _pExpr, i32(-1)) != i32(0) {
- goto _9
+ _pColRef = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(152), nil, i32(0))
+ if _pColRef == nil {
+ return
}
-
- /* X5 */
- return *(*int32)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(16)))))
-
-_9:
- *func() *int32 { *(*uintptr)(unsafe.Pointer(&_1_pItem)) += uintptr(20); return &_1_i }() -= 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColRef)) + uintptr(28 /* X8 */))) = _pItem.X11
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColRef)) + uintptr(32 /* X9 */))) = int16(postInc1(&_k, int32(1)))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColRef)) + uintptr(44 /* X14 */))))) = _pTab
+ _pTerm = _sqlite3PExpr(tls, _pParse, i32(78), _pColRef, _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pArgs))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), i32(0)))
+ _whereClauseInsert(tls, _pWC, _pTerm, uint16(i32(1)))
+ _j += 1
goto _4
-
_7:
-_3:
- _pExpr = _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _pExpr, i32(0))
- _p = _sqlite3ExprListAppend(tls, _pParse, _p, _pExpr)
- if _p == nil {
- goto _10
- }
-
- _4_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 20*uintptr((_p.X0)-i32(1))))
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem))+uintptr(13 /* X4 */))), int8(bool2int(_regDest < i32(0))), 4, 2)
- if _regDest >= i32(0) {
- goto _11
- }
-
- _regDest = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
-_11:
- *(*int32)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pItem)) + uintptr(16 /* X5 */))))) = _regDest
-_10:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(80 /* X27 */))))) = _p
- return _regDest
-}
-
-var _sqlite3ExprCodeAtInitØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeAtInitØ00__func__Ø000[0], str(104012), 22)
-}
-
-func _sqlite3VdbeChangeToNoop(tls *crt.TLS, _p *TVdbe, _addr int32) (r0 int32) { // sqlite3.c:72325:1
- var _pOp *XVdbeOp // sqlite3.c:72326:10
- _ = _pOp
- if ((*Xsqlite3)(_p.X0).X17) == 0 {
- goto _0
- }
- return i32(0)
-
-_0:
- func() {
- if _addr < i32(0) || _addr >= (_p.X27) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72328), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeChangeToNoopØ00__func__Ø000))), unsafe.Pointer(str(104036)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr(_addr)))
- _freeP4(tls, (*Xsqlite3)(_p.X0), int32(_pOp.X1), *(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(0))
- *(**int8)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))) = nil
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(164))
- return i32(1)
}
-var _sqlite3VdbeChangeToNoopØ00__func__Ø000 [24]int8 // -
+var _sqlite3WhereTabFuncArgsØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeChangeToNoopØ00__func__Ø000[0], str(104060), 24)
+ crt.Xstrncpy(nil, &_sqlite3WhereTabFuncArgsØ00__func__Ø000[0], str(102775), 24)
}
-func _sqlite3VdbeCurrentAddr(tls *crt.TLS, _p *TVdbe) (r0 int32) { // sqlite3.c:72060:1
+// Return the bitmask for the given cursor number. Return 0 if
+// iCursor is not in the set.
+func _sqlite3WhereGetMask(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _iCursor int32) (r0 uint64) {
+ var _i int32
func() {
- if (_p.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72061), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeCurrentAddrØ00__func__Ø000))), unsafe.Pointer(str(38344)))
+ if (_pMaskSet.X0) > i32(64) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130555), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereGetMaskØ00__func__Ø000))), unsafe.Pointer(str(102799)))
crt.X__builtin_abort(tls)
}
}()
- return _p.X27
-}
-
-var _sqlite3VdbeCurrentAddrØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeCurrentAddrØ00__func__Ø000[0], str(104084), 23)
-}
-
-func _codeDistinct(tls *crt.TLS, _pParse *XParse, _iTab int32, _addrRepeat int32, _N int32, _iMem int32) { // sqlite3.c:117165:1
- var _v *TVdbe // sqlite3.c:117172:8
- _ = _v
- var _r1 int32 // sqlite3.c:117173:7
- _ = _r1
- _v = (*TVdbe)(_pParse.X2)
- _r1 = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iTab, _addrRepeat, _iMem, _N)
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _iMem, _N, _r1)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iTab, _r1, _iMem, _N)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
- _sqlite3ReleaseTempReg(tls, _pParse, _r1)
-}
-
-func _sqlite3GetTempReg(tls *crt.TLS, _pParse *XParse) (r0 int32) { // sqlite3.c:96018:1
- if int32(_pParse.X7) != i32(0) {
- goto _0
- }
-
- /* X18 */
- return preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44))), 1)
-
-_0:
- /* X49 */ /* X7 */
- return *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360))))) + 4*uintptr(preInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19))), byte(255)))))
-}
-
-func _sqlite3ReleaseTempReg(tls *crt.TLS, _pParse *XParse, _iReg int32) { // sqlite3.c:96033:1
- var _1_i int32 // sqlite3.c:96035:9
- _ = _1_i
- var _1_p *TyColCache // sqlite3.c:96036:22
- _ = _1_p
- if _iReg == 0 || int32(_pParse.X7) >= i32(8) {
- goto _1
- }
-
- *func() **TyColCache { _1_i = i32(0); return &_1_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
+ _i = i32(0)
_2:
- if _1_i >= int32(_pParse.X13) {
+ if _i >= (_pMaskSet.X0) {
goto _5
}
-
- if (_1_p.X4) != _iReg {
- goto _6
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[64]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet))+uintptr(4 /* X1 */))))) + 4*uintptr(_i)))) == _iCursor {
+ return u64(1) << uint(_i)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p)) + uintptr(6 /* X2 */))) = uint8(i32(1))
- return
-
-_6:
- *(*uintptr)(unsafe.Pointer(func() **TyColCache { _1_i += 1; return &_1_p }())) += uintptr(20)
+ _i += 1
goto _2
-
_5:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[8]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(360 /* X49 */))))) + 4*uintptr(postInc2((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(19 /* X7 */))), uint8(1))))) = _iReg
-_1:
+ return uint64(i32(0))
}
-func _sqlite3GetTempRange(tls *crt.TLS, _pParse *XParse, _nReg int32) (r0 int32) { // sqlite3.c:96050:1
- var _i int32 // sqlite3.c:96051:7
- _ = _i
- var _n int32 // sqlite3.c:96051:10
- _ = _n
- if _nReg != i32(1) {
- goto _0
- }
- return _sqlite3GetTempReg(tls, _pParse)
-
-_0:
- _i = _pParse.X15
- _n = _pParse.X14
- if _nReg > _n {
- goto _1
- }
-
- func() {
- if _usedAsColumnCache(tls, _pParse, _i, (_i+_n)-i32(1)) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(96056), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GetTempRangeØ00__func__Ø000))), unsafe.Pointer(str(104108)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(32 /* X15 */)))
- *p = (*p) + _nReg
- sink1 = *p
- }
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(28 /* X14 */)))
- *p = (*p) - _nReg
- sink1 = *p
- }
- goto _4
+var _sqlite3WhereGetMaskØ00__func__Ø000 [20]int8
-_1:
- _i = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nReg
- sink1 = *p
- }
-_4:
- return _i
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WhereGetMaskØ00__func__Ø000[0], str(102835), 20)
}
-func _usedAsColumnCache(tls *crt.TLS, _pParse *XParse, _iFrom int32, _iTo int32) (r0 int32) { // sqlite3.c:94268:1
- var _i int32 // sqlite3.c:94269:7
- _ = _i
- var _p *TyColCache // sqlite3.c:94270:20
- _ = _p
- var _1_r int32 // sqlite3.c:94272:9
- _ = _1_r
- *func() **TyColCache { _i = i32(0); return &_p }() = (*TyColCache)(unsafe.Pointer((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(160 /* X48 */)))))
+// Call exprAnalyze on all terms in a WHERE clause.
+//
+// Note that exprAnalyze() might add new virtual terms onto the
+// end of the WHERE clause. We do not want to analyze these new
+// virtual terms, so start analyzing at the end and work forward
+// so that the added virtual terms are never processed.
+func _sqlite3WhereExprAnalyze(tls *crt.TLS, _pTabList *XSrcList, _pWC *XWhereClause) {
+ var _i int32
+ _i = (_pWC.X3) - i32(1)
_0:
- if _i >= int32(_pParse.X13) {
+ if _i < i32(0) {
goto _3
}
-
- _1_r = _p.X4
- if _1_r < _iFrom || _1_r > _iTo {
- goto _5
- }
- return i32(1)
-
-_5:
- *(*uintptr)(unsafe.Pointer(func() **TyColCache { _i += 1; return &_p }())) += uintptr(20)
+ _exprAnalyze(tls, _pTabList, _pWC, _i)
+ _i -= 1
goto _0
-
_3:
- return i32(0)
-}
-
-var _sqlite3GetTempRangeØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3GetTempRangeØ00__func__Ø000[0], str(104148), 20)
}
-func _pushOntoSorter(tls *crt.TLS, _pParse *XParse, _pSort *XSortCtx, _pSelect *XSelect, _regData int32, _regOrigData int32, _nData int32, _nPrefixReg int32) { // sqlite3.c:117024:1
- var _v *TVdbe // sqlite3.c:117033:8
- _ = _v
- var _bSeq int32 // sqlite3.c:117034:7
- _ = _bSeq
- var _nExpr int32 // sqlite3.c:117035:7
- _ = _nExpr
- var _nBase int32 // sqlite3.c:117036:7
- _ = _nBase
- var _regBase int32 // sqlite3.c:117037:7
- _ = _regBase
- var _regRecord int32 // sqlite3.c:117038:7
- _ = _regRecord
- var _nOBSat int32 // sqlite3.c:117039:7
- _ = _nOBSat
- var _op int32 // sqlite3.c:117040:7
- _ = _op
- var _iLimit int32 // sqlite3.c:117041:7
- _ = _iLimit
- var _5_regPrevKey int32 // sqlite3.c:117065:9
- _ = _5_regPrevKey
- var _5_addrFirst int32 // sqlite3.c:117066:9
- _ = _5_addrFirst
- var _5_addrJmp int32 // sqlite3.c:117067:9
- _ = _5_addrJmp
- var _5_pOp *XVdbeOp // sqlite3.c:117068:12
- _ = _5_pOp
- var _5_nKey int32 // sqlite3.c:117069:9
- _ = _5_nKey
- var _5_pKI *XKeyInfo // sqlite3.c:117070:13
- _ = _5_pKI
- var _11_addr int32 // sqlite3.c:117113:9
- _ = _11_addr
- var _11_r1 int32 // sqlite3.c:117114:9
- _ = _11_r1
- var _13_iBrk int32 // sqlite3.c:117133:11
- _ = _13_iBrk
- _v = (*TVdbe)(_pParse.X2)
- _bSeq = bool2int((int32(_pSort.X7) & i32(1)) == i32(0))
- _nExpr = (*XExprList)(_pSort.X0).X0
- _nBase = (_nExpr + _bSeq) + _nData
- _regRecord = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _nOBSat = _pSort.X1
- func() {
- if _bSeq != i32(0) && _bSeq != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117043), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(104168)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _nData != i32(1) && _regData != _regOrigData && _regOrigData != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117044), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(104188)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _nPrefixReg == 0 {
- goto _7
+// The input to this routine is an WhereTerm structure with only the
+// "pExpr" field filled in. The job of this routine is to analyze the
+// subexpression and populate all the other fields of the WhereTerm
+// structure.
+//
+// If the expression is of the form " X" it gets commuted
+// to the standard form of "X ".
+//
+// If the expression is of the form "X Y" where both X and Y are
+// columns, then the original expression is unchanged and a new virtual
+// term of the form "Y X" is added to the WHERE clause and
+// analyzed separately. The original term is marked with TERM_COPIED
+// and the new term is marked with TERM_DYNAMIC (because it's pExpr
+// needs to be freed with the WhereClause) and TERM_VIRTUAL (because it
+// is a commuted copy of a prior term.) The original term has nChild=1
+// and the copy has idxParent set to the index of the original term.
+func _exprAnalyze(tls *crt.TLS, _pSrc *XSrcList, _pWC *XWhereClause, _idxTerm int32) {
+ var _isComplete, _noCase, _op, _nLeft, _13_idxNew, _17_i, _18_idxNew, _20_idxNew1, _20_idxNew2, _21_i, _26_idxNew, _28_i, _29_idxNew, _30_i, _31_idxNew int32
+ var _21_c int8
+ var _prereqLeft, _prereqAll, _extraRight, _7_x, _26_prereqColumn, _26_prereqExpr uint64
+ var _20_zCollSeqName *int8
+ var _9_opMask, _12_eExtraOp, _20_wtFlags uint16
+ var _eOp2, _23_c uint8
+ var _23_pC *uint8
+ var _db *Xsqlite3
+ var _17_pList *XExprList
+ var _9_aiCurCol [2]int32
+ var _pExpr, _pStr1, _9_pLeft, _9_pRight, _12_pDup, _18_pNewExpr, _20_pLeft, _20_pStr2, _20_pNewExpr1, _20_pNewExpr2, _26_pRight, _26_pLeft, _27_pNewExpr, _29_pNew, _29_pLeft, _29_pRight *XExpr
+ var _pParse *XParse
+ var _pWInfo *XWhereInfo
+ var _pTerm, _12_pNew, _26_pNewTerm *XWhereTerm
+ var _pMaskSet *XWhereMaskSet
+ _pWInfo = (*XWhereInfo)(_pWC.X0)
+ _extraRight = u64(0)
+ _pStr1 = nil
+ _isComplete = i32(0)
+ _noCase = i32(0)
+ _pParse = (*XParse)(_pWInfo.X0)
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_db.X17) != 0 {
+ return
}
-
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ _pMaskSet = (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(484 /* X23 */)))
+ _pExpr = (*XExpr)(_pTerm.X0)
func() {
- if _nPrefixReg != (_nExpr + _bSeq) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117046), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(104240)))
+ if int32(_pExpr.X0) == i32(24) || int32(_pExpr.X0) == i32(94) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129865), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(102855)))
crt.X__builtin_abort(tls)
}
}()
- _regBase = (_regData - _nExpr) - _bSeq
- goto _10
-
-_7:
- _regBase = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nBase
- sink1 = *p
+ _prereqLeft = _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pExpr.X4))
+ _op = int32(_pExpr.X0)
+ if _op != i32(74) {
+ goto _4
}
-_10:
func() {
- if (_pSelect.X5) != i32(0) && (_pSelect.X4) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117052), unsafe.Pointer((*int8)(unsafe.Pointer(&_pushOntoSorterØ00__func__Ø000))), unsafe.Pointer(str(104264)))
+ if (*XExpr)(_pExpr.X5) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129869), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(102897)))
crt.X__builtin_abort(tls)
}
}()
- _iLimit = func() int32 {
- if (_pSelect.X5) != 0 {
- return ((_pSelect.X5) + i32(1))
- }
- return (_pSelect.X4)
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSort)) + uintptr(24 /* X6 */))) = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3ExprCodeExprList(tls, _pParse, (*XExprList)(_pSort.X0), _regBase, _regOrigData, uint8(i32(1)|func() int32 {
- if _regOrigData != 0 {
- return i32(4)
- }
- return i32(0)
- }()))
- if _bSeq == 0 {
- goto _18
+ if _sqlite3ExprCheckIN(tls, _pParse, _pExpr) != 0 {
+ return
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(116), _pSort.X2, _regBase+_nExpr)
-_18:
- if _nPrefixReg != i32(0) || _nData <= i32(0) {
- goto _20
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = _exprSelectUsage(tls, _pMaskSet, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
+ goto _9
}
-
- _sqlite3ExprCodeMove(tls, _pParse, _regData, (_regBase+_nExpr)+_bSeq, _nData)
-_20:
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regBase+_nOBSat, _nBase-_nOBSat, _regRecord)
- if _nOBSat <= i32(0) {
- goto _21
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
+_9:
+ goto _10
+_4:
+ if _op == i32(75) {
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = uint64(i32(0))
+ goto _12
}
-
- _5_regPrevKey = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + (_pSort.X1)
- sink1 = *p
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pExpr.X5))
+_12:
+_10:
+ _prereqAll = _sqlite3WhereExprUsage(tls, _pMaskSet, _pExpr)
+ if ((_pExpr.X2) & uint32(i32(1))) == uint32(i32(0)) {
+ goto _13
}
- _5_nKey = (_nExpr - (_pSort.X1)) + _bSeq
- if _bSeq == 0 {
- goto _22
+ _7_x = _sqlite3WhereGetMask(tls, _pMaskSet, int32(_pExpr.X11))
+ {
+ p := &_prereqAll
+ *p = (*p) | _7_x
+ sink17 = *p
}
-
- _5_addrFirst = _sqlite3VdbeAddOp1(tls, _v, i32(22), _regBase+_nExpr)
- goto _23
-
-_22:
- _5_addrFirst = _sqlite3VdbeAddOp1(tls, _v, i32(112), _pSort.X2)
-_23:
- _sqlite3VdbeAddOp3(tls, _v, i32(98), _5_regPrevKey, _regBase, _pSort.X1)
- _5_pOp = _sqlite3VdbeGetOp(tls, _v, _pSort.X5)
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- goto _24
+ _extraRight = _7_x - uint64(i32(1))
+ if (_prereqAll >> uint(i32(1))) >= _7_x {
+ _sqlite3ErrorMsg(tls, _pParse, str(102914))
+ return
}
- return
-
-_24:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pOp)) + uintptr(8 /* X4 */))) = _5_nKey + _nData
- _5_pKI = (*XKeyInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pOp)) + uintptr(16 /* X6 */))))))
- crt.Xmemset(tls, (unsafe.Pointer)(_5_pKI.X5), i32(0), uint32(_5_pKI.X2))
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_5_pKI)), i32(-5))
- *(**XKeyInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pOp)) + uintptr(16 /* X6 */))))))) = _keyInfoFromExprList(tls, _pParse, (*XExprList)(_pSort.X0), _nOBSat, int32(_5_pKI.X3)-i32(1))
- _5_addrJmp = _sqlite3VdbeCurrentAddr(tls, _v)
- _sqlite3VdbeAddOp3(tls, _v, i32(18), _5_addrJmp+i32(1), i32(0), _5_addrJmp+i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSort)) + uintptr(16 /* X4 */))) = _sqlite3VdbeMakeLabel(tls, _v)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSort)) + uintptr(12 /* X3 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(14), _pSort.X3, _pSort.X4)
- _sqlite3VdbeAddOp1(tls, _v, i32(135), _pSort.X2)
- if _iLimit == 0 {
- goto _25
+_13:
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(40 /* X12 */))) = _prereqAll
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(20 /* X8 */))) = i32(-1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(16 /* X7 */))) = i32(-1)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(i32(0))
+ if _allowedOp(tls, _op) == 0 {
+ goto _15
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(22), _iLimit, _pSort.X6)
-_25:
- _sqlite3VdbeJumpHere(tls, _v, _5_addrFirst)
- _sqlite3ExprCodeMove(tls, _pParse, _regBase, _5_regPrevKey, _pSort.X1)
- _sqlite3VdbeJumpHere(tls, _v, _5_addrJmp)
-_21:
- if (int32(_pSort.X7) & i32(1)) == 0 {
- goto _26
+ _9_pLeft = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pExpr.X4))
+ _9_pRight = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pExpr.X5))
+ _9_opMask = uint16(func() int32 {
+ if ((_pTerm.X11) & _prereqLeft) == uint64(i32(0)) {
+ return i32(8191)
+ }
+ return i32(2048)
+ }())
+ if (_pTerm.X9) > i32(0) {
+ func() {
+ if _op != i32(74) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129903), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(102955)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_9_pLeft.X0) != i32(158) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129904), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(102965)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _9_pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pLeft)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr((_pTerm.X9)-i32(1)))).X0)
}
-
- _op = i32(127)
- goto _27
-
-_26:
- _op = i32(128)
-_27:
- _sqlite3VdbeAddOp4Int(tls, _v, _op, _pSort.X2, _regRecord, _regBase+_nOBSat, _nBase-_nOBSat)
- if _iLimit == 0 {
- goto _28
+ if _exprMightBeIndexed(tls, _pSrc, _prereqLeft, (*int32)(unsafe.Pointer(&_9_aiCurCol)), _9_pLeft, _op) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(20 /* X8 */))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(0))))
+ *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(1))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(int32(_operatorMask(tls, _op)) & int32(_9_opMask))
}
-
- _11_r1 = i32(0)
- _11_addr = _sqlite3VdbeAddOp1(tls, _v, i32(47), _iLimit)
- _sqlite3VdbeAddOp1(tls, _v, i32(33), _pSort.X2)
- if (_pSort.X8) == 0 {
- goto _29
+ if _op == i32(72) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(2048))
+ sink14 = *p
+ }
}
-
- _11_r1 = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _pSort.X2, _nExpr, _11_r1)
- _sqlite3VdbeComment(tls, _v, str(97748))
-_29:
- _sqlite3VdbeAddOp1(tls, _v, i32(120), _pSort.X2)
- if (_pSort.X8) == 0 {
- goto _30
+ if _9_pRight == nil || _exprMightBeIndexed(tls, _pSrc, _pTerm.X11, (*int32)(unsafe.Pointer(&_9_aiCurCol)), _9_pRight, _op) == 0 {
+ goto _26
}
-
- _13_iBrk = _sqlite3VdbeCurrentAddr(tls, _v) + i32(2)
- _sqlite3VdbeAddOp3(tls, _v, i32(78), _regBase+_nExpr, _13_iBrk, _11_r1)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(128)))
-_30:
- _sqlite3VdbeJumpHere(tls, _v, _11_addr)
-_28:
-}
-
-var _pushOntoSorterØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_pushOntoSorterØ00__func__Ø000[0], str(104308), 15)
-}
-
-func _sqlite3ExprCodeMove(tls *crt.TLS, _pParse *XParse, _iFrom int32, _iTo int32, _nReg int32) { // sqlite3.c:94254:1
+ _12_eExtraOp = u16(0)
func() {
- if _iFrom < (_iTo+_nReg) && (_iFrom+_nReg) > _iTo {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94255), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeMoveØ00__func__Ø000))), unsafe.Pointer(str(104324)))
+ if (_pTerm.X9) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129920), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(102986)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp3(tls, (*TVdbe)(_pParse.X2), i32(63), _iFrom, _iTo, _nReg)
- _sqlite3ExprCacheRemove(tls, _pParse, _iFrom, _nReg)
-}
-
-var _sqlite3ExprCodeMoveØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeMoveØ00__func__Ø000[0], str(104360), 20)
-}
-
-func _keyInfoFromExprList(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _iStart int32, _nExtra int32) (r0 *XKeyInfo) { // sqlite3.c:117617:1
- var _nExpr int32 // sqlite3.c:117623:7
- _ = _nExpr
- var _pInfo *XKeyInfo // sqlite3.c:117624:11
- _ = _pInfo
- var _pItem *TExprList_item // sqlite3.c:117625:24
- _ = _pItem
- var _db *Xsqlite3 // sqlite3.c:117626:11
- _ = _db
- var _i int32 // sqlite3.c:117627:7
- _ = _i
- var _2_pColl *XCollSeq // sqlite3.c:117634:15
- _ = _2_pColl
- _db = (*Xsqlite3)(_pParse.X0)
- _nExpr = _pList.X0
- _pInfo = _sqlite3KeyInfoAlloc(tls, _db, _nExpr-_iStart, _nExtra+i32(1))
- if _pInfo == nil {
- goto _0
+ if (_pTerm.X8) < i32(0) {
+ goto _29
}
-
- func() {
- if _sqlite3KeyInfoIsWriteable(tls, _pInfo) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117632), unsafe.Pointer((*int8)(unsafe.Pointer(&_keyInfoFromExprListØ00__func__Ø000))), unsafe.Pointer(str(104380)))
- crt.X__builtin_abort(tls)
- }
- }()
- *func() **TExprList_item { _i = _iStart; return &_pItem }() = (*TExprList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))))) + uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr(_iStart)))))*uintptr(unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr(20)))))))))))
-_3:
- if _i >= _nExpr {
- goto _6
+ _12_pDup = _sqlite3ExprDup(tls, _db, _pExpr, i32(0))
+ if (_db.X17) != 0 {
+ _sqlite3ExprDelete(tls, _db, _12_pDup)
+ return
}
-
- _2_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pItem.X0))
- if _2_pColl != nil {
- goto _7
+ _13_idxNew = _whereClauseInsert(tls, _pWC, _12_pDup, uint16(i32(3)))
+ if _13_idxNew == i32(0) {
+ return
}
-
- _2_pColl = (*XCollSeq)(_db.X2)
-_7:
- *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(20 /* X6 */))))) + 4*uintptr(_i-_iStart))) = _2_pColl
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo.X5)) + 1*uintptr(_i-_iStart))) = _pItem.X3
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
- goto _3
-
-_6:
-_0:
- r0 = _pInfo
- return
-}
-
-var _keyInfoFromExprListØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_keyInfoFromExprListØ00__func__Ø000[0], str(104416), 20)
-}
-
-func _sqlite3ReleaseTempRange(tls *crt.TLS, _pParse *XParse, _iReg int32, _nReg int32) { // sqlite3.c:96065:1
- if _nReg != i32(1) {
- goto _0
+ _12_pNew = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_13_idxNew)))
+ _markTermAsChild(tls, _pWC, _13_idxNew, _idxTerm)
+ if _op == i32(72) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(2048))
+ sink14 = *p
+ }
}
-
- _sqlite3ReleaseTempReg(tls, _pParse, _iReg)
- return
-
-_0:
- _sqlite3ExprCacheRemove(tls, _pParse, _iReg, _nReg)
- if _nReg <= (_pParse.X14) {
- goto _1
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(8))
+ sink14 = *p
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(28 /* X14 */))) = _nReg
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(32 /* X15 */))) = _iReg
-_1:
-}
-
-func _sqlite3VdbeResolveLabel(tls *crt.TLS, _v *TVdbe, _x int32) { // sqlite3.c:71800:1
- var _p *XParse // sqlite3.c:71801:9
- _ = _p
- var _j int32 // sqlite3.c:71802:7
- _ = _j
- _p = (*XParse)(_v.X3)
- _j = i32(-1) - _x
- func() {
- if (_v.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71803), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeResolveLabelØ00__func__Ø000))), unsafe.Pointer(str(46128)))
- crt.X__builtin_abort(tls)
+ if _termIsEquivalence(tls, _pParse, _12_pDup) != 0 {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */)))
+ *p = uint16(int32(*p) | i32(2048))
+ sink14 = *p
}
- }()
+ _12_eExtraOp = uint16(i32(2048))
+ }
+ goto _34
+_29:
+ _12_pDup = _pExpr
+ _12_pNew = _pTerm
+_34:
+ _exprCommute(tls, _pParse, _12_pDup)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(20 /* X8 */))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(0))))
+ *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(28 /* X10 */))))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(1))))
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(32 /* X11 */))) = _prereqLeft | _extraRight
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(40 /* X12 */))) = _prereqAll
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(12 /* X4 */))) = uint16((int32(_operatorMask(tls, int32(_12_pDup.X0))) + int32(_12_eExtraOp)) & int32(_9_opMask))
+_26:
+ goto _35
+_15:
+ if int32(_pExpr.X0) != i32(73) || int32(_pWC.X2) != i32(71) {
+ goto _37
+ }
+ _17_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
func() {
- if _j >= (_p.X25) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71804), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeResolveLabelØ00__func__Ø000))), unsafe.Pointer(str(104436)))
+ if _17_pList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129974), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(90087)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _j < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(71805), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeResolveLabelØ00__func__Ø000))), unsafe.Pointer(str(104448)))
+ if (_17_pList.X0) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129975), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(103003)))
crt.X__builtin_abort(tls)
}
}()
- if (_p.X26) == nil {
- goto _6
+ _17_i = i32(0)
+_42:
+ if _17_i >= i32(2) {
+ goto _45
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X26)) + 4*uintptr(_j))) = _v.X27
-_6:
-}
-
-var _sqlite3VdbeResolveLabelØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeResolveLabelØ00__func__Ø000[0], str(104456), 24)
-}
-
-func _multiSelectOrderBy(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pDest *XSelectDest) (r0 int32) { // sqlite3.c:119356:1
- var _i int32 // sqlite3.c:119361:7
- _ = _i
- var _j int32 // sqlite3.c:119361:10
- _ = _j
- var _pPrior *XSelect // sqlite3.c:119362:10
- _ = _pPrior
- var _v *TVdbe // sqlite3.c:119363:8
- _ = _v
- var _destA XSelectDest // sqlite3.c:119364:14
- _ = _destA
- var _destB XSelectDest // sqlite3.c:119365:14
- _ = _destB
- var _regAddrA int32 // sqlite3.c:119366:7
- _ = _regAddrA
- var _regAddrB int32 // sqlite3.c:119367:7
- _ = _regAddrB
- var _addrSelectA int32 // sqlite3.c:119368:7
- _ = _addrSelectA
- var _addrSelectB int32 // sqlite3.c:119369:7
- _ = _addrSelectB
- var _regOutA int32 // sqlite3.c:119370:7
- _ = _regOutA
- var _regOutB int32 // sqlite3.c:119371:7
- _ = _regOutB
- var _addrOutA int32 // sqlite3.c:119372:7
- _ = _addrOutA
- var _addrOutB int32 // sqlite3.c:119373:7
- _ = _addrOutB
- var _addrEofA int32 // sqlite3.c:119374:7
- _ = _addrEofA
- var _addrEofA_noB int32 // sqlite3.c:119375:7
- _ = _addrEofA_noB
- var _addrEofB int32 // sqlite3.c:119376:7
- _ = _addrEofB
- var _addrAltB int32 // sqlite3.c:119377:7
- _ = _addrAltB
- var _addrAeqB int32 // sqlite3.c:119378:7
- _ = _addrAeqB
- var _addrAgtB int32 // sqlite3.c:119379:7
- _ = _addrAgtB
- var _regLimitA int32 // sqlite3.c:119380:7
- _ = _regLimitA
- var _regLimitB int32 // sqlite3.c:119381:7
- _ = _regLimitB
- var _regPrev int32 // sqlite3.c:119382:7
- _ = _regPrev
- var _savedLimit int32 // sqlite3.c:119383:7
- _ = _savedLimit
- var _savedOffset int32 // sqlite3.c:119384:7
- _ = _savedOffset
- var _labelCmpr int32 // sqlite3.c:119385:7
- _ = _labelCmpr
- var _labelEnd int32 // sqlite3.c:119386:7
- _ = _labelEnd
- var _addr1 int32 // sqlite3.c:119387:7
- _ = _addr1
- var _op int32 // sqlite3.c:119388:7
- _ = _op
- var _pKeyDup *XKeyInfo // sqlite3.c:119389:11
- _ = _pKeyDup
- var _pKeyMerge *XKeyInfo // sqlite3.c:119390:11
- _ = _pKeyMerge
- var _db *Xsqlite3 // sqlite3.c:119391:11
- _ = _db
- var _pOrderBy *XExprList // sqlite3.c:119392:12
- _ = _pOrderBy
- var _nOrderBy int32 // sqlite3.c:119393:7
- _ = _nOrderBy
- var _aPermute *int32 // sqlite3.c:119394:7
- _ = _aPermute
- var _iSub1 int32 // sqlite3.c:119396:7
- _ = _iSub1
- var _iSub2 int32 // sqlite3.c:119397:7
- _ = _iSub2
- var _2_pItem *TExprList_item // sqlite3.c:119424:28
- _ = _2_pItem
- var _4_pNew *XExpr // sqlite3.c:119430:14
- _ = _4_pNew
- var _5_pItem *TExprList_item // sqlite3.c:119449:26
- _ = _5_pItem
- var _9_nExpr int32 // sqlite3.c:119473:9
- _ = _9_nExpr
- var _24_pFirst *XSelect // sqlite3.c:119647:12
- _ = _24_pFirst
- _addrOutB = i32(0)
- _pKeyDup = nil
- func() {
- if (*XExprList)(_p.X12) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119400), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104480)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _pKeyDup != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119401), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104496)))
- crt.X__builtin_abort(tls)
- }
- }()
- _db = (*Xsqlite3)(_pParse.X0)
- _v = (*TVdbe)(_pParse.X2)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119404), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(43120)))
- crt.X__builtin_abort(tls)
- }
- }()
- _labelEnd = _sqlite3VdbeMakeLabel(tls, _v)
- _labelCmpr = _sqlite3VdbeMakeLabel(tls, _v)
- _op = int32(_p.X1)
- _pPrior = (*XSelect)(_p.X13)
- func() {
- if (*XExprList)(_pPrior.X12) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119413), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104508)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pOrderBy = (*XExprList)(_p.X12)
- func() {
- if _pOrderBy == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119415), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104528)))
- crt.X__builtin_abort(tls)
- }
- }()
- _nOrderBy = _pOrderBy.X0
- if _op == i32(116) {
- goto _10
+ _18_pNewExpr = _sqlite3PExpr(tls, _pParse, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnalyzeØ00opsØ001)) + 1*uintptr(_17_i)))), _sqlite3ExprDup(tls, _db, (*XExpr)(_pExpr.X4), i32(0)), _sqlite3ExprDup(tls, _db, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_17_i))).X0), i32(0)))
+ _transferJoinMarkings(tls, _18_pNewExpr, _pExpr)
+ _18_idxNew = _whereClauseInsert(tls, _pWC, _18_pNewExpr, uint16(i32(3)))
+ _exprAnalyze(tls, _pSrc, _pWC, _18_idxNew)
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ _markTermAsChild(tls, _pWC, _18_idxNew, _idxTerm)
+ _17_i += 1
+ goto _42
+_45:
+ goto _46
+_37:
+ if int32(_pExpr.X0) == i32(70) {
+ func() {
+ if int32(_pWC.X2) != i32(71) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129997), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(103019)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _exprAnalyzeOrTerm(tls, _pSrc, _pWC, _idxTerm)
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
}
-
- _i = i32(1)
-_11:
- if int32(_db.X17) != i32(0) || _i > ((*XExprList)(_p.X0).X0) {
- goto _15
+_46:
+_35:
+ if int32(_pWC.X2) != i32(71) || _isLikeOrGlob(tls, _pParse, _pExpr, &_pStr1, &_isComplete, &_noCase) == 0 {
+ goto _51
}
-
- *func() **TExprList_item { _j = i32(0); return &_2_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
-_16:
- if _j >= _nOrderBy {
- goto _19
+ _20_wtFlags = u16(259)
+ _20_pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
+ _20_pStr2 = _sqlite3ExprDup(tls, _db, _pStr1, i32(0))
+ if _noCase == 0 || ((*Xsqlite3)(_pParse.X0).X17) != 0 {
+ goto _53
}
-
- func() {
- if int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pItem))+uintptr(16 /* X5 */))))).X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119426), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104540)))
- crt.X__builtin_abort(tls)
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(1024))
+ sink14 = *p
+ }
+ _21_i = i32(0)
+_54:
+ if int32(store3(&_21_c, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pStr1)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_21_i))))) == i32(0) {
+ goto _57
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pStr1)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_21_i))) = int8(int32(_21_c) & (^(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_21_c))))) & i32(32))))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_20_pStr2)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_21_i))) = int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_21_c)))))
+ _21_i += 1
+ goto _54
+_57:
+_53:
+ if (_db.X17) != 0 {
+ goto _58
+ }
+ _23_pC = (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_20_pStr2)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_20_pStr2)) + uintptr(8 /* X3 */))))))-i32(1))))))
+ _23_c = *_23_pC
+ if _noCase == 0 {
+ goto _59
+ }
+ if int32(_23_c) == i32(64) {
+ _isComplete = i32(0)
+ }
+ _23_c = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(_23_c)))
+_59:
+ *_23_pC = uint8(int32(_23_c) + i32(1))
+_58:
+ _20_zCollSeqName = func() *int8 {
+ if _noCase != 0 {
+ return str(103035)
}
+ return str(37881)
}()
- if int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pItem))+uintptr(16 /* X5 */))))).X0) != _i {
- goto _22
+ _20_pNewExpr1 = _sqlite3ExprDup(tls, _db, _20_pLeft, i32(0))
+ _20_pNewExpr1 = _sqlite3PExpr(tls, _pParse, i32(82), _sqlite3ExprAddCollateString(tls, _pParse, _20_pNewExpr1, _20_zCollSeqName), _pStr1)
+ _transferJoinMarkings(tls, _20_pNewExpr1, _pExpr)
+ _20_idxNew1 = _whereClauseInsert(tls, _pWC, _20_pNewExpr1, _20_wtFlags)
+ _exprAnalyze(tls, _pSrc, _pWC, _20_idxNew1)
+ _20_pNewExpr2 = _sqlite3ExprDup(tls, _db, _20_pLeft, i32(0))
+ _20_pNewExpr2 = _sqlite3PExpr(tls, _pParse, i32(81), _sqlite3ExprAddCollateString(tls, _pParse, _20_pNewExpr2, _20_zCollSeqName), _20_pStr2)
+ _transferJoinMarkings(tls, _20_pNewExpr2, _pExpr)
+ _20_idxNew2 = _whereClauseInsert(tls, _pWC, _20_pNewExpr2, _20_wtFlags)
+ _exprAnalyze(tls, _pSrc, _pWC, _20_idxNew2)
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ if _isComplete != 0 {
+ _markTermAsChild(tls, _pWC, _20_idxNew1, _idxTerm)
+ _markTermAsChild(tls, _pWC, _20_idxNew2, _idxTerm)
}
-
- goto _19
-
-_22:
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _j += 1; return &_2_pItem }())) += uintptr(20)
- goto _16
-
-_19:
- if _j != _nOrderBy {
- goto _23
+_51:
+ if int32(_pWC.X2) != i32(71) || _isMatchOfColumn(tls, _pExpr, &_eOp2) == 0 {
+ goto _65
}
-
- _4_pNew = _sqlite3Expr(tls, _db, i32(134), nil)
- if _4_pNew != nil {
- goto _24
+ _26_pRight = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
+ _26_pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
+ _26_prereqExpr = _sqlite3WhereExprUsage(tls, _pMaskSet, _26_pRight)
+ _26_prereqColumn = _sqlite3WhereExprUsage(tls, _pMaskSet, _26_pLeft)
+ if (_26_prereqExpr & _26_prereqColumn) == uint64(i32(0)) {
+ _27_pNewExpr = _sqlite3PExpr(tls, _pParse, i32(50), nil, _sqlite3ExprDup(tls, _db, _26_pRight, i32(0)))
+ _26_idxNew = _whereClauseInsert(tls, _pWC, _27_pNewExpr, uint16(i32(3)))
+ _26_pNewTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_26_idxNew)))
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(32 /* X11 */))) = _26_prereqExpr
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(20 /* X8 */))) = _26_pLeft.X8
+ *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(28 /* X10 */))))) = int32(_26_pLeft.X9)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(12 /* X4 */))) = uint16(i32(64))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(15 /* X6 */))) = _eOp2
+ _markTermAsChild(tls, _pWC, _26_idxNew, _idxTerm)
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(8))
+ sink14 = *p
+ }
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(40 /* X12 */))) = _pTerm.X12
}
- return _sqlite3NomemError(tls, i32(119431))
-
-_24:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1024))
- sink5 = *p
+_65:
+ if int32(_pWC.X2) != i32(71) || int32(_pExpr.X0) != i32(78) && int32(_pExpr.X0) != i32(72) || store1(&_nLeft, _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4))) <= i32(1) || _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X5)) != _nLeft || (((*XExpr)(_pExpr.X4).X2)&uint32(i32(2048))) != uint32(i32(0)) && (((*XExpr)(_pExpr.X5).X2)&uint32(i32(2048))) != uint32(i32(0)) {
+ goto _73
}
- *(*int32)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pNew)) + uintptr(8 /* X3 */))))) = _i
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = store40(&_pOrderBy, _sqlite3ExprListAppend(tls, _pParse, _pOrderBy, _4_pNew))
- if _pOrderBy == nil {
- goto _25
+ _28_i = i32(0)
+_74:
+ if _28_i >= _nLeft {
+ goto _77
+ }
+ _29_pLeft = _sqlite3ExprForVectorField(tls, _pParse, (*XExpr)(_pExpr.X4), _28_i)
+ _29_pRight = _sqlite3ExprForVectorField(tls, _pParse, (*XExpr)(_pExpr.X5), _28_i)
+ _29_pNew = _sqlite3PExpr(tls, _pParse, int32(_pExpr.X0), _29_pLeft, _29_pRight)
+ _transferJoinMarkings(tls, _29_pNew, _pExpr)
+ _29_idxNew = _whereClauseInsert(tls, _pWC, _29_pNew, uint16(i32(1)))
+ _exprAnalyze(tls, _pSrc, _pWC, _29_idxNew)
+ _28_i += 1
+ goto _74
+_77:
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */))) = uint16(i32(6))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(i32(0))
+_73:
+ if int32(_pWC.X2) != i32(71) || int32(_pExpr.X0) != i32(74) || (_pTerm.X9) != i32(0) || int32((*XExpr)(_pExpr.X4).X0) != i32(158) || (*XSelect)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X13) != nil {
+ goto _82
+ }
+ _30_i = i32(0)
+_83:
+ if _30_i >= _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4)) {
+ goto _86
+ }
+ _31_idxNew = _whereClauseInsert(tls, _pWC, _pExpr, uint16(i32(2)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_31_idxNew))))) + uintptr(24 /* X9 */))) = _30_i + i32(1)
+ _exprAnalyze(tls, _pSrc, _pWC, _31_idxNew)
+ _markTermAsChild(tls, _pWC, _31_idxNew, _idxTerm)
+ _30_i += 1
+ goto _83
+_86:
+_82:
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ {
+ p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */)))
+ *p = (*p) | _extraRight
+ sink17 = *p
}
+ _ = _9_aiCurCol
+}
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(postInc1(&_nOrderBy, int32(1)))))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(_i)
-_25:
-_23:
- _i += 1
- goto _11
+var _exprAnalyzeØ00__func__Ø000 [12]int8
-_15:
-_10:
- _aPermute = (*int32)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(4)*uint32(_nOrderBy+i32(1)))))
- if _aPermute == nil {
- goto _26
- }
+func init() {
+ crt.Xstrncpy(nil, &_exprAnalyzeØ00__func__Ø000[0], str(103042), 12)
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPermute)) + 4*uintptr(i32(0)))) = _nOrderBy
- *func() **TExprList_item { _i = i32(1); return &_5_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy)) + uintptr(8 /* X2 */)))))
-_27:
- if _i > _nOrderBy {
- goto _30
+// These routines walk (recursively) an expression tree and generate
+// a bitmask indicating which tables are used in that expression
+// tree.
+func _sqlite3WhereExprUsage(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _p *XExpr) (r0 uint64) {
+ var _mask uint64
+ if _p == nil {
+ return uint64(i32(0))
}
-
- func() {
- if int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pItem))+uintptr(16 /* X5 */))))).X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119452), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104540)))
- crt.X__builtin_abort(tls)
+ if int32(_p.X0) == i32(152) {
+ return _sqlite3WhereGetMask(tls, _pMaskSet, _p.X8)
+ }
+ _mask = func() uint64 {
+ if int32(_p.X0) == i32(160) {
+ return _sqlite3WhereGetMask(tls, _pMaskSet, _p.X8)
}
+ return uint64(i32(0))
}()
func() {
- if int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pItem))+uintptr(16 /* X5 */))))).X0) > ((*XExprList)(_p.X0).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119453), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104568)))
+ if ((_p.X2) & uint32(i32(16384))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130308), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExprUsageØ00__func__Ø000))), unsafe.Pointer(str(103054)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aPermute)) + 4*uintptr(_i))) = int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pItem))+uintptr(16 /* X5 */))))).X0) - i32(1)
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_5_pItem }())) += uintptr(20)
- goto _27
-
-_30:
- _pKeyMerge = _multiSelectOrderByKeyInfo(tls, _pParse, _p, i32(1))
- goto _35
-
-_26:
- _pKeyMerge = nil
-_35:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X12 */))))) = _pOrderBy
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(56 /* X12 */))))) = _sqlite3ExprListDup(tls, (*Xsqlite3)(_pParse.X0), _pOrderBy, i32(0))
- if _op != i32(116) {
- goto _36
+ if (*XExpr)(_p.X5) != nil {
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_p.X5))
+ sink17 = *p
+ }
}
-
- _regPrev = i32(0)
- goto _37
-
-_36:
- _9_nExpr = (*XExprList)(_p.X0).X0
- func() {
- if _nOrderBy < _9_nExpr && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119474), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104612)))
- crt.X__builtin_abort(tls)
+ if (*XExpr)(_p.X4) != nil {
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_p.X4))
+ sink17 = *p
}
- }()
- _regPrev = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + (_9_nExpr + i32(1))
- sink1 = *p
}
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _regPrev)
- _pKeyDup = _sqlite3KeyInfoAlloc(tls, _db, _9_nExpr, i32(1))
- if _pKeyDup == nil {
- goto _41
+ if ((_p.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ {
+ p := &_mask
+ *p = (*p) | _exprSelectUsage(tls, _pMaskSet, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
+ sink17 = *p
+ }
+ goto _9
}
-
- func() {
- if _sqlite3KeyInfoIsWriteable(tls, _pKeyDup) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119480), unsafe.Pointer((*int8)(unsafe.Pointer(&_multiSelectOrderByØ00__func__Ø000))), unsafe.Pointer(str(104648)))
- crt.X__builtin_abort(tls)
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) != nil {
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
+ sink17 = *p
}
- }()
- _i = i32(0)
-_44:
- if _i >= _9_nExpr {
- goto _47
}
+_9:
+ return _mask
+}
- *(**XCollSeq)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyDup))+uintptr(20 /* X6 */))))) + 4*uintptr(_i))) = _multiSelectCollSeq(tls, _pParse, _p, _i)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pKeyDup.X5)) + 1*uintptr(_i))) = uint8(i32(0))
- _i += 1
- goto _44
+var _sqlite3WhereExprUsageØ00__func__Ø000 [22]int8
-_47:
-_41:
-_37:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = nil
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(64 /* X14 */))))) = nil
- _sqlite3ResolveOrderGroupBy(tls, _pParse, _p, (*XExprList)(_p.X12), str(25684))
- if (*XSelect)(_pPrior.X13) != nil {
- goto _48
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WhereExprUsageØ00__func__Ø000[0], str(103088), 22)
+}
- _sqlite3ResolveOrderGroupBy(tls, _pParse, _pPrior, (*XExprList)(_pPrior.X12), str(25684))
-_48:
- _computeLimitRegisters(tls, _pParse, _p, _labelEnd)
- if (_p.X4) == 0 || _op != i32(116) {
- goto _50
+// Recursively walk the expressions of a SELECT statement and generate
+// a bitmask indicating which tables are used in that expression
+// tree.
+func _exprSelectUsage(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _pS *XSelect) (r0 uint64) {
+ var _2_i int32
+ var _mask uint64
+ var _1_pSrc *XSrcList
+ _mask = u64(0)
+_0:
+ if _pS == nil {
+ goto _1
}
-
- _regLimitA = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _regLimitB = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(64), func() int32 {
- if (_p.X5) != 0 {
- return ((_p.X5) + i32(1))
- }
- return (_p.X4)
- }(), _regLimitA)
- _sqlite3VdbeAddOp2(tls, _v, i32(64), _regLimitA, _regLimitB)
- goto _53
-
-_50:
- _regLimitA = store1(&_regLimitB, i32(0))
-_53:
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X15))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(68 /* X15 */))))) = nil
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_p.X16))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(72 /* X16 */))))) = nil
- _regAddrA = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _regAddrB = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _regOutA = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _regOutB = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3SelectDestInit(tls, &_destA, i32(13), _regAddrA)
- _sqlite3SelectDestInit(tls, &_destB, i32(13), _regAddrB)
- _addrSelectA = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
- _addr1 = _sqlite3VdbeAddOp3(tls, _v, i32(15), _regAddrA, i32(0), _addrSelectA)
- _sqlite3VdbeComment(tls, _v, str(104684))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(12 /* X4 */))) = _regLimitA
- _iSub1 = _pParse.X59
- _sqlite3Select(tls, _pParse, _pPrior, &_destA)
- _sqlite3VdbeEndCoroutine(tls, _v, _regAddrA)
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
- _addrSelectB = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
- _addr1 = _sqlite3VdbeAddOp3(tls, _v, i32(15), _regAddrB, i32(0), _addrSelectB)
- _sqlite3VdbeComment(tls, _v, str(104696))
- _savedLimit = _p.X4
- _savedOffset = _p.X5
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = _regLimitB
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = i32(0)
- _iSub2 = _pParse.X59
- _sqlite3Select(tls, _pParse, _p, &_destB)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X4 */))) = _savedLimit
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X5 */))) = _savedOffset
- _sqlite3VdbeEndCoroutine(tls, _v, _regAddrB)
- _sqlite3VdbeNoopComment(tls, _v, str(104712))
- _addrOutA = _generateOutputSubroutine(tls, _pParse, _p, &_destA, _pDest, _regOutA, _regPrev, _pKeyDup, _labelEnd)
- if _op != i32(116) && _op != i32(115) {
- goto _55
+ _1_pSrc = (*XSrcList)(_pS.X8)
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_pS.X0))
+ sink17 = *p
}
-
- _sqlite3VdbeNoopComment(tls, _v, str(104736))
- _addrOutB = _generateOutputSubroutine(tls, _pParse, _p, &_destB, _pDest, _regOutB, _regPrev, _pKeyDup, _labelEnd)
-_55:
- _sqlite3KeyInfoUnref(tls, _pKeyDup)
- if _op != i32(117) && _op != i32(118) {
- goto _57
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_pS.X10))
+ sink17 = *p
}
-
- _addrEofA_noB = store1(&_addrEofA, _labelEnd)
- goto _58
-
-_57:
- _sqlite3VdbeNoopComment(tls, _v, str(104760))
- _addrEofA = _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutB, _addrOutB)
- _addrEofA_noB = _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrB, _labelEnd)
- _sqlite3VdbeGoto(tls, _v, _addrEofA)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _sqlite3LogEstAdd(tls, _p.X2, _pPrior.X2)
-_58:
- if _op != i32(118) {
- goto _59
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_pS.X12))
+ sink17 = *p
}
-
- _addrEofB = _addrEofA
- if int32(_p.X2) <= int32(_pPrior.X2) {
- goto _60
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pS.X9))
+ sink17 = *p
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(6 /* X2 */))) = _pPrior.X2
-_60:
- goto _61
-
-_59:
- _sqlite3VdbeNoopComment(tls, _v, str(104780))
- _addrEofB = _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutA, _addrOutA)
- _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _labelEnd)
- _sqlite3VdbeGoto(tls, _v, _addrEofB)
-_61:
- _sqlite3VdbeNoopComment(tls, _v, str(104800))
- _addrAltB = _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutA, _addrOutA)
- _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _addrEofA)
- _sqlite3VdbeGoto(tls, _v, _labelCmpr)
- if _op != i32(116) {
- goto _62
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pS.X11))
+ sink17 = *p
}
-
- _addrAeqB = _addrAltB
- goto _63
-
-_62:
- if _op != i32(118) {
- goto _64
+ if func() int32 {
+ if _1_pSrc != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129744), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprSelectUsageØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _4
}
-
- _addrAeqB = _addrAltB
- _addrAltB += 1
- goto _65
-
-_64:
- _sqlite3VdbeNoopComment(tls, _v, str(104820))
- _addrAeqB = _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _addrEofA)
- _sqlite3VdbeGoto(tls, _v, _labelCmpr)
-_65:
-_63:
- _sqlite3VdbeNoopComment(tls, _v, str(104840))
- _addrAgtB = _sqlite3VdbeCurrentAddr(tls, _v)
- if _op != i32(116) && _op != i32(115) {
- goto _67
+ _2_i = i32(0)
+_5:
+ if _2_i >= (_1_pSrc.X0) {
+ goto _8
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(14), _regOutB, _addrOutB)
-_67:
- _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrB, _addrEofB)
- _sqlite3VdbeGoto(tls, _v, _labelCmpr)
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
- _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrA, _addrEofA_noB)
- _sqlite3VdbeAddOp2(tls, _v, i32(16), _regAddrB, _addrEofB)
- _sqlite3VdbeResolveLabel(tls, _v, _labelCmpr)
- _sqlite3VdbeAddOp4(tls, _v, i32(96), i32(0), i32(0), i32(0), (*int8)(unsafe.Pointer(_aPermute)), i32(-12))
- _sqlite3VdbeAddOp4(tls, _v, i32(98), _destA.X3, _destB.X3, _nOrderBy, (*int8)(unsafe.Pointer(_pKeyMerge)), i32(-5))
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)))
- _sqlite3VdbeAddOp3(tls, _v, i32(18), _addrAltB, _addrAeqB, _addrAgtB)
- _sqlite3VdbeResolveLabel(tls, _v, _labelEnd)
- if int32(_pDest.X0) != i32(9) {
- goto _68
+ {
+ p := &_mask
+ *p = (*p) | _exprSelectUsage(tls, _pMaskSet, (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_2_i))).X5))
+ sink17 = *p
}
-
- _24_pFirst = _pPrior
-_69:
- if (*XSelect)(_24_pFirst.X13) == nil {
- goto _70
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_2_i))).X12))
+ sink17 = *p
}
+ _2_i += 1
+ goto _5
+_8:
+_4:
+ _pS = (*XSelect)(_pS.X13)
+ goto _0
+_1:
+ return _mask
+}
- _24_pFirst = (*XSelect)(_24_pFirst.X13)
- goto _69
-
-_70:
- _generateColumnNames(tls, _pParse, (*XSrcList)(_24_pFirst.X8), (*XExprList)(_24_pFirst.X0))
-_68:
- if (*XSelect)(_p.X13) == nil {
- goto _71
+func _sqlite3WhereExprListUsage(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _pList *XExprList) (r0 uint64) {
+ var _i int32
+ var _mask uint64
+ _mask = u64(0)
+ if _pList == nil {
+ goto _0
}
-
- _sqlite3SelectDelete(tls, _db, (*XSelect)(_p.X13))
-_71:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X13 */))))) = _pPrior
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior)) + uintptr(64 /* X14 */))))) = _p
- _explainComposite(tls, _pParse, int32(_p.X1), _iSub1, _iSub2, i32(0))
- return bool2int((_pParse.X16) != i32(0))
+ _i = i32(0)
+_1:
+ if _i >= (_pList.X0) {
+ goto _4
+ }
+ {
+ p := &_mask
+ *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ sink17 = *p
+ }
+ _i += 1
+ goto _1
+_4:
+_0:
+ return _mask
}
-var _multiSelectOrderByØ00__func__Ø000 [19]int8 // -
+var _exprSelectUsageØ00__func__Ø000 [16]int8
func init() {
- crt.Xstrncpy(nil, &_multiSelectOrderByØ00__func__Ø000[0], str(104860), 19)
-}
-
-func _sqlite3VdbeEndCoroutine(tls *crt.TLS, _v *TVdbe, _regYield int32) { // sqlite3.c:71754:1
- _sqlite3VdbeAddOp1(tls, _v, i32(53), _regYield)
- *(*uint8)(unsafe.Pointer(uintptr(_v.X3) + uintptr(19 /* X7 */))) = uint8(i32(0))
- *(*int32)(unsafe.Pointer(uintptr(_v.X3) + uintptr(28 /* X14 */))) = i32(0)
+ crt.Xstrncpy(nil, &_exprSelectUsageØ00__func__Ø000[0], str(103110), 16)
}
-func _sqlite3VdbeNoopComment(tls *crt.TLS, _p *TVdbe, _zFormat *int8, args ...interface{}) { // sqlite3.c:72481:1
- var _ap []interface{} // sqlite3.c:72482:11
- _ = _ap
- if _p == nil {
- goto _0
- }
-
- _sqlite3VdbeAddOp0(tls, _p, i32(164))
- _ap = args
- _vdbeVComment(tls, _p, _zFormat, _ap)
- _ap = nil
-_0:
+// Return TRUE if the given operator is one of the operators that is
+// allowed for an indexable WHERE clause term. The allowed operators are
+// "=", "<", ">", "<=", ">=", "IN", "IS", and "IS NULL"
+func _allowedOp(tls *crt.TLS, _op int32) (r0 int32) {
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ return bool2int((((_op == i32(74)) || ((_op >= i32(78)) && (_op <= i32(82)))) || (_op == i32(75))) || (_op == i32(72)))
}
-func _generateOutputSubroutine(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pIn *XSelectDest, _pDest *XSelectDest, _regReturn int32, _regPrev int32, _pKeyInfo *XKeyInfo, _iBreak int32) (r0 int32) { // sqlite3.c:119147:1
- var _v *TVdbe // sqlite3.c:119157:8
- _ = _v
- var _iContinue int32 // sqlite3.c:119158:7
- _ = _iContinue
- var _addr int32 // sqlite3.c:119159:7
- _ = _addr
- var _1_addr1 int32 // sqlite3.c:119167:9
- _ = _1_addr1
- var _1_addr2 int32 // sqlite3.c:119167:16
- _ = _1_addr2
- var _3_r1 int32 // sqlite3.c:119188:11
- _ = _3_r1
- var _3_r2 int32 // sqlite3.c:119189:11
- _ = _3_r2
- var _4_r1 int32 // sqlite3.c:119203:11
- _ = _4_r1
- _v = (*TVdbe)(_pParse.X2)
- _addr = _sqlite3VdbeCurrentAddr(tls, _v)
- _iContinue = _sqlite3VdbeMakeLabel(tls, _v)
- if _regPrev == 0 {
- goto _0
- }
-
- _1_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(22), _regPrev)
- _1_addr2 = _sqlite3VdbeAddOp4(tls, _v, i32(98), _pIn.X3, _regPrev+i32(1), _pIn.X4, (*int8)(unsafe.Pointer(_sqlite3KeyInfoRef(tls, _pKeyInfo))), i32(-5))
- _sqlite3VdbeAddOp3(tls, _v, i32(18), _1_addr2+i32(2), _iContinue, _1_addr2+i32(2))
- _sqlite3VdbeJumpHere(tls, _v, _1_addr1)
- _sqlite3VdbeAddOp3(tls, _v, i32(64), _pIn.X3, _regPrev+i32(1), (_pIn.X4)-i32(1))
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _regPrev)
-_0:
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- goto _1
- }
- return i32(0)
-
-_1:
- _codeOffset(tls, _v, _p.X5, _iContinue)
+func _exprMightBeIndexed(tls *crt.TLS, _pFrom *XSrcList, _mPrereq uint64, _aiCurCol *int32, _pExpr *XExpr, _op int32) (r0 int32) {
+ i32(0)
+ i32(0)
func() {
- if int32(_pDest.X0) == i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119182), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(104880)))
+ if _op > i32(82) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129805), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprMightBeIndexedØ00__func__Ø000))), unsafe.Pointer(str(103126)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if int32(_pDest.X0) == i32(14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119183), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(104908)))
- crt.X__builtin_abort(tls)
+ if (int32(_pExpr.X0) == i32(158)) && ((_op >= i32(79)) && func() int32 {
+ if _op <= i32(82) {
+ return i32(1)
}
- }()
- switch int32(_pDest.X0) {
- case i32(10):
- goto _9
- case i32(11):
- goto _8
- case i32(12):
- goto _7
- case i32(13):
- goto _10
- default:
- goto _11
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129806), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprMightBeIndexedØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0) {
+ _pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
}
-
-_7:
- _3_r1 = _sqlite3GetTempReg(tls, _pParse)
- _3_r2 = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _pIn.X3, _pIn.X4, _3_r1)
- _sqlite3VdbeAddOp2(tls, _v, i32(117), _pDest.X2, _3_r2)
- _sqlite3VdbeAddOp3(tls, _v, i32(118), _pDest.X2, _3_r1, _3_r2)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
- _sqlite3ReleaseTempReg(tls, _pParse, _3_r2)
- _sqlite3ReleaseTempReg(tls, _pParse, _3_r1)
- goto _12
-
-_8:
- _4_r1 = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp4(tls, _v, i32(101), _pIn.X3, _pIn.X4, _4_r1, _pDest.X1, _pIn.X4)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _pIn.X3, _pIn.X4)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _pDest.X2, _4_r1, _pIn.X3, _pIn.X4)
- _sqlite3ReleaseTempReg(tls, _pParse, _4_r1)
- goto _12
-
-_9:
- func() {
- if (_pIn.X4) != i32(1) && (_pParse.X16) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119220), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(104932)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprCodeMove(tls, _pParse, _pIn.X3, _pDest.X2, i32(1))
- goto _12
-
-_10:
- if (_pDest.X3) != i32(0) {
- goto _16
+ if int32(_pExpr.X0) == i32(152) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(0)))) = _pExpr.X8
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(1)))) = int32(_pExpr.X9)
+ return i32(1)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(12 /* X3 */))) = _sqlite3GetTempRange(tls, _pParse, _pIn.X4)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(16 /* X4 */))) = _pIn.X4
-_16:
- _sqlite3ExprCodeMove(tls, _pParse, _pIn.X3, _pDest.X3, _pIn.X4)
- _sqlite3VdbeAddOp1(tls, _v, i32(16), _pDest.X2)
- goto _12
-
-_11:
- func() {
- if int32(_pDest.X0) != i32(9) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(119249), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateOutputSubroutineØ00__func__Ø000))), unsafe.Pointer(str(104964)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3VdbeAddOp2(tls, _v, i32(67), _pIn.X3, _pIn.X4)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _pIn.X3, _pIn.X4)
- goto _12
-
-_12:
- if (_p.X4) == 0 {
- goto _19
+ if _mPrereq == uint64(i32(0)) {
+ return i32(0)
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(48), _p.X4, _iBreak)
-_19:
- _sqlite3VdbeResolveLabel(tls, _v, _iContinue)
- _sqlite3VdbeAddOp1(tls, _v, i32(52), _regReturn)
- return _addr
-}
-
-func _sqlite3KeyInfoRef(tls *crt.TLS, _p *XKeyInfo) (r0 *XKeyInfo) { // sqlite3.c:117585:1
- if _p == nil {
- goto _0
+ if (_mPrereq & (_mPrereq - uint64(i32(1)))) != uint64(i32(0)) {
+ return i32(0)
}
-
- func() {
- if (_p.X0) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117587), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3KeyInfoRefØ00__func__Ø000))), unsafe.Pointer(str(12860)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) += 1
-_0:
- return _p
-}
-
-var _sqlite3KeyInfoRefØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3KeyInfoRefØ00__func__Ø000[0], str(104992), 18)
+ return _exprMightBeIndexed2(tls, _pFrom, _mPrereq, _aiCurCol, _pExpr)
}
-var _generateOutputSubroutineØ00__func__Ø000 [25]int8 // -
+var _exprMightBeIndexedØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_generateOutputSubroutineØ00__func__Ø000[0], str(105012), 25)
+ crt.Xstrncpy(nil, &_exprMightBeIndexedØ00__func__Ø000[0], str(103136), 19)
}
-func _sqlite3LogEstAdd(tls *crt.TLS, _a int16, _b int16) (r0 int16) { // sqlite3.c:29038:1
- if int32(_a) < int32(_b) {
- goto _0
- }
-
- if int32(_a) <= (int32(_b) + i32(49)) {
- goto _1
- }
- return _a
-
-_1:
- if int32(_a) <= (int32(_b) + i32(31)) {
- goto _2
- }
- return int16(int32(_a) + i32(1))
-
-_2:
- return int16(int32(_a) + int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LogEstAddØ00xØ001)) + 1*uintptr(int32(_a)-int32(_b))))))
-
+// Expression pExpr is one operand of a comparison operator that might
+// be useful for indexing. This routine checks to see if pExpr appears
+// in any index. Return TRUE (1) if pExpr is an indexed term and return
+// FALSE (0) if not. If TRUE is returned, also set aiCurCol[0] to the cursor
+// number of the table that is indexed and aiCurCol[1] to the column number
+// of the column that is indexed, or XN_EXPR (-2) if an expression is being
+// indexed.
+//
+// If pExpr is a TK_COLUMN column reference, then this routine always returns
+// true even if that particular column is not indexed, because the column
+// might be added to an automatic index later.
+func _exprMightBeIndexed2(tls *crt.TLS, _pFrom *XSrcList, _mPrereq uint64, _aiCurCol *int32, _pExpr *XExpr) (r0 int32) {
+ var _i, _iCur int32
+ var _pIdx *XIndex
+ _i = i32(0)
_0:
- if int32(_b) <= (int32(_a) + i32(49)) {
- goto _4
+ if _mPrereq <= uint64(i32(1)) {
+ goto _3
}
- return _b
-
+ {
+ p := func() *uint64 { _i += 1; return &_mPrereq }()
+ *p = (*p) >> uint(i32(1))
+ sink17 = *p
+ }
+ goto _0
+_3:
+ _iCur = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X11
+ _pIdx = (*XIndex)((*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X4).X2)
_4:
- if int32(_b) <= (int32(_a) + i32(31)) {
+ if _pIdx == nil {
+ goto _7
+ }
+ if (*XExprList)(_pIdx.X10) == nil {
goto _5
}
- return int16(int32(_b) + i32(1))
-
+ _i = i32(0)
+_9:
+ if _i >= int32(_pIdx.X13) {
+ goto _12
+ }
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) != i32(-2) {
+ goto _10
+ }
+ if _sqlite3ExprCompareSkip(tls, _pExpr, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), _iCur) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(0)))) = _iCur
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(1)))) = i32(-2)
+ return i32(1)
+ }
+_10:
+ _i += 1
+ goto _9
+_12:
_5:
- return int16(int32(_b) + int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3LogEstAddØ00xØ001)) + 1*uintptr(int32(_b)-int32(_a))))))
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _4
+_7:
+ return i32(0)
}
-var _sqlite3LogEstAddØ00xØ001 [32]uint8 // sqlite3.c:29039:30
-
-func init() {
- _sqlite3LogEstAddØ00xØ001 = [32]uint8{10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2}
+// Like sqlite3ExprCompare() except COLLATE operators at the top-level
+// are ignored.
+func _sqlite3ExprCompareSkip(tls *crt.TLS, _pA *XExpr, _pB *XExpr, _iTab int32) (r0 int32) {
+ return _sqlite3ExprCompare(tls, _sqlite3ExprSkipCollate(tls, _pA), _sqlite3ExprSkipCollate(tls, _pB), _iTab)
}
-func _generateColumnNames(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pEList *XExprList) { // sqlite3.c:118096:1
- var _v *TVdbe // sqlite3.c:118101:8
- _ = _v
- var _i int32 // sqlite3.c:118102:7
- _ = _i
- var _pTab *XTable // sqlite3.c:118103:9
- _ = _pTab
- var _db *Xsqlite3 // sqlite3.c:118104:11
- _ = _db
- var _fullNames int32 // sqlite3.c:118105:7
- _ = _fullNames
- var _shortNames int32 // sqlite3.c:118105:18
- _ = _shortNames
- var _2_p *XExpr // sqlite3.c:118122:10
- _ = _2_p
- var _3_zName *int8 // sqlite3.c:118126:12
- _ = _3_zName
- var _4_zCol *int8 // sqlite3.c:118131:12
- _ = _4_zCol
- var _4_iCol int32 // sqlite3.c:118132:11
- _ = _4_iCol
- var _8_zName *int8 // sqlite3.c:118144:14
- _ = _8_zName
- var _10_z *int8 // sqlite3.c:118151:18
- _ = _10_z
- _v = (*TVdbe)(_pParse.X2)
- _db = (*Xsqlite3)(_pParse.X0)
- if (_pParse.X54) == 0 {
- goto _0
+// Translate from TK_xx operator to WO_xx bitmask.
+func _operatorMask(tls *crt.TLS, _op int32) (r0 uint16) {
+ var _c uint16
+ func() {
+ if _allowedOp(tls, _op) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129081), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103155)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _op == i32(74) {
+ _c = uint16(i32(1))
+ goto _3
}
- return
-
-_0:
- if (_pParse.X4) == 0 && (_db.X17) == 0 {
- goto _2
+ if _op == i32(75) {
+ _c = uint16(i32(256))
+ goto _5
+ }
+ if _op == i32(72) {
+ _c = uint16(i32(128))
+ goto _7
}
- return
-
-_2:
func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118115), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(43120)))
+ if (i32(2) << uint(_op-i32(78))) >= i32(32767) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129089), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103169)))
crt.X__builtin_abort(tls)
}
}()
+ _c = uint16(i32(2) << uint(_op-i32(78)))
+_7:
+_5:
+_3:
func() {
- if _pTabList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118116), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(105040)))
+ if _op == i32(75) && int32(_c) != i32(256) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129092), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103198)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(16 /* X4 */))) = uint8(i32(1))
- _fullNames = bool2int(((_db.X6) & i32(4)) != i32(0))
- _shortNames = bool2int(((_db.X6) & i32(64)) != i32(0))
- _sqlite3VdbeSetNumCols(tls, _v, _pEList.X0)
- _i = i32(0)
-_7:
- if _i >= (_pEList.X0) {
- goto _10
- }
-
- _2_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- if func() int32 {
- if _2_p == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118124), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ func() {
+ if _op == i32(74) && int32(_c) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129093), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103228)))
+ crt.X__builtin_abort(tls)
}
- return i32(0)
- }() == 0 {
- goto _13
- }
-
- goto _8
-
-_13:
- if ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1) == nil {
- goto _14
- }
-
- _3_zName = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1
- _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _3_zName, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
- goto _15
-
-_14:
- if int32(_2_p.X0) != i32(152) && int32(_2_p.X0) != i32(154) || store42(&_pTab, _tableWithCursor(tls, _pTabList, _2_p.X8)) == nil {
- goto _18
- }
-
- _4_iCol = int32(_2_p.X9)
- if _4_iCol >= i32(0) {
- goto _19
- }
-
- _4_iCol = int32(_pTab.X10)
-_19:
+ }()
func() {
- if _4_iCol != i32(-1) && (_4_iCol < i32(0) || _4_iCol >= int32(_pTab.X11)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(118134), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateColumnNamesØ00__func__Ø000))), unsafe.Pointer(str(98572)))
+ if _op == i32(78) && int32(_c) != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129094), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103250)))
crt.X__builtin_abort(tls)
}
}()
- if _4_iCol >= i32(0) {
- goto _24
- }
-
- _4_zCol = str(27392)
- goto _25
-
-_24:
- _4_zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_4_iCol))).X0
-_25:
- if _shortNames != 0 || _fullNames != 0 {
- goto _27
- }
-
- _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _sqlite3DbStrDup(tls, _db, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X2), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))
- goto _28
-
-_27:
- if _fullNames == 0 {
- goto _29
- }
-
- _8_zName = nil
- _8_zName = _sqlite3MPrintf(tls, _db, str(6608), unsafe.Pointer(_pTab.X0), unsafe.Pointer(_4_zCol))
- _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _8_zName, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))
- goto _30
-
-_29:
- _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _4_zCol, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
-_30:
-_28:
- goto _31
-
-_18:
- _10_z = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X2
- _10_z = func() *int8 {
- if _10_z == nil {
- return _sqlite3MPrintf(tls, _db, str(105052), _i+i32(1))
+ func() {
+ if _op == i32(81) && int32(_c) != i32(16) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129095), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103272)))
+ crt.X__builtin_abort(tls)
}
- return _sqlite3DbStrDup(tls, _db, _10_z)
}()
- _sqlite3VdbeSetColName(tls, _v, _i, i32(0), _10_z, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer) int32
- }{_sqlite3MallocSize})))
-_31:
-_15:
-_8:
- _i += 1
- goto _7
-
-_10:
- _generateColumnTypes(tls, _pParse, _pTabList, _pEList)
-}
-
-var _generateColumnNamesØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_generateColumnNamesØ00__func__Ø000[0], str(105064), 20)
-}
-
-func _tableWithCursor(tls *crt.TLS, _pList *XSrcList, _iCursor int32) (r0 *XTable) { // sqlite3.c:118082:1
- var _j int32 // sqlite3.c:118083:7
- _ = _j
- _j = i32(0)
-_0:
- if _j >= (_pList.X0) {
- goto _3
- }
-
- if ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 68*uintptr(_j))).X11) != _iCursor {
- goto _4
- }
-
- /* X2 */
- return (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8))))) + 68*uintptr(_j))).X4)
-
-_4:
- _j += 1
- goto _0
-
-_3:
- return nil
-}
-
-func _generateColumnTypes(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pEList *XExprList) { // sqlite3.c:118042:1
- var _v *TVdbe // sqlite3.c:118048:8
- _ = _v
- var _i int32 // sqlite3.c:118049:7
- _ = _i
- var _sNC XNameContext // sqlite3.c:118050:15
- _ = _sNC
- var _1_p *XExpr // sqlite3.c:118055:10
- _ = _1_p
- var _1_zType *int8 // sqlite3.c:118056:16
- _ = _1_zType
- _v = (*TVdbe)(_pParse.X2)
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = _pTabList
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(16 /* X4 */))))) = nil
- _i = i32(0)
-_0:
- if _i >= (_pEList.X0) {
- goto _3
- }
-
- _1_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- _1_zType = _columnTypeImpl(tls, &_sNC, _1_p, nil)
- _sqlite3VdbeSetColName(tls, _v, _i, i32(1), _1_zType, *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
- _i += 1
- goto _0
-
-_3:
-}
-
-func _explainComposite(tls *crt.TLS, _pParse *XParse, _op int32, _iSub1 int32, _iSub2 int32, _bUseTmp int32) { // sqlite3.c:117707:1
- var _1_v *TVdbe // sqlite3.c:117716:10
- _ = _1_v
- var _1_zMsg *int8 // sqlite3.c:117717:10
- _ = _1_zMsg
func() {
- if _op != i32(115) && _op != i32(117) && _op != i32(118) && _op != i32(116) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117714), unsafe.Pointer((*int8)(unsafe.Pointer(&_explainCompositeØ00__func__Ø000))), unsafe.Pointer(str(105084)))
+ if _op == i32(80) && int32(_c) != i32(8) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129096), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103294)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pParse.X54) != i32(2) {
- goto _5
- }
-
- _1_v = (*TVdbe)(_pParse.X2)
- _1_zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(105148), _iSub1, _iSub2, unsafe.Pointer(func() *int8 {
- if _bUseTmp != 0 {
- return str(105188)
+ func() {
+ if _op == i32(79) && int32(_c) != i32(4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129097), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103316)))
+ crt.X__builtin_abort(tls)
}
- return str(196)
- }()), unsafe.Pointer(_selectOpName(tls, _op)))
- _sqlite3VdbeAddOp4(tls, _1_v, i32(165), _pParse.X58, i32(0), i32(0), _1_zMsg, i32(-1))
-_5:
+ }()
+ func() {
+ if _op == i32(82) && int32(_c) != i32(32) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129098), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103338)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _op == i32(72) && int32(_c) != i32(128) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129099), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(103360)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _c
}
-var _explainCompositeØ00__func__Ø000 [17]int8 // -
+var _operatorMaskØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_explainCompositeØ00__func__Ø000[0], str(105208), 17)
+ crt.Xstrncpy(nil, &_operatorMaskØ00__func__Ø000[0], str(103382), 13)
}
-func _sqlite3SelectExprHeight(tls *crt.TLS, _p *XSelect) (r0 int32) { // sqlite3.c:91582:1
- var _nHeight int32 // sqlite3.c:91583:7
- _ = _nHeight
- _nHeight = i32(0)
- _heightOfSelect(tls, _p, &_nHeight)
- return _nHeight
+// Mark term iChild as being a child of term iParent
+func _markTermAsChild(tls *crt.TLS, _pWC *XWhereClause, _iChild int32, _iParent int32) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_iChild))))) + uintptr(16 /* X7 */))) = _iParent
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_iChild))))) + uintptr(8 /* X2 */))) = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_iParent))).X2
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_iParent))))) + uintptr(14 /* X5 */))) += 1
}
-func _pushDownWhereTerms(tls *crt.TLS, _pParse *XParse, _pSubq *XSelect, _pWhere *XExpr, _iCursor int32) (r0 int32) { // sqlite3.c:120392:1
- var _pNew *XExpr // sqlite3.c:120398:8
- _ = _pNew
- var _nChng int32 // sqlite3.c:120399:7
- _ = _nChng
- var _pX *XSelect // sqlite3.c:120400:10
- _ = _pX
- var _6_x XSubstContext // sqlite3.c:120421:20
- _ = _6_x
- _nChng = i32(0)
- if _pWhere != nil {
- goto _0
- }
- return i32(0)
-
-_0:
- _pX = _pSubq
-_1:
- if _pX == nil {
- goto _4
- }
-
- if ((_pX.X3) & uint32(i32(8200))) == uint32(i32(0)) {
- goto _5
- }
- return i32(0)
-
-_5:
- _pX = (*XSelect)(_pX.X13)
- goto _1
-
-_4:
- if (*XExpr)(_pSubq.X15) == nil {
- goto _6
- }
- return i32(0)
-
-_6:
-_7:
- if int32(_pWhere.X0) != i32(71) {
- goto _8
+// We already know that pExpr is a binary operator where both operands are
+// column references. This routine checks to see if pExpr is an equivalence
+// relation:
+// 1. The SQLITE_Transitive optimization must be enabled
+// 2. Must be either an == or an IS operator
+// 3. Not originating in the ON clause of an OUTER JOIN
+// 4. The affinities of A and B must be compatible
+// 5a. Both operands use the same collating sequence OR
+// 5b. The overall collating sequence is BINARY
+// If this routine returns TRUE, that means that the RHS can be substituted
+// for the LHS anyplace else in the WHERE clause where the LHS column occurs.
+// This is an optimization. No harm comes from returning 0. But if 1 is
+// returned when it should not be, then incorrect answers might result.
+func _termIsEquivalence(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 int32) {
+ var _aff1, _aff2 int8
+ var _zColl1, _zColl2 *int8
+ var _pColl *XCollSeq
+ if (int32((*Xsqlite3)(_pParse.X0).X13) & i32(512)) != i32(0) {
+ return i32(0)
}
-
- {
- p := &_nChng
- *p = (*p) + _pushDownWhereTerms(tls, _pParse, _pSubq, (*XExpr)(_pWhere.X5), _iCursor)
- sink1 = *p
+ if (int32(_pExpr.X0) != i32(78)) && (int32(_pExpr.X0) != i32(72)) {
+ return i32(0)
}
- _pWhere = (*XExpr)(_pWhere.X4)
- goto _7
-
-_8:
- if ((_pWhere.X2) & uint32(i32(1))) == uint32(i32(0)) {
- goto _9
+ if ((_pExpr.X2) & uint32(i32(1))) != uint32(i32(0)) {
+ return i32(0)
}
- return i32(0)
-
-_9:
- if _sqlite3ExprIsTableConstant(tls, _pWhere, _iCursor) == 0 {
- goto _10
+ _aff1 = _sqlite3ExprAffinity(tls, (*XExpr)(_pExpr.X4))
+ _aff2 = _sqlite3ExprAffinity(tls, (*XExpr)(_pExpr.X5))
+ if (int32(_aff1) != int32(_aff2)) && ((int32(_aff1) < i32(67)) || (int32(_aff2) < i32(67))) {
+ return i32(0)
}
-
- _nChng += 1
-_11:
- if _pSubq == nil {
- goto _12
+ _pColl = _sqlite3BinaryCompareCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4), (*XExpr)(_pExpr.X5))
+ if (_pColl == nil) || (_sqlite3StrICmp(tls, _pColl.X0, str(37881)) == i32(0)) {
+ return i32(1)
}
-
- _pNew = _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _pWhere, i32(0))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(0 /* X0 */))))) = _pParse
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(4 /* X1 */))) = _iCursor
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(8 /* X2 */))) = _iCursor
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(12 /* X3 */))) = i32(0)
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_6_x)) + uintptr(16 /* X4 */))))) = (*XExprList)(_pSubq.X0)
- _pNew = _substExpr(tls, &_6_x, _pNew)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubq)) + uintptr(44 /* X9 */))))) = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)(_pSubq.X9), _pNew)
- _pSubq = (*XSelect)(_pSubq.X13)
- goto _11
-
-_12:
-_10:
- r0 = _nChng
- return
-}
-
-func _sqlite3ExprIsTableConstant(tls *crt.TLS, _p *XExpr, _iCur int32) (r0 int32) { // sqlite3.c:92710:1
- return _exprIsConst(tls, _p, i32(3), _iCur)
-}
-
-func _sqlite3ClearTempRegCache(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:96080:1
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(19 /* X7 */))) = uint8(i32(0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(28 /* X14 */))) = i32(0)
+ _pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4))
+ _zColl1 = func() *int8 {
+ if _pColl != nil {
+ return (_pColl.X0)
+ }
+ return nil
+ }()
+ _pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X5))
+ _zColl2 = func() *int8 {
+ if _pColl != nil {
+ return (_pColl.X0)
+ }
+ return nil
+ }()
+ return bool2int(Xsqlite3_stricmp(tls, _zColl1, _zColl2) == i32(0))
}
-func _isSelfJoinView(tls *crt.TLS, _pTabList *XSrcList, _pThis *TSrcList_item) (r0 *TSrcList_item) { // sqlite3.c:121496:1
- var _pItem *TSrcList_item // sqlite3.c:121500:23
- _ = _pItem
- _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
-_0:
- if uintptr(unsafe.Pointer(_pItem)) >= uintptr(unsafe.Pointer(_pThis)) {
+// Commute a comparison operator. Expressions of the form "X op Y"
+// are converted into "Y op X".
+//
+// If left/right precedence rules come into play when determining the
+// collating sequence, then COLLATE operators are adjusted to ensure
+// that the collating sequence does not change. For example:
+// "Y collate NOCASE op X" becomes "X op Y" because any collation sequence on
+// the left hand side of a comparison overrides any collation sequence
+// attached to the right. For the same reason the EP_Collate flag
+// is not commuted.
+func _exprCommute(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) {
+ var _expRight, _expLeft uint16
+ var _4_t *XExpr
+ _expRight = uint16(((*XExpr)(_pExpr.X5).X2) & uint32(i32(256)))
+ _expLeft = uint16(((*XExpr)(_pExpr.X4).X2) & uint32(i32(256)))
+ func() {
+ if _allowedOp(tls, int32(_pExpr.X0)) == 0 || int32(_pExpr.X0) == i32(74) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129051), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprCommuteØ00__func__Ø000))), unsafe.Pointer(str(103395)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_expRight) != int32(_expLeft) {
goto _3
}
-
- if (*XSelect)(_pItem.X5) != nil {
- goto _4
- }
-
- goto _1
-
-_4:
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) == 0 {
+ if _expRight != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr(_pExpr.X5) + uintptr(4 /* X2 */)))
+ *p = (*p) & uint32(i32(-257))
+ sink5 = *p
+ }
goto _5
}
-
- goto _1
-
-_5:
- if (_pItem.X2) != nil {
- goto _6
- }
-
- goto _1
-
-_6:
- if Xsqlite3_stricmp(tls, _pItem.X1, _pThis.X1) == i32(0) {
- goto _7
- }
-
- goto _1
-
-_7:
- if Xsqlite3_stricmp(tls, _pItem.X2, _pThis.X2) == i32(0) {
- goto _8
+ if _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4)) != nil {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(256))
+ sink5 = *p
+ }
}
-
- goto _1
-
-_8:
- if _sqlite3ExprCompare(tls, (*XExpr)((*XSelect)(_pThis.X5).X9), (*XExpr)((*XSelect)(_pItem.X5).X9), i32(-1)) == 0 {
- goto _9
+_5:
+_3:
+ _4_t = (*XExpr)(_pExpr.X5)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(16 /* X5 */))))) = (*XExpr)(_pExpr.X4)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(12 /* X4 */))))) = _4_t
+ if int32(_pExpr.X0) >= i32(79) {
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ func() {
+ if int32(_pExpr.X0) < i32(79) || int32(_pExpr.X0) > i32(82) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129071), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprCommuteØ00__func__Ø000))), unsafe.Pointer(str(103436)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(((int32(_pExpr.X0) - i32(79)) ^ i32(2)) + i32(79))
}
+}
- goto _1
-
-_9:
- return _pItem
-
-_1:
- *(*uintptr)(unsafe.Pointer(&_pItem)) += uintptr(68)
- goto _0
+var _exprCommuteØ00__func__Ø000 [12]int8
-_3:
- return nil
+func init() {
+ crt.Xstrncpy(nil, &_exprCommuteØ00__func__Ø000[0], str(103473), 12)
}
-func _sqlite3VdbeChangeP1(tls *crt.TLS, _p *TVdbe, _addr uint32, _val int32) { // sqlite3.c:72205:1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sqlite3VdbeGetOp(tls, _p, int32(_addr)))) + uintptr(4 /* X3 */))) = _val
-}
+var _exprAnalyzeØ00opsØ001 [2]uint8
-func _sqlite3VdbeChangeOpcode(tls *crt.TLS, _p *TVdbe, _addr uint32, _iNewOpcode uint8) { // sqlite3.c:72202:1
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sqlite3VdbeGetOp(tls, _p, int32(_addr)))) + uintptr(0 /* X0 */))) = _iNewOpcode
+func init() {
+ _exprAnalyzeØ00opsØ001 = [2]uint8{82, 80}
}
-func _sqlite3WhereBegin(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pWhere *XExpr, _pOrderBy *XExprList, _pResultSet *XExprList, _wctrlFlags uint16, _iAuxArg int32) (r0 *XWhereInfo) { // sqlite3.c:134761:1
- var _nByteWInfo int32 // sqlite3.c:134771:7
- _ = _nByteWInfo
- var _nTabList int32 // sqlite3.c:134772:7
- _ = _nTabList
- var _pWInfo *XWhereInfo // sqlite3.c:134773:13
- _ = _pWInfo
- var _v *TVdbe // sqlite3.c:134774:8
- _ = _v
- var _notReady uint64 // sqlite3.c:134775:11
- _ = _notReady
- var _sWLB XWhereLoopBuilder // sqlite3.c:134776:20
- _ = _sWLB
- var _pMaskSet *XWhereMaskSet // sqlite3.c:134777:16
- _ = _pMaskSet
- var _pLevel *XWhereLevel // sqlite3.c:134778:14
- _ = _pLevel
- var _pLoop *XWhereLoop // sqlite3.c:134779:13
- _ = _pLoop
- var _ii int32 // sqlite3.c:134780:7
- _ = _ii
- var _db *Xsqlite3 // sqlite3.c:134781:11
- _ = _db
- var _rc int32 // sqlite3.c:134782:7
- _ = _rc
- var _bFordelete uint8 // sqlite3.c:134783:6
- _ = _bFordelete
- var _9_m uint64 // sqlite3.c:134911:13
- _ = _9_m
- var _17_tabUsed uint64 // sqlite3.c:135006:13
- _ = _17_tabUsed
- var _19_pTerm *XWhereTerm // sqlite3.c:135011:17
- _ = _19_pTerm
- var _19_pEnd *XWhereTerm // sqlite3.c:135011:25
- _ = _19_pEnd
- var _23_wsFlags int32 // sqlite3.c:135042:9
- _ = _23_wsFlags
- var _23_bOnerow int32 // sqlite3.c:135043:9
- _ = _23_bOnerow
- var _27_pTab *XTable // sqlite3.c:135062:11
- _ = _27_pTab
- var _27_iDb int32 // sqlite3.c:135063:9
- _ = _27_iDb
- var _27_pTabItem *TSrcList_item // sqlite3.c:135064:25
- _ = _27_pTabItem
- var _29_pVTab *int8 // sqlite3.c:135075:18
- _ = _29_pVTab
- var _29_iCur int32 // sqlite3.c:135076:11
- _ = _29_iCur
- var _31_op int32 // sqlite3.c:135084:11
- _ = _31_op
- var _33_b uint64 // sqlite3.c:135094:17
- _ = _33_b
- var _33_n int32 // sqlite3.c:135095:13
- _ = _33_n
- var _37_pIx *XIndex // sqlite3.c:135116:13
- _ = _37_pIx
- var _37_iIndexCur int32 // sqlite3.c:135117:11
- _ = _37_iIndexCur
- var _37_op int32 // sqlite3.c:135118:11
- _ = _37_op
- var _39_pJ *XIndex // sqlite3.c:135129:15
- _ = _39_pJ
- var _45_addrExplain int32 // sqlite3.c:135186:9
- _ = _45_addrExplain
- var _45_wsFlags int32 // sqlite3.c:135187:9
- _ = _45_wsFlags
- _v = (*TVdbe)(_pParse.X2)
- _bFordelete = u8(0)
+// If the pBase expression originated in the ON or USING clause of
+// a join, then transfer the appropriate markings over to derived.
+func _transferJoinMarkings(tls *crt.TLS, _pDerived *XExpr, _pBase *XExpr) {
+ if _pDerived != nil {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDerived)) + uintptr(4 /* X2 */)))
+ *p = (*p) | ((_pBase.X2) & uint32(i32(1)))
+ sink5 = *p
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDerived)) + uintptr(36 /* X11 */))) = _pBase.X11
+ }
+}
+
+// Analyze a term that consists of two or more OR-connected
+// subterms. So in:
+//
+// ... WHERE (a=5) AND (b=7 OR c=9 OR d=13) AND (d=13)
+// ^^^^^^^^^^^^^^^^^^^^
+//
+// This routine analyzes terms such as the middle term in the above example.
+// A WhereOrTerm object is computed and attached to the term under
+// analysis, regardless of the outcome of the analysis. Hence:
+//
+// WhereTerm.wtFlags |= TERM_ORINFO
+// WhereTerm.u.pOrInfo = a dynamically allocated WhereOrTerm object
+//
+// The term being analyzed must have two or more of OR-connected subterms.
+// A single subterm might be a set of AND-connected sub-subterms.
+// Examples of terms under analysis:
+//
+// (A) t1.x=t2.y OR t1.x=t2.z OR t1.y=15 OR t1.z=t3.a+5
+// (B) x=expr1 OR expr2=x OR x=expr3
+// (C) t1.x=t2.y OR (t1.x=t2.z AND t1.y=15)
+// (D) x=expr1 OR (y>11 AND y<22 AND z LIKE '*hello*')
+// (E) (p.a=1 AND q.b=2 AND r.c=3) OR (p.x=4 AND q.y=5 AND r.z=6)
+// (F) x>A OR (x=A AND y>=B)
+//
+// CASE 1:
+//
+// If all subterms are of the form T.C=expr for some single column of C and
+// a single table T (as shown in example B above) then create a new virtual
+// term that is an equivalent IN expression. In other words, if the term
+// being analyzed is:
+//
+// x = expr1 OR expr2 = x OR x = expr3
+//
+// then create a new virtual term like this:
+//
+// x IN (expr1,expr2,expr3)
+//
+// CASE 2:
+//
+// If there are exactly two disjuncts and one side has x>A and the other side
+// has x=A (for the same x and A) then add a new virtual conjunct term to the
+// WHERE clause of the form "x>=A". Example:
+//
+// x>A OR (x=A AND y>B) adds: x>=A
+//
+// The added conjunct can sometimes be helpful in query planning.
+//
+// CASE 3:
+//
+// If all subterms are indexable by a single table T, then set
+//
+// WhereTerm.eOperator = WO_OR
+// WhereTerm.u.pOrInfo->indexable |= the cursor number for table T
+//
+// A subterm is "indexable" if it is of the form
+// "T.C " where C is any column of table T and
+// is one of "=", "<", "<=", ">", ">=", "IS NULL", or "IN".
+// A subterm is also indexable if it is an AND of two or more
+// subsubterms at least one of which is indexable. Indexable AND
+// subterms have their eOperator set to WO_AND and they have
+// u.pAndInfo set to a dynamically allocated WhereAndTerm object.
+//
+// From another point of view, "indexable" means that the subterm could
+// potentially be used with an index if an appropriate index exists.
+// This analysis does not consider whether or not the index exists; that
+// is decided elsewhere. This analysis only looks at whether subterms
+// appropriate for indexing exist.
+//
+// All examples A through E above satisfy case 3. But if a term
+// also satisfies case 1 (such as B) we know that the optimizer will
+// always prefer case 1, so in that case we pretend that case 3 is not
+// satisfied.
+//
+// It might be the case that multiple tables are indexable. For example,
+// (E) above is indexable on tables P, Q, and R.
+//
+// Terms that satisfy case 3 are candidates for lookup by using
+// separate indices to find rowids for each subterm and composing
+// the union of all rowids using a RowSet object. This is similar
+// to "bitmap indices" in other database engines.
+//
+// OTHERWISE:
+//
+// If none of cases 1, 2, or 3 apply, then leave the eOperator set to
+// zero. This term is not useful for search.
+func _exprAnalyzeOrTerm(tls *crt.TLS, _pSrc *XSrcList, _pWC *XWhereClause, _idxTerm int32) {
+ var _i, _3_j, _12_iOne, _13_iTwo, _15_okToChngToIN, _15_iColumn, _15_iCursor, _15_j, _24_affLeft, _24_affRight, _29_idxNew int32
+ var _chngToIN, _indexable, _3_b, _8_b uint64
+ var _db *Xsqlite3
+ var _27_pList *XExprList
+ var _pExpr, _27_pDup, _27_pLeft, _27_pNew *XExpr
+ var _pParse *XParse
+ var _pWInfo *XWhereInfo
+ var _pTerm, _pOrTerm, _3_pAndTerm, _9_pOther, _12_pOne, _13_pTwo *XWhereTerm
+ var _pOrWc, _3_pAndWC *XWhereClause
+ var _pOrInfo *XWhereOrInfo
+ var _2_pAndInfo *XWhereAndInfo
+ _pWInfo = (*XWhereInfo)(_pWC.X0)
+ _pParse = (*XParse)(_pWInfo.X0)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ _pExpr = (*XExpr)(_pTerm.X0)
func() {
- if (int32(_wctrlFlags)&i32(8)) != i32(0) && ((int32(_wctrlFlags)&i32(4)) == i32(0) || (int32(_wctrlFlags)&i32(32)) != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134785), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105228)))
+ if (int32(_pTerm.X3) & i32(49)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129466), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103485)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_wctrlFlags)&i32(32)) != i32(0) && (int32(_wctrlFlags)&i32(16384)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134791), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105356)))
+ if int32(_pExpr.X0) != i32(70) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129467), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103547)))
crt.X__builtin_abort(tls)
}
}()
- _db = (*Xsqlite3)(_pParse.X0)
- crt.Xmemset(tls, (unsafe.Pointer)(&_sWLB), i32(0), u32(24))
- if _pOrderBy == nil || (_pOrderBy.X0) < i32(64) {
- goto _8
- }
-
- _pOrderBy = nil
-_8:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(8 /* X2 */))))) = _pOrderBy
- if (int32(_db.X13) & i32(32)) == i32(0) {
- goto _9
+ *(**XWhereOrInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))))) = store64(&_pOrInfo, (*XWhereOrInfo)(_sqlite3DbMallocZero(tls, _db, uint64(u32(416)))))
+ if _pOrInfo == nil {
+ return
}
-
{
- p := &_wctrlFlags
- *p = uint16(int32(*p) & i32(-257))
- sink12 = *p
- }
-_9:
- if (_pTabList.X0) <= i32(64) {
- goto _10
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(16))
+ sink14 = *p
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(105432), i32(64))
- return nil
-
-_10:
- _nTabList = func() int32 {
- if (int32(_wctrlFlags) & i32(32)) != 0 {
- return i32(1)
- }
- return (_pTabList.X0)
- }()
- _nByteWInfo = int32(((u32(820) + (uint32(_nTabList-i32(1)) * u32(76))) + uint32(i32(7))) & uint32(i32(-8)))
- _pWInfo = (*XWhereInfo)(_sqlite3DbMallocRawNN(tls, _db, uint64(uint32(_nByteWInfo)+u32(72))))
- if (_db.X17) == 0 {
- goto _13
+ _pOrWc = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrInfo)) + uintptr(0 /* X0 */)))
+ crt.Xmemset(tls, (unsafe.Pointer)((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrWc))+uintptr(24 /* X6 */)))), i32(0), u32(384))
+ _sqlite3WhereClauseInit(tls, _pOrWc, _pWInfo)
+ _sqlite3WhereSplit(tls, _pOrWc, _pExpr, uint8(i32(70)))
+ _sqlite3WhereExprAnalyze(tls, _pSrc, _pOrWc)
+ if (_db.X17) != 0 {
+ return
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pWInfo))
- _pWInfo = nil
- goto _whereBeginError
-
-_13:
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(0 /* X0 */))))) = _pParse
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(4 /* X1 */))))) = _pTabList
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(8 /* X2 */))))) = _pOrderBy
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(16 /* X4 */))))) = _pWhere
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(12 /* X3 */))))) = _pResultSet
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */))))) + 4*uintptr(i32(0)))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */)))))+4*uintptr(i32(1)))), i32(-1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(46 /* X11 */))) = uint8(_nTabList)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(36 /* X8 */))) = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(32 /* X7 */))), _sqlite3VdbeMakeLabel(tls, _v))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(44 /* X10 */))) = _wctrlFlags
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(20 /* X5 */))) = int16(_iAuxArg)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(40 /* X9 */))) = int32(_pParse.X42)
- crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(47 /* X12 */)))), i32(0), u32(29))
- crt.Xmemset(tls, (unsafe.Pointer)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0))))), i32(0), u32(72)+(uint32(_nTabList)*u32(76)))
func() {
- if int32(_pWInfo.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105460)))
+ if (_pOrWc.X3) < i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129477), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103564)))
crt.X__builtin_abort(tls)
}
}()
- _pMaskSet = (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(484 /* X23 */)))
- *(**XWhereInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(0 /* X0 */))))) = _pWInfo
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(4 /* X1 */))))) = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
- *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWLB)) + uintptr(12 /* X3 */))))) = (*XWhereLoop)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pWInfo)))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_nByteWInfo)))))))))
+ _indexable = u64(18446744073709551615)
+ _chngToIN = u64(18446744073709551615)
+ *func() **XWhereTerm { _i = (_pOrWc.X3) - i32(1); return &_pOrTerm }() = (*XWhereTerm)(_pOrWc.X5)
+_8:
+ if _i < i32(0) || _indexable == 0 {
+ goto _12
+ }
+ if (int32(_pOrTerm.X4) & i32(511)) != i32(0) {
+ goto _13
+ }
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer((*XWhereLoop)(_sWLB.X3)))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134858), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105492)))
+ if (int32(_pOrTerm.X3) & i32(48)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129487), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103580)))
crt.X__builtin_abort(tls)
}
}()
- _whereLoopInit(tls, (*XWhereLoop)(_sWLB.X3))
- *(*int8)(unsafe.Pointer(uintptr(_sWLB.X3) + uintptr(16 /* X2 */))) = int8(i32(42))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet)) + uintptr(0 /* X0 */))) = i32(0)
- _sqlite3WhereClauseInit(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _pWInfo)
- _sqlite3WhereSplit(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _pWhere, uint8(i32(71)))
- _ii = i32(0)
-_18:
- if _ii >= ((*XWhereClause)(_sWLB.X1).X3) {
- goto _21
- }
-
- if _nTabList != i32(0) && _sqlite3ExprIsConstantNotJoin(tls, (*XExpr)((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X5)+48*uintptr(_ii))).X0)) == 0 {
- goto _23
+ _chngToIN = uint64(i32(0))
+ _2_pAndInfo = (*XWhereAndInfo)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(408))))
+ if _2_pAndInfo == nil {
+ goto _16
}
-
- _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X5)+48*uintptr(_ii))).X0), _pWInfo.X8, i32(16))
+ _3_b = uint64(i32(0))
+ *(**XWhereAndInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */))))))) = _2_pAndInfo
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X5)+48*uintptr(_ii))))) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(4))
- sink12 = *p
- }
-_23:
- _ii += 1
- goto _18
-
-_21:
- if _nTabList != i32(0) {
- goto _24
- }
-
- if _pOrderBy == nil {
- goto _25
- }
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = int8(_pOrderBy.X0)
-_25:
- if (int32(_wctrlFlags) & i32(256)) == 0 {
- goto _26
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(32))
+ sink14 = *p
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(1))
-_26:
-_24:
- _ii = i32(0)
-_27:
- if _ii >= (_pTabList.X0) {
- goto _30
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(12 /* X4 */))) = uint16(i32(1024))
+ _3_pAndWC = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pAndInfo)) + uintptr(0 /* X0 */)))
+ crt.Xmemset(tls, (unsafe.Pointer)((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAndWC))+uintptr(24 /* X6 */)))), i32(0), u32(384))
+ _sqlite3WhereClauseInit(tls, _3_pAndWC, (*XWhereInfo)(_pWC.X0))
+ _sqlite3WhereSplit(tls, _3_pAndWC, (*XExpr)(_pOrTerm.X0), uint8(i32(71)))
+ _sqlite3WhereExprAnalyze(tls, _pSrc, _3_pAndWC)
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAndWC)) + uintptr(4 /* X1 */))))) = _pWC
+ if (_db.X17) != 0 {
+ goto _17
}
-
- _createMask(tls, _pMaskSet, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_ii))).X11)
- _sqlite3WhereTabFuncArgs(tls, _pParse, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_ii))), (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))))
- _ii += 1
- goto _27
-
-_30:
- _ii = i32(0)
-_31:
- if _ii >= (_pTabList.X0) {
- goto _34
+ *func() **XWhereTerm { _3_j = i32(0); return &_3_pAndTerm }() = (*XWhereTerm)(_3_pAndWC.X5)
+_18:
+ if _3_j >= (_3_pAndWC.X3) {
+ goto _21
}
-
- _9_m = _sqlite3WhereGetMask(tls, _pMaskSet, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_ii))).X11)
func() {
- if _9_m != (u64(1) << uint(_ii)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134912), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105524)))
+ if (*XExpr)(_3_pAndTerm.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129506), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103631)))
crt.X__builtin_abort(tls)
}
}()
- _ii += 1
- goto _31
-
-_34:
- _sqlite3WhereExprAnalyze(tls, _pTabList, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))))
- if (_db.X17) == 0 {
- goto _37
+ if _allowedOp(tls, int32((*XExpr)(_3_pAndTerm.X0).X0)) != 0 || (int32(_3_pAndTerm.X4) == i32(64)) {
+ {
+ p := &_3_b
+ *p = (*p) | _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _3_pAndTerm.X8)
+ sink17 = *p
+ }
}
-
- goto _whereBeginError
-
-_37:
- if (int32(_wctrlFlags) & i32(256)) == 0 {
- goto _38
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _3_j += 1; return &_3_pAndTerm }())) += uintptr(48)
+ goto _18
+_21:
+_17:
+ {
+ p := &_indexable
+ *p = (*p) & _3_b
+ sink17 = *p
}
-
- if _isDistinctRedundant(tls, _pParse, _pTabList, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _pResultSet) == 0 {
- goto _39
+_16:
+ goto _26
+_13:
+ if (int32(_pOrTerm.X3) & i32(8)) != 0 {
+ goto _28
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(1))
- goto _40
-
-_39:
- if _pOrderBy != nil {
- goto _41
+ _8_b = _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _pOrTerm.X8)
+ if (int32(_pOrTerm.X3) & i32(2)) != 0 {
+ _9_pOther = (*XWhereTerm)(unsafe.Pointer(uintptr(_pOrWc.X5) + 48*uintptr(_pOrTerm.X7)))
+ {
+ p := &_8_b
+ *p = (*p) | _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _9_pOther.X8)
+ sink17 = *p
+ }
}
-
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(44 /* X10 */)))
- *p = uint16(int32(*p) | i32(128))
- sink12 = *p
+ p := &_indexable
+ *p = (*p) & _8_b
+ sink17 = *p
}
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(8 /* X2 */))))) = _pResultSet
-_41:
-_40:
-_38:
- if _nTabList == i32(1) && _whereShortCut(tls, &_sWLB) != i32(0) {
- goto _43
+ if (int32(_pOrTerm.X4) & i32(2)) == i32(0) {
+ _chngToIN = uint64(i32(0))
+ goto _31
}
-
- _rc = _whereLoopAddAll(tls, &_sWLB)
- if _rc == 0 {
- goto _44
+ {
+ p := &_chngToIN
+ *p = (*p) & _8_b
+ sink17 = *p
}
-
- goto _whereBeginError
-
-_44:
- _wherePathSolver(tls, _pWInfo, int16(i32(0)))
- if (_db.X17) == 0 {
- goto _45
+_31:
+_28:
+_26:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
+ goto _8
+_12:
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrInfo)) + uintptr(408 /* X1 */))) = _indexable
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(func() int32 {
+ if _indexable == uint64(i32(0)) {
+ return i32(0)
+ }
+ return i32(512)
+ }())
+ if _indexable == 0 || (_pOrWc.X3) != i32(2) {
+ goto _35
}
-
- goto _whereBeginError
-
-_45:
- if (*XExprList)(_pWInfo.X2) == nil {
- goto _46
+ _12_iOne = i32(0)
+_36:
+ if store65(&_12_pOne, _whereNthSubterm(tls, (*XWhereTerm)(unsafe.Pointer(uintptr(_pOrWc.X5)+48*uintptr(i32(0)))), postInc1(&_12_iOne, int32(1)))) == nil {
+ goto _37
}
-
- _wherePathSolver(tls, _pWInfo, int16(int32(_pWInfo.X21)+i32(1)))
- if (_db.X17) == 0 {
- goto _47
+ _13_iTwo = i32(0)
+_38:
+ if store65(&_13_pTwo, _whereNthSubterm(tls, (*XWhereTerm)(unsafe.Pointer(uintptr(_pOrWc.X5)+48*uintptr(i32(1)))), postInc1(&_13_iTwo, int32(1)))) != nil {
+ _whereCombineDisjuncts(tls, _pSrc, _pWC, _12_pOne, _13_pTwo)
+ goto _38
}
-
- goto _whereBeginError
-
-_47:
+ goto _36
+_37:
+_35:
+ if _chngToIN == 0 {
+ goto _40
+ }
+ _15_okToChngToIN = i32(0)
+ _15_iColumn = i32(-1)
+ _15_iCursor = i32(-1)
+ _15_j = i32(0)
+ _15_j = i32(0)
+_41:
+ if _15_j >= i32(2) || _15_okToChngToIN != 0 {
+ goto _45
+ }
+ _pOrTerm = (*XWhereTerm)(_pOrWc.X5)
+ _i = (_pOrWc.X3) - i32(1)
_46:
-_43:
- if (*XExprList)(_pWInfo.X2) != nil || ((_db.X6)&i32(131072)) == i32(0) {
+ if _i < i32(0) {
goto _49
}
-
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = u64(18446744073709551615)
-_49:
- if (_pParse.X16) == 0 && func() int32 {
- if (_db.X17) != 0 {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134972), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ func() {
+ if (int32(_pOrTerm.X4) & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129592), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103647)))
+ crt.X__builtin_abort(tls)
}
- return i32(0)
- }() == 0 {
- goto _53
- }
-
- goto _whereBeginError
-
-_53:
- if int32(_pWInfo.X11) < i32(2) || _pResultSet == nil || (int32(_db.X13)&i32(1024)) != i32(0) {
- goto _56
+ }()
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) & i32(-65))
+ sink14 = *p
}
-
- _17_tabUsed = _sqlite3WhereExprListUsage(tls, _pMaskSet, _pResultSet)
- if (*XExprList)(_sWLB.X2) == nil {
- goto _57
+ if (_pOrTerm.X8) == _15_iCursor {
+ func() {
+ if _15_j != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129597), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103674)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _47
}
-
- {
- p := &_17_tabUsed
- *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_sWLB.X2))
- sink15 = *p
+ if (_chngToIN & _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _pOrTerm.X8)) == uint64(i32(0)) {
+ func() {
+ if (int32(_pOrTerm.X3) & i32(10)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129608), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103679)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _47
}
-_57:
-_58:
- if int32(_pWInfo.X11) < i32(2) {
- goto _59
+ _15_iColumn = *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */)))))
+ _15_iCursor = _pOrTerm.X8
+ goto _49
+_47:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
+ goto _46
+_49:
+ if _i < i32(0) {
+ func() {
+ if _15_j != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129618), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103674)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_chngToIN & (_chngToIN - uint64(i32(1)))) != uint64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129619), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103725)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _chngToIN != _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _15_iCursor) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129620), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103748)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _45
}
-
- _pLoop = (*XWhereLoop)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(int32(_pWInfo.X11)-i32(1)))).X18)
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */)))))+68*uintptr(_pLoop.X3)))))+uintptr(36 /* X9 */))).X0) & i32(8)) != i32(0) {
- goto _60
+ _15_okToChngToIN = i32(1)
+_65:
+ if _i < i32(0) || _15_okToChngToIN == 0 {
+ goto _69
}
-
- goto _59
-
-_60:
- if (int32(_wctrlFlags)&i32(256)) != i32(0) || ((_pLoop.X9)&uint32(i32(4096))) != uint32(i32(0)) {
- goto _62
+ func() {
+ if (int32(_pOrTerm.X4) & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129629), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103647)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pOrTerm.X8) != _15_iCursor {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) & i32(-65))
+ sink14 = *p
+ }
+ goto _73
}
-
- goto _59
-
-_62:
- if (_17_tabUsed & (_pLoop.X1)) == uint64(i32(0)) {
- goto _63
+ if (*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */)))))) != _15_iColumn {
+ _15_okToChngToIN = i32(0)
+ goto _75
}
-
- goto _59
-
-_63:
- _19_pEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)((*XWhereClause)(_sWLB.X1).X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_sWLB.X1).X3)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
- _19_pTerm = (*XWhereTerm)((*XWhereClause)(_sWLB.X1).X5)
-_64:
- if uintptr(unsafe.Pointer(_19_pTerm)) >= uintptr(unsafe.Pointer(_19_pEnd)) {
- goto _67
+ _24_affRight = int32(_sqlite3ExprAffinity(tls, (*XExpr)((*XExpr)(_pOrTerm.X0).X5)))
+ _24_affLeft = int32(_sqlite3ExprAffinity(tls, (*XExpr)((*XExpr)(_pOrTerm.X0).X4)))
+ if (_24_affRight != i32(0)) && (_24_affRight != _24_affLeft) {
+ _15_okToChngToIN = i32(0)
+ goto _78
}
-
- if ((_19_pTerm.X12)&(_pLoop.X1)) == uint64(i32(0)) || (((*XExpr)(_19_pTerm.X0).X2)&uint32(i32(1))) != uint32(i32(0)) {
- goto _69
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(64))
+ sink14 = *p
}
-
- goto _67
-
+_78:
+_75:
+_73:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
+ goto _65
_69:
- *(*uintptr)(unsafe.Pointer(&_19_pTerm)) += uintptr(48)
- goto _64
-
-_67:
- if uintptr(unsafe.Pointer(_19_pTerm)) >= uintptr(unsafe.Pointer(_19_pEnd)) {
- goto _70
+ _15_j += 1
+ goto _41
+_45:
+ if _15_okToChngToIN == 0 {
+ goto _79
}
-
- goto _59
-
-_70:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(46 /* X11 */))) -= 1
- _nTabList -= 1
- goto _58
-
-_59:
-_56:
- {
- p := (*uint32)(unsafe.Pointer(uintptr(_pWInfo.X0) + uintptr(144 /* X42 */)))
- *p = (*p) + uint32(_pWInfo.X21)
- sink5 = *p
+ _27_pList = nil
+ _27_pLeft = nil
+ *func() **XWhereTerm { _i = (_pOrWc.X3) - i32(1); return &_pOrTerm }() = (*XWhereTerm)(_pOrWc.X5)
+_80:
+ if _i < i32(0) {
+ goto _83
+ }
+ if (int32(_pOrTerm.X3) & i32(64)) == i32(0) {
+ goto _81
}
func() {
- if (int32(_wctrlFlags)&i32(4)) != i32(0) && int32(_pWInfo.X11) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135040), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105540)))
+ if (int32(_pOrTerm.X4) & i32(2)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129663), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103647)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_wctrlFlags) & i32(4)) == i32(0) {
- goto _74
- }
-
- _23_wsFlags = int32((*XWhereLoop)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(i32(0)))).X18).X9)
- _23_bOnerow = bool2int((_23_wsFlags & i32(4096)) != i32(0))
- if _23_bOnerow == 0 && ((int32(_wctrlFlags)&i32(8)) == i32(0) || i32(0) != (_23_wsFlags&i32(1024))) {
- goto _77
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(49 /* X14 */))) = uint8(func() int32 {
- if _23_bOnerow != 0 {
- return i32(1)
+ func() {
+ if (_pOrTerm.X8) != _15_iCursor {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129664), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103806)))
+ crt.X__builtin_abort(tls)
}
- return i32(2)
- }())
- if (((*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X4).X9)&uint32(i32(32))) != uint32(i32(0)) || (_23_wsFlags&i32(64)) == 0 {
- goto _81
- }
-
- if (int32(_wctrlFlags) & i32(8)) == 0 {
- goto _82
- }
-
- _bFordelete = uint8(i32(8))
-_82:
- *(*uint32)(unsafe.Pointer(uintptr((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))).X18) + uintptr(40 /* X9 */))) = uint32(_23_wsFlags & i32(-65))
+ }()
+ func() {
+ if (*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */)))))) != _15_iColumn {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129665), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103835)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _27_pDup = _sqlite3ExprDup(tls, _db, (*XExpr)((*XExpr)(_pOrTerm.X0).X5), i32(0))
+ _27_pList = _sqlite3ExprListAppend(tls, (*XParse)(_pWInfo.X0), _27_pList, _27_pDup)
+ _27_pLeft = (*XExpr)((*XExpr)(_pOrTerm.X0).X4)
_81:
-_77:
-_74:
- *func() **XWhereLevel { _ii = i32(0); return &_pLevel }() = (*XWhereLevel)(unsafe.Pointer((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(744 /* X24 */)))))
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
+ goto _80
_83:
- if _ii >= _nTabList {
- goto _86
+ func() {
+ if _27_pLeft == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129670), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103866)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _27_pDup = _sqlite3ExprDup(tls, _db, _27_pLeft, i32(0))
+ _27_pNew = _sqlite3PExpr(tls, _pParse, i32(74), _27_pDup, nil)
+ if _27_pNew != nil {
+ _transferJoinMarkings(tls, _27_pNew, _pExpr)
+ func() {
+ if ((_27_pNew.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129676), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(103875)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_27_pNew)) + uintptr(20 /* X6 */))))))) = _27_pList
+ _29_idxNew = _whereClauseInsert(tls, _pWC, _27_pNew, uint16(i32(3)))
+ _exprAnalyze(tls, _pSrc, _pWC, _29_idxNew)
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
+ _markTermAsChild(tls, _pWC, _29_idxNew, _idxTerm)
+ goto _96
}
+ _sqlite3ExprListDelete(tls, _db, _27_pList)
+_96:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(i32(4096))
+_79:
+_40:
+ _ = _12_iOne
+ _ = _13_iTwo
+}
- _27_pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
- _27_pTab = (*XTable)(_27_pTabItem.X4)
- _27_iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_27_pTab.X20))
- _pLoop = (*XWhereLoop)(_pLevel.X18)
- if ((_27_pTab.X9)&uint32(i32(2))) == uint32(i32(0)) && (*XSelect)(_27_pTab.X3) == nil {
- goto _88
- }
+var _exprAnalyzeOrTermØ00__func__Ø000 [18]int8
- goto _89
+func init() {
+ crt.Xstrncpy(nil, &_exprAnalyzeOrTermØ00__func__Ø000[0], str(103912), 18)
+}
-_88:
- if ((_pLoop.X9) & uint32(i32(1024))) == uint32(i32(0)) {
- goto _90
+// Return the N-th AND-connected subterm of pTerm. Or if pTerm is not
+// a conjunction, then return just pTerm when N==0. If N is exceeds
+// the number of available subterms, return NULL.
+func _whereNthSubterm(tls *crt.TLS, _pTerm *XWhereTerm, _N int32) (r0 *XWhereTerm) {
+ if int32(_pTerm.X4) != i32(1024) {
+ return func() *XWhereTerm {
+ if _N == i32(0) {
+ return _pTerm
+ }
+ return nil
+ }()
}
-
- _29_pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _27_pTab)))
- _29_iCur = _27_pTabItem.X11
- _sqlite3VdbeAddOp4(tls, _v, i32(158), _29_iCur, i32(0), i32(0), _29_pVTab, i32(-8))
- goto _91
-
-_90:
- if (_27_pTab.X16) == 0 {
- goto _92
+ if _N < ((*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */))).X3) {
+ /* X10 */ /* X0 */
+ return (*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28))))))+uintptr(0))).X5) + 48*uintptr(_N)))
}
+ return nil
+}
- goto _93
-
-_92:
- if ((_pLoop.X9)&uint32(i32(64))) != uint32(i32(0)) || (int32(_wctrlFlags)&i32(32)) != i32(0) {
- goto _95
+// Subterms pOne and pTwo are contained within WHERE clause pWC. The
+// two subterms are in disjunction - they are OR-ed together.
+//
+// If these two terms are both of the form: "A op B" with the same
+// A and B values but different operators and if the operators are
+// compatible (if one is = and the other is <, for example) then
+// add a new virtual AND term to pWC that is the combination of the
+// two.
+//
+// Some examples:
+//
+// x x<=y
+// x=y OR x=y --> x=y
+// x<=y OR x x<=y
+//
+// The following is NOT generated:
+//
+// xy --> x!=y
+func _whereCombineDisjuncts(tls *crt.TLS, _pSrc *XSrcList, _pWC *XWhereClause, _pOne *XWhereTerm, _pTwo *XWhereTerm) {
+ var _op, _idxNew int32
+ var _eOp uint16
+ var _db *Xsqlite3
+ var _pNew *XExpr
+ _eOp = uint16(int32(_pOne.X4) | int32(_pTwo.X4))
+ if (int32(_pOne.X4) & i32(62)) == i32(0) {
+ return
}
-
- _31_op = i32(106)
- if int32(_pWInfo.X14) == i32(0) {
- goto _96
+ if (int32(_pTwo.X4) & i32(62)) == i32(0) {
+ return
+ }
+ if ((int32(_eOp) & i32(26)) != int32(_eOp)) && ((int32(_eOp) & i32(38)) != int32(_eOp)) {
+ return
}
-
- _31_op = i32(107)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */))))) + 4*uintptr(i32(0)))) = _27_pTabItem.X11
-_96:
- _sqlite3OpenTable(tls, _pParse, _27_pTabItem.X11, _27_iDb, _27_pTab, _31_op)
func() {
- if (_27_pTabItem.X11) != (_pLevel.X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135090), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105604)))
+ if (*XExpr)((*XExpr)(_pOne.X0).X4) == nil || (*XExpr)((*XExpr)(_pOne.X0).X5) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129334), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(103930)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pWInfo.X14) != i32(0) || int32(_27_pTab.X11) >= i32(64) || ((_27_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) {
- goto _101
+ func() {
+ if (*XExpr)((*XExpr)(_pTwo.X0).X4) == nil || (*XExpr)((*XExpr)(_pTwo.X0).X5) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129335), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(103978)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3ExprCompare(tls, (*XExpr)((*XExpr)(_pOne.X0).X4), (*XExpr)((*XExpr)(_pTwo.X0).X4), i32(-1)) != 0 {
+ return
}
-
- _33_b = _27_pTabItem.X14
- _33_n = i32(0)
-_102:
- if _33_b == 0 {
- goto _105
+ if _sqlite3ExprCompare(tls, (*XExpr)((*XExpr)(_pOne.X0).X5), (*XExpr)((*XExpr)(_pTwo.X0).X5), i32(-1)) != 0 {
+ return
+ }
+ if (int32(_eOp) & (int32(_eOp) - i32(1))) == i32(0) {
+ goto _12
+ }
+ if (int32(_eOp) & i32(24)) != 0 {
+ _eOp = uint16(i32(8))
+ goto _14
}
-
- *func() *int32 { _33_b = _33_b >> uint(i32(1)); return &_33_n }() += 1
- goto _102
-
-_105:
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)((unsafe.Pointer)(uintptr(_33_n))), i32(-11))
func() {
- if _33_n > int32(_27_pTab.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135098), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105640)))
+ if (int32(_eOp) & i32(36)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129343), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(104026)))
crt.X__builtin_abort(tls)
}
}()
-_101:
- _sqlite3VdbeChangeP5(tls, _v, uint16(_bFordelete))
- goto _108
-
-_95:
- _sqlite3TableLock(tls, _pParse, _27_iDb, _27_pTab.X7, uint8(i32(0)), _27_pTab.X0)
-_108:
-_93:
-_91:
-_89:
- if ((_pLoop.X9) & uint32(i32(512))) == 0 {
- goto _109
+ _eOp = uint16(i32(32))
+_14:
+_12:
+ _db = (*Xsqlite3)((*XParse)((*XWhereInfo)(_pWC.X0).X0).X0)
+ _pNew = _sqlite3ExprDup(tls, _db, (*XExpr)(_pOne.X0), i32(0))
+ if _pNew == nil {
+ return
+ }
+ _op = i32(78)
+_18:
+ if int32(_eOp) == (i32(2) << uint(_op-i32(78))) {
+ goto _21
}
-
- _37_pIx = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
- _37_op = i32(106)
func() {
- if _iAuxArg == i32(0) && (int32(_pWInfo.X10)&i32(4)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135120), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105656)))
+ if _op >= i32(82) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129350), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(104046)))
crt.X__builtin_abort(tls)
}
}()
- if ((_27_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) || int32((uint32(_37_pIx.X16)<>uint(i32(30))) != i32(2) || (int32(_wctrlFlags)&i32(32)) == i32(0) {
- goto _115
- }
+ _op += 1
+ goto _18
+_21:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = uint8(_op)
+ _idxNew = _whereClauseInsert(tls, _pWC, _pNew, uint16(i32(3)))
+ _exprAnalyze(tls, _pSrc, _pWC, _idxNew)
+}
- _37_iIndexCur = _pLevel.X1
- _37_op = i32(0)
- goto _116
+var _whereCombineDisjunctsØ00__func__Ø000 [22]int8
-_115:
- if int32(_pWInfo.X14) == i32(0) {
- goto _117
+func init() {
+ crt.Xstrncpy(nil, &_whereCombineDisjunctsØ00__func__Ø000[0], str(104055), 22)
+}
+
+// Check to see if the given expression is a LIKE or GLOB operator that
+// can be optimized using inequality constraints. Return TRUE if it is
+// so and false if not.
+//
+// In order for the operator to be optimizible, the RHS must be a string
+// literal that does not begin with a wildcard. The LHS must be a column
+// that may only be NULL, a string, or a BLOB, never a number. (This means
+// that virtual tables cannot participate in the LIKE optimization.) The
+// collating sequence for the column on the LHS must be appropriate for
+// the operator.
+func _isLikeOrGlob(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _ppPrefix **XExpr, _pisComplete *int32, _pnoCase *int32) (r0 int32) {
+ var _c, _cnt, _op, _rc, _2_iCol, _11_r1 int32
+ var _z *int8
+ var _db *Xsqlite3
+ var _2_pReprepare, _10_v *TVdbe
+ var _pVal *XMem
+ var _pList *XExprList
+ var _pRight, _pLeft, _9_pPrefix *XExpr
+ var _wc [3]int8
+ _z = nil
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pVal = nil
+ if _sqlite3IsLikeFunction(tls, _db, _pExpr, _pnoCase, (*int8)(unsafe.Pointer(&_wc))) == 0 {
+ return i32(0)
+ }
+ _pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ _pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
+ _pRight = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
+ _op = int32(_pRight.X0)
+ if _op != i32(135) {
+ goto _1
+ }
+ _2_pReprepare = (*TVdbe)(_pParse.X61)
+ _2_iCol = int32(_pRight.X9)
+ _pVal = _sqlite3VdbeGetBoundValue(tls, _2_pReprepare, _2_iCol, uint8(i32(65)))
+ if (_pVal != nil) && (Xsqlite3_value_type(tls, _pVal) == i32(3)) {
+ _z = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, _pVal)))
+ }
+ _sqlite3VdbeSetVarmask(tls, (*TVdbe)(_pParse.X2), _2_iCol)
+ func() {
+ if int32(_pRight.X0) != i32(135) && int32(_pRight.X0) != i32(157) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(129154), unsafe.Pointer((*int8)(unsafe.Pointer(&_isLikeOrGlobØ00__func__Ø000))), unsafe.Pointer(str(104077)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _7
+_1:
+ if _op == i32(97) {
+ _z = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight)) + uintptr(8 /* X3 */)))))
+ }
+_7:
+ if _z == nil {
+ goto _9
+ }
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))))))&i32(4)) == 0 && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(45) {
+ goto _11
+ }
+ if ((int32(_pLeft.X0) != i32(152)) || (int32(_sqlite3ExprAffinity(tls, _pLeft)) != i32(66))) || ((*XTable)(_pLeft.X14).X16) != 0 {
+ _sqlite3ValueFree(tls, _pVal)
+ return i32(0)
+ }
+_11:
+ _cnt = i32(0)
+_15:
+ if (((store1(&_c, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_cnt))))) != i32(0)) && (_c != int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(0))))))) && (_c != int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(1))))))) && (_c != int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(2)))))) {
+ _cnt += 1
+ goto _15
+ }
+ if _cnt == i32(0) || i32(255) == int32(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_cnt-i32(1)))))) {
+ goto _21
+ }
+ *_pisComplete = bool2int((_c == int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(0)))))) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_cnt+i32(1))))) == i32(0)))
+ _9_pPrefix = _sqlite3Expr(tls, _db, i32(97), _z)
+ if _9_pPrefix != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pPrefix)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_cnt))) = int8(i32(0))
+ }
+ *_ppPrefix = _9_pPrefix
+ if _op != i32(135) {
+ goto _24
}
+ _10_v = (*TVdbe)(_pParse.X2)
+ _sqlite3VdbeSetVarmask(tls, _10_v, int32(_pRight.X9))
+ if (*_pisComplete) != 0 && ((*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) != 0) {
+ _11_r1 = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3ExprCodeTarget(tls, _pParse, _pRight, _11_r1)
+ _sqlite3VdbeChangeP3(tls, _10_v, uint32(_sqlite3VdbeCurrentAddr(tls, _10_v)-i32(1)), i32(0))
+ _sqlite3ReleaseTempReg(tls, _pParse, _11_r1)
+ }
+_24:
+ goto _27
+_21:
+ _z = nil
+_27:
+_9:
+ _rc = bool2int(_z != nil)
+ _sqlite3ValueFree(tls, _pVal)
+ return _rc
- _39_pJ = (*XIndex)((*XTable)(_27_pTabItem.X4).X2)
- _37_iIndexCur = _iAuxArg
+ _ = _wc
+ panic(0)
+}
+
+// pExpr points to an expression which implements a function. If
+// it is appropriate to apply the LIKE optimization to that function
+// then set aWc[0] through aWc[2] to the wildcard characters and
+// return TRUE. If the function is not a LIKE-style function then
+// return FALSE.
+//
+// *pIsNocase is set to true if uppercase and lowercase are equivalent for
+// the function (default for LIKE). If the function makes the distinction
+// between uppercase and lowercase (as does GLOB) then *pIsNocase is set to
+// false.
+func _sqlite3IsLikeFunction(tls *crt.TLS, _db *Xsqlite3, _pExpr *XExpr, _pIsNocase *int32, _aWc *int8) (r0 int32) {
+ var _pDef *XFuncDef
+ if ((int32(_pExpr.X0) != i32(151)) || ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) == nil)) || (((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0) != i32(2)) {
+ return i32(0)
+ }
func() {
- if (int32(_wctrlFlags) & i32(4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135131), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105720)))
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107262), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(42778)))
crt.X__builtin_abort(tls)
}
}()
-_120:
+ _pDef = _sqlite3FindFunction(tls, _db, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), i32(2), uint8(i32(1)), uint8(i32(0)))
if func() int32 {
- if _39_pJ != nil {
- return i32(1)
+ if _pDef == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107264), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
}
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 || _39_pJ == _37_pIx {
- goto _121
- }
-
- _37_iIndexCur += 1
- _39_pJ = (*XIndex)(_39_pJ.X5)
- goto _120
-
-_121:
- _37_op = i32(107)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */))))) + 4*uintptr(i32(1)))) = _37_iIndexCur
- goto _125
-
-_117:
- if _iAuxArg == 0 || (int32(_wctrlFlags)&i32(32)) == i32(0) {
- goto _127
+ return i32(0)
+ }() != 0 || ((int32(_pDef.X1) & i32(4)) == i32(0)) {
+ return i32(0)
}
-
- _37_iIndexCur = _iAuxArg
- _37_op = i32(105)
- goto _128
-
-_127:
- _37_iIndexCur = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
-_128:
-_125:
-_116:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(8 /* X2 */))) = _37_iIndexCur
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_aWc), _pDef.X2, uint32(i32(3)))
func() {
- if (*XSchema)(_37_pIx.X6) != (*XSchema)(_27_pTab.X20) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135145), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105756)))
+ if (*int8)(unsafe.Pointer(&_likeInfoAlt)) != (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+uintptr(0 /* X0 */))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107273), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(104128)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _37_iIndexCur < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135146), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereBeginØ00__func__Ø000))), unsafe.Pointer(str(105784)))
+ if (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+1*uintptr(i32(1)))) != (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+uintptr(1 /* X1 */))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107274), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(104180)))
crt.X__builtin_abort(tls)
}
}()
- if _37_op == 0 {
- goto _133
- }
-
- _sqlite3VdbeAddOp3(tls, _v, _37_op, _37_iIndexCur, _37_pIx.X11, _27_iDb)
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _37_pIx)
- if ((_pLoop.X9)&uint32(i32(15))) == uint32(i32(0)) || ((_pLoop.X9)&uint32(i32(32770))) != uint32(i32(0)) || (int32(_pWInfo.X10)&i32(1)) != i32(0) || int32(_pWInfo.X16) == i32(2) {
- goto _137
- }
+ func() {
+ if (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+1*uintptr(i32(2)))) != (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+uintptr(2 /* X2 */))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107275), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(104238)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_pIsNocase = bool2int((int32(_pDef.X1) & i32(8)) == i32(0))
+ return i32(1)
+}
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(2)))
-_137:
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(_37_pIx.X0))
-_133:
-_109:
- if _27_iDb < i32(0) {
- goto _138
- }
+var _sqlite3IsLikeFunctionØ00__func__Ø000 [22]int8
- _sqlite3CodeVerifySchema(tls, _pParse, _27_iDb)
-_138:
- *(*uintptr)(unsafe.Pointer(func() **XWhereLevel { _ii += 1; return &_pLevel }())) += uintptr(76)
- goto _83
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3IsLikeFunctionØ00__func__Ø000[0], str(104296), 22)
+}
-_86:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(56 /* X18 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
- if (_db.X17) == 0 {
- goto _139
- }
+var _likeInfoAlt TcompareInfo
- goto _whereBeginError
+func init() {
+ _likeInfoAlt = TcompareInfo{X0: u8(37), X1: u8(95), X2: u8(0), X3: u8(0)}
+}
-_139:
- _notReady = u64(18446744073709551615)
- _ii = i32(0)
-_140:
- if _ii >= _nTabList {
- goto _143
+// Return a pointer to an sqlite3_value structure containing the value bound
+// parameter iVar of VM v. Except, if the value is an SQL NULL, return
+// 0 instead. Unless it is NULL, apply affinity aff (one of the SQLITE_AFF_*
+// constants) to the value before returning it.
+//
+// The returned value must be freed by the caller using sqlite3ValueFree().
+func _sqlite3VdbeGetBoundValue(tls *crt.TLS, _v *TVdbe, _iVar int32, _aff uint8) (r0 *XMem) {
+ var _1_pMem, _2_pRet *XMem
+ func() {
+ if _iVar <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeGetBoundValueØ00__func__Ø000))), unsafe.Pointer(str(104318)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _v == nil {
+ goto _2
}
-
- _pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_ii)))
- _45_wsFlags = int32((*XWhereLoop)(_pLevel.X18).X9)
- if (((*XWhereLoop)(_pLevel.X18).X9) & uint32(i32(16384))) == uint32(i32(0)) {
- goto _144
+ _1_pMem = (*XMem)(unsafe.Pointer(uintptr(_v.X24) + 48*uintptr(_iVar-i32(1))))
+ if i32(0) != (int32(_1_pMem.X1) & i32(1)) {
+ goto _3
}
-
- _constructAutomaticIndex(tls, _pParse, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_pLevel.X11))), _notReady, _pLevel)
- if (_db.X17) == 0 {
- goto _145
+ _2_pRet = _sqlite3ValueNew(tls, (*Xsqlite3)(_v.X0))
+ if _2_pRet != nil {
+ _sqlite3VdbeMemCopy(tls, _2_pRet, _1_pMem)
+ _sqlite3ValueApplyAffinity(tls, _2_pRet, _aff, uint8(i32(1)))
}
+ return _2_pRet
- goto _whereBeginError
-
-_145:
-_144:
- _45_addrExplain = _sqlite3WhereExplainOneScan(tls, _pParse, _pTabList, _pLevel, _ii, int32(_pLevel.X11), _wctrlFlags)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(32 /* X8 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
- _notReady = _sqlite3WhereCodeOneLoopStart(tls, _pWInfo, _ii, _notReady)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(32 /* X7 */))) = _pLevel.X6
- if (_45_wsFlags&i32(8192)) != i32(0) || (int32(_wctrlFlags)&i32(32)) != i32(0) {
- goto _147
- }
+_3:
+_2:
+ return nil
+}
-_147:
- _ii += 1
- goto _140
+var _sqlite3VdbeGetBoundValueØ00__func__Ø000 [25]int8
-_143:
- return _pWInfo
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeGetBoundValueØ00__func__Ø000[0], str(104325), 25)
+}
-_whereBeginError:
- if _pWInfo == nil {
- goto _148
+// Configure SQL variable iVar so that binding a new value to it signals
+// to sqlite3_reoptimize() that re-preparing the statement may result
+// in a better query plan.
+func _sqlite3VdbeSetVarmask(tls *crt.TLS, _v *TVdbe, _iVar int32) {
+ func() {
+ if _iVar <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(75981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetVarmaskØ00__func__Ø000))), unsafe.Pointer(str(104318)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _iVar >= i32(32) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(192 /* X41 */)))
+ *p = (*p) | u32(2147483648)
+ sink5 = *p
+ }
+ goto _3
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(192 /* X41 */)))
+ *p = (*p) | (u32(1) << uint(_iVar-i32(1)))
+ sink5 = *p
}
+_3:
+}
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(144 /* X42 */))) = uint32(_pWInfo.X9)
- _whereInfoFree(tls, _db, _pWInfo)
-_148:
- return nil
+var _sqlite3VdbeSetVarmaskØ00__func__Ø000 [22]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeSetVarmaskØ00__func__Ø000[0], str(104350), 22)
}
-var _sqlite3WhereBeginØ00__func__Ø000 [18]int8 // -
+var _isLikeOrGlobØ00__func__Ø000 [13]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereBeginØ00__func__Ø000[0], str(105800), 18)
+ crt.Xstrncpy(nil, &_isLikeOrGlobØ00__func__Ø000[0], str(104372), 13)
}
-func _whereLoopInit(tls *crt.TLS, _p *XWhereLoop) { // sqlite3.c:132160:1
- *(***XWhereTerm)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X13 */))))) = (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(60 /* X15 */)))))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(44 /* X10 */))) = uint16(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = uint16(i32(3))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X9 */))) = uint32(i32(0))
+func _sqlite3VdbeChangeP3(tls *crt.TLS, _p *TVdbe, _addr uint32, _val int32) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sqlite3VdbeGetOp(tls, _p, int32(_addr)))) + uintptr(12 /* X5 */))) = _val
}
-func _sqlite3WhereClauseInit(tls *crt.TLS, _pWC *XWhereClause, _pWInfo *XWhereInfo) { // sqlite3.c:130260:1
- *(**XWhereInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(0 /* X0 */))))) = _pWInfo
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(4 /* X1 */))))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(12 /* X3 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(16 /* X4 */))) = i32(8)
- *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(20 /* X5 */))))) = (*XWhereTerm)(unsafe.Pointer((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(24 /* X6 */)))))
+// Check to see if the given expression is of the form
+//
+// column OP expr
+//
+// where OP is one of MATCH, GLOB, LIKE or REGEXP and "column" is a
+// column of a virtual table.
+//
+// If it is then return TRUE. If not, return FALSE.
+func _isMatchOfColumn(tls *crt.TLS, _pExpr *XExpr, _peOp2 *uint8) (r0 int32) {
+ var _i int32
+ var _pList *XExprList
+ var _pCol *XExpr
+ if int32(_pExpr.X0) != i32(151) {
+ return i32(0)
+ }
+ _pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ if (_pList == nil) || ((_pList.X0) != i32(2)) {
+ return i32(0)
+ }
+ _pCol = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
+ if (int32(_pCol.X0) != i32(152)) || (((*XTable)(_pCol.X14).X16) == 0) {
+ return i32(0)
+ }
+ _i = i32(0)
+_5:
+ if _i >= i32(4) {
+ goto _8
+ }
+ if _sqlite3StrICmp(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), (*TEncName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_isMatchOfColumnØ00aOpØ001))+8*uintptr(_i))).X0) == i32(0) {
+ *_peOp2 = (*TEncName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_isMatchOfColumnØ00aOpØ001)) + 8*uintptr(_i))).X1
+ return i32(1)
+ }
+ _i += 1
+ goto _5
+_8:
+ return i32(0)
}
-func _sqlite3WhereSplit(tls *crt.TLS, _pWC *XWhereClause, _pExpr *XExpr, _op uint8) { // sqlite3.c:130245:1
- var _pE2 *XExpr // sqlite3.c:130246:8
- _ = _pE2
- _pE2 = _sqlite3ExprSkipCollate(tls, _pExpr)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(8 /* X2 */))) = _op
- if _pE2 != nil {
+var _isMatchOfColumnØ00aOpØ001 [4]TEncName
+
+func init() {
+ _isMatchOfColumnØ00aOpØ001 = [4]TEncName{TEncName{X0: str(61759), X1: u8(64)}, TEncName{X0: str(7961), X1: u8(66)}, TEncName{X0: str(7966), X1: u8(65)}, TEncName{X0: str(104385), X1: u8(67)}}
+}
+
+// Compute and return a new Expr object which when passed to
+// sqlite3ExprCode() will generate all necessary code to compute
+// the iField-th column of the vector expression pVector.
+//
+// It is ok for pVector to be a scalar (as long as iField==0).
+// In that case, this routine works like sqlite3ExprDup().
+//
+// The caller owns the returned Expr object and is responsible for
+// ensuring that the returned value eventually gets freed.
+//
+// The caller retains ownership of pVector. If pVector is a TK_SELECT,
+// then the returned object will reference pVector and so pVector must remain
+// valid for the life of the returned object. If pVector is a TK_VECTOR
+// or a scalar expression, then it can be deleted as soon as this routine
+// returns.
+//
+// A trick to cause a TK_SELECT pVector to be deleted together with
+// the returned Expr object is to attach the pVector to the pRight field
+// of the returned TK_SELECT_COLUMN Expr object.
+func _sqlite3ExprForVectorField(tls *crt.TLS, _pParse *XParse, _pVector *XExpr, _iField int32) (r0 *XExpr) {
+ var _pRet *XExpr
+ if int32(_pVector.X0) != i32(119) {
goto _0
}
- return
-
+ func() {
+ if ((_pVector.X2) & uint32(i32(2048))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91309), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprForVectorFieldØ00__func__Ø000))), unsafe.Pointer(str(104392)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pRet = _sqlite3PExpr(tls, _pParse, i32(159), nil, nil)
+ if _pRet != nil {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(32 /* X9 */))) = int16(_iField)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(12 /* X4 */))))) = _pVector
+ }
+ func() {
+ if _pRet != nil && (_pRet.X8) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91331), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprForVectorFieldØ00__func__Ø000))), unsafe.Pointer(str(104422)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _7
_0:
- if int32(_pE2.X0) == int32(_op) {
- goto _1
+ if int32(_pVector.X0) == i32(158) {
+ _pVector = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_iField))).X0)
}
+ _pRet = _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _pVector, i32(0))
+_7:
+ return _pRet
+}
- _whereClauseInsert(tls, _pWC, _pExpr, uint16(i32(0)))
- goto _2
+var _sqlite3ExprForVectorFieldØ00__func__Ø000 [26]int8
-_1:
- _sqlite3WhereSplit(tls, _pWC, (*XExpr)(_pE2.X4), _op)
- _sqlite3WhereSplit(tls, _pWC, (*XExpr)(_pE2.X5), _op)
-_2:
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprForVectorFieldØ00__func__Ø000[0], str(104449), 26)
}
-func _whereClauseInsert(tls *crt.TLS, _pWC *XWhereClause, _p *XExpr, _wtFlags uint16) (r0 int32) { // sqlite3.c:128987:1
- var _pTerm *XWhereTerm // sqlite3.c:128988:13
- _ = _pTerm
- var _idx int32 // sqlite3.c:128989:7
- _ = _idx
- var _1_pOld *XWhereTerm // sqlite3.c:128992:15
- _ = _1_pOld
- var _1_db *Xsqlite3 // sqlite3.c:128993:13
- _ = _1_db
- if (_pWC.X3) < (_pWC.X4) {
- goto _0
+// Return true if the DISTINCT expression-list passed as the third argument
+// is redundant.
+//
+// A DISTINCT list is redundant if any subset of the columns in the
+// DISTINCT list are collectively unique and individually non-null.
+func _isDistinctRedundant(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pWC *XWhereClause, _pDistinct *XExprList) (r0 int32) {
+ var _i, _iBase int32
+ var _pTab *XTable
+ var _1_p *XExpr
+ var _pIdx *XIndex
+ if (_pTabList.X0) != i32(1) {
+ return i32(0)
+ }
+ _iBase = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X11
+ _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
+ _i = i32(0)
+_1:
+ if _i >= (_pDistinct.X0) {
+ goto _4
+ }
+ _1_p = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDistinct))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if ((int32(_1_p.X0) == i32(152)) && ((_1_p.X8) == _iBase)) && (int32(_1_p.X9) < i32(0)) {
+ return i32(1)
+ }
+ _i += 1
+ goto _1
+_4:
+ _pIdx = (*XIndex)(_pTab.X2)
+_8:
+ if _pIdx == nil {
+ goto _11
+ }
+ if int32(_pIdx.X15) == i32(0) {
+ goto _9
+ }
+ _i = i32(0)
+_13:
+ if _i >= int32(_pIdx.X13) {
+ goto _16
+ }
+ if nil != _sqlite3WhereFindTerm(tls, _pWC, _iBase, _i, u64(18446744073709551615), uint32(i32(2)), _pIdx) {
+ goto _17
+ }
+ if _findIndexCol(tls, _pParse, _pDistinct, _iBase, _pIdx, _i) < i32(0) {
+ goto _16
+ }
+ if _indexColumnNotNull(tls, _pIdx, _i) == i32(0) {
+ goto _16
}
+_17:
+ _i += 1
+ goto _13
+_16:
+ if _i == int32(_pIdx.X13) {
+ return i32(1)
+ }
+_9:
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _8
+_11:
+ return i32(0)
+}
- _1_pOld = (*XWhereTerm)(_pWC.X5)
- _1_db = (*Xsqlite3)((*XParse)((*XWhereInfo)(_pWC.X0).X0).X0)
- *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(20 /* X5 */))))) = (*XWhereTerm)(_sqlite3DbMallocRawNN(tls, _1_db, uint64((u32(48)*uint32(_pWC.X4))*uint32(i32(2)))))
- if (*XWhereTerm)(_pWC.X5) != nil {
+// Search for a term in the WHERE clause that is of the form "X "
+// where X is a reference to the iColumn of table iCur or of index pIdx
+// if pIdx!=0 and is one of the WO_xx operator codes specified by
+// the op parameter. Return a pointer to the term. Return 0 if not found.
+//
+// If pIdx!=0 then it must be one of the indexes of table iCur.
+// Search for terms matching the iColumn-th column of pIdx
+// rather than the iColumn-th column of table iCur.
+//
+// The term returned might by Y= if there is another constraint in
+// the WHERE clause that specifies that X=Y. Any such constraints will be
+// identified by the WO_EQUIV bit in the pTerm->eOperator field. The
+// aiCur[]/iaColumn[] arrays hold X and all its equivalents. There are 11
+// slots in aiCur[]/aiColumn[] so that means we can look for X plus up to 10
+// other equivalent values. Hence a search for X will return if X=A1
+// and A1=A2 and A2=A3 and ... and A9=A10 and A10=.
+//
+// If there are multiple terms in the WHERE clause of the form "X "
+// then try for the one with no dependencies on - in other words where
+// is a constant expression of some kind. Only return entries of
+// the form "X Y" where Y is a column in another table if no terms of
+// the form "X " exist. If no terms with a constant RHS
+// exist, try to return a term that does not use WO_EQUIV.
+func _sqlite3WhereFindTerm(tls *crt.TLS, _pWC *XWhereClause, _iCur int32, _iColumn int32, _notReady uint64, _op uint32, _pIdx *XIndex) (r0 *XWhereTerm) {
+ var _pResult, _p *XWhereTerm
+ var _scan XWhereScan
+ _pResult = nil
+ _p = _whereScanInit(tls, &_scan, _pWC, _iCur, _iColumn, _op, _pIdx)
+ {
+ p := &_op
+ *p = (*p) & uint32(i32(130))
+ sink5 = *p
+ }
+_0:
+ if _p == nil {
goto _1
}
-
- if (int32(_wtFlags) & i32(1)) == 0 {
+ if ((_p.X11) & _notReady) != uint64(i32(0)) {
goto _2
}
-
- _sqlite3ExprDelete(tls, _1_db, _p)
+ if ((_p.X11) == uint64(i32(0))) && ((uint32(_p.X4) & _op) != uint32(i32(0))) {
+ return _p
+ }
+ if _pResult == nil {
+ _pResult = _p
+ }
_2:
- *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(20 /* X5 */))))) = _1_pOld
- return i32(0)
-
+ _p = _whereScanNext(tls, &_scan)
+ goto _0
_1:
- crt.Xmemcpy(tls, _pWC.X5, (unsafe.Pointer)(_1_pOld), u32(48)*uint32(_pWC.X3))
- if _1_pOld == (*XWhereTerm)(unsafe.Pointer((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC))+uintptr(24 /* X6 */))))) {
- goto _3
- }
+ return _pResult
- _sqlite3DbFree(tls, _1_db, (unsafe.Pointer)(_1_pOld))
-_3:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC)) + uintptr(16 /* X4 */))) = int32(uint32(_sqlite3DbMallocSize(tls, _1_db, _pWC.X5)) / u32(48))
-_0:
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(store1(&_idx, postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC))+uintptr(12 /* X3 */))), int32(1))))))
- if _p == nil || ((_p.X2)&uint32(i32(262144))) == uint32(i32(0)) {
- goto _5
+ _ = _scan
+ panic(0)
+}
+
+// Initialize a WHERE clause scanner object. Return a pointer to the
+// first match. Return NULL if there are no matches.
+//
+// The scanner will be searching the WHERE clause pWC. It will look
+// for terms of the form "X " where X is column iColumn of table
+// iCur. Or if pIdx!=0 then X is column iColumn of index pIdx. pIdx
+// must be one of the indexes of table iCur.
+//
+// The must be one of the operators described by opMask.
+//
+// If the search is for X and the WHERE clause contains terms of the
+// form X=Y then this routine might also return terms of the form
+// "Y ". The number of levels of transitivity is limited,
+// but is enough to handle most commonly occurring SQL statements.
+//
+// If X is not the INTEGER PRIMARY KEY then X must be compatible with
+// index pIdx.
+func _whereScanInit(tls *crt.TLS, _pScan *XWhereScan, _pWC *XWhereClause, _iCur int32, _iColumn int32, _opMask uint32, _pIdx *XIndex) (r0 *XWhereTerm) {
+ var _1_j int32
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(0 /* X0 */))))) = _pWC
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(4 /* X1 */))))) = _pWC
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(12 /* X3 */))))) = nil
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(16 /* X4 */))) = int8(i32(0))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(8 /* X2 */))) = nil
+ if _pIdx == nil {
+ goto _0
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(8 /* X2 */))) = int16(int32(_sqlite3LogEst(tls, uint64(_p.X8))) - i32(270))
+ _1_j = _iColumn
+ _iColumn = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_j))))
+ if _iColumn == i32(-2) {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(12 /* X3 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */))))) + 20*uintptr(_1_j))).X0)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(8 /* X2 */))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_1_j)))
+ goto _2
+ }
+ if _iColumn == int32((*XTable)(_pIdx.X3).X10) {
+ _iColumn = i32(-1)
+ goto _4
+ }
+ if _iColumn >= i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(16 /* X4 */))) = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1) + 16*uintptr(_iColumn))).X4
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(8 /* X2 */))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_1_j)))
+ }
+_4:
+_2:
goto _6
-
-_5:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(8 /* X2 */))) = int16(i32(1))
+_0:
+ if _iColumn == i32(-2) {
+ return nil
+ }
_6:
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(0 /* X0 */))))) = _sqlite3ExprSkipCollate(tls, _p)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */))) = _wtFlags
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(4 /* X1 */))))) = _pWC
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(16 /* X7 */))) = i32(-1)
- crt.Xmemset(tls, (unsafe.Pointer)((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm))+uintptr(12 /* X4 */)))), i32(0), u32(36))
- return _idx
-}
-
-func _sqlite3ExprIsConstantNotJoin(tls *crt.TLS, _p *XExpr) (r0 int32) { // sqlite3.c:92700:1
- return _exprIsConst(tls, _p, i32(2), i32(0))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(20 /* X7 */))) = _opMask
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(24 /* X8 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(i32(0)))) = _iCur
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(i32(0)))) = int16(_iColumn)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(17 /* X5 */))) = uint8(i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(18 /* X6 */))) = uint8(i32(1))
+ return _whereScanNext(tls, _pScan)
}
-func _sqlite3ExprIfFalse(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _jumpIfNull int32) { // sqlite3.c:95396:1
- var _v *TVdbe // sqlite3.c:95397:8
- _ = _v
- var _op int32 // sqlite3.c:95398:7
- _ = _op
- var _regFree1 int32 // sqlite3.c:95399:7
- _ = _regFree1
- var _regFree2 int32 // sqlite3.c:95400:7
- _ = _regFree2
- var _r1 int32 // sqlite3.c:95401:7
- _ = _r1
- var _r2 int32 // sqlite3.c:95401:11
- _ = _r2
- var _3_d2 int32 // sqlite3.c:95448:11
- _ = _3_d2
- var _10_destIfNull int32 // sqlite3.c:95514:13
- _ = _10_destIfNull
- _v = (*TVdbe)(_pParse.X2)
- _op = i32(0)
- _regFree1 = i32(0)
- _regFree2 = i32(0)
- func() {
- if _jumpIfNull != i32(16) && _jumpIfNull != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95403), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(105820)))
- crt.X__builtin_abort(tls)
- }
- }()
- if func() int32 {
- if _v == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
- return i32(0)
- }() == 0 {
- goto _5
- }
- return
-
-_5:
- if _pExpr != nil {
- goto _6
- }
- return
-
-_6:
- _op = ((int32(_pExpr.X0) + i32(1)) ^ i32(1)) - i32(1)
- func() {
- if int32(_pExpr.X0) == i32(75) && _op != i32(76) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95429), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(105868)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pExpr.X0) == i32(76) && _op != i32(75) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95430), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(105908)))
- crt.X__builtin_abort(tls)
- }
- }()
+// Advance to the next WhereTerm that matches according to the criteria
+// established when the pScan object was initialized by whereScanInit().
+// Return NULL if there are no more matching WhereTerms.
+func _whereScanNext(tls *crt.TLS, _pScan *XWhereScan) (r0 *XWhereTerm) {
+ var _iColumn int16
+ var _iCur, _k, _5_j int32
+ var _pX *XExpr
+ var _10_pParse *XParse
+ var _10_pColl *XCollSeq
+ var _pTerm *XWhereTerm
+ var _pWC *XWhereClause
+ _k = _pScan.X8
func() {
- if int32(_pExpr.X0) == i32(77) && _op != i32(78) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(105948)))
+ if int32(_pScan.X6) > int32(_pScan.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130590), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereScanNextØ00__func__Ø000))), unsafe.Pointer(str(104475)))
crt.X__builtin_abort(tls)
}
}()
+ _pWC = (*XWhereClause)(_pScan.X1)
+_2:
+ _iColumn = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(int32(_pScan.X6)-i32(1))))
+ _iCur = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(int32(_pScan.X6)-i32(1))))
func() {
- if int32(_pExpr.X0) == i32(78) && _op != i32(77) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95432), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(105980)))
+ if _pWC == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130595), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereScanNextØ00__func__Ø000))), unsafe.Pointer(str(104504)))
crt.X__builtin_abort(tls)
}
}()
+_6:
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(_pWC.X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(_k)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
+_7:
+ if _k >= (_pWC.X3) {
+ goto _10
+ }
+ if (_pTerm.X8) != _iCur || (*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) != int32(_iColumn) || int32(_iColumn) == i32(-2) && _sqlite3ExprCompareSkip(tls, (*XExpr)((*XExpr)(_pTerm.X0).X4), (*XExpr)(_pScan.X3), _iCur) != i32(0) || int32(_pScan.X6) > i32(1) && (((*XExpr)(_pTerm.X0).X2)&uint32(i32(1))) != uint32(i32(0)) {
+ goto _16
+ }
+ if (int32(_pTerm.X4)&i32(2048)) == i32(0) || int32(_pScan.X5) >= i32(11) || int32(store36(&_pX, _sqlite3ExprSkipCollate(tls, (*XExpr)((*XExpr)(_pTerm.X0).X5))).X0) != i32(152) {
+ goto _19
+ }
+ _5_j = i32(0)
+_20:
+ if _5_j >= int32(_pScan.X5) {
+ goto _23
+ }
+ if ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(_5_j)))) == (_pX.X8)) && (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(_5_j)))) == int32(_pX.X9)) {
+ goto _23
+ }
+ _5_j += 1
+ goto _20
+_23:
+ if _5_j == int32(_pScan.X5) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(_5_j))) = _pX.X8
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(_5_j))) = _pX.X9
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(17 /* X5 */))) += 1
+ }
+_19:
+ if (uint32(_pTerm.X4) & (_pScan.X7)) == uint32(i32(0)) {
+ goto _27
+ }
+ if (_pScan.X2) == nil || (int32(_pTerm.X4)&i32(256)) != i32(0) {
+ goto _29
+ }
+ _10_pParse = (*XParse)((*XWhereInfo)(_pWC.X0).X0)
+ _pX = (*XExpr)(_pTerm.X0)
+ if _sqlite3IndexAffinityOk(tls, _pX, _pScan.X4) == 0 {
+ goto _8
+ }
func() {
- if int32(_pExpr.X0) == i32(81) && _op != i32(82) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95433), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(106012)))
+ if (*XExpr)(_pX.X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130631), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereScanNextØ00__func__Ø000))), unsafe.Pointer(str(104511)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if int32(_pExpr.X0) == i32(80) && _op != i32(79) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95434), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(106044)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pExpr.X0) == i32(79) && _op != i32(80) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95435), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(106076)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pExpr.X0) == i32(82) && _op != i32(81) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95436), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfFalseØ00__func__Ø000))), unsafe.Pointer(str(106108)))
- crt.X__builtin_abort(tls)
- }
- }()
- switch int32(_pExpr.X0) {
- case i32(19):
- goto _34
- case i32(70):
- goto _33
- case i32(71):
- goto _32
- case i32(72):
- goto _35
- case i32(73):
- goto _45
- case i32(74):
- goto _46
- case i32(75):
- goto _43
- case i32(76):
- goto _44
- case i32(77):
- goto _41
- case i32(78):
- goto _42
- case i32(79):
- goto _39
- case i32(80):
- goto _38
- case i32(81):
- goto _37
- case i32(82):
- goto _40
- case i32(148):
- goto _36
- default:
- goto _47
+ _10_pColl = _sqlite3BinaryCompareCollSeq(tls, _10_pParse, (*XExpr)(_pX.X4), (*XExpr)(_pX.X5))
+ if _10_pColl == nil {
+ _10_pColl = (*XCollSeq)((*Xsqlite3)(_10_pParse.X0).X2)
+ }
+ if _sqlite3StrICmp(tls, _10_pColl.X0, _pScan.X2) != 0 {
+ goto _8
+ }
+_29:
+ if ((((int32(_pTerm.X4) & i32(130)) != i32(0)) && (int32(store36(&_pX, (*XExpr)((*XExpr)(_pTerm.X0).X5)).X0) == i32(152))) && ((_pX.X8) == (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(i32(0))))))) && (int32(_pX.X9) == int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(i32(0)))))) {
+ goto _8
}
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(4 /* X1 */))))) = _pWC
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(24 /* X8 */))) = _k + i32(1)
+ return _pTerm
-_32:
- _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
- _sqlite3ExprCachePush(tls, _pParse)
- _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
- _sqlite3ExprCachePop(tls, _pParse)
- goto _48
+_27:
+_16:
+_8:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _k += 1; return &_pTerm }())) += uintptr(48)
+ goto _7
+_10:
+ _pWC = (*XWhereClause)(_pWC.X1)
+ _k = i32(0)
+ if _pWC != nil {
+ goto _6
+ }
+ if int32(_pScan.X6) >= int32(_pScan.X5) {
+ goto _3
+ }
+ _pWC = (*XWhereClause)(_pScan.X0)
+ _k = i32(0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(18 /* X6 */))) += 1
+ goto _2
+_3:
+ return nil
+}
-_33:
- _3_d2 = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X4), _3_d2, _jumpIfNull^i32(16))
- _sqlite3ExprCachePush(tls, _pParse)
- _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
- _sqlite3VdbeResolveLabel(tls, _v, _3_d2)
- _sqlite3ExprCachePop(tls, _pParse)
- goto _48
+var _whereScanNextØ00__func__Ø000 [14]int8
-_34:
- _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
- goto _48
+func init() {
+ crt.Xstrncpy(nil, &_whereScanNextØ00__func__Ø000[0], str(104521), 14)
+}
-_35:
-_36:
- _op = func() int32 {
- if int32(_pExpr.X0) == i32(72) {
- return i32(77)
- }
- return i32(78)
- }()
- _jumpIfNull = i32(128)
-_37:
-_38:
-_39:
-_40:
-_41:
-_42:
- if _sqlite3ExprIsVector(tls, (*XExpr)(_pExpr.X4)) == 0 {
- goto _51
+// pExpr is a comparison expression, eg. '=', '<', IN(...) etc.
+// idx_affinity is the affinity of an indexed column. Return true
+// if the index with affinity idx_affinity may be used to implement
+// the comparison in pExpr.
+func _sqlite3IndexAffinityOk(tls *crt.TLS, _pExpr *XExpr, _idx_affinity int8) (r0 int32) {
+ var _aff int8
+ _aff = _comparisonAffinity(tls, _pExpr)
+ switch int32(_aff) {
+ case i32(65):
+ goto _1
+ case i32(66):
+ goto _2
+ default:
+ goto _3
}
- goto _default_expr
-
-_51:
- _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
- _r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X5), &_regFree2)
- _codeCompare(tls, _pParse, (*XExpr)(_pExpr.X4), (*XExpr)(_pExpr.X5), _op, _r1, _r2, _dest, _jumpIfNull)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- goto _48
+_1:
+ return i32(1)
-_43:
-_44:
- _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
- _sqlite3VdbeAddOp2(tls, _v, _op, _r1, _dest)
- goto _48
+_2:
+ return bool2int(int32(_idx_affinity) == i32(66))
-_45:
- _exprCodeBetween(tls, _pParse, _pExpr, _dest, _sqlite3ExprIfFalse, _jumpIfNull)
- goto _48
+_3:
+ return bool2int(int32(_idx_affinity) >= i32(67))
+}
-_46:
- if _jumpIfNull == 0 {
- goto _52
+// pExpr is a comparison operator. Return the type affinity that should
+// be applied to both operands prior to doing the comparison.
+func _comparisonAffinity(tls *crt.TLS, _pExpr *XExpr) (r0 int8) {
+ var _aff int8
+ func() {
+ if int32(_pExpr.X0) != i32(78) && int32(_pExpr.X0) != i32(74) && int32(_pExpr.X0) != i32(81) && int32(_pExpr.X0) != i32(79) && int32(_pExpr.X0) != i32(82) && int32(_pExpr.X0) != i32(80) && int32(_pExpr.X0) != i32(77) && int32(_pExpr.X0) != i32(72) && int32(_pExpr.X0) != i32(148) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91123), unsafe.Pointer((*int8)(unsafe.Pointer(&_comparisonAffinityØ00__func__Ø000))), unsafe.Pointer(str(104535)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XExpr)(_pExpr.X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91126), unsafe.Pointer((*int8)(unsafe.Pointer(&_comparisonAffinityØ00__func__Ø000))), unsafe.Pointer(str(104715)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _aff = _sqlite3ExprAffinity(tls, (*XExpr)(_pExpr.X4))
+ if (*XExpr)(_pExpr.X5) != nil {
+ _aff = _sqlite3CompareAffinity(tls, (*XExpr)(_pExpr.X5), _aff)
+ goto _13
}
-
- _sqlite3ExprCodeIN(tls, _pParse, _pExpr, _dest, _dest)
- goto _53
-
-_52:
- _10_destIfNull = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3ExprCodeIN(tls, _pParse, _pExpr, _dest, _10_destIfNull)
- _sqlite3VdbeResolveLabel(tls, _v, _10_destIfNull)
-_53:
- goto _48
-
-_47:
-_default_expr:
- if _exprAlwaysFalse(tls, _pExpr) == 0 {
- goto _54
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ _aff = _sqlite3CompareAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0)+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0), _aff)
+ goto _15
}
-
- _sqlite3VdbeGoto(tls, _v, _dest)
- goto _55
-
-_54:
- if _exprAlwaysTrue(tls, _pExpr) == 0 {
- goto _56
+ if int32(_aff) == i32(0) {
+ _aff = int8(i32(65))
}
-
- goto _57
-
-_56:
- _r1 = _sqlite3ExprCodeTemp(tls, _pParse, _pExpr, &_regFree1)
- _sqlite3VdbeAddOp3(tls, _v, i32(22), _r1, _dest, bool2int(_jumpIfNull != i32(0)))
-_57:
-_55:
- goto _48
-
-_48:
- _sqlite3ReleaseTempReg(tls, _pParse, _regFree1)
- _sqlite3ReleaseTempReg(tls, _pParse, _regFree2)
+_15:
+_13:
+ return _aff
}
-var _sqlite3ExprIfFalseØ00__func__Ø000 [19]int8 // -
+var _comparisonAffinityØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprIfFalseØ00__func__Ø000[0], str(106140), 19)
+ crt.Xstrncpy(nil, &_comparisonAffinityØ00__func__Ø000[0], str(104728), 19)
}
-func _sqlite3ExprCachePop(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:94084:1
- var _i int32 // sqlite3.c:94085:7
- _ = _i
+// This function searches pList for an entry that matches the iCol-th column
+// of index pIdx.
+//
+// If such an expression is found, its index in pList->a[] is returned. If
+// no expression is found, -1 is returned.
+func _findIndexCol(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _iBase int32, _pIdx *XIndex, _iCol int32) (r0 int32) {
+ var _i int32
+ var _zColl *int8
+ var _1_p *XExpr
+ var _2_pColl *XCollSeq
+ _zColl = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_iCol)))
_i = i32(0)
+_0:
+ if _i >= (_pList.X0) {
+ goto _3
+ }
+ _1_p = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if int32(_1_p.X0) != i32(152) || int32(_1_p.X9) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iCol)))) || (_1_p.X8) != _iBase {
+ goto _6
+ }
+ _2_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if (_2_pColl != nil) && (i32(0) == _sqlite3StrICmp(tls, _2_pColl.X0, _zColl)) {
+ return _i
+ }
+_6:
+ _i += 1
+ goto _0
+_3:
+ return i32(-1)
+}
+
+// Return TRUE if the iCol-th column of index pIdx is NOT NULL
+func _indexColumnNotNull(tls *crt.TLS, _pIdx *XIndex, _iCol int32) (r0 int32) {
+ var _j int32
func() {
- if (_pParse.X23) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94086), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCachePopØ00__func__Ø000))), unsafe.Pointer(str(106160)))
+ if _pIdx == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130810), unsafe.Pointer((*int8)(unsafe.Pointer(&_indexColumnNotNullØ00__func__Ø000))), unsafe.Pointer(str(42069)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(64 /* X23 */))) -= 1
- if (((*Xsqlite3)(_pParse.X0).X6) & i32(4096)) == 0 {
- goto _2
- }
-
- crt.Xprintf(tls, str(106184), _pParse.X23)
-_2:
-_3:
- if _i >= int32(_pParse.X13) {
- goto _4
+ func() {
+ if _iCol < i32(0) || _iCol >= int32(_pIdx.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130811), unsafe.Pointer((*int8)(unsafe.Pointer(&_indexColumnNotNullØ00__func__Ø000))), unsafe.Pointer(str(104747)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _j = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iCol))))
+ if _j >= i32(0) {
+ return int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1) + 16*uintptr(_j))).X3)
}
-
- if ((*TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[10]TyColCache)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(160 /* X48 */))))) + 20*uintptr(_i))).X3) <= (_pParse.X23) {
- goto _5
+ if _j == i32(-1) {
+ return i32(1)
}
-
- _cacheEntryClear(tls, _pParse, _i)
- goto _6
-
-_5:
- _i += 1
-_6:
- goto _3
-
-_4:
+ func() {
+ if _j != i32(-2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130818), unsafe.Pointer((*int8)(unsafe.Pointer(&_indexColumnNotNullØ00__func__Ø000))), unsafe.Pointer(str(104777)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(0)
}
-var _sqlite3ExprCachePopØ00__func__Ø000 [20]int8 // -
+var _indexColumnNotNullØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCachePopØ00__func__Ø000[0], str(106196), 20)
+ crt.Xstrncpy(nil, &_indexColumnNotNullØ00__func__Ø000[0], str(104785), 19)
}
-func _sqlite3ExprIfTrue(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _jumpIfNull int32) { // sqlite3.c:95273:1
- var _v *TVdbe // sqlite3.c:95274:8
- _ = _v
- var _op int32 // sqlite3.c:95275:7
- _ = _op
- var _regFree1 int32 // sqlite3.c:95276:7
- _ = _regFree1
- var _regFree2 int32 // sqlite3.c:95277:7
- _ = _regFree2
- var _r1 int32 // sqlite3.c:95278:7
- _ = _r1
- var _r2 int32 // sqlite3.c:95278:11
- _ = _r2
- var _2_d2 int32 // sqlite3.c:95286:11
- _ = _2_d2
- var _8_destIfFalse int32 // sqlite3.c:95359:11
- _ = _8_destIfFalse
- var _8_destIfNull int32 // sqlite3.c:95360:11
- _ = _8_destIfNull
- _v = (*TVdbe)(_pParse.X2)
- _op = i32(0)
- _regFree1 = i32(0)
- _regFree2 = i32(0)
+// Most queries use only a single table (they are not joins) and have
+// simple == constraints against indexed fields. This routine attempts
+// to plan those simple cases using much less ceremony than the
+// general-purpose query planner, and thereby yield faster sqlite3_prepare()
+// times for the common case.
+//
+// Return non-zero on success, if this query can be handled by this
+// no-frills query planner. Return zero if this query needs the
+// general-purpose query planner.
+func _whereShortCut(tls *crt.TLS, _pBuilder *XWhereLoopBuilder) (r0 int32) {
+ var _iCur, _j, _3_opMask int32
+ var _pTab *XTable
+ var _pItem *TSrcList_item
+ var _pIdx *XIndex
+ var _pWInfo *XWhereInfo
+ var _pLoop *XWhereLoop
+ var _pTerm *XWhereTerm
+ var _pWC *XWhereClause
+ _pWInfo = (*XWhereInfo)(_pBuilder.X0)
+ if (int32(_pWInfo.X10) & i32(32)) != 0 {
+ return i32(0)
+ }
func() {
- if _jumpIfNull != i32(16) && _jumpIfNull != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95280), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfTrueØ00__func__Ø000))), unsafe.Pointer(str(105820)))
+ if ((*XSrcList)(_pWInfo.X1).X0) < i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134607), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereShortCutØ00__func__Ø000))), unsafe.Pointer(str(104804)))
crt.X__builtin_abort(tls)
}
}()
- if func() int32 {
- if _v == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95281), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfTrueØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
+ _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1) + uintptr(8 /* X2 */)))))
+ _pTab = (*XTable)(_pItem.X4)
+ if (_pTab.X16) != 0 {
return i32(0)
- }() == 0 {
- goto _5
}
- return
-
-_5:
- if func() int32 {
- if _pExpr == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95282), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIfTrueØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) != 0 {
return i32(0)
- }() == 0 {
- goto _8
}
- return
-
-_8:
- _op = int32(_pExpr.X0)
- switch _op {
- case i32(19):
- goto _12
- case i32(70):
- goto _11
- case i32(71):
+ _iCur = _pItem.X11
+ _pWC = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
+ _pLoop = (*XWhereLoop)(_pBuilder.X3)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(46 /* X11 */))) = uint16(i32(0))
+ _pTerm = _sqlite3WhereFindTerm(tls, _pWC, _iCur, i32(-1), uint64(i32(0)), uint32(i32(130)), nil)
+ if _pTerm != nil {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(4353))
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(i32(0)))) = _pTerm
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(44 /* X10 */))) = uint16(i32(1))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(1))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(22 /* X6 */))) = int16(i32(33))
+ goto _6
+ }
+ _pIdx = (*XIndex)(_pTab.X2)
+_7:
+ if _pIdx == nil {
goto _10
- case i32(72):
- goto _13
- case i32(73):
- goto _23
- case i32(74):
- goto _24
- case i32(75):
- goto _21
- case i32(76):
- goto _22
- case i32(77):
- goto _19
- case i32(78):
- goto _20
- case i32(79):
- goto _17
- case i32(80):
- goto _16
- case i32(81):
- goto _15
- case i32(82):
- goto _18
- case i32(148):
- goto _14
- default:
- goto _25
}
-
-_10:
- _2_d2 = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X4), _2_d2, _jumpIfNull^i32(16))
- _sqlite3ExprCachePush(tls, _pParse)
- _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
- _sqlite3VdbeResolveLabel(tls, _v, _2_d2)
- _sqlite3ExprCachePop(tls, _pParse)
- goto _26
-
-_11:
- _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
- _sqlite3ExprCachePush(tls, _pParse)
- _sqlite3ExprIfTrue(tls, _pParse, (*XExpr)(_pExpr.X5), _dest, _jumpIfNull)
- _sqlite3ExprCachePop(tls, _pParse)
- goto _26
-
-_12:
- _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pExpr.X4), _dest, _jumpIfNull)
- goto _26
-
-_13:
-_14:
- _op = func() int32 {
- if _op == i32(72) {
- return i32(78)
+ func() {
+ if (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(60 /* X15 */))))) != (**XWhereTerm)(unsafe.Pointer(_pLoop.X13)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134629), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereShortCutØ00__func__Ø000))), unsafe.Pointer(str(104830)))
+ crt.X__builtin_abort(tls)
}
- return i32(77)
}()
- _jumpIfNull = i32(128)
-_15:
-_16:
-_17:
+ if ((int32(_pIdx.X15) == i32(0)) || ((*XExpr)(_pIdx.X9) != nil)) || (int32(_pIdx.X13) > i32(3)) {
+ goto _8
+ }
+ _3_opMask = func() int32 {
+ if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ return i32(130)
+ }
+ return i32(2)
+ }()
+ _j = i32(0)
_18:
-_19:
-_20:
- if _sqlite3ExprIsVector(tls, (*XExpr)(_pExpr.X4)) == 0 {
- goto _29
+ if _j >= int32(_pIdx.X13) {
+ goto _21
}
-
- goto _default_expr
-
-_29:
- _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
- _r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X5), &_regFree2)
- _codeCompare(tls, _pParse, (*XExpr)(_pExpr.X4), (*XExpr)(_pExpr.X5), _op, _r1, _r2, _dest, _jumpIfNull)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- goto _26
-
+ _pTerm = _sqlite3WhereFindTerm(tls, _pWC, _iCur, _j, uint64(i32(0)), uint32(_3_opMask), _pIdx)
+ if _pTerm == nil {
+ goto _21
+ }
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j))) = _pTerm
+ _j += 1
+ goto _18
_21:
-_22:
- i32(0)
- i32(0)
- _r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_pExpr.X4), &_regFree1)
- _sqlite3VdbeAddOp2(tls, _v, _op, _r1, _dest)
- goto _26
-
-_23:
- _exprCodeBetween(tls, _pParse, _pExpr, _dest, _sqlite3ExprIfTrue, _jumpIfNull)
- goto _26
-
-_24:
- _8_destIfFalse = _sqlite3VdbeMakeLabel(tls, _v)
- _8_destIfNull = func() int32 {
- if _jumpIfNull != 0 {
- return _dest
+ if _j != int32(_pIdx.X13) {
+ goto _8
+ }
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(4609))
+ if (((uint32((_pIdx.X16)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) != 0) || (((_pItem.X14) & (^_columnsInIndex(tls, _pIdx))) == uint64(i32(0))) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(64))
+ sink5 = *p
+ }
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(44 /* X10 */))) = uint16(_j)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(_j)
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = _pIdx
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(22 /* X6 */))) = int16(i32(39))
+ goto _10
+_8:
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _7
+_10:
+_6:
+ if (_pLoop.X9) == 0 {
+ goto _26
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) = i16(1)
+ *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))))) + uintptr(64 /* X18 */))))) = _pLoop
+ func() {
+ if ((*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))).X0) != i32(1) || _iCur != (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[64]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */)))))+uintptr(4 /* X1 */))))) + 4*uintptr(i32(0))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134657), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereShortCutØ00__func__Ø000))), unsafe.Pointer(str(104864)))
+ crt.X__builtin_abort(tls)
}
- return _8_destIfFalse
}()
- _sqlite3ExprCodeIN(tls, _pParse, _pExpr, _8_destIfFalse, _8_destIfNull)
- _sqlite3VdbeGoto(tls, _v, _dest)
- _sqlite3VdbeResolveLabel(tls, _v, _8_destIfFalse)
- goto _26
-
-_25:
-_default_expr:
- if _exprAlwaysTrue(tls, _pExpr) == 0 {
- goto _32
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(8 /* X1 */))) = uint64(i32(1))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))))) + uintptr(4 /* X1 */))) = _iCur
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(72 /* X21 */))) = int16(i32(1))
+ if (*XExprList)(_pWInfo.X2) != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = int8((*XExprList)(_pWInfo.X2).X0)
}
-
- _sqlite3VdbeGoto(tls, _v, _dest)
- goto _33
-
-_32:
- if _exprAlwaysFalse(tls, _pExpr) == 0 {
- goto _34
+ if (int32(_pWInfo.X10) & i32(256)) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(1))
}
-
- goto _35
-
-_34:
- _r1 = _sqlite3ExprCodeTemp(tls, _pParse, _pExpr, &_regFree1)
- _sqlite3VdbeAddOp3(tls, _v, i32(21), _r1, _dest, bool2int(_jumpIfNull != i32(0)))
-_35:
-_33:
- goto _26
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(16 /* X2 */))) = int8(i32(48))
+ return i32(1)
_26:
- _sqlite3ReleaseTempReg(tls, _pParse, _regFree1)
- _sqlite3ReleaseTempReg(tls, _pParse, _regFree2)
+ return i32(0)
}
-var _sqlite3ExprIfTrueØ00__func__Ø000 [18]int8 // -
+var _whereShortCutØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprIfTrueØ00__func__Ø000[0], str(106216), 18)
+ crt.Xstrncpy(nil, &_whereShortCutØ00__func__Ø000[0], str(104918), 14)
}
-func _sqlite3ExprCodeTemp(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _pReg *int32) (r0 int32) { // sqlite3.c:95030:1
- var _r2 int32 // sqlite3.c:95031:7
- _ = _r2
- var _2_r1 int32 // sqlite3.c:95040:9
- _ = _2_r1
- _pExpr = _sqlite3ExprSkipCollate(tls, _pExpr)
- if (_pParse.X11) == 0 || int32(_pExpr.X0) == i32(157) || _sqlite3ExprIsConstantNotJoin(tls, _pExpr) == 0 {
- goto _2
+// Return a bitmask where 1s indicate that the corresponding column of
+// the table is used by an index. Only the first 63 columns are considered.
+func _columnsInIndex(tls *crt.TLS, _pIdx *XIndex) (r0 uint64) {
+ var _j, _1_x int32
+ var _m uint64
+ _m = u64(0)
+ _j = int32(_pIdx.X14) - i32(1)
+_0:
+ if _j < i32(0) {
+ goto _3
}
-
- *_pReg = i32(0)
- _r2 = _sqlite3ExprCodeAtInit(tls, _pParse, _pExpr, i32(-1))
- goto _3
-
-_2:
- _2_r1 = _sqlite3GetTempReg(tls, _pParse)
- _r2 = _sqlite3ExprCodeTarget(tls, _pParse, _pExpr, _2_r1)
- if _r2 != _2_r1 {
+ _1_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j))))
+ if _1_x < i32(0) {
goto _4
}
-
- *_pReg = _2_r1
- goto _5
-
+ if _1_x < i32(63) {
+ {
+ p := &_m
+ *p = (*p) | (u64(1) << uint(_1_x))
+ sink17 = *p
+ }
+ }
_4:
- _sqlite3ReleaseTempReg(tls, _pParse, _2_r1)
- *_pReg = i32(0)
-_5:
+ _j -= 1
+ goto _0
_3:
- r0 = _r2
- return
-}
-
-func _codeCompare(tls *crt.TLS, _pParse *XParse, _pLeft *XExpr, _pRight *XExpr, _opcode int32, _in1 int32, _in2 int32, _dest int32, _jumpIfNull int32) (r0 int32) { // sqlite3.c:91201:1
- var _p5 int32 // sqlite3.c:91210:7
- _ = _p5
- var _addr int32 // sqlite3.c:91211:7
- _ = _addr
- var _p4 *XCollSeq // sqlite3.c:91212:11
- _ = _p4
- _p4 = _sqlite3BinaryCompareCollSeq(tls, _pParse, _pLeft, _pRight)
- _p5 = int32(_binaryCompareP5(tls, _pLeft, _pRight, _jumpIfNull))
- _addr = _sqlite3VdbeAddOp4(tls, (*TVdbe)(_pParse.X2), _opcode, _in2, _dest, _in1, (*int8)((unsafe.Pointer)(_p4)), i32(-3))
- _sqlite3VdbeChangeP5(tls, (*TVdbe)(_pParse.X2), uint16(uint8(_p5)))
- return _addr
+ return _m
}
-func _sqlite3BinaryCompareCollSeq(tls *crt.TLS, _pParse *XParse, _pLeft *XExpr, _pRight *XExpr) (r0 *XCollSeq) { // sqlite3.c:91178:1
- var _pColl *XCollSeq // sqlite3.c:91183:11
- _ = _pColl
- func() {
- if _pLeft == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91184), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BinaryCompareCollSeqØ00__func__Ø000))), unsafe.Pointer(str(43852)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((_pLeft.X2) & uint32(i32(256))) == 0 {
- goto _2
+// Add all WhereLoop objects for all tables
+func _whereLoopAddAll(tls *crt.TLS, _pBuilder *XWhereLoopBuilder) (r0 int32) {
+ var _iTab, _rc int32
+ var _mPrereq, _mPrior, _1_mUnusable uint64
+ var _priorJointype uint8
+ var _db *Xsqlite3
+ var _pTabList *XSrcList
+ var _pItem, _pEnd, _3_p *TSrcList_item
+ var _pWInfo *XWhereInfo
+ var _pNew *XWhereLoop
+ _pWInfo = (*XWhereInfo)(_pBuilder.X0)
+ _mPrereq = u64(0)
+ _mPrior = u64(0)
+ _pTabList = (*XSrcList)(_pWInfo.X1)
+ _pEnd = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pWInfo.X11)))
+ _db = (*Xsqlite3)((*XParse)(_pWInfo.X0).X0)
+ _rc = i32(0)
+ _priorJointype = u8(0)
+ _pNew = (*XWhereLoop)(_pBuilder.X3)
+ _whereLoopInit(tls, _pNew)
+ *func() **TSrcList_item { _iTab = i32(0); return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
+_0:
+ if uintptr(unsafe.Pointer(_pItem)) >= uintptr(unsafe.Pointer(_pEnd)) {
+ goto _3
}
-
- _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pLeft)
- goto _3
-
-_2:
- if _pRight == nil || ((_pRight.X2)&uint32(i32(256))) == uint32(i32(0)) {
+ _1_mUnusable = uint64(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(17 /* X3 */))) = uint8(_iTab)
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X1 */))) = _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _pItem.X11)
+ if ((int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X0) | int32(_priorJointype)) & i32(10)) != i32(0) {
+ _mPrereq = _mPrior
+ }
+ _priorJointype = (*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(36 /* X9 */))).X0
+ if ((*XTable)(_pItem.X4).X16) == 0 {
goto _5
}
-
- _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pRight)
+ _3_p = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + 68*uintptr(i32(1))))
+_6:
+ if uintptr(unsafe.Pointer(_3_p)) >= uintptr(unsafe.Pointer(_pEnd)) {
+ goto _9
+ }
+ if (_1_mUnusable != 0) || (int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_p))+uintptr(36 /* X9 */))).X0)&i32(10)) != 0 {
+ {
+ p := &_1_mUnusable
+ *p = (*p) | _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _3_p.X11)
+ sink17 = *p
+ }
+ }
+ *(*uintptr)(unsafe.Pointer(&_3_p)) += uintptr(68)
goto _6
-
+_9:
+ _rc = _whereLoopAddVirtual(tls, _pBuilder, _mPrereq, _1_mUnusable)
+ goto _12
_5:
- _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pLeft)
- if _pColl != nil {
- goto _7
+ _rc = _whereLoopAddBtree(tls, _pBuilder, _mPrereq)
+_12:
+ if _rc == i32(0) {
+ _rc = _whereLoopAddOr(tls, _pBuilder, _mPrereq, _1_mUnusable)
}
-
- _pColl = _sqlite3ExprCollSeq(tls, _pParse, _pRight)
-_7:
-_6:
+ {
+ p := &_mPrior
+ *p = (*p) | (_pNew.X1)
+ sink17 = *p
+ }
+ if _rc != 0 || ((_db.X17) != 0) {
+ goto _3
+ }
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _iTab += 1; return &_pItem }())) += uintptr(68)
+ goto _0
_3:
- r0 = _pColl
- return
-}
-
-var _sqlite3BinaryCompareCollSeqØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BinaryCompareCollSeqØ00__func__Ø000[0], str(106236), 28)
-}
-
-func _binaryCompareP5(tls *crt.TLS, _pExpr1 *XExpr, _pExpr2 *XExpr, _jumpIfNull int32) (r0 uint8) { // sqlite3.c:91160:1
- var _aff uint8 // sqlite3.c:91161:6
- _ = _aff
- _aff = uint8(_sqlite3ExprAffinity(tls, _pExpr2))
- _aff = uint8(int32(uint8(_sqlite3CompareAffinity(tls, _pExpr1, int8(_aff)))) | int32(uint8(_jumpIfNull)))
- return _aff
+ _whereLoopClear(tls, _db, _pNew)
+ return _rc
}
-func _exprCodeBetween(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _xJump func(*crt.TLS, *XParse, *XExpr, int32, int32), _jumpIfNull int32) { // sqlite3.c:95204:1
- var _exprAnd XExpr // sqlite3.c:95211:7
- _ = _exprAnd
- var _compLeft XExpr // sqlite3.c:95212:8
- _ = _compLeft
- var _compRight XExpr // sqlite3.c:95213:8
- _ = _compRight
- var _exprX XExpr // sqlite3.c:95214:8
- _ = _exprX
- var _regFree1 int32 // sqlite3.c:95215:7
- _ = _regFree1
- _regFree1 = i32(0)
- crt.Xmemset(tls, (unsafe.Pointer)(&_compLeft), i32(0), u32(48))
- crt.Xmemset(tls, (unsafe.Pointer)(&_compRight), i32(0), u32(48))
- crt.Xmemset(tls, (unsafe.Pointer)(&_exprAnd), i32(0), u32(48))
+// Add all WhereLoop objects for a table of the join identified by
+// pBuilder->pNew->iTab. That table is guaranteed to be a virtual table.
+//
+// If there are no LEFT or CROSS JOIN joins in the query, both mPrereq and
+// mUnusable are set to 0. Otherwise, mPrereq is a mask of all FROM clause
+// entries that occur before the virtual table in the FROM clause and are
+// separated from it by at least one LEFT or CROSS JOIN. Similarly, the
+// mUnusable mask contains all FROM clause entries that occur after the
+// virtual table and are separated from it by at least one LEFT or
+// CROSS JOIN.
+//
+// For example, if the query were:
+//
+// ... FROM t1, t2 LEFT JOIN t3, t4, vt CROSS JOIN t5, t6;
+//
+// then mPrereq corresponds to (t1, t2) and mUnusable to (t5, t6).
+//
+// All the tables in mPrereq must be scanned before the current virtual
+// table. So any terms for which all prerequisites are satisfied by
+// mPrereq may be specified as "usable" in all calls to xBestIndex.
+// Conversely, all tables in mUnusable must be scanned after the current
+// virtual table, so any terms for which the prerequisites overlap with
+// mUnusable should always be configured as "not-usable" for xBestIndex.
+func _whereLoopAddVirtual(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64, _mUnusable uint64) (r0 int32) {
+ var _rc, _nConstraint, _bIn, _2_seenZero, _2_seenZeroNoIN, _5_i int32
+ var _mBest, _2_mPrev, _2_mBestNoIn, _5_mNext, _6_mThis uint64
+ var _mNoOmit uint16
+ var _pSrc *TSrcList_item
+ var _pParse *XParse
+ var _pWInfo *XWhereInfo
+ var _p *Xsqlite3_index_info
+ var _pNew *XWhereLoop
+ var _pWC *XWhereClause
+ _rc = i32(0)
func() {
- if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95222), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprCodeBetweenØ00__func__Ø000))), unsafe.Pointer(str(43888)))
+ if (_mPrereq & _mUnusable) != uint64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133550), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(104932)))
crt.X__builtin_abort(tls)
}
}()
- _exprX = *(*XExpr)(_pExpr.X4)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnd)) + uintptr(0 /* X0 */))) = uint8(i32(71))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnd)) + uintptr(12 /* X4 */))))) = &_compLeft
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnd)) + uintptr(16 /* X5 */))))) = &_compRight
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compLeft)) + uintptr(0 /* X0 */))) = uint8(i32(82))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compLeft)) + uintptr(12 /* X4 */))))) = &_exprX
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compLeft)) + uintptr(16 /* X5 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compRight)) + uintptr(0 /* X0 */))) = uint8(i32(80))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compRight)) + uintptr(12 /* X4 */))))) = &_exprX
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_compRight)) + uintptr(16 /* X5 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
- _exprToRegister(tls, &_exprX, _exprCodeVector(tls, _pParse, &_exprX, &_regFree1))
- if _xJump == nil {
- goto _2
+ _pWInfo = (*XWhereInfo)(_pBuilder.X0)
+ _pParse = (*XParse)(_pWInfo.X0)
+ _pWC = (*XWhereClause)(_pBuilder.X1)
+ _pNew = (*XWhereLoop)(_pBuilder.X3)
+ _pSrc = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pNew.X3)))
+ func() {
+ if ((*XTable)(_pSrc.X4).X16) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133556), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(104957)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _p = _allocateIndexInfo(tls, _pParse, _pWC, _mUnusable, _pSrc, (*XExprList)(_pBuilder.X2), &_mNoOmit)
+ if _p == nil {
+ return _sqlite3NomemError(tls, i32(133559))
}
-
- _xJump(tls, _pParse, &_exprAnd, _dest, _jumpIfNull)
- goto _3
-
-_2:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprX)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(1))
- sink5 = *p
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(1024))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
+ _nConstraint = _p.X0
+ if _whereLoopResize(tls, (*Xsqlite3)(_pParse.X0), _pNew, _nConstraint) != 0 {
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_p))
+ return _sqlite3NomemError(tls, i32(133567))
}
- _sqlite3ExprCodeTarget(tls, _pParse, &_exprAnd, _dest)
-_3:
- _sqlite3ReleaseTempReg(tls, _pParse, _regFree1)
-}
-
-var _exprCodeBetweenØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_exprCodeBetweenØ00__func__Ø000[0], str(106264), 16)
-}
-
-func _exprToRegister(tls *crt.TLS, _p *XExpr, _iReg int32) { // sqlite3.c:94285:1
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(38 /* X12 */))) = _p.X0
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(i32(157))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))) = _iReg
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
- *p = (*p) & uint32(i32(-4097))
- sink5 = *p
+ _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, u64(18446744073709551615), uint16(i32(0)), _p, _mNoOmit, &_bIn)
+ if _rc != i32(0) || store17(&_mBest, (_pNew.X0)&(^_mPrereq)) == uint64(i32(0)) {
+ goto _7
}
-}
-
-func _exprCodeVector(tls *crt.TLS, _pParse *XParse, _p *XExpr, _piFreeable *int32) (r0 int32) { // sqlite3.c:94302:1
- var _iResult int32 // sqlite3.c:94303:7
- _ = _iResult
- var _nResult int32 // sqlite3.c:94304:7
- _ = _nResult
- var _4_i int32 // sqlite3.c:94316:11
- _ = _4_i
- _nResult = _sqlite3ExprVectorSize(tls, _p)
- if _nResult != i32(1) {
- goto _0
+ _2_seenZero = i32(0)
+ _2_seenZeroNoIN = i32(0)
+ _2_mPrev = u64(0)
+ _2_mBestNoIn = u64(0)
+ if _bIn == 0 {
+ goto _8
}
-
- _iResult = _sqlite3ExprCodeTemp(tls, _pParse, _p, _piFreeable)
- goto _1
-
-_0:
- *_piFreeable = i32(0)
- if int32(_p.X0) != i32(119) {
- goto _2
+ _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, u64(18446744073709551615), uint16(i32(1)), _p, _mNoOmit, &_bIn)
+ func() {
+ if _bIn != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133591), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(104979)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _2_mBestNoIn = (_pNew.X0) & (^_mPrereq)
+ if _2_mBestNoIn == uint64(i32(0)) {
+ _2_seenZero = i32(1)
+ _2_seenZeroNoIN = i32(1)
}
-
- _iResult = _sqlite3CodeSubselect(tls, _pParse, _p, i32(0), i32(0))
- goto _3
-
-_2:
- _iResult = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nResult
- sink1 = *p
+_8:
+_12:
+ if _rc != i32(0) {
+ goto _13
}
- _4_i = i32(0)
-_4:
- if _4_i >= _nResult {
- goto _7
+ _5_mNext = u64(18446744073709551615)
+ func() {
+ if _5_mNext <= uint64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133604), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(104986)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _5_i = i32(0)
+_16:
+ if _5_i >= _nConstraint {
+ goto _19
+ }
+ _6_mThis = ((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr(_p.X1)+12*uintptr(_5_i))).X3))).X11) & (^_mPrereq)
+ if (_6_mThis > _2_mPrev) && (_6_mThis < _5_mNext) {
+ _5_mNext = _6_mThis
+ }
+ _5_i += 1
+ goto _16
+_19:
+ _2_mPrev = _5_mNext
+ if _5_mNext == u64(18446744073709551615) {
+ goto _13
+ }
+ if (_5_mNext == _mBest) || (_5_mNext == _2_mBestNoIn) {
+ goto _12
+ }
+ _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, _5_mNext|_mPrereq, uint16(i32(0)), _p, _mNoOmit, &_bIn)
+ if (_pNew.X0) != _mPrereq {
+ goto _25
+ }
+ _2_seenZero = i32(1)
+ if _bIn == i32(0) {
+ _2_seenZeroNoIN = i32(1)
+ }
+_25:
+ goto _12
+_13:
+ if _rc != i32(0) || _2_seenZero != i32(0) {
+ goto _28
+ }
+ _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, _mPrereq, uint16(i32(0)), _p, _mNoOmit, &_bIn)
+ if _bIn == i32(0) {
+ _2_seenZeroNoIN = i32(1)
+ }
+_28:
+ if (_rc == i32(0)) && (_2_seenZeroNoIN == i32(0)) {
+ _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, _mPrereq, uint16(i32(1)), _p, _mNoOmit, &_bIn)
}
-
- _sqlite3ExprCodeFactorable(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */)))))+20*uintptr(_4_i))).X0), _4_i+_iResult)
- _4_i += 1
- goto _4
-
_7:
-_3:
-_1:
- r0 = _iResult
- return
-}
-
-func _sqlite3ExprCodeFactorable(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) { // sqlite3.c:95090:1
- if (_pParse.X11) == 0 || _sqlite3ExprIsConstant(tls, _pExpr) == 0 {
- goto _1
+ if (_p.X7) != 0 {
+ Xsqlite3_free(tls, (unsafe.Pointer)(_p.X6))
}
+ _sqlite3DbFreeNN(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_p))
+ return _rc
+}
- _sqlite3ExprCodeAtInit(tls, _pParse, _pExpr, _target)
- goto _2
+var _whereLoopAddVirtualØ00__func__Ø000 [20]int8
-_1:
- _sqlite3ExprCode(tls, _pParse, _pExpr, _target)
-_2:
+func init() {
+ crt.Xstrncpy(nil, &_whereLoopAddVirtualØ00__func__Ø000[0], str(104994), 20)
}
-func _sqlite3ExprCodeIN(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _destIfFalse int32, _destIfNull int32) { // sqlite3.c:93686:1
- var _rRhsHasNull int32 // sqlite3.c:93692:7
- _ = _rRhsHasNull
- var _eType int32 // sqlite3.c:93693:7
- _ = _eType
- var _rLhs int32 // sqlite3.c:93694:7
- _ = _rLhs
- var _rLhsOrig int32 // sqlite3.c:93695:7
- _ = _rLhsOrig
- var _v *TVdbe // sqlite3.c:93696:8
- _ = _v
- var _aiMap *int32 // sqlite3.c:93697:7
- _ = _aiMap
- var _zAff *int8 // sqlite3.c:93698:8
- _ = _zAff
- var _nVector int32 // sqlite3.c:93699:7
- _ = _nVector
- var _iDummy int32 // sqlite3.c:93700:7
- _ = _iDummy
- var _pLeft *XExpr // sqlite3.c:93701:8
- _ = _pLeft
- var _i int32 // sqlite3.c:93702:7
- _ = _i
- var _destStep2 int32 // sqlite3.c:93703:7
- _ = _destStep2
- var _destStep6 int32 // sqlite3.c:93704:7
- _ = _destStep6
- var _addrTruthOp int32 // sqlite3.c:93705:7
- _ = _addrTruthOp
- var _destNotNull int32 // sqlite3.c:93706:7
- _ = _destNotNull
- var _addrTop int32 // sqlite3.c:93707:7
- _ = _addrTop
- var _1_j int32 // sqlite3.c:93736:9
- _ = _1_j
- var _1_cnt int32 // sqlite3.c:93736:12
- _ = _1_cnt
- var _6_pList *XExprList // sqlite3.c:93772:14
- _ = _6_pList
- var _6_pColl *XCollSeq // sqlite3.c:93773:13
- _ = _6_pColl
- var _6_labelOk int32 // sqlite3.c:93774:9
- _ = _6_labelOk
- var _6_r2 int32 // sqlite3.c:93775:9
- _ = _6_r2
- var _6_regToFree int32 // sqlite3.c:93775:13
- _ = _6_regToFree
- var _6_regCkNull int32 // sqlite3.c:93776:9
- _ = _6_regCkNull
- var _6_ii int32 // sqlite3.c:93777:9
- _ = _6_ii
- var _15_p *XExpr // sqlite3.c:93821:10
- _ = _15_p
- var _23_p *XExpr // sqlite3.c:93883:10
- _ = _23_p
- var _23_pColl *XCollSeq // sqlite3.c:93884:13
- _ = _23_pColl
- var _23_r3 int32 // sqlite3.c:93885:9
- _ = _23_r3
- _rRhsHasNull = i32(0)
- _aiMap = nil
- _zAff = nil
- _destStep6 = i32(0)
- _pLeft = (*XExpr)(_pExpr.X4)
- if _sqlite3ExprCheckIN(tls, _pParse, _pExpr) == 0 {
- goto _0
- }
- return
-
+// Allocate and populate an sqlite3_index_info structure. It is the
+// responsibility of the caller to eventually release the structure
+// by passing the pointer returned by this function to sqlite3_free().
+func _allocateIndexInfo(tls *crt.TLS, _pParse *XParse, _pWC *XWhereClause, _mUnusable uint64, _pSrc *TSrcList_item, _pOrderBy *XExprList, _pmNoOmit *uint16) (r0 *Xsqlite3_index_info) {
+ var _i, _j, _nTerm, _nOrderBy, _2_n int32
+ var _mNoOmit uint16
+ var _6_op uint8
+ var _3_pExpr, _9_pExpr *XExpr
+ var _pIdxInfo *Xsqlite3_index_info
+ var _pIdxCons *Tsqlite3_index_constraint
+ var _pIdxOrderBy, _pUsage *Tsqlite3_index_orderby
+ var _pTerm *XWhereTerm
+ _mNoOmit = u16(0)
+ *func() **XWhereTerm { _i = store1(&_nTerm, i32(0)); return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
_0:
- _zAff = _exprINAffinity(tls, _pParse, _pExpr)
- _nVector = _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4))
- _aiMap = (*int32)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64((uint32(_nVector)*u32(5))+uint32(i32(1)))))
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ if _i >= (_pWC.X3) {
+ goto _3
+ }
+ if (_pTerm.X8) != (_pSrc.X11) {
+ goto _1
+ }
+ if ((_pTerm.X11) & _mUnusable) != 0 {
goto _1
}
-
- goto _sqlite3ExprCodeIN_oom_error
-
-_1:
- _v = (*TVdbe)(_pParse.X2)
func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93723), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(43120)))
+ if ((int32(_pTerm.X4) & i32(-2049)) & ((int32(_pTerm.X4) & i32(-2049)) - i32(1))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131246), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(105014)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeNoopComment(tls, _v, str(106280))
- _eType = _sqlite3FindInIndex(tls, _pParse, _pExpr, uint32(i32(3)), func() *int32 {
- if _destIfFalse == _destIfNull {
- return nil
- }
- return &_rRhsHasNull
- }(), _aiMap)
+ if (int32(_pTerm.X4) & i32(-2433)) == i32(0) {
+ goto _1
+ }
+ if (int32(_pTerm.X3) & i32(0)) != 0 {
+ goto _1
+ }
func() {
- if (_pParse.X16) == 0 && _nVector != i32(1) && _eType != i32(2) && _eType != i32(3) && _eType != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93729), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(106296)))
+ if (*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) < i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131253), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(105057)))
crt.X__builtin_abort(tls)
}
}()
+ _nTerm += 1
+_1:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i += 1; return &_pTerm }())) += uintptr(48)
+ goto _0
+_3:
+ _nOrderBy = i32(0)
+ if _pOrderBy == nil {
+ goto _12
+ }
+ _2_n = _pOrderBy.X0
_i = i32(0)
-_12:
- if _i >= _nVector {
- goto _15
+_13:
+ if _i >= _2_n {
+ goto _16
}
-
- _1_cnt = store1(&_1_j, i32(0))
+ _3_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ if (int32(_3_pExpr.X0) != i32(152)) || ((_3_pExpr.X8) != (_pSrc.X11)) {
+ goto _16
+ }
+ _i += 1
+ goto _13
_16:
- if _1_j >= _nVector {
- goto _19
+ if _i == _2_n {
+ _nOrderBy = _2_n
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_1_j)))) != _i {
- goto _20
+_12:
+ _pIdxInfo = (*Xsqlite3_index_info)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64((u32(64)+(u32(20)*uint32(_nTerm)))+(u32(8)*uint32(_nOrderBy)))))
+ if _pIdxInfo == nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(59419))
+ return nil
+ }
+ _pIdxCons = (*Tsqlite3_index_constraint)(unsafe.Pointer((*Xsqlite3_index_info)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + 64*uintptr(i32(1))))))
+ _pIdxOrderBy = (*Tsqlite3_index_orderby)(unsafe.Pointer((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons)) + 12*uintptr(_nTerm)))))
+ _pUsage = (*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxOrderBy)) + 8*uintptr(_nOrderBy)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(0 /* X0 */))) = _nTerm
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(8 /* X2 */))) = _nOrderBy
+ *(**Tsqlite3_index_constraint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(4 /* X1 */))))) = _pIdxCons
+ *(**Tsqlite3_index_orderby)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(12 /* X3 */))))) = _pIdxOrderBy
+ *(**Tsqlite3_index_orderby)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(16 /* X4 */))))) = _pUsage
+ *func() **XWhereTerm { _i = store1(&_j, i32(0)); return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
+_21:
+ if _i >= (_pWC.X3) {
+ goto _24
+ }
+ if (_pTerm.X8) != (_pSrc.X11) {
+ goto _22
+ }
+ if ((_pTerm.X11) & _mUnusable) != 0 {
+ goto _22
}
-
- _1_cnt += 1
-_20:
- _1_j += 1
- goto _16
-
-_19:
func() {
- if _1_cnt != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93738), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(106408)))
+ if ((int32(_pTerm.X4) & i32(-2049)) & ((int32(_pTerm.X4) & i32(-2049)) - i32(1))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131302), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(105014)))
crt.X__builtin_abort(tls)
}
}()
- _i += 1
- goto _12
-
-_15:
- _sqlite3ExprCachePush(tls, _pParse)
- _rLhsOrig = _exprCodeVector(tls, _pParse, _pLeft, &_iDummy)
- _i = i32(0)
-_23:
- if _i >= _nVector || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_i)))) != _i {
- goto _27
- }
-
- _i += 1
- goto _23
-
-_27:
- if _i != _nVector {
- goto _28
- }
-
- _rLhs = _rLhsOrig
- goto _29
-
-_28:
- _rLhs = _sqlite3GetTempRange(tls, _pParse, _nVector)
- _i = i32(0)
-_30:
- if _i >= _nVector {
- goto _33
+ if (int32(_pTerm.X4) & i32(-2433)) == i32(0) {
+ goto _22
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(64), _rLhsOrig+_i, _rLhs+(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_i)))), i32(0))
- _i += 1
- goto _30
-
-_33:
-_29:
- if _eType != i32(5) {
- goto _34
+ if (int32(_pTerm.X3) & i32(0)) != 0 {
+ goto _22
}
-
- _6_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
- _6_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4))
- _6_labelOk = _sqlite3VdbeMakeLabel(tls, _v)
- _6_regCkNull = i32(0)
func() {
- if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93778), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(43888)))
+ if (*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) < i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131309), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(105057)))
crt.X__builtin_abort(tls)
}
}()
- if _destIfNull == _destIfFalse {
- goto _37
- }
-
- _6_regCkNull = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp3(tls, _v, i32(84), _rLhs, _rLhs, _6_regCkNull)
-_37:
- _6_ii = i32(0)
-_38:
- if _6_ii >= (_6_pList.X0) {
- goto _41
- }
-
- _6_r2 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_6_ii))).X0), &_6_regToFree)
- if _6_regCkNull == 0 || _sqlite3ExprCanBeNull(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_6_ii))).X0)) == 0 {
- goto _43
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(0 /* X0 */))) = *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(8 /* X3 */))) = _i
+ _6_op = uint8(int32(uint8(_pTerm.X4)) & i32(8191))
+ if int32(_6_op) == i32(1) {
+ _6_op = uint8(i32(2))
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(84), _6_regCkNull, _6_r2, _6_regCkNull)
-_43:
- if _6_ii >= ((_6_pList.X0)-i32(1)) && _destIfNull == _destIfFalse {
- goto _45
+ if int32(_6_op) == i32(64) {
+ _6_op = _pTerm.X6
}
-
- _sqlite3VdbeAddOp4(tls, _v, i32(78), _rLhs, _6_labelOk, _6_r2, (*int8)((unsafe.Pointer)(_6_pColl)), i32(-3))
- _sqlite3VdbeChangeP5(tls, _v, uint16(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(i32(0))))))
- goto _46
-
-_45:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(4 /* X1 */))) = _6_op
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
+ i32(0)
func() {
- if _destIfNull != _destIfFalse {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93795), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeINØ00__func__Ø000))), unsafe.Pointer(str(106416)))
+ if (int32(_pTerm.X4) & i32(127)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131327), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(105083)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp4(tls, _v, i32(77), _rLhs, _destIfFalse, _6_r2, (*int8)((unsafe.Pointer)(_6_pColl)), i32(-3))
- _sqlite3VdbeChangeP5(tls, _v, uint16(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(i32(0)))))|i32(16)))
-_46:
- _sqlite3ReleaseTempReg(tls, _pParse, _6_regToFree)
- _6_ii += 1
- goto _38
-
-_41:
- if _6_regCkNull == 0 {
- goto _49
+ if (int32(_6_op)&i32(60)) == 0 || _sqlite3ExprIsVector(tls, (*XExpr)((*XExpr)(_pTerm.X0).X5)) == 0 {
+ goto _38
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(75), _6_regCkNull, _destIfNull)
- _sqlite3VdbeGoto(tls, _v, _destIfFalse)
-_49:
- _sqlite3VdbeResolveLabel(tls, _v, _6_labelOk)
- _sqlite3ReleaseTempReg(tls, _pParse, _6_regCkNull)
- goto _sqlite3ExprCodeIN_finished
-
-_34:
- if _destIfNull != _destIfFalse {
- goto _50
+ if _i < i32(16) {
+ {
+ p := &_mNoOmit
+ *p = uint16(int32(*p) | (i32(1) << uint(_i)))
+ sink14 = *p
+ }
}
-
- _destStep2 = _destIfFalse
- goto _51
-
-_50:
- _destStep2 = store1(&_destStep6, _sqlite3VdbeMakeLabel(tls, _v))
-_51:
- _i = i32(0)
-_52:
- if _i >= _nVector {
- goto _55
+ if int32(_6_op) == i32(16) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(8))
}
-
- _15_p = _sqlite3VectorFieldSubexpr(tls, (*XExpr)(_pExpr.X4), _i)
- if _sqlite3ExprCanBeNull(tls, _15_p) == 0 {
- goto _56
+ if int32(_6_op) == i32(4) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(32))
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(75), _rLhs+_i, _destStep2)
-_56:
+_38:
+ _j += 1
+_22:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i += 1; return &_pTerm }())) += uintptr(48)
+ goto _21
+_24:
+ _i = i32(0)
+_42:
+ if _i >= _nOrderBy {
+ goto _45
+ }
+ _9_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxOrderBy))+8*uintptr(_i))))) + uintptr(0 /* X0 */))) = int32(_9_pExpr.X9)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxOrderBy))+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X3
_i += 1
- goto _52
+ goto _42
+_45:
+ *_pmNoOmit = _mNoOmit
+ return _pIdxInfo
+}
-_55:
- if _eType != i32(1) {
- goto _57
- }
+var _allocateIndexInfoØ00__func__Ø000 [18]int8
- _sqlite3VdbeAddOp3(tls, _v, i32(31), _pExpr.X8, _destIfFalse, _rLhs)
- _addrTruthOp = _sqlite3VdbeAddOp0(tls, _v, i32(13))
- goto _58
+func init() {
+ crt.Xstrncpy(nil, &_allocateIndexInfoØ00__func__Ø000[0], str(105149), 18)
+}
-_57:
- _sqlite3VdbeAddOp4(tls, _v, i32(100), _rLhs, _nVector, i32(0), _zAff, _nVector)
- if _destIfFalse != _destIfNull {
- goto _59
+// Increase the memory allocation for pLoop->aLTerm[] to be at least n.
+func _whereLoopResize(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop, _n int32) (r0 int32) {
+ var _paNew **XWhereTerm
+ if int32(_p.X12) >= _n {
+ return i32(0)
}
-
- _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _pExpr.X8, _destIfFalse, _rLhs, _nVector)
- goto _sqlite3ExprCodeIN_finished
-
-_59:
- _addrTruthOp = _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _pExpr.X8, i32(0), _rLhs, _nVector)
-_58:
- if _rRhsHasNull == 0 || _nVector != i32(1) {
- goto _61
+ _n = (_n + i32(7)) & i32(-8)
+ _paNew = (**XWhereTerm)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(4)*uint32(_n))))
+ if _paNew == nil {
+ return _sqlite3NomemError(tls, i32(132201))
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(76), _rRhsHasNull, _destIfFalse)
-_61:
- if _destIfFalse != _destIfNull {
- goto _62
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_paNew), (unsafe.Pointer)(_p.X13), u32(4)*uint32(_p.X12))
+ if (**XWhereTerm)(unsafe.Pointer(_p.X13)) != (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(60 /* X15 */))))) {
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p.X13))
}
+ *(***XWhereTerm)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X13 */))))) = _paNew
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = uint16(_n)
+ return i32(0)
+}
- _sqlite3VdbeGoto(tls, _v, _destIfFalse)
-_62:
- if _destStep6 == 0 {
- goto _63
+// Argument pIdxInfo is already populated with all constraints that may
+// be used by the virtual table identified by pBuilder->pNew->iTab. This
+// function marks a subset of those constraints usable, invokes the
+// xBestIndex method and adds the returned plan to pBuilder.
+//
+// A constraint is marked usable if:
+//
+// * Argument mUsable indicates that its prerequisites are available, and
+//
+// * It is not one of the operators specified in the mExclude mask passed
+// as the fourth argument (which in practice is either WO_IN or 0).
+//
+// Argument mPrereq is a mask of tables that must be scanned before the
+// virtual table in question. These are added to the plans prerequisites
+// before it is added to pBuilder.
+//
+// Output parameter *pbIn is set to true if the plan added to pBuilder
+// uses one or more WO_IN terms, or false otherwise.
+func _whereLoopAddVirtualOne(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64, _mUsable uint64, _mExclude uint16, _pIdxInfo *Xsqlite3_index_info, _mNoOmit uint16, _pbIn *int32) (r0 int32) {
+ var _i, _mxTerm, _rc, _nConstraint, _3_iTerm, _4_j int32
+ var _pSrc *TSrcList_item
+ var _pParse *XParse
+ var _pIdxCons *Tsqlite3_index_constraint
+ var _pUsage *Tsqlite3_index_orderby
+ var _pNew *XWhereLoop
+ var _1_pTerm, _4_pTerm *XWhereTerm
+ var _pWC *XWhereClause
+ _pWC = (*XWhereClause)(_pBuilder.X1)
+ _pUsage = (*Tsqlite3_index_orderby)(_pIdxInfo.X4)
+ _rc = i32(0)
+ _pNew = (*XWhereLoop)(_pBuilder.X3)
+ _pParse = (*XParse)((*XWhereInfo)(_pBuilder.X0).X0)
+ _pSrc = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((*XWhereInfo)(_pBuilder.X0).X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pNew.X3)))
+ _nConstraint = _pIdxInfo.X0
+ func() {
+ if (_mUsable & _mPrereq) != _mPrereq {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133399), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(105167)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *_pbIn = i32(0)
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _mPrereq
+ _pIdxCons = *(**Tsqlite3_index_constraint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(4 /* X1 */)))))
+ _i = i32(0)
+_2:
+ if _i >= _nConstraint {
+ goto _5
}
-
- _sqlite3VdbeResolveLabel(tls, _v, _destStep6)
-_63:
- _addrTop = _sqlite3VdbeAddOp2(tls, _v, i32(37), _pExpr.X8, _destIfFalse)
- if _nVector <= i32(1) {
- goto _64
+ _1_pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_pIdxCons.X3)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons)) + uintptr(5 /* X2 */))) = uint8(i32(0))
+ if (((_1_pTerm.X11) & _mUsable) == (_1_pTerm.X11)) && ((int32(_1_pTerm.X4) & int32(_mExclude)) == i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons)) + uintptr(5 /* X2 */))) = uint8(i32(1))
}
-
- _destNotNull = _sqlite3VdbeMakeLabel(tls, _v)
- goto _65
-
-_64:
- _destNotNull = _destIfFalse
-_65:
+ *(*uintptr)(unsafe.Pointer(func() **Tsqlite3_index_constraint { _i += 1; return &_pIdxCons }())) += uintptr(12)
+ goto _2
+_5:
+ crt.Xmemset(tls, (unsafe.Pointer)(_pUsage), i32(0), u32(8)*uint32(_nConstraint))
+ func() {
+ if (_pIdxInfo.X7) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133418), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(105196)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(24 /* X6 */))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(20 /* X5 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(32 /* X8 */))) = i32(0)
+ *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = float64(5e+98)
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(44 /* X10 */))) = int64(i32(25))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(52 /* X11 */))) = i32(0)
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(56 /* X12 */))) = uint64(int64(_pSrc.X14))
+ _rc = _vtabBestIndex(tls, _pParse, (*XTable)(_pSrc.X4), _pIdxInfo)
+ if _rc != 0 {
+ return _rc
+ }
+ _mxTerm = i32(-1)
+ func() {
+ if int32(_pNew.X12) < _nConstraint {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133432), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(105226)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
_i = i32(0)
-_66:
- if _i >= _nVector {
- goto _69
+_13:
+ if _i >= _nConstraint {
+ goto _16
}
-
- _23_r3 = _sqlite3GetTempReg(tls, _pParse)
- _23_p = _sqlite3VectorFieldSubexpr(tls, _pLeft, _i)
- _23_pColl = _sqlite3ExprCollSeq(tls, _pParse, _23_p)
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _pExpr.X8, _i, _23_r3)
- _sqlite3VdbeAddOp4(tls, _v, i32(77), _rLhs+_i, _destNotNull, _23_r3, (*int8)((unsafe.Pointer)(_23_pColl)), i32(-3))
- _sqlite3ReleaseTempReg(tls, _pParse, _23_r3)
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_i))) = nil
_i += 1
- goto _66
-
-_69:
- _sqlite3VdbeAddOp2(tls, _v, i32(13), i32(0), _destIfNull)
- if _nVector <= i32(1) {
- goto _70
+ goto _13
+_16:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */))) = uint16(i32(0))
+ _pIdxCons = *(**Tsqlite3_index_constraint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(4 /* X1 */)))))
+ _i = i32(0)
+_17:
+ if _i >= _nConstraint {
+ goto _20
}
-
- _sqlite3VdbeResolveLabel(tls, _v, _destNotNull)
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _pExpr.X8, _addrTop+i32(1))
- _sqlite3VdbeAddOp2(tls, _v, i32(13), i32(0), _destIfFalse)
-_70:
- _sqlite3VdbeJumpHere(tls, _v, _addrTruthOp)
-_sqlite3ExprCodeIN_finished:
- if _rLhs == _rLhsOrig {
- goto _71
+ if store1(&_3_iTerm, ((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pUsage))+8*uintptr(_i))).X0)-i32(1)) < i32(0) {
+ goto _21
+ }
+ _4_j = _pIdxCons.X3
+ if ((((_3_iTerm >= _nConstraint) || (_4_j < i32(0))) || (_4_j >= (_pWC.X3))) || ((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_3_iTerm)))) != nil)) || (int32(_pIdxCons.X2) == i32(0)) {
+ _rc = i32(1)
+ _sqlite3ErrorMsg(tls, _pParse, str(105252), unsafe.Pointer((*XTable)(_pSrc.X4).X0))
+ return _rc
+ }
+ _4_pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_4_j)))
+ {
+ p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */)))
+ *p = (*p) | (_4_pTerm.X11)
+ sink17 = *p
+ }
+ func() {
+ if _3_iTerm >= int32(_pNew.X12) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133456), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(105278)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_3_iTerm))) = _4_pTerm
+ if _3_iTerm > _mxTerm {
+ _mxTerm = _3_iTerm
+ }
+ if (_3_iTerm < i32(16)) && (((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pUsage)) + 8*uintptr(_i))).X1) != 0) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */)))
+ *p = uint16(int32(*p) | (i32(1) << uint(_3_iTerm)))
+ sink14 = *p
+ }
+ }
+ if (int32(_4_pTerm.X4) & i32(1)) != i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(32 /* X8 */))) = i32(0)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(52 /* X11 */)))
+ *p = (*p) & i32(-2)
+ sink1 = *p
+ }
+ *_pbIn = i32(1)
+ func() {
+ if (int32(_mExclude) & i32(1)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133470), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(105297)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ }
+_21:
+ *(*uintptr)(unsafe.Pointer(func() **Tsqlite3_index_constraint { _i += 1; return &_pIdxCons }())) += uintptr(12)
+ goto _17
+_20:
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */)))
+ *p = uint16(int32(*p) & (^int32(_mNoOmit)))
+ sink14 = *p
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(_mxTerm + i32(1))
+ func() {
+ if int32(_pNew.X10) > int32(_pNew.X12) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133477), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(105319)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _pIdxInfo.X5
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(_pIdxInfo.X7)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(28 /* X7 */))) = i32(0)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))) = _pIdxInfo.X6
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(5 /* X2 */))) = int8(func() int32 {
+ if (_pIdxInfo.X8) != 0 {
+ return (_pIdxInfo.X2)
+ }
+ return i32(0)
+ }())
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstFromDouble(tls, _pIdxInfo.X9)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _sqlite3LogEst(tls, uint64(_pIdxInfo.X10))
+ if ((_pIdxInfo.X11) & i32(1)) != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(4096))
+ sink5 = *p
+ }
+ goto _40
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) & uint32(i32(-4097))
+ sink5 = *p
+ }
+_40:
+ _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
+ if ((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X1) != 0 {
+ Xsqlite3_free(tls, (unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X4))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
}
+ return _rc
+}
- _sqlite3ReleaseTempReg(tls, _pParse, _rLhs)
-_71:
- _sqlite3ExprCachePop(tls, _pParse)
- _sqlite3VdbeComment(tls, _v, str(106440))
-_sqlite3ExprCodeIN_oom_error:
- _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_aiMap))
- _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_zAff))
+var _whereLoopAddVirtualOneØ00__func__Ø000 [23]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_whereLoopAddVirtualOneØ00__func__Ø000[0], str(105346), 23)
}
-func _sqlite3ExprCheckIN(tls *crt.TLS, _pParse *XParse, _pIn *XExpr) (r0 int32) { // sqlite3.c:93645:1
- var _nVector int32 // sqlite3.c:93646:7
- _ = _nVector
- _nVector = _sqlite3ExprVectorSize(tls, (*XExpr)(_pIn.X4))
- if ((_pIn.X2) & uint32(i32(2048))) == 0 {
+// The table object reference passed as the second argument to this function
+// must represent a virtual table. This function invokes the xBestIndex()
+// method of the virtual table with the sqlite3_index_info object that
+// comes in as the 3rd argument to this function.
+//
+// If an error occurs, pParse is populated with an error message and a
+// non-zero value is returned. Otherwise, 0 is returned and the output
+// part of the sqlite3_index_info structure is left populated.
+//
+// Whether or not an error is returned, it is the responsibility of the
+// caller to eventually free p->idxStr if p->needToFreeIdxStr indicates
+// that this is required.
+func _vtabBestIndex(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _p *Xsqlite3_index_info) (r0 int32) {
+ var _rc int32
+ var _pVtab *Xsqlite3_vtab
+ _pVtab = (*Xsqlite3_vtab)(_sqlite3GetVTable(tls, (*Xsqlite3)(_pParse.X0), _pTab).X2)
+ _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, *Xsqlite3_index_info) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32
+ }{((*Xsqlite3_module)(_pVtab.X0).X3)})))(tls, _pVtab, _p)
+ if _rc == i32(0) {
goto _0
}
-
- if _nVector == ((*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(20 /* X6 */)))))).X0).X0) {
- goto _1
+ if _rc == i32(7) {
+ _sqlite3OomFault(tls, (*Xsqlite3)(_pParse.X0))
+ goto _2
}
-
- _sqlite3SubselectError(tls, _pParse, (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(20 /* X6 */)))))).X0).X0, _nVector)
- return i32(1)
-
-_1:
- goto _2
-
-_0:
- if _nVector == i32(1) {
- goto _3
+ if (_pVtab.X2) == nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(24576), unsafe.Pointer(_sqlite3ErrStr(tls, _rc)))
+ goto _4
}
-
- _sqlite3VectorErrorMsg(tls, _pParse, (*XExpr)(_pIn.X4))
- return i32(1)
-
-_3:
+ _sqlite3ErrorMsg(tls, _pParse, str(24576), unsafe.Pointer(_pVtab.X2))
+_4:
_2:
- r0 = i32(0)
- return
+_0:
+ Xsqlite3_free(tls, (unsafe.Pointer)(_pVtab.X2))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVtab)) + uintptr(8 /* X2 */))) = nil
+ return _pParse.X16
}
-var _sqlite3ExprCodeINØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeINØ00__func__Ø000[0], str(106452), 18)
+// Convert a double into a LogEst
+// In other words, compute an approximation for 10*log2(x).
+func _sqlite3LogEstFromDouble(tls *crt.TLS, _x float64) (r0 int16) {
+ var _e int16
+ var _a uint64
+ i32(0)
+ if _x <= float64(i32(1)) {
+ return int16(i32(0))
+ }
+ if _x <= float64(i32(2000000000)) {
+ return _sqlite3LogEst(tls, uint64(_x))
+ }
+ crt.Xmemcpy(tls, (unsafe.Pointer)(&_a), (unsafe.Pointer)(&_x), uint32(i32(8)))
+ _e = int16((_a >> uint(i32(52))) - uint64(i32(1022)))
+ return int16(int32(_e) * i32(10))
}
-func _sqlite3FindInIndex(tls *crt.TLS, _pParse *XParse, _pX *XExpr, _inFlags uint32, _prRhsHasNull *int32, _aiMap *int32) (r0 int32) { // sqlite3.c:93090:1
- var _p *XSelect // sqlite3.c:93097:10
- _ = _p
- var _eType int32 // sqlite3.c:93098:7
- _ = _eType
- var _iTab int32 // sqlite3.c:93099:7
- _ = _iTab
- var _mustBeUnique int32 // sqlite3.c:93100:7
- _ = _mustBeUnique
- var _v *TVdbe // sqlite3.c:93101:8
- _ = _v
- var _1_i int32 // sqlite3.c:93112:9
- _ = _1_i
- var _1_pEList *XExprList // sqlite3.c:93113:14
- _ = _1_pEList
- var _4_db *Xsqlite3 // sqlite3.c:93126:13
- _ = _4_db
- var _4_pTab *XTable // sqlite3.c:93127:11
- _ = _4_pTab
- var _4_iDb int16 // sqlite3.c:93128:9
- _ = _4_iDb
- var _4_pEList *XExprList // sqlite3.c:93129:14
- _ = _4_pEList
- var _4_nExpr int32 // sqlite3.c:93130:9
- _ = _4_nExpr
- var _5_iAddr int32 // sqlite3.c:93145:11
- _ = _5_iAddr
- var _6_pIdx *XIndex // sqlite3.c:93153:13
- _ = _6_pIdx
- var _6_affinity_ok int32 // sqlite3.c:93154:11
- _ = _6_affinity_ok
- var _6_i int32 // sqlite3.c:93155:11
- _ = _6_i
- var _7_pLhs *XExpr // sqlite3.c:93162:14
- _ = _7_pLhs
- var _7_iCol int32 // sqlite3.c:93163:13
- _ = _7_iCol
- var _7_idxaff int8 // sqlite3.c:93164:14
- _ = _7_idxaff
- var _7_cmpaff int8 // sqlite3.c:93165:14
- _ = _7_cmpaff
- var _10_colUsed uint64 // sqlite3.c:93186:19
- _ = _10_colUsed
- var _10_mCol uint64 // sqlite3.c:93187:19
- _ = _10_mCol
- var _13_pLhs *XExpr // sqlite3.c:93204:18
- _ = _13_pLhs
- var _13_pRhs *XExpr // sqlite3.c:93205:18
- _ = _13_pRhs
- var _13_pReq *XCollSeq // sqlite3.c:93206:21
- _ = _13_pReq
- var _13_j int32 // sqlite3.c:93207:17
- _ = _13_j
- var _16_iAddr int32 // sqlite3.c:93228:17
- _ = _16_iAddr
- var _20_savedNQueryLoop uint32 // sqlite3.c:93277:9
- _ = _20_savedNQueryLoop
- var _20_rMayHaveNull int32 // sqlite3.c:93278:9
- _ = _20_rMayHaveNull
- var _25_i int32 // sqlite3.c:93295:9
- _ = _25_i
- var _25_n int32 // sqlite3.c:93295:12
- _ = _25_n
- _eType = i32(0)
- _iTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if int32(_pX.X0) != i32(74) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93103), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(106472)))
- crt.X__builtin_abort(tls)
- }
- }()
- _mustBeUnique = bool2int((_inFlags & uint32(i32(4))) != uint32(i32(0)))
- if _prRhsHasNull == nil || ((_pX.X2)&uint32(i32(2048))) == 0 {
- goto _3
+// Insert or replace a WhereLoop entry using the template supplied.
+//
+// An existing WhereLoop entry might be overwritten if the new template
+// is better and has fewer dependencies. Or the template will be ignored
+// and no insert will occur if an existing WhereLoop is faster and has
+// fewer dependencies than the template. Otherwise a new WhereLoop is
+// added based on the template.
+//
+// If pBuilder->pOrSet is not NULL then we care about only the
+// prerequisites and rRun and nOut costs of the N best loops. That
+// information is gathered in the pBuilder->pOrSet object. This special
+// processing mode is used only for OR clause processing.
+//
+// When accumulating multiple loops (when pBuilder->pOrSet is NULL) we
+// still might overwrite similar loops with the new template if the
+// new template is better. Loops may be overwritten if the following
+// conditions are met:
+//
+// (1) They have the same iTab.
+// (2) They have the same iSortIdx.
+// (3) The template has same or fewer dependencies than the current loop
+// (4) The template has the same or lower cost than the current loop
+func _whereLoopInsert(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _pTemplate *XWhereLoop) (r0 int32) {
+ var _rc int32
+ var _db *Xsqlite3
+ var _8_pIndex *XIndex
+ var _pWInfo *XWhereInfo
+ var _p, _6_pToDel *XWhereLoop
+ var _ppPrev, _6_ppTail **XWhereLoop
+ _pWInfo = (*XWhereInfo)(_pBuilder.X0)
+ _db = (*Xsqlite3)((*XParse)(_pWInfo.X0).X0)
+ if (*XWhereOrSet)(_pBuilder.X4) == nil {
+ goto _0
}
+ if (_pTemplate.X10) != 0 {
+ _whereOrInsert(tls, (*XWhereOrSet)(_pBuilder.X4), _pTemplate.X0, _pTemplate.X6, _pTemplate.X7)
+ }
+ return i32(0)
- _1_pEList = (*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */)))))).X0)
- _1_i = i32(0)
+_0:
+ _whereLoopAdjustCost(tls, (*XWhereLoop)(_pWInfo.X19), _pTemplate)
+ _ppPrev = _whereLoopFindLesser(tls, (**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(60 /* X19 */))))), _pTemplate)
+ if _ppPrev == nil {
+ return i32(0)
+ }
+ _p = *_ppPrev
+ if _p != nil {
+ goto _4
+ }
+ *_ppPrev = store67(&_p, (*XWhereLoop)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(72)))))
+ if _p == nil {
+ return _sqlite3NomemError(tls, i32(132499))
+ }
+ _whereLoopInit(tls, _p)
+ *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X14 */))))) = nil
+ goto _6
_4:
- if _1_i >= (_1_pEList.X0) {
- goto _7
+ _6_ppTail = (**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X14 */)))))
+_7:
+ if (*_6_ppTail) == nil {
+ goto _8
}
-
- if _sqlite3ExprCanBeNull(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_1_i))).X0)) == 0 {
+ _6_ppTail = _whereLoopFindLesser(tls, _6_ppTail, _pTemplate)
+ if _6_ppTail == nil {
goto _8
}
-
+ _6_pToDel = *_6_ppTail
+ if _6_pToDel == nil {
+ goto _8
+ }
+ *_6_ppTail = (*XWhereLoop)(_6_pToDel.X14)
+ _whereLoopDelete(tls, _db, _6_pToDel)
goto _7
-
_8:
- _1_i += 1
- goto _4
+_6:
+ _rc = _whereLoopXfer(tls, _db, _p, _pTemplate)
+ if ((_p.X9) & uint32(i32(1024))) != uint32(i32(0)) {
+ goto _11
+ }
+ _8_pIndex = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))))).X4)
+ if (_8_pIndex != nil) && ((_8_pIndex.X11) == i32(0)) {
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
+ }
+_11:
+ return _rc
+}
-_7:
- if _1_i != (_1_pEList.X0) {
+// Try to insert a new prerequisite/cost entry into the WhereOrSet pSet.
+//
+// The new entry might overwrite an existing entry, or it might be
+// appended, or it might be discarded. Do whatever is the right thing
+// so that pSet keeps the N_OR_COST best entries seen so far.
+func _whereOrInsert(tls *crt.TLS, _pSet *XWhereOrSet, _prereq uint64, _rRun int16, _nOut int16) (r0 int32) {
+ var _i uint16
+ var _p *XWhereOrCost
+ *func() **XWhereOrCost { _i = _pSet.X0; return &_p }() = (*XWhereOrCost)(unsafe.Pointer((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet)) + uintptr(4 /* X1 */)))))
+_0:
+ if int32(_i) <= i32(0) {
+ goto _3
+ }
+ if (int32(_rRun) <= int32(_p.X1)) && ((_prereq & (_p.X0)) == _prereq) {
+ goto _whereOrInsert_done
+ }
+ if (int32(_p.X1) <= int32(_rRun)) && (((_p.X0) & _prereq) == (_p.X0)) {
+ return i32(0)
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XWhereOrCost { _i -= 1; return &_p }())) += uintptr(12)
+ goto _0
+_3:
+ if int32(_pSet.X0) < i32(3) {
+ _p = (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(4 /* X1 */))))) + 12*uintptr(postInc14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(0 /* X0 */))), uint16(1)))))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X2 */))) = _nOut
goto _9
}
-
- _prRhsHasNull = nil
+ _p = (*XWhereOrCost)(unsafe.Pointer((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet)) + uintptr(4 /* X1 */)))))
+ _i = uint16(i32(1))
+_10:
+ if int32(_i) >= int32(_pSet.X0) {
+ goto _13
+ }
+ if int32(_p.X1) > int32((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(4 /* X1 */)))))+12*uintptr(_i))).X1) {
+ _p = (*XWhereOrCost)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(4 /* X1 */))))))) + uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer(uintptr(_i)))))*uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer(uintptr(12)))))))))))
+ }
+ _i += 1
+ goto _10
+_13:
+ if int32(_p.X1) <= int32(_rRun) {
+ return i32(0)
+ }
_9:
-_3:
- if (_pParse.X16) != i32(0) || store57(&_p, _isCandidateForInOpt(tls, _pX)) == nil {
- goto _11
+_whereOrInsert_done:
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _prereq
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = _rRun
+ if int32(_p.X2) > int32(_nOut) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X2 */))) = _nOut
}
+ return i32(1)
+}
- _4_db = (*Xsqlite3)(_pParse.X0)
- _4_pEList = (*XExprList)(_p.X0)
- _4_nExpr = _4_pEList.X0
- func() {
- if (*XExprList)(_p.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(47384)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0)+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(106488)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSrcList)(_p.X8) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93134), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(106516)))
- crt.X__builtin_abort(tls)
- }
- }()
- _4_pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
- _4_iDb = int16(_sqlite3SchemaToIndex(tls, _4_db, (*XSchema)(_4_pTab.X20)))
- _sqlite3CodeVerifySchema(tls, _pParse, int32(_4_iDb))
- _sqlite3TableLock(tls, _pParse, int32(_4_iDb), _4_pTab.X7, uint8(i32(0)), _4_pTab.X0)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93142), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(42900)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _4_nExpr != i32(1) || int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0).X9) >= i32(0) {
- goto _21
+// Try to adjust the cost of WhereLoop pTemplate upwards or downwards so
+// that:
+//
+// (1) pTemplate costs less than any other WhereLoops that are a proper
+// subset of pTemplate
+//
+// (2) pTemplate costs more than any other WhereLoops for which pTemplate
+// is a proper subset.
+//
+// To say "WhereLoop X is a proper subset of Y" means that X uses fewer
+// WHERE clause terms than Y and that every WHERE clause term used by X is
+// also used by Y.
+func _whereLoopAdjustCost(tls *crt.TLS, _p *XWhereLoop, _pTemplate *XWhereLoop) {
+ if ((_pTemplate.X9) & uint32(i32(512))) == uint32(i32(0)) {
+ return
}
-
- _5_iAddr = _sqlite3VdbeAddOp0(tls, _v, i32(20))
- _sqlite3OpenTable(tls, _pParse, _iTab, int32(_4_iDb), _4_pTab, i32(106))
- _eType = i32(1)
- _sqlite3VdbeJumpHere(tls, _v, _5_iAddr)
- goto _22
-
-_21:
- _6_affinity_ok = i32(1)
- _6_i = i32(0)
-_23:
- if _6_i >= _4_nExpr || _6_affinity_ok == 0 {
- goto _27
+_1:
+ if _p == nil {
+ goto _4
}
-
- _7_pLhs = _sqlite3VectorFieldSubexpr(tls, (*XExpr)(_pX.X4), _6_i)
- _7_iCol = int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_6_i))).X0).X9)
- _7_idxaff = _sqlite3TableColumnAffinity(tls, _4_pTab, _7_iCol)
- _7_cmpaff = _sqlite3CompareAffinity(tls, _7_pLhs, _7_idxaff)
- switch int32(_7_cmpaff) {
- case i32(65):
- goto _29
- case i32(66):
- goto _30
- default:
- goto _31
+ if int32(_p.X3) != int32(_pTemplate.X3) {
+ goto _2
}
-
-_29:
- goto _32
-
-_30:
- func() {
- if int32(_7_idxaff) != i32(66) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93176), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(106528)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _32
-
-_31:
- _6_affinity_ok = bool2int(int32(_7_idxaff) >= i32(67))
-_32:
- _6_i += 1
- goto _23
-
-_27:
- if _6_affinity_ok == 0 {
- goto _35
+ if ((_p.X9) & uint32(i32(512))) == uint32(i32(0)) {
+ goto _2
}
-
- _6_pIdx = (*XIndex)(_4_pTab.X2)
-_36:
- if _6_pIdx == nil || _eType != i32(0) {
- goto _40
+ if _whereLoopCheaperProperSubset(tls, _p, _pTemplate) != 0 {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(22 /* X6 */))) = _p.X6
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(24 /* X7 */))) = int16(int32(_p.X7) - i32(1))
+ goto _8
}
-
- if int32(_6_pIdx.X14) >= _4_nExpr {
- goto _41
+ if _whereLoopCheaperProperSubset(tls, _pTemplate, _p) != 0 {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(22 /* X6 */))) = _p.X6
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(24 /* X7 */))) = int16(int32(_p.X7) + i32(1))
}
+_8:
+_2:
+ _p = (*XWhereLoop)(_p.X14)
+ goto _1
+_4:
+}
- goto _37
-
-_41:
- if int32(_6_pIdx.X14) < i32(63) {
- goto _42
+// Return TRUE if all of the following are true:
+//
+// (1) X has the same or lower cost that Y
+// (2) X is a proper subset of Y
+// (3) X skips at least as many columns as Y
+//
+// By "proper subset" we mean that X uses fewer WHERE clause terms
+// than Y and that every WHERE clause term used by X is also used
+// by Y.
+//
+// If X is a proper subset of Y then Y is a better choice and ought
+// to have a lower cost. This routine returns TRUE when that cost
+// relationship is inverted and needs to be adjusted. The third rule
+// was added because if X uses skip-scan less than Y it still might
+// deserve a lower cost even if it is a proper subset of Y.
+func _whereLoopCheaperProperSubset(tls *crt.TLS, _pX *XWhereLoop, _pY *XWhereLoop) (r0 int32) {
+ var _i, _j int32
+ if (int32(_pX.X10) - int32(_pX.X11)) >= (int32(_pY.X10) - int32(_pY.X11)) {
+ return i32(0)
}
-
- goto _37
-
-_42:
- if _mustBeUnique == 0 {
- goto _43
+ if int32(_pY.X11) > int32(_pX.X11) {
+ return i32(0)
}
-
- if int32(_6_pIdx.X13) <= _4_nExpr && (int32(_6_pIdx.X14) <= _4_nExpr || int32(_6_pIdx.X15) != i32(0)) {
- goto _46
+ if int32(_pX.X6) < int32(_pY.X6) {
+ goto _2
}
-
- goto _37
-
-_46:
-_43:
- _10_colUsed = uint64(i32(0))
- _6_i = i32(0)
-_47:
- if _6_i >= _4_nExpr {
- goto _50
+ if int32(_pX.X6) > int32(_pY.X6) {
+ return i32(0)
+ }
+ if int32(_pX.X7) > int32(_pY.X7) {
+ return i32(0)
+ }
+_2:
+ _i = int32(_pX.X10) - i32(1)
+_5:
+ if _i < i32(0) {
+ goto _8
+ }
+ if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX.X13)) + 4*uintptr(_i)))) == nil {
+ goto _6
+ }
+ _j = int32(_pY.X10) - i32(1)
+_10:
+ if _j < i32(0) {
+ goto _13
+ }
+ if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pY.X13)) + 4*uintptr(_j)))) == (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX.X13)) + 4*uintptr(_i)))) {
+ goto _13
+ }
+ _j -= 1
+ goto _10
+_13:
+ if _j < i32(0) {
+ return i32(0)
}
+_6:
+ _i -= 1
+ goto _5
+_8:
+ return i32(1)
+}
- _13_pLhs = _sqlite3VectorFieldSubexpr(tls, (*XExpr)(_pX.X4), _6_i)
- _13_pRhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_6_i))).X0)
- _13_pReq = _sqlite3BinaryCompareCollSeq(tls, _pParse, _13_pLhs, _13_pRhs)
+// Search the list of WhereLoops in *ppPrev looking for one that can be
+// supplanted by pTemplate.
+//
+// Return NULL if the WhereLoop list contains an entry that can supplant
+// pTemplate, in other words if pTemplate does not belong on the list.
+//
+// If pX is a WhereLoop that pTemplate can supplant, then return the
+// link that points to pX.
+//
+// If pTemplate cannot supplant any existing element of the list but needs
+// to be added to the list, then return a pointer to the tail of the list.
+func _whereLoopFindLesser(tls *crt.TLS, _ppPrev **XWhereLoop, _pTemplate *XWhereLoop) (r0 **XWhereLoop) {
+ var _p *XWhereLoop
+ _p = *_ppPrev
+_0:
+ if _p == nil {
+ goto _3
+ }
+ if (int32(_p.X3) != int32(_pTemplate.X3)) || (int32(_p.X4) != int32(_pTemplate.X4)) {
+ goto _1
+ }
func() {
- if _13_pReq == nil && int32(_13_pRhs.X9) != i32(-1) && (_pParse.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93209), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(106552)))
+ if int32(_p.X5) != i32(0) && int32(_pTemplate.X5) != i32(0) && int32(_p.X5) != int32(_pTemplate.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132363), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopFindLesserØ00__func__Ø000))), unsafe.Pointer(str(105369)))
crt.X__builtin_abort(tls)
}
}()
- _13_j = i32(0)
-_55:
- if _13_j >= _4_nExpr {
- goto _58
- }
-
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx.X1)) + 2*uintptr(_13_j)))) == int32(_13_pRhs.X9) {
- goto _59
- }
-
- goto _56
-
-_59:
func() {
- if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx.X8)) + 4*uintptr(_13_j)))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(93212), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FindInIndexØ00__func__Ø000))), unsafe.Pointer(str(106604)))
+ if int32(_p.X5) < int32(_pTemplate.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132369), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopFindLesserØ00__func__Ø000))), unsafe.Pointer(str(105438)))
crt.X__builtin_abort(tls)
}
}()
- if _13_pReq == nil || _sqlite3StrICmp(tls, _13_pReq.X0, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_6_pIdx.X8)) + 4*uintptr(_13_j)))) == i32(0) {
- goto _63
+ if ((((((_p.X9) & uint32(i32(16384))) != uint32(i32(0))) && (int32(_pTemplate.X11) == i32(0))) && (((_pTemplate.X9) & uint32(i32(512))) != uint32(i32(0)))) && (((_pTemplate.X9) & uint32(i32(1))) != uint32(i32(0)))) && (((_p.X0) & (_pTemplate.X0)) == (_pTemplate.X0)) {
+ goto _3
+ }
+ if (((((_p.X0) & (_pTemplate.X0)) == (_p.X0)) && (int32(_p.X5) <= int32(_pTemplate.X5))) && (int32(_p.X6) <= int32(_pTemplate.X6))) && (int32(_p.X7) <= int32(_pTemplate.X7)) {
+ return nil
+ }
+ if ((((_p.X0) & (_pTemplate.X0)) == (_pTemplate.X0)) && (int32(_p.X6) >= int32(_pTemplate.X6))) && (int32(_p.X7) >= int32(_pTemplate.X7)) {
+ func() {
+ if int32(_p.X5) < int32(_pTemplate.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132405), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopFindLesserØ00__func__Ø000))), unsafe.Pointer(str(105438)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _3
}
+_1:
+ *func() **XWhereLoop {
+ _ppPrev = (**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X14 */)))))
+ return &_p
+ }() = *_ppPrev
+ goto _0
+_3:
+ return _ppPrev
+}
- goto _56
+var _whereLoopFindLesserØ00__func__Ø000 [20]int8
-_63:
- goto _58
+func init() {
+ crt.Xstrncpy(nil, &_whereLoopFindLesserØ00__func__Ø000[0], str(105467), 20)
+}
-_56:
- _13_j += 1
- goto _55
+// Delete a WhereLoop object
+func _whereLoopDelete(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop) {
+ _whereLoopClear(tls, _db, _p)
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
+}
-_58:
- if _13_j != _4_nExpr {
- goto _64
+// Deallocate internal memory used by a WhereLoop object
+func _whereLoopClear(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop) {
+ if (**XWhereTerm)(unsafe.Pointer(_p.X13)) != (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(60 /* X15 */))))) {
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p.X13))
}
+ _whereLoopClearUnion(tls, _db, _p)
+ _whereLoopInit(tls, _p)
+}
- goto _50
-
-_64:
- _10_mCol = u64(1) << uint(_13_j)
- if (_10_mCol & _10_colUsed) == 0 {
- goto _65
+// Clear the WhereLoop.u union. Leave WhereLoop.pLTerm intact.
+func _whereLoopClearUnion(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop) {
+ if ((_p.X9) & uint32(i32(17408))) == 0 {
+ goto _0
}
-
- goto _50
-
-_65:
- {
- p := &_10_colUsed
- *p = (*p) | _10_mCol
- sink15 = *p
+ if (((_p.X9) & uint32(i32(1024))) != uint32(i32(0))) && (((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))))).X1) != 0) {
+ Xsqlite3_free(tls, (unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))) = nil
+ goto _3
}
- if _aiMap == nil {
- goto _66
+ if (((_p.X9) & uint32(i32(16384))) != uint32(i32(0))) && ((*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4) != nil) {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)((*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4).X4))
+ _sqlite3DbFreeNN(tls, _db, (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4)
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
}
+_3:
+_0:
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_6_i))) = _13_j
-_66:
- _6_i += 1
- goto _47
+// Transfer content from the second pLoop into the first.
+func _whereLoopXfer(tls *crt.TLS, _db *Xsqlite3, _pTo *XWhereLoop, _pFrom *XWhereLoop) (r0 int32) {
+ _whereLoopClearUnion(tls, _db, _pTo)
+ if _whereLoopResize(tls, _db, _pTo, int32(_pFrom.X10)) != 0 {
+ crt.Xmemset(tls, (unsafe.Pointer)((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo))+uintptr(28 /* X8 */)))), i32(0), u32(12))
+ return _sqlite3NomemError(tls, i32(132216))
+ }
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo), (unsafe.Pointer)(_pFrom), u32(48))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo.X13), (unsafe.Pointer)(_pFrom.X13), uint32(_pTo.X10)*u32(4))
+ if ((_pFrom.X9) & uint32(i32(1024))) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
+ goto _2
+ }
+ if ((_pFrom.X9) & uint32(i32(16384))) != uint32(i32(0)) {
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
+ }
+_2:
+ return i32(0)
+}
-_50:
+// Add all WhereLoop objects for a single table of the join where the table
+// is identified by pBuilder->pNew->iTab. That table is guaranteed to be
+// a b-tree table, not a virtual table.
+//
+// The costs (WhereLoop.rRun) of the b-tree loops added by this function
+// are calculated as follows:
+//
+// For a full scan, assuming the table (or index) contains nRow rows:
+//
+// cost = nRow * 3.0 // full-table scan
+// cost = nRow * K // scan of covering index
+// cost = nRow * (K+3.0) // scan of non-covering index
+//
+// where K is a value between 1.1 and 3.0 set based on the relative
+// estimated average size of the index and table records.
+//
+// For an index scan, where nVisit is the number of index rows visited
+// by the scan, and nSeek is the number of seek operations required on
+// the index b-tree:
+//
+// cost = nSeek * (log(nRow) + K * nVisit) // covering index
+// cost = nSeek * (log(nRow) + (K+3.0) * nVisit) // non-covering index
+//
+// Normally, nSeek is 1. nSeek values greater than 1 come about if the
+// WHERE clause includes "x IN (....)" terms used in place of "x=?". Or when
+// implicit "x IN (SELECT x FROM tbl)" terms are added for skip-scans.
+//
+// The estimated values (nRow, nVisit, nSeek) often contain a large amount
+// of uncertainty. For this reason, scoring is designed to pick plans that
+// "do the least harm" if the estimates are inaccurate. For example, a
+// log(nRow) factor is omitted from a non-covering index scan in order to
+// bias the scoring in favor of using an index, since the worst-case
+// performance of using an index is far better than the worst-case performance
+// of a full table scan.
+func _whereLoopAddBtree(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64) (r0 int32) {
+ var _aiColumnPk, _rSize, _rLogSize, _16_nLookup int16
+ var _rc, _iSortIdx, _b, _16_ii, _16_iCur int32
+ var _12_m uint64
+ var _pTab *XTable
+ var _pTabList *XSrcList
+ var _pSrc *TSrcList_item
+ var _pProbe, _3_pFirst *XIndex
+ var _sPk XIndex
+ var _pWInfo *XWhereInfo
+ var _pNew *XWhereLoop
+ var _5_pTerm, _5_pWCEnd, _17_pTerm *XWhereTerm
+ var _pWC, _16_pWC2 *XWhereClause
+ var _aiRowEstPk [2]int16
+ _aiColumnPk = i16(-1)
+ _rc = i32(0)
+ _iSortIdx = i32(1)
+ _pNew = (*XWhereLoop)(_pBuilder.X3)
+ _pWInfo = (*XWhereInfo)(_pBuilder.X0)
+ _pTabList = (*XSrcList)(_pWInfo.X1)
+ _pSrc = (*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))))) + uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(_pNew.X3)))))*uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(68)))))))))))
+ _pTab = (*XTable)(_pSrc.X4)
+ _pWC = (*XWhereClause)(_pBuilder.X1)
func() {
- if _6_i != _4_nExpr && _10_colUsed == ((u64(1)<>uint(i32(31))) == i32(0) {
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(20 /* X5 */))))) = _3_pFirst
}
-
- _sqlite3SetHasNullFlag(tls, _v, _iTab, *_prRhsHasNull)
-_72:
-_71:
- _sqlite3VdbeJumpHere(tls, _v, _16_iAddr)
-_70:
+ _pProbe = &_sPk
+_5:
+_3:
+ _rSize = _pTab.X12
+ _rLogSize = _estLog(tls, _rSize)
+ if (*XWhereOrSet)(_pBuilder.X4) != nil || (int32(_pWInfo.X10)&i32(32)) != i32(0) || (((*Xsqlite3)((*XParse)(_pWInfo.X0).X0).X6)&i32(1048576)) == i32(0) || (*XIndex)(_pSrc.X16) != nil || ((uint32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X1)<>uint(i32(31))) != 0 || ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) || ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X1)>>uint(i32(3)))<>uint(i32(31))) != 0 || ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X1)>>uint(i32(5)))<>uint(i32(31))) != 0 {
+ goto _14
+ }
+ _5_pWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(_pWC.X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X3)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
+ _5_pTerm = (*XWhereTerm)(_pWC.X5)
+_15:
+ if _rc != i32(0) || uintptr(unsafe.Pointer(_5_pTerm)) >= uintptr(unsafe.Pointer(_5_pWCEnd)) {
+ goto _19
+ }
+ if ((_5_pTerm.X11) & (_pNew.X1)) != 0 {
+ goto _16
+ }
+ if _termCanDriveIndex(tls, _5_pTerm, _pSrc, uint64(i32(0))) == 0 {
+ goto _21
+ }
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(1))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = uint16(i32(0))
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(1))
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(i32(0)))) = _5_pTerm
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16((int32(_rLogSize) + int32(_rSize)) + i32(4))
+ if ((*XSelect)(_pTab.X3) == nil) && (((_pTab.X9) & uint32(i32(2))) == uint32(i32(0))) {
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */)))
+ *p = int16(int32(*p) + i32(24))
+ sink18 = *p
+ }
+ }
+ if int32(_pNew.X5) < i32(0) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = int16(i32(43))
+ func() {
+ if i32(43) != int32(_sqlite3LogEst(tls, uint64(i32(20)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133227), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeØ00__func__Ø000))), unsafe.Pointer(str(105510)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _rLogSize, _pNew.X7)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(16384))
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _mPrereq | (_5_pTerm.X11)
+ _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
+_21:
+_16:
+ *(*uintptr)(unsafe.Pointer(&_5_pTerm)) += uintptr(48)
+ goto _15
+_19:
+_14:
+_27:
+ if _rc != i32(0) || _pProbe == nil {
+ goto _31
+ }
+ if ((*XExpr)(_pProbe.X9) != nil) && (_whereUsablePartialIndex(tls, _pSrc.X11, _pWC, (*XExpr)(_pProbe.X9)) == 0) {
+ goto _28
+ }
+ _rSize = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(i32(0))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = uint16(i32(0))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(i32(0))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _mPrereq
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _rSize
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = _pProbe
+ _b = _indexMightHelpWithOrderBy(tls, _pBuilder, _pProbe, _pSrc.X11)
+ func() {
+ if (int32(_pWInfo.X10)&i32(4)) != i32(0) && _b != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133258), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeØ00__func__Ø000))), unsafe.Pointer(str(105532)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pProbe.X11) > i32(0) {
+ goto _37
+ }
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(256))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(func() int32 {
+ if _b != 0 {
+ return _iSortIdx
+ }
+ return i32(0)
+ }())
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = int16(int32(_rSize) + i32(16))
+ _whereLoopOutputAdjust(tls, _pWC, _pNew, _rSize)
+ _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _rSize
+ if _rc != 0 {
+ goto _31
+ }
+ goto _41
_37:
- _6_pIdx = (*XIndex)(_6_pIdx.X5)
- goto _36
-
-_40:
-_35:
-_22:
-_11:
- if _eType != i32(0) || (_inFlags&uint32(i32(1))) == 0 || ((_pX.X2)&uint32(i32(2048))) != uint32(i32(0)) || _sqlite3InRhsIsConstant(tls, _pX) != 0 && ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */)))))).X0) > i32(2) {
- goto _77
+ if ((uint32((_pProbe.X16)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(576))
+ _12_m = uint64(i32(0))
+ goto _43
}
-
- _eType = i32(5)
-_77:
- if _eType != i32(0) {
- goto _78
+ _12_m = (_pSrc.X14) & (^_columnsInIndex(tls, _pProbe))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(func() int32 {
+ if _12_m == uint64(i32(0)) {
+ return i32(576)
+ }
+ return i32(512)
+ }())
+_43:
+ if _b == 0 && ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) && (*XExpr)(_pProbe.X9) == nil && (_12_m != uint64(i32(0)) || int32((uint32((_pProbe.X16)>>uint(i32(2)))<>uint(i32(31))) != i32(0) || int32(_pProbe.X12) >= int32(_pTab.X13) || (int32(_pWInfo.X10)&i32(4)) != i32(0) || (_sqlite3Config.X4) == 0 || (int32((*Xsqlite3)((*XParse)(_pWInfo.X0).X0).X13)&i32(64)) != i32(0)) {
+ goto _54
}
-
- _20_savedNQueryLoop = _pParse.X42
- _20_rMayHaveNull = i32(0)
- _eType = i32(2)
- if (_inFlags & uint32(i32(4))) == 0 {
- goto _79
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(func() int32 {
+ if _b != 0 {
+ return _iSortIdx
+ }
+ return i32(0)
+ }())
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = int16((int32(_rSize) + i32(1)) + ((i32(15) * int32(_pProbe.X12)) / int32(_pTab.X13)))
+ if _12_m == uint64(i32(0)) {
+ goto _57
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(144 /* X42 */))) = uint32(i32(0))
- if int32((*XExpr)(_pX.X4).X9) >= i32(0) || ((_pX.X2)&uint32(i32(2048))) != uint32(i32(0)) {
- goto _81
+ _16_nLookup = int16(int32(_rSize) + i32(16))
+ _16_iCur = _pSrc.X11
+ _16_pWC2 = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
+ _16_ii = i32(0)
+_58:
+ if _16_ii >= (_16_pWC2.X3) {
+ goto _61
}
-
- _eType = i32(1)
-_81:
- goto _82
-
-_79:
- if _prRhsHasNull == nil {
- goto _83
+ _17_pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_16_pWC2.X5) + 48*uintptr(_16_ii)))
+ if _sqlite3ExprCoveredByIndex(tls, (*XExpr)(_17_pTerm.X0), _16_iCur, _pProbe) == 0 {
+ goto _61
}
-
- *_prRhsHasNull = store1(&_20_rMayHaveNull, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
-_83:
-_82:
- _sqlite3CodeSubselect(tls, _pParse, _pX, _20_rMayHaveNull, bool2int(_eType == i32(1)))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(144 /* X42 */))) = _20_savedNQueryLoop
- goto _84
-
-_78:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(28 /* X8 */))) = _iTab
-_84:
- if _aiMap == nil || _eType == i32(3) || _eType == i32(4) {
- goto _87
+ if int32(_17_pTerm.X2) <= i32(0) {
+ {
+ p := &_16_nLookup
+ *p = int16(int32(*p) + int32(_17_pTerm.X2))
+ sink18 = *p
+ }
+ goto _64
}
-
- _25_n = _sqlite3ExprVectorSize(tls, (*XExpr)(_pX.X4))
- _25_i = i32(0)
-_88:
- if _25_i >= _25_n {
- goto _91
+ _16_nLookup -= 1
+ if (int32(_17_pTerm.X4) & i32(130)) != 0 {
+ {
+ p := &_16_nLookup
+ *p = int16(int32(*p) - i32(19))
+ sink18 = *p
+ }
}
+_64:
+ _16_ii += 1
+ goto _58
+_61:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _pNew.X6, _16_nLookup)
+_57:
+ _whereLoopOutputAdjust(tls, _pWC, _pNew, _rSize)
+ _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _rSize
+ if _rc != 0 {
+ goto _31
+ }
+_54:
+_41:
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBuilder)) + uintptr(20 /* X5 */))) = uint32(i32(0))
+ _rc = _whereLoopAddBtreeIndex(tls, _pBuilder, _pSrc, _pProbe, int16(i32(0)))
+ if (_pBuilder.X5) == uint32(i32(1)) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(256))
+ sink5 = *p
+ }
+ }
+ if (*XIndex)(_pSrc.X16) != nil {
+ goto _31
+ }
+_28:
+ *func() *int32 { _pProbe = (*XIndex)(_pProbe.X5); return &_iSortIdx }() += 1
+ goto _27
+_31:
+ return _rc
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiMap)) + 4*uintptr(_25_i))) = _25_i
- _25_i += 1
- goto _88
-
-_91:
-_87:
- r0 = _eType
- return
+ _ = _sPk
+ _ = _aiRowEstPk
+ _ = _aiColumnPk
+ panic(0)
}
-var _sqlite3FindInIndexØ00__func__Ø000 [19]int8 // -
+var _whereLoopAddBtreeØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FindInIndexØ00__func__Ø000[0], str(106692), 19)
+ crt.Xstrncpy(nil, &_whereLoopAddBtreeØ00__func__Ø000[0], str(105588), 18)
+}
+
+// Estimate the logarithm of the input value to base 2.
+func _estLog(tls *crt.TLS, _N int16) (r0 int16) {
+ return int16(func() int32 {
+ if int32(_N) <= i32(10) {
+ return i32(0)
+ }
+ return (int32(_sqlite3LogEst(tls, uint64(_N))) - i32(33))
+ }())
+}
+
+// Return TRUE if the WHERE clause term pTerm is of a form where it
+// could be used with an index to access pSrc, assuming an appropriate
+// index existed.
+func _termCanDriveIndex(tls *crt.TLS, _pTerm *XWhereTerm, _pSrc *TSrcList_item, _notReady uint64) (r0 int32) {
+ var _aff int8
+ if (_pTerm.X8) != (_pSrc.X11) {
+ return i32(0)
+ }
+ if (int32(_pTerm.X4) & i32(130)) == i32(0) {
+ return i32(0)
+ }
+ if ((_pTerm.X11) & _notReady) != uint64(i32(0)) {
+ return i32(0)
+ }
+ if (*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) < i32(0) {
+ return i32(0)
+ }
+ _aff = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pSrc.X4).X1) + 16*uintptr(*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))))).X4
+ if _sqlite3IndexAffinityOk(tls, (*XExpr)(_pTerm.X0), _aff) == 0 {
+ return i32(0)
+ }
+ return i32(1)
}
-func _sqlite3ExprCanBeNull(tls *crt.TLS, _p *XExpr) (r0 int32) { // sqlite3.c:92855:1
- var _op uint8 // sqlite3.c:92856:6
- _ = _op
+// Check to see if a partial index with pPartIndexWhere can be used
+// in the current query. Return true if it can be and false if not.
+func _whereUsablePartialIndex(tls *crt.TLS, _iTab int32, _pWC *XWhereClause, _pWhere *XExpr) (r0 int32) {
+ var _i int32
+ var _2_pExpr *XExpr
+ var _pTerm *XWhereTerm
_0:
- if int32(_p.X0) != i32(156) && int32(_p.X0) != i32(155) {
+ if int32(_pWhere.X0) != i32(71) {
goto _1
}
-
- _p = (*XExpr)(_p.X4)
+ if _whereUsablePartialIndex(tls, _iTab, _pWC, (*XExpr)(_pWhere.X4)) == 0 {
+ return i32(0)
+ }
+ _pWhere = (*XExpr)(_pWhere.X5)
goto _0
-
_1:
- _op = _p.X0
- if int32(_op) != i32(157) {
- goto _3
- }
-
- _op = _p.X12
+ *func() **XWhereTerm { _i = i32(0); return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
_3:
- switch int32(_op) {
- case i32(97):
+ if _i >= (_pWC.X3) {
goto _6
- case i32(132):
- goto _7
- case i32(133):
- goto _8
- case i32(134):
- goto _5
- case i32(152):
- goto _9
- default:
- goto _10
}
-
-_5:
+ _2_pExpr = (*XExpr)(_pTerm.X0)
+ if _sqlite3ExprImpliesExpr(tls, _2_pExpr, _pWhere, _iTab) != 0 && ((((_2_pExpr.X2) & uint32(i32(1))) == uint32(i32(0))) || (int32(_2_pExpr.X11) == _iTab)) {
+ return i32(1)
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i += 1; return &_pTerm }())) += uintptr(48)
+ goto _3
_6:
-_7:
-_8:
- r0 = i32(0)
- return
-
-_9:
- func() {
- if (*XTable)(_p.X14) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92867), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCanBeNullØ00__func__Ø000))), unsafe.Pointer(str(106712)))
- crt.X__builtin_abort(tls)
- }
- }()
- return bool2int((((_p.X2) & uint32(i32(1048576))) != uint32(i32(0))) || ((int32(_p.X9) >= i32(0)) && (int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_p.X14).X1)+16*uintptr(_p.X9))).X3) == i32(0))))
-
-_10:
- return i32(1)
-}
-
-var _sqlite3ExprCanBeNullØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCanBeNullØ00__func__Ø000[0], str(106724), 21)
+ return i32(0)
}
-func _isCandidateForInOpt(tls *crt.TLS, _pX *XExpr) (r0 *XSelect) { // sqlite3.c:92933:1
- var _p *XSelect // sqlite3.c:92934:10
- _ = _p
- var _pSrc *XSrcList // sqlite3.c:92935:11
- _ = _pSrc
- var _pEList *XExprList // sqlite3.c:92936:12
- _ = _pEList
- var _pTab *XTable // sqlite3.c:92937:9
- _ = _pTab
- var _i int32 // sqlite3.c:92938:7
- _ = _i
- var _2_pRes *XExpr // sqlite3.c:92964:10
- _ = _2_pRes
- if ((_pX.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- goto _0
+// Return true if we can prove the pE2 will always be true if pE1 is
+// true. Return false if we cannot complete the proof or if pE2 might
+// be false. Examples:
+//
+// pE1: x==5 pE2: x==5 Result: true
+// pE1: x>0 pE2: x==5 Result: false
+// pE1: x=21 pE2: x=21 OR y=43 Result: true
+// pE1: x!=123 pE2: x IS NOT NULL Result: true
+// pE1: x!=?1 pE2: x IS NOT NULL Result: true
+// pE1: x IS NULL pE2: x IS NOT NULL Result: false
+// pE1: x IS ?2 pE2: x IS NOT NULL Reuslt: false
+//
+// When comparing TK_COLUMN nodes between pE1 and pE2, if pE2 has
+// Expr.iTable<0 then assume a table number given by iTab.
+//
+// When in doubt, return false. Returning true might give a performance
+// improvement. Returning false might cause a performance reduction, but
+// it will always give the correct answer and is hence always safe.
+func _sqlite3ExprImpliesExpr(tls *crt.TLS, _pE1 *XExpr, _pE2 *XExpr, _iTab int32) (r0 int32) {
+ var _3_pX *XExpr
+ if _sqlite3ExprCompare(tls, _pE1, _pE2, _iTab) == i32(0) {
+ return i32(1)
}
- return nil
-
-_0:
- if ((_pX.X2) & uint32(i32(32))) == uint32(i32(0)) {
- goto _1
+ if (int32(_pE2.X0) == i32(70)) && (_sqlite3ExprImpliesExpr(tls, _pE1, (*XExpr)(_pE2.X4), _iTab) != 0 || _sqlite3ExprImpliesExpr(tls, _pE1, (*XExpr)(_pE2.X5), _iTab) != 0) {
+ return i32(1)
}
- return nil
-
-_1:
- _p = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */))))))
- if (*XSelect)(_p.X13) == nil {
- goto _2
+ if int32(_pE2.X0) != i32(76) || int32(_pE1.X0) == i32(75) || int32(_pE1.X0) == i32(72) {
+ goto _6
}
- return nil
+ _3_pX = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pE1.X4))
+ if _sqlite3ExprCompare(tls, _3_pX, (*XExpr)(_pE2.X4), _iTab) == i32(0) {
+ return i32(1)
+ }
+_6:
+ return i32(0)
+}
+// Return True if it is possible that pIndex might be useful in
+// implementing the ORDER BY clause in pBuilder.
+//
+// Return False if pBuilder does not contain an ORDER BY clause or
+// if there is no way for pIndex to be useful in implementing that
+// ORDER BY clause.
+func _indexMightHelpWithOrderBy(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _pIndex *XIndex, _iCursor int32) (r0 int32) {
+ var _ii, _jj int32
+ var _pOB, _aColExpr *XExprList
+ var _1_pExpr *XExpr
+ if ((uint32((_pIndex.X16)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ return i32(0)
+ }
+ if store42(&_pOB, (*XExprList)((*XWhereInfo)(_pBuilder.X0).X2)) == nil {
+ return i32(0)
+ }
+ _ii = i32(0)
_2:
- if ((_p.X3) & uint32(i32(9))) == 0 {
- goto _3
+ if _ii >= (_pOB.X0) {
+ goto _5
}
- return nil
-
-_3:
- func() {
- if (*XExprList)(_p.X10) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92948), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(48064)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (*XExpr)(_p.X15) == nil {
- goto _6
+ _1_pExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOB))+uintptr(8 /* X2 */)))))+20*uintptr(_ii))).X0))
+ if int32(_1_pExpr.X0) != i32(152) || (_1_pExpr.X8) != _iCursor {
+ goto _7
}
- return nil
-
-_6:
- func() {
- if (*XExpr)(_p.X16) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92950), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(102816)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (*XExpr)(_p.X9) == nil {
- goto _9
+ if int32(_1_pExpr.X9) < i32(0) {
+ return i32(1)
}
- return nil
-
+ _jj = i32(0)
_9:
- _pSrc = (*XSrcList)(_p.X8)
- func() {
- if _pSrc == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92953), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(49276)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (_pSrc.X0) == i32(1) {
+ if _jj >= int32(_pIndex.X13) {
goto _12
}
- return nil
-
+ if int32(_1_pExpr.X9) == int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_jj)))) {
+ return i32(1)
+ }
+ _jj += 1
+ goto _9
_12:
- if (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X5) == nil {
- goto _13
+ goto _14
+_7:
+ if store42(&_aColExpr, (*XExprList)(_pIndex.X10)) == nil {
+ goto _15
}
- return nil
+ _jj = i32(0)
+_16:
+ if _jj >= int32(_pIndex.X13) {
+ goto _19
+ }
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_jj)))) != i32(-2) {
+ goto _17
+ }
+ if _sqlite3ExprCompare(tls, _1_pExpr, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aColExpr))+uintptr(8 /* X2 */)))))+20*uintptr(_jj))).X0), _iCursor) == i32(0) {
+ return i32(1)
+ }
+_17:
+ _jj += 1
+ goto _16
+_19:
+_15:
+_14:
+ _ii += 1
+ goto _2
+_5:
+ return i32(0)
+}
-_13:
- _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
- func() {
- if _pTab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92957), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(44760)))
- crt.X__builtin_abort(tls)
- }
- }()
+// Adjust the WhereLoop.nOut value downward to account for terms of the
+// WHERE clause that reference the loop but which are not used by an
+// index.
+// *
+// For every WHERE clause term that is not used by the index
+// and which has a truth probability assigned by one of the likelihood(),
+// likely(), or unlikely() SQL functions, reduce the estimated number
+// of output rows by the probability specified.
+//
+// TUNING: For every WHERE clause term that is not used by the index
+// and which does not have an assigned truth probability, heuristics
+// described below are used to try to estimate the truth probability.
+// TODO --> Perhaps this is something that could be improved by better
+// table statistics.
+//
+// Heuristic 1: Estimate the truth probability as 93.75%. The 93.75%
+// value corresponds to -1 in LogEst notation, so this means decrement
+// the WhereLoop.nOut field for every such WHERE clause term.
+//
+// Heuristic 2: If there exists one or more WHERE clause terms of the
+// form "x==EXPR" and EXPR is not a constant 0 or 1, then make sure the
+// final output row estimate is no greater than 1/4 of the total number
+// of rows in the table. In other words, assume that x==EXPR will filter
+// out at least 3 out of 4 rows. If EXPR is -1 or 0 or 1, then maybe the
+// "x" column is boolean or else -1 or 0 or 1 is a common default value
+// on the "x" column and so in that case only cap the output row estimate
+// at 1/2 instead of 1/4.
+func _whereLoopOutputAdjust(tls *crt.TLS, _pWC *XWhereClause, _pLoop *XWhereLoop, _nRow int16) {
+ var _iReduce int16
+ var _i, _j, _k int32
+ var _notAllowed uint64
+ var _6_pRight *XExpr
+ var _pTerm, _pX *XWhereTerm
+ _notAllowed = ^((_pLoop.X0) | (_pLoop.X1))
+ _iReduce = i16(0)
func() {
- if (*XSelect)(_pTab.X3) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92958), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(106748)))
+ if ((_pLoop.X9) & uint32(i32(16384))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132572), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopOutputAdjustØ00__func__Ø000))), unsafe.Pointer(str(105606)))
crt.X__builtin_abort(tls)
}
}()
- if (_pTab.X16) == 0 {
- goto _18
+ *func() **XWhereTerm { _i = _pWC.X3; return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
+_2:
+ if _i <= i32(0) {
+ goto _5
}
- return nil
-
-_18:
- _pEList = (*XExprList)(_p.X0)
- func() {
- if _pEList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92961), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(46300)))
- crt.X__builtin_abort(tls)
+ if (int32(_pTerm.X3) & i32(2)) != i32(0) {
+ goto _5
+ }
+ if ((_pTerm.X12) & (_pLoop.X1)) == uint64(i32(0)) {
+ goto _3
+ }
+ if ((_pTerm.X12) & _notAllowed) != uint64(i32(0)) {
+ goto _3
+ }
+ _j = int32(_pLoop.X10) - i32(1)
+_9:
+ if _j < i32(0) {
+ goto _12
+ }
+ _pX = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
+ if _pX == nil {
+ goto _10
+ }
+ if _pX == _pTerm {
+ goto _12
+ }
+ if ((_pX.X7) >= i32(0)) && ((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_pX.X7))) == _pTerm) {
+ goto _12
+ }
+_10:
+ _j -= 1
+ goto _9
+_12:
+ if _j >= i32(0) {
+ goto _17
+ }
+ if int32(_pTerm.X2) <= i32(0) {
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */)))
+ *p = int16(int32(*p) + int32(_pTerm.X2))
+ sink18 = *p
}
- }()
- _i = i32(0)
-_21:
- if _i >= (_pEList.X0) {
+ goto _19
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) -= 1
+ if (int32(_pTerm.X4) & i32(130)) == 0 {
+ goto _20
+ }
+ _6_pRight = (*XExpr)((*XExpr)(_pTerm.X0).X5)
+ if (_sqlite3ExprIsInteger(tls, _6_pRight, &_k) != 0 && (_k >= i32(-1))) && (_k <= i32(1)) {
+ _k = i32(10)
goto _24
}
-
- _2_pRes = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- if int32(_2_pRes.X0) == i32(152) {
- goto _25
+ _k = i32(20)
+_24:
+ if int32(_iReduce) < _k {
+ _iReduce = int16(_k)
}
- return nil
+_20:
+_19:
+_17:
+_3:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pTerm }())) += uintptr(48)
+ goto _2
+_5:
+ if int32(_pLoop.X7) > (int32(_nRow) - int32(_iReduce)) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) = int16(int32(_nRow) - int32(_iReduce))
+ }
+}
-_25:
- func() {
- if (_2_pRes.X8) != ((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92966), unsafe.Pointer((*int8)(unsafe.Pointer(&_isCandidateForInOptØ00__func__Ø000))), unsafe.Pointer(str(106768)))
- crt.X__builtin_abort(tls)
- }
- }()
- _i += 1
- goto _21
+var _whereLoopOutputAdjustØ00__func__Ø000 [22]int8
-_24:
- return _p
+func init() {
+ crt.Xstrncpy(nil, &_whereLoopOutputAdjustØ00__func__Ø000[0], str(105645), 22)
}
-var _isCandidateForInOptØ00__func__Ø000 [20]int8 // -
+// Determine if an index pIdx on table with cursor iCur contains will
+// the expression pExpr. Return true if the index does cover the
+// expression and false if the pExpr expression references table columns
+// that are not found in the index pIdx.
+//
+// An index covering an expression means that the expression can be
+// evaluated using only the index and without having to lookup the
+// corresponding table entry.
+func _sqlite3ExprCoveredByIndex(tls *crt.TLS, _pExpr *XExpr, _iCur int32, _pIdx *XIndex) (r0 int32) {
+ var _w XWalker
+ var _xcov XIdList
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_xcov)) + uintptr(4 /* X1 */))) = _iCur
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_xcov)) + uintptr(0 /* X0 */))))) = _pIdx
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _exprIdxCover
+ *(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = &_xcov
+ _sqlite3WalkExpr(tls, &_w, _pExpr)
+ return bool2int((_w.X5) == 0)
-func init() {
- crt.Xstrncpy(nil, &_isCandidateForInOptØ00__func__Ø000[0], str(106804), 20)
+ _ = _w
+ _ = _xcov
+ panic(0)
}
-func _sqlite3CodeVerifySchema(tls *crt.TLS, _pParse *XParse, _iDb int32) { // sqlite3.c:103753:1
- var _pToplevel *XParse // sqlite3.c:103754:9
- _ = _pToplevel
- _pToplevel = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
+// Check to see if there are references to columns in table
+// pWalker->u.pIdxCover->iCur can be satisfied using the index
+// pWalker->u.pIdxCover->pIdx.
+func _exprIdxCover(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ if ((int32(_pExpr.X0) == i32(152)) && ((_pExpr.X8) == ((*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */)))))).X1))) && (int32(_sqlite3ColumnOfIndex(tls, (*XIndex)((*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */)))))).X0), _pExpr.X9)) < i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(1))
+ return i32(2)
+ }
+ return i32(0)
+}
+
+// We have so far matched pBuilder->pNew->u.btree.nEq terms of the
+// index pIndex. Try to match one more.
+//
+// When this function is called, pBuilder->pNew->nOut contains the
+// number of rows expected to be visited by filtering using the nEq
+// terms only. If it is modified, this value is restored before this
+// function returns.
+//
+// If pProbe->tnum==0, that means pIndex is a fake index used for the
+// INTEGER PRIMARY KEY.
+func _whereLoopAddBtreeIndex(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _pSrc *TSrcList_item, _pProbe *XIndex, _nInMul int16) (r0 int32) {
+ var _saved_nOut, _rSize, _rLogSize, _3_rCostIdx, _3_nOutUnadjusted, _30_nIter int16
+ var _opMask, _rc, _3_nIn, _9_i, _12_iCol, _21_nEq int32
+ var _saved_wsFlags uint32
+ var _saved_prereq uint64
+ var _saved_nLTerm, _saved_nEq, _saved_nBtm, _saved_nTop, _saved_nSkip, _3_eOp uint16
+ var _db *Xsqlite3
+ var _8_pExpr *XExpr
+ var _pParse *XParse
+ var _pWInfo *XWhereInfo
+ var _pNew *XWhereLoop
+ var _pTerm, _pTop, _pBtm *XWhereTerm
+ var _scan XWhereScan
+ _pWInfo = (*XWhereInfo)(_pBuilder.X0)
+ _pParse = (*XParse)(_pWInfo.X0)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _rc = i32(0)
+ _pTop = nil
+ _pBtm = nil
+ _pNew = (*XWhereLoop)(_pBuilder.X3)
+ if (_db.X17) != 0 {
+ return _sqlite3NomemError(tls, i32(132723))
+ }
func() {
- if _iDb < i32(0) || _iDb >= ((*Xsqlite3)(_pParse.X0).X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(106824)))
+ if ((_pNew.X9) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132727), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105667)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XBtree)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(_iDb))).X1) == nil && _iDb != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103757), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(106856)))
+ if ((_pNew.X9) & uint32(i32(16))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132728), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105707)))
crt.X__builtin_abort(tls)
}
}()
+ if ((_pNew.X9) & uint32(i32(32))) != 0 {
+ _opMask = i32(24)
+ goto _6
+ }
func() {
- if _iDb >= i32(12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103758), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(106896)))
+ if int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X1) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132732), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105744)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if _sqlite3SchemaMutexHeld(tls, (*Xsqlite3)(_pParse.X0), _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103759), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeVerifySchemaØ00__func__Ø000))), unsafe.Pointer(str(106924)))
- crt.X__builtin_abort(tls)
- }
- }()
- if bool2int(((_pToplevel.X30)&(u32(1)<>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ {
+ p := &_opMask
+ *p = (*p) & i32(-61)
+ sink1 = *p
}
- }()
- if i32(7) != _sqlite3BtreeSetPageSize(tls, _1_pBt, _db.X27, i32(-1), i32(0)) {
- goto _5
}
-
- _sqlite3OomFault(tls, _db)
- return i32(1)
-
-_5:
-_1:
- r0 = i32(0)
- return
-}
-
-var _sqlite3OpenTempDatabaseØ00flagsØ001 int32 // sqlite3.c:103723:22
-
-func init() {
- _sqlite3OpenTempDatabaseØ00flagsØ001 = i32(542)
-}
-
-var _sqlite3OpenTempDatabaseØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3OpenTempDatabaseØ00__func__Ø000[0], str(107084), 24)
-}
-
-func _sqlite3SetHasNullFlag(tls *crt.TLS, _v *TVdbe, _iCur int32, _regHasNull int32) { // sqlite3.c:92979:1
- var _addr1 int32 // sqlite3.c:92980:7
- _ = _addr1
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _regHasNull)
- _addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(37), _iCur)
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _iCur, i32(0), _regHasNull)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(128)))
- _sqlite3VdbeComment(tls, _v, str(107108), _iCur)
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
-}
-
-func _sqlite3InRhsIsConstant(tls *crt.TLS, _pIn *XExpr) (r0 int32) { // sqlite3.c:92996:1
- var _pLHS *XExpr // sqlite3.c:92997:8
- _ = _pLHS
- var _res int32 // sqlite3.c:92998:7
- _ = _res
func() {
- if ((_pIn.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92999), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InRhsIsConstantØ00__func__Ø000))), unsafe.Pointer(str(107128)))
+ if int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X0) >= int32(_pProbe.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132737), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105766)))
crt.X__builtin_abort(tls)
}
}()
- _pLHS = (*XExpr)(_pIn.X4)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(12 /* X4 */))))) = nil
- _res = _sqlite3ExprIsConstant(tls, _pIn)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + uintptr(12 /* X4 */))))) = _pLHS
- return _res
-}
-
-var _sqlite3InRhsIsConstantØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3InRhsIsConstantØ00__func__Ø000[0], str(107164), 23)
-}
-
-func _exprAlwaysTrue(tls *crt.TLS, _p *XExpr) (r0 int32) { // sqlite3.c:91771:1
- var _v int32 // sqlite3.c:91772:7
- _ = _v
- _v = i32(0)
- if ((_p.X2) & uint32(i32(1))) == uint32(i32(0)) {
- goto _0
+ _saved_nEq = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X0
+ _saved_nBtm = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X1
+ _saved_nTop = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X2
+ _saved_nSkip = _pNew.X11
+ _saved_nLTerm = _pNew.X10
+ _saved_wsFlags = _pNew.X9
+ _saved_prereq = _pNew.X0
+ _saved_nOut = _pNew.X7
+ _pTerm = _whereScanInit(tls, &_scan, (*XWhereClause)(_pBuilder.X1), _pSrc.X11, int32(_saved_nEq), uint32(_opMask), _pProbe)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
+ _rSize = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(i32(0))))
+ _rLogSize = _estLog(tls, _rSize)
+_12:
+ if _rc != i32(0) || _pTerm == nil {
+ goto _16
}
- return i32(0)
-
-_0:
- if _sqlite3ExprIsInteger(tls, _p, &_v) != 0 {
- goto _1
+ _3_eOp = _pTerm.X4
+ _3_nIn = i32(0)
+ if ((int32(_3_eOp) == i32(256)) || ((int32(_pTerm.X3) & i32(0)) != i32(0))) && _indexColumnNotNull(tls, _pProbe, int32(_saved_nEq)) != 0 {
+ goto _13
}
- return i32(0)
-
-_1:
- return bool2int(_v != i32(0))
-}
-
-func _createMask(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _iCursor int32) { // sqlite3.c:130572:1
- func() {
- if (_pMaskSet.X0) >= i32(64) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130573), unsafe.Pointer((*int8)(unsafe.Pointer(&_createMaskØ00__func__Ø000))), unsafe.Pointer(str(107188)))
- crt.X__builtin_abort(tls)
+ if ((_pTerm.X11) & (_pNew.X1)) != 0 {
+ goto _13
+ }
+ if (int32(_pTerm.X3)&i32(256)) != 0 && (int32(_pTerm.X4) == i32(16)) {
+ goto _13
+ }
+ if (((int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X0) & i32(8)) != i32(0)) && ((((*XExpr)(_pTerm.X0).X2) & uint32(i32(1))) == uint32(i32(0)))) && ((int32(_3_eOp) & i32(384)) != i32(0)) {
+ goto _13
+ }
+ if (int32(_pProbe.X15) != i32(0)) && (int32(_saved_nEq) == (int32(_pProbe.X13) - i32(1))) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBuilder)) + uintptr(20 /* X5 */)))
+ *p = (*p) | uint32(i32(2))
+ sink5 = *p
}
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[64]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet))+uintptr(4 /* X1 */))))) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet))+uintptr(0 /* X0 */))), int32(1))))) = _iCursor
-}
-
-var _createMaskØ00__func__Ø000 [11]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_createMaskØ00__func__Ø000[0], str(107228), 11)
-}
-
-func _sqlite3WhereTabFuncArgs(tls *crt.TLS, _pParse *XParse, _pItem *TSrcList_item, _pWC *XWhereClause) { // sqlite3.c:130355:1
- var _pTab *XTable // sqlite3.c:130360:9
- _ = _pTab
- var _j int32 // sqlite3.c:130361:7
- _ = _j
- var _k int32 // sqlite3.c:130361:10
- _ = _k
- var _pArgs *XExprList // sqlite3.c:130362:12
- _ = _pArgs
- var _pColRef *XExpr // sqlite3.c:130363:8
- _ = _pColRef
- var _pTerm *XExpr // sqlite3.c:130364:8
- _ = _pTerm
- if int32((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) != i32(0) {
- goto _0
+ goto _28
}
- return
-
-_0:
- _pTab = (*XTable)(_pItem.X4)
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBuilder)) + uintptr(20 /* X5 */)))
+ *p = (*p) | uint32(i32(1))
+ sink5 = *p
+ }
+_28:
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = _saved_wsFlags
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _saved_nEq
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = _saved_nBtm
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = _saved_nTop
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = _saved_nLTerm
+ if _whereLoopResize(tls, _db, _pNew, int32(_pNew.X10)+i32(1)) != 0 {
+ goto _16
+ }
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(postInc14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(44 /* X10 */))), uint16(1))))) = _pTerm
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = (_saved_prereq | (_pTerm.X11)) & (^(_pNew.X1))
func() {
- if _pTab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130367), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereTabFuncArgsØ00__func__Ø000))), unsafe.Pointer(str(44760)))
+ if int32(_nInMul) != i32(0) && ((_pNew.X9)&uint32(i32(8))) == uint32(i32(0)) && ((_pNew.X9)&uint32(i32(4))) == uint32(i32(0)) && ((_pNew.X9)&uint32(i32(32768))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132797), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105800)))
crt.X__builtin_abort(tls)
}
}()
- _pArgs = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(60 /* X15 */))))))
- if _pArgs != nil {
- goto _3
- }
- return
-
-_3:
- _j = store1(&_k, i32(0))
-_4:
- if _j >= (_pArgs.X0) {
- goto _7
- }
-
-_8:
- if _k >= int32(_pTab.X11) || (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_k))).X6)&i32(2)) != i32(0) {
- goto _9
+ if (int32(_3_eOp) & i32(1)) == 0 {
+ goto _35
}
-
- _k += 1
- goto _8
-
-_9:
- if _k < int32(_pTab.X11) {
- goto _11
+ _8_pExpr = (*XExpr)(_pTerm.X0)
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(4))
+ sink5 = *p
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(107240), unsafe.Pointer(_pTab.X0), _j)
- return
-
-_11:
- _pColRef = _sqlite3ExprAlloc(tls, (*Xsqlite3)(_pParse.X0), i32(152), nil, i32(0))
- if _pColRef != nil {
- goto _12
+ if ((_8_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
+ goto _36
}
- return
-
-_12:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColRef)) + uintptr(28 /* X8 */))) = _pItem.X11
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColRef)) + uintptr(32 /* X9 */))) = int16(postInc1(&_k, int32(1)))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pColRef)) + uintptr(44 /* X14 */))))) = _pTab
- _pTerm = _sqlite3PExpr(tls, _pParse, i32(78), _pColRef, _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pArgs))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), i32(0)))
- _whereClauseInsert(tls, _pWC, _pTerm, uint16(i32(1)))
- _j += 1
- goto _4
-
-_7:
-}
-
-var _sqlite3WhereTabFuncArgsØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereTabFuncArgsØ00__func__Ø000[0], str(107276), 24)
-}
-
-func _sqlite3WhereGetMask(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _iCursor int32) (r0 uint64) { // sqlite3.c:130553:1
- var _i int32 // sqlite3.c:130554:7
- _ = _i
+ _3_nIn = i32(46)
func() {
- if (_pMaskSet.X0) > i32(64) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130555), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereGetMaskØ00__func__Ø000))), unsafe.Pointer(str(107300)))
+ if i32(46) != int32(_sqlite3LogEst(tls, uint64(i32(25)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132809), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105931)))
crt.X__builtin_abort(tls)
}
}()
- _i = i32(0)
-_2:
- if _i >= (_pMaskSet.X0) {
- goto _5
+ _9_i = i32(0)
+_39:
+ if _9_i >= (int32(_pNew.X10) - i32(1)) {
+ goto _42
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[64]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pMaskSet))+uintptr(4 /* X1 */))))) + 4*uintptr(_i)))) != _iCursor {
- goto _6
+ if ((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_9_i)))) != nil) && ((*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_9_i)))).X0) == _8_pExpr) {
+ _3_nIn = i32(0)
}
- return u64(1) << uint(_i)
-
-_6:
- _i += 1
- goto _2
-
-_5:
- return uint64(i32(0))
-}
-
-var _sqlite3WhereGetMaskØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereGetMaskØ00__func__Ø000[0], str(107336), 20)
-}
-
-func _sqlite3WhereExprAnalyze(tls *crt.TLS, _pTabList *XSrcList, _pWC *XWhereClause) { // sqlite3.c:130338:1
- var _i int32 // sqlite3.c:130342:7
- _ = _i
- _i = (_pWC.X3) - i32(1)
-_0:
- if _i < i32(0) {
- goto _3
+ _9_i += 1
+ goto _39
+_42:
+ goto _45
+_36:
+ if func() int32 {
+ if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pExpr)) + uintptr(20 /* X6 */)))))) != nil) && ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pExpr)) + uintptr(20 /* X6 */)))))).X0) != 0 {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132819), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 {
+ _3_nIn = int32(_sqlite3LogEst(tls, uint64((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pExpr)) + uintptr(20 /* X6 */)))))).X0)))
+ func() {
+ if _3_nIn <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132822), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105953)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _exprAnalyze(tls, _pTabList, _pWC, _i)
- _i -= 1
- goto _0
-
-_3:
-}
-
-func _exprAnalyze(tls *crt.TLS, _pSrc *XSrcList, _pWC *XWhereClause, _idxTerm int32) { // sqlite3.c:129838:1
- var _pWInfo *XWhereInfo // sqlite3.c:129843:13
- _ = _pWInfo
- var _pTerm *XWhereTerm // sqlite3.c:129844:13
- _ = _pTerm
- var _pMaskSet *XWhereMaskSet // sqlite3.c:129845:16
- _ = _pMaskSet
- var _pExpr *XExpr // sqlite3.c:129846:8
- _ = _pExpr
- var _prereqLeft uint64 // sqlite3.c:129847:11
- _ = _prereqLeft
- var _prereqAll uint64 // sqlite3.c:129848:11
- _ = _prereqAll
- var _extraRight uint64 // sqlite3.c:129849:11
- _ = _extraRight
- var _pStr1 *XExpr // sqlite3.c:129850:8
- _ = _pStr1
- var _isComplete int32 // sqlite3.c:129851:7
- _ = _isComplete
- var _noCase int32 // sqlite3.c:129852:7
- _ = _noCase
- var _op int32 // sqlite3.c:129853:7
- _ = _op
- var _pParse *XParse // sqlite3.c:129854:9
- _ = _pParse
- var _db *Xsqlite3 // sqlite3.c:129855:11
- _ = _db
- var _eOp2 uint8 // sqlite3.c:129856:17
- _ = _eOp2
- var _nLeft int32 // sqlite3.c:129857:7
- _ = _nLeft
- var _7_x uint64 // sqlite3.c:129883:13
- _ = _7_x
- var _9_aiCurCol [2]int32 // sqlite3.c:129897:9
- _ = _9_aiCurCol
- var _9_pLeft *XExpr // sqlite3.c:129898:10
- _ = _9_pLeft
- var _9_pRight *XExpr // sqlite3.c:129899:10
- _ = _9_pRight
- var _9_opMask uint16 // sqlite3.c:129900:9
- _ = _9_opMask
- var _12_pNew *XWhereTerm // sqlite3.c:129917:17
- _ = _12_pNew
- var _12_pDup *XExpr // sqlite3.c:129918:12
- _ = _12_pDup
- var _12_eExtraOp uint16 // sqlite3.c:129919:11
- _ = _12_eExtraOp
- var _13_idxNew int32 // sqlite3.c:129922:13
- _ = _13_idxNew
- var _17_pList *XExprList // sqlite3.c:129971:14
- _ = _17_pList
- var _17_i int32 // sqlite3.c:129972:9
- _ = _17_i
- var _18_pNewExpr *XExpr // sqlite3.c:129977:12
- _ = _18_pNewExpr
- var _18_idxNew int32 // sqlite3.c:129978:11
- _ = _18_idxNew
- var _20_pLeft *XExpr // sqlite3.c:130020:10
- _ = _20_pLeft
- var _20_pStr2 *XExpr // sqlite3.c:130021:10
- _ = _20_pStr2
- var _20_pNewExpr1 *XExpr // sqlite3.c:130022:10
- _ = _20_pNewExpr1
- var _20_pNewExpr2 *XExpr // sqlite3.c:130023:10
- _ = _20_pNewExpr2
- var _20_idxNew1 int32 // sqlite3.c:130024:9
- _ = _20_idxNew1
- var _20_idxNew2 int32 // sqlite3.c:130025:9
- _ = _20_idxNew2
- var _20_zCollSeqName *int8 // sqlite3.c:130026:16
- _ = _20_zCollSeqName
- var _20_wtFlags uint16 // sqlite3.c:130027:15
- _ = _20_wtFlags
- var _21_i int32 // sqlite3.c:130037:11
- _ = _21_i
- var _21_c int8 // sqlite3.c:130038:12
- _ = _21_c
- var _23_c uint8 // sqlite3.c:130047:10
- _ = _23_c
- var _23_pC *uint8 // sqlite3.c:130047:13
- _ = _23_pC
- var _26_idxNew int32 // sqlite3.c:130095:9
- _ = _26_idxNew
- var _26_pRight *XExpr // sqlite3.c:130096:10
- _ = _26_pRight
- var _26_pLeft *XExpr // sqlite3.c:130096:19
- _ = _26_pLeft
- var _26_pNewTerm *XWhereTerm // sqlite3.c:130097:15
- _ = _26_pNewTerm
- var _26_prereqColumn uint64 // sqlite3.c:130098:13
- _ = _26_prereqColumn
- var _26_prereqExpr uint64 // sqlite3.c:130098:27
- _ = _26_prereqExpr
- var _27_pNewExpr *XExpr // sqlite3.c:130105:12
- _ = _27_pNewExpr
- var _28_i int32 // sqlite3.c:130138:9
- _ = _28_i
- var _29_idxNew int32 // sqlite3.c:130140:11
- _ = _29_idxNew
- var _29_pNew *XExpr // sqlite3.c:130141:12
- _ = _29_pNew
- var _29_pLeft *XExpr // sqlite3.c:130142:12
- _ = _29_pLeft
- var _29_pRight *XExpr // sqlite3.c:130143:12
- _ = _29_pRight
- var _30_i int32 // sqlite3.c:130167:9
- _ = _30_i
- var _31_idxNew int32 // sqlite3.c:130169:11
- _ = _31_idxNew
- _pWInfo = (*XWhereInfo)(_pWC.X0)
- _extraRight = u64(0)
- _pStr1 = nil
- _isComplete = i32(0)
- _noCase = i32(0)
- _pParse = (*XParse)(_pWInfo.X0)
- _db = (*Xsqlite3)(_pParse.X0)
- if (_db.X17) == 0 {
- goto _0
+_45:
+ goto _52
+_35:
+ if (int32(_3_eOp) & i32(130)) == 0 {
+ goto _53
+ }
+ _12_iCol = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X1)) + 2*uintptr(_saved_nEq))))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(1))
+ sink5 = *p
}
- return
-
-_0:
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- _pMaskSet = (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(484 /* X23 */)))
- _pExpr = (*XExpr)(_pTerm.X0)
func() {
- if int32(_pExpr.X0) == i32(24) || int32(_pExpr.X0) == i32(94) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129865), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(107356)))
+ if int32(_saved_nEq) != int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132828), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105959)))
crt.X__builtin_abort(tls)
}
}()
- _prereqLeft = _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pExpr.X4))
- _op = int32(_pExpr.X0)
- if _op != i32(74) {
- goto _4
+ if _12_iCol != i32(-1) && (_12_iCol <= i32(0) || int32(_nInMul) != i32(0) || int32(_saved_nEq) != (int32(_pProbe.X13)-i32(1))) {
+ goto _59
}
-
- func() {
- if (*XExpr)(_pExpr.X5) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129869), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(107400)))
- crt.X__builtin_abort(tls)
+ if (_12_iCol >= i32(0)) && (int32((uint32((_pProbe.X16)>>uint(i32(3)))<>uint(i32(31))) == i32(0)) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(65536))
+ sink5 = *p
}
- }()
- if _sqlite3ExprCheckIN(tls, _pParse, _pExpr) == 0 {
- goto _7
+ goto _62
}
- return
-
-_7:
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _8
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(4096))
+ sink5 = *p
}
-
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = _exprSelectUsage(tls, _pMaskSet, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
- goto _9
-
-_8:
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))))
-_9:
- goto _10
-
-_4:
- if _op != i32(75) {
- goto _11
+_62:
+_59:
+ goto _63
+_53:
+ if (int32(_3_eOp) & i32(256)) != 0 {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(8))
+ sink5 = *p
+ }
+ goto _65
}
-
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = uint64(i32(0))
- goto _12
-
-_11:
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */))) = _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pExpr.X5))
-_12:
-_10:
- _prereqAll = _sqlite3WhereExprUsage(tls, _pMaskSet, _pExpr)
- if ((_pExpr.X2) & uint32(i32(1))) == uint32(i32(0)) {
- goto _13
+ if (int32(_3_eOp) & i32(36)) == 0 {
+ goto _66
}
-
- _7_x = _sqlite3WhereGetMask(tls, _pMaskSet, int32(_pExpr.X11))
{
- p := &_prereqAll
- *p = (*p) | _7_x
- sink15 = *p
- }
- _extraRight = _7_x - uint64(i32(1))
- if (_prereqAll >> uint(i32(1))) < _7_x {
- goto _14
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(34))
+ sink5 = *p
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(107420))
- return
-
-_14:
-_13:
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(40 /* X12 */))) = _prereqAll
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(20 /* X8 */))) = i32(-1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(16 /* X7 */))) = i32(-1)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(i32(0))
- if _allowedOp(tls, _op) == 0 {
- goto _15
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = uint16(_whereRangeVectorLen(tls, _pParse, _pSrc.X11, _pProbe, int32(_saved_nEq), _pTerm))
+ _pBtm = _pTerm
+ _pTop = nil
+ if (int32(_pTerm.X3) & i32(256)) == 0 {
+ goto _67
}
-
- _9_pLeft = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pExpr.X4))
- _9_pRight = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pExpr.X5))
- _9_opMask = uint16(func() int32 {
- if ((_pTerm.X11) & _prereqLeft) == uint64(i32(0)) {
- return i32(8191)
+ _pTop = (*XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + 48*uintptr(i32(1))))
+ func() {
+ if int32((uintptr(unsafe.Pointer(_pTop))-uintptr(unsafe.Pointer((*XWhereTerm)((*XWhereClause)(_pTerm.X1).X5))))/48) >= ((*XWhereClause)(_pTerm.X1).X3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132853), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(105988)))
+ crt.X__builtin_abort(tls)
}
- return i32(2048)
- }())
- if (_pTerm.X9) <= i32(0) {
- goto _18
- }
-
+ }()
func() {
- if _op != i32(74) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129903), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(107464)))
+ if (int32(_pTop.X3) & i32(256)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132854), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106029)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(_9_pLeft.X0) != i32(158) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129904), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(107476)))
+ if int32(_pTop.X4) != i32(16) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132855), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106058)))
crt.X__builtin_abort(tls)
}
}()
- _9_pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pLeft)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr((_pTerm.X9)-i32(1)))).X0)
-_18:
- if _exprMightBeIndexed(tls, _pSrc, _prereqLeft, (*int32)(unsafe.Pointer(&_9_aiCurCol)), _9_pLeft, _op) == 0 {
- goto _23
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(20 /* X8 */))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(0))))
- *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(1))))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(int32(_operatorMask(tls, _op)) & int32(_9_opMask))
-_23:
- if _op != i32(72) {
- goto _24
+ if _whereLoopResize(tls, _db, _pNew, int32(_pNew.X10)+i32(1)) != 0 {
+ goto _16
}
-
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(postInc14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(44 /* X10 */))), uint16(1))))) = _pTop
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(2048))
- sink12 = *p
- }
-_24:
- if _9_pRight == nil || _exprMightBeIndexed(tls, _pSrc, _pTerm.X11, (*int32)(unsafe.Pointer(&_9_aiCurCol)), _9_pRight, _op) == 0 {
- goto _26
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(16))
+ sink5 = *p
}
-
- _12_eExtraOp = u16(0)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = uint16(i32(1))
+_67:
+ goto _75
+_66:
func() {
- if (_pTerm.X9) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129920), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(107500)))
+ if (int32(_3_eOp) & i32(24)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132862), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106081)))
crt.X__builtin_abort(tls)
}
}()
- if (_pTerm.X8) < i32(0) {
- goto _29
- }
-
- _12_pDup = _sqlite3ExprDup(tls, _db, _pExpr, i32(0))
- if (_db.X17) == 0 {
- goto _30
- }
-
- _sqlite3ExprDelete(tls, _db, _12_pDup)
- return
-
-_30:
- _13_idxNew = _whereClauseInsert(tls, _pWC, _12_pDup, uint16(i32(3)))
- if _13_idxNew != i32(0) {
- goto _31
- }
- return
-
-_31:
- _12_pNew = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_13_idxNew)))
- _markTermAsChild(tls, _pWC, _13_idxNew, _idxTerm)
- if _op != i32(72) {
- goto _32
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(2048))
- sink12 = *p
- }
-_32:
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(8))
- sink12 = *p
- }
- if _termIsEquivalence(tls, _pParse, _12_pDup) == 0 {
- goto _33
- }
-
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */)))
- *p = uint16(int32(*p) | i32(2048))
- sink12 = *p
- }
- _12_eExtraOp = uint16(i32(2048))
-_33:
- goto _34
-
-_29:
- _12_pDup = _pExpr
- _12_pNew = _pTerm
-_34:
- _exprCommute(tls, _pParse, _12_pDup)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(20 /* X8 */))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(0))))
- *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(28 /* X10 */))))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_9_aiCurCol)) + 4*uintptr(i32(1))))
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(32 /* X11 */))) = _prereqLeft | _extraRight
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(40 /* X12 */))) = _prereqAll
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pNew)) + uintptr(12 /* X4 */))) = uint16((int32(_operatorMask(tls, int32(_12_pDup.X0))) + int32(_12_eExtraOp)) & int32(_9_opMask))
-_26:
- goto _35
-
-_15:
- if int32(_pExpr.X0) != i32(73) || int32(_pWC.X2) != i32(71) {
- goto _37
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(18))
+ sink5 = *p
}
-
- _17_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = uint16(_whereRangeVectorLen(tls, _pParse, _pSrc.X11, _pProbe, int32(_saved_nEq), _pTerm))
+ _pTop = _pTerm
+ _pBtm = func() *XWhereTerm {
+ if ((_pNew.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ return (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(int32(_pNew.X10)-i32(2)))))
+ }
+ return nil
+ }()
+_75:
+_65:
+_63:
+_52:
func() {
- if _17_pList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129974), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(92252)))
+ if int32(_pNew.X7) != int32(_saved_nOut) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132879), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106101)))
crt.X__builtin_abort(tls)
}
}()
+ if ((_pNew.X9) & uint32(i32(2))) != 0 {
+ _whereRangeScanEst(tls, _pParse, _pBuilder, _pBtm, _pTop, _pNew)
+ goto _83
+ }
+ _21_nEq = int32(preInc14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */)))))))+uintptr(0 /* X0 */))), uint16(1)))
func() {
- if (_17_pList.X0) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129975), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(107520)))
+ if (int32(_3_eOp) & i32(387)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132886), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106124)))
crt.X__builtin_abort(tls)
}
}()
- _17_i = i32(0)
-_42:
- if _17_i >= i32(2) {
- goto _45
- }
-
- _18_pNewExpr = _sqlite3PExpr(tls, _pParse, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_exprAnalyzeØ00opsØ001)) + 1*uintptr(_17_i)))), _sqlite3ExprDup(tls, _db, (*XExpr)(_pExpr.X4), i32(0)), _sqlite3ExprDup(tls, _db, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_17_i))).X0), i32(0)))
- _transferJoinMarkings(tls, _18_pNewExpr, _pExpr)
- _18_idxNew = _whereClauseInsert(tls, _pWC, _18_pNewExpr, uint16(i32(3)))
- _exprAnalyze(tls, _pSrc, _pWC, _18_idxNew)
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- _markTermAsChild(tls, _pWC, _18_idxNew, _idxTerm)
- _17_i += 1
- goto _42
-
-_45:
- goto _46
-
-_37:
- if int32(_pExpr.X0) != i32(70) {
- goto _47
- }
-
func() {
- if int32(_pWC.X2) != i32(71) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129997), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeØ00__func__Ø000))), unsafe.Pointer(str(107536)))
+ if int32(_pNew.X7) != int32(_saved_nOut) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132888), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106101)))
crt.X__builtin_abort(tls)
}
}()
- _exprAnalyzeOrTerm(tls, _pSrc, _pWC, _idxTerm)
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
-_47:
-_46:
-_35:
- if int32(_pWC.X2) != i32(71) || _isLikeOrGlob(tls, _pParse, _pExpr, &_pStr1, &_isComplete, &_noCase) == 0 {
- goto _51
- }
-
- _20_wtFlags = u16(259)
- _20_pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
- _20_pStr2 = _sqlite3ExprDup(tls, _db, _pStr1, i32(0))
- if _noCase == 0 || ((*Xsqlite3)(_pParse.X0).X17) != 0 {
- goto _53
+ if (int32(_pTerm.X2) <= i32(0)) && (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X1)) + 2*uintptr(_saved_nEq)))) >= i32(0)) {
+ func() {
+ if (int32(_3_eOp)&i32(1)) == 0 && _3_nIn != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132890), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106160)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
+ *p = int16(int32(*p) + int32(_pTerm.X2))
+ sink18 = *p
+ }
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
+ *p = int16(int32(*p) - _3_nIn)
+ sink18 = *p
+ }
+ goto _93
}
-
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(1024))
- sink12 = *p
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
+ *p = int16(int32(*p) + (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(_21_nEq)))) - int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(_21_nEq-i32(1)))))))
+ sink18 = *p
}
- _21_i = i32(0)
-_54:
- if int32(store3(&_21_c, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pStr1)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_21_i))))) == i32(0) {
- goto _57
+ if (int32(_3_eOp) & i32(256)) != 0 {
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
+ *p = int16(int32(*p) + i32(10))
+ sink18 = *p
+ }
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pStr1)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_21_i))) = int8(int32(_21_c) & (^(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(_21_c))))) & i32(32))))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_20_pStr2)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_21_i))) = int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(_21_c)))))
- _21_i += 1
- goto _54
-
-_57:
-_53:
- if (_db.X17) != 0 {
- goto _58
+_93:
+_83:
+ _3_rCostIdx = int16((int32(_pNew.X7) + i32(1)) + ((i32(15) * int32(_pProbe.X12)) / int32((*XTable)(_pSrc.X4).X13)))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _rLogSize, _3_rCostIdx)
+ if ((_pNew.X9) & uint32(i32(320))) == uint32(i32(0)) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _pNew.X6, int16(int32(_pNew.X7)+i32(16)))
}
-
- _23_pC = (*uint8)(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_20_pStr2)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_20_pStr2)) + uintptr(8 /* X3 */))))))-i32(1))))))
- _23_c = *_23_pC
- if _noCase == 0 {
- goto _59
+ _3_nOutUnadjusted = _pNew.X7
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */)))
+ *p = int16(int32(*p) + (int32(_nInMul) + _3_nIn))
+ sink18 = *p
}
-
- if int32(_23_c) != i32(64) {
- goto _60
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
+ *p = int16(int32(*p) + (int32(_nInMul) + _3_nIn))
+ sink18 = *p
}
-
- _isComplete = i32(0)
-_60:
- _23_c = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(_23_c)))
-_59:
- *_23_pC = uint8(int32(_23_c) + i32(1))
-_58:
- _20_zCollSeqName = func() *int8 {
- if _noCase != 0 {
- return str(107552)
- }
- return str(38600)
- }()
- _20_pNewExpr1 = _sqlite3ExprDup(tls, _db, _20_pLeft, i32(0))
- _20_pNewExpr1 = _sqlite3PExpr(tls, _pParse, i32(82), _sqlite3ExprAddCollateString(tls, _pParse, _20_pNewExpr1, _20_zCollSeqName), _pStr1)
- _transferJoinMarkings(tls, _20_pNewExpr1, _pExpr)
- _20_idxNew1 = _whereClauseInsert(tls, _pWC, _20_pNewExpr1, _20_wtFlags)
- _exprAnalyze(tls, _pSrc, _pWC, _20_idxNew1)
- _20_pNewExpr2 = _sqlite3ExprDup(tls, _db, _20_pLeft, i32(0))
- _20_pNewExpr2 = _sqlite3PExpr(tls, _pParse, i32(81), _sqlite3ExprAddCollateString(tls, _pParse, _20_pNewExpr2, _20_zCollSeqName), _20_pStr2)
- _transferJoinMarkings(tls, _20_pNewExpr2, _pExpr)
- _20_idxNew2 = _whereClauseInsert(tls, _pWC, _20_pNewExpr2, _20_wtFlags)
- _exprAnalyze(tls, _pSrc, _pWC, _20_idxNew2)
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- if _isComplete == 0 {
- goto _63
+ _whereLoopOutputAdjust(tls, (*XWhereClause)(_pBuilder.X1), _pNew, _rSize)
+ _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
+ if ((_pNew.X9) & uint32(i32(2))) != 0 {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
+ goto _97
}
-
- _markTermAsChild(tls, _pWC, _20_idxNew1, _idxTerm)
- _markTermAsChild(tls, _pWC, _20_idxNew2, _idxTerm)
-_63:
-_51:
- if int32(_pWC.X2) != i32(71) || _isMatchOfColumn(tls, _pExpr, &_eOp2) == 0 {
- goto _65
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _3_nOutUnadjusted
+_97:
+ if (((_pNew.X9) & uint32(i32(16))) == uint32(i32(0))) && (int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X0) < int32(_pProbe.X14)) {
+ _whereLoopAddBtreeIndex(tls, _pBuilder, _pSrc, _pProbe, int16(int32(_nInMul)+_3_nIn))
}
-
- _26_pRight = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
- _26_pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
- _26_prereqExpr = _sqlite3WhereExprUsage(tls, _pMaskSet, _26_pRight)
- _26_prereqColumn = _sqlite3WhereExprUsage(tls, _pMaskSet, _26_pLeft)
- if (_26_prereqExpr & _26_prereqColumn) != uint64(i32(0)) {
- goto _66
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
+_13:
+ _pTerm = _whereScanNext(tls, &_scan)
+ goto _12
+_16:
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _saved_prereq
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _saved_nEq
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = _saved_nBtm
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = _saved_nTop
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = _saved_nSkip
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = _saved_wsFlags
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = _saved_nLTerm
+ func() {
+ if i32(42) != int32(_sqlite3LogEst(tls, uint64(i32(18)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132985), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(106184)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((((int32(_saved_nEq) == int32(_saved_nSkip)) && ((int32(_saved_nEq) + i32(1)) < int32(_pProbe.X13))) && (int32((uint32((_pProbe.X16)>>uint(i32(6)))<>uint(i32(31))) == i32(0))) && (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(int32(_saved_nEq)+i32(1))))) >= i32(42))) && (store1(&_rc, _whereLoopResize(tls, _db, _pNew, int32(_pNew.X10)+i32(1))) == i32(0)) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) += 1
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) += 1
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(postInc14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(44 /* X10 */))), uint16(1))))) = nil
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(32768))
+ sink5 = *p
+ }
+ _30_nIter = int16(int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(_saved_nEq)))) - int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(int32(_saved_nEq)+i32(1))))))
+ {
+ p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
+ *p = int16(int32(*p) - int32(_30_nIter))
+ sink18 = *p
+ }
+ {
+ p := &_30_nIter
+ *p = int16(int32(*p) + i32(5))
+ sink18 = *p
+ }
+ _whereLoopAddBtreeIndex(tls, _pBuilder, _pSrc, _pProbe, int16(int32(_30_nIter)+int32(_nInMul)))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _saved_nEq
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = _saved_nSkip
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = _saved_wsFlags
}
+ return _rc
- _27_pNewExpr = _sqlite3PExpr(tls, _pParse, i32(50), nil, _sqlite3ExprDup(tls, _db, _26_pRight, i32(0)))
- _26_idxNew = _whereClauseInsert(tls, _pWC, _27_pNewExpr, uint16(i32(3)))
- _26_pNewTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_26_idxNew)))
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(32 /* X11 */))) = _26_prereqExpr
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(20 /* X8 */))) = _26_pLeft.X8
- *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(28 /* X10 */))))) = int32(_26_pLeft.X9)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(12 /* X4 */))) = uint16(i32(64))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(15 /* X6 */))) = _eOp2
- _markTermAsChild(tls, _pWC, _26_idxNew, _idxTerm)
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(8))
- sink12 = *p
+ _ = _scan
+ panic(0)
+}
+
+var _whereLoopAddBtreeIndexØ00__func__Ø000 [23]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_whereLoopAddBtreeIndexØ00__func__Ø000[0], str(106206), 23)
+}
+
+// Term pTerm is a vector range comparison operation. The first comparison
+// in the vector can be optimized using column nEq of the index. This
+// function returns the total number of vector elements that can be used
+// as part of the range comparison.
+//
+// For example, if the query is:
+//
+// WHERE a = ? AND (b, c, d) > (?, ?, ?)
+//
+// and the index:
+//
+// CREATE INDEX ... ON (a, b, c, d, e)
+//
+// then this function would be invoked with nEq=1. The value returned in
+// this case is 3.
+func _whereRangeVectorLen(tls *crt.TLS, _pParse *XParse, _iCur int32, _pIdx *XIndex, _nEq int32, _pTerm *XWhereTerm) (r0 int32) {
+ var _nCmp, _i int32
+ var _1_aff, _1_idxaff int8
+ var _1_pLhs, _1_pRhs *XExpr
+ var _1_pColl *XCollSeq
+ _nCmp = _sqlite3ExprVectorSize(tls, (*XExpr)((*XExpr)(_pTerm.X0).X4))
+ _nCmp = func() int32 {
+ if _nCmp < (int32(_pIdx.X14) - _nEq) {
+ return _nCmp
+ }
+ return (int32(_pIdx.X14) - _nEq)
+ }()
+ _i = i32(1)
+_2:
+ if _i >= _nCmp {
+ goto _5
}
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_pNewTerm)) + uintptr(40 /* X12 */))) = _pTerm.X12
-_66:
-_65:
- if int32(_pWC.X2) != i32(71) || int32(_pExpr.X0) != i32(78) && int32(_pExpr.X0) != i32(72) || store1(&_nLeft, _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4))) <= i32(1) || _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X5)) != _nLeft || (((*XExpr)(_pExpr.X4).X2)&uint32(i32(2048))) != uint32(i32(0)) && (((*XExpr)(_pExpr.X5).X2)&uint32(i32(2048))) != uint32(i32(0)) {
- goto _73
+ _1_idxaff = int8(i32(0))
+ _1_pLhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((*XExpr)(_pTerm.X0).X4) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ _1_pRhs = (*XExpr)((*XExpr)(_pTerm.X0).X5)
+ if ((_1_pRhs.X2) & uint32(i32(2048))) != 0 {
+ _1_pRhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pRhs)) + uintptr(20 /* X6 */)))))).X0)+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ goto _7
}
-
- _28_i = i32(0)
-_74:
- if _28_i >= _nLeft {
- goto _77
+ _1_pRhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pRhs)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+_7:
+ if (((int32(_1_pLhs.X0) != i32(152)) || ((_1_pLhs.X8) != _iCur)) || (int32(_1_pLhs.X9) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i+_nEq)))))) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_i+_nEq)))) != int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_nEq))))) {
+ goto _5
}
-
- _29_pLeft = _sqlite3ExprForVectorField(tls, _pParse, (*XExpr)(_pExpr.X4), _28_i)
- _29_pRight = _sqlite3ExprForVectorField(tls, _pParse, (*XExpr)(_pExpr.X5), _28_i)
- _29_pNew = _sqlite3PExpr(tls, _pParse, int32(_pExpr.X0), _29_pLeft, _29_pRight)
- _transferJoinMarkings(tls, _29_pNew, _pExpr)
- _29_idxNew = _whereClauseInsert(tls, _pWC, _29_pNew, uint16(i32(1)))
- _exprAnalyze(tls, _pSrc, _pWC, _29_idxNew)
- _28_i += 1
- goto _74
-
-_77:
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */))) = uint16(i32(6))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(i32(0))
-_73:
- if int32(_pWC.X2) != i32(71) || int32(_pExpr.X0) != i32(74) || (_pTerm.X9) != i32(0) || int32((*XExpr)(_pExpr.X4).X0) != i32(158) || (*XSelect)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X13) != nil {
- goto _82
+ _1_aff = _sqlite3CompareAffinity(tls, _1_pRhs, _sqlite3ExprAffinity(tls, _1_pLhs))
+ _1_idxaff = _sqlite3TableColumnAffinity(tls, (*XTable)(_pIdx.X3), int32(_1_pLhs.X9))
+ if int32(_1_aff) != int32(_1_idxaff) {
+ goto _5
}
-
- _30_i = i32(0)
-_83:
- if _30_i >= _sqlite3ExprVectorSize(tls, (*XExpr)(_pExpr.X4)) {
- goto _86
+ _1_pColl = _sqlite3BinaryCompareCollSeq(tls, _pParse, _1_pLhs, _1_pRhs)
+ if _1_pColl == nil {
+ goto _5
}
-
- _31_idxNew = _whereClauseInsert(tls, _pWC, _pExpr, uint16(i32(2)))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_31_idxNew))))) + uintptr(24 /* X9 */))) = _30_i + i32(1)
- _exprAnalyze(tls, _pSrc, _pWC, _31_idxNew)
- _markTermAsChild(tls, _pWC, _31_idxNew, _idxTerm)
- _30_i += 1
- goto _83
-
-_86:
-_82:
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- {
- p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(32 /* X11 */)))
- *p = (*p) | _extraRight
- sink15 = *p
+ if _sqlite3StrICmp(tls, _1_pColl.X0, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_i+_nEq)))) != 0 {
+ goto _5
}
+ _i += 1
+ goto _2
+_5:
+ return _i
}
-var _exprAnalyzeØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_exprAnalyzeØ00__func__Ø000[0], str(107560), 12)
-}
-
-func _sqlite3WhereExprUsage(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _p *XExpr) (r0 uint64) { // sqlite3.c:130301:1
- var _mask uint64 // sqlite3.c:130302:11
- _ = _mask
- if _p != nil {
- goto _0
- }
- return uint64(i32(0))
-
-_0:
- if int32(_p.X0) != i32(152) {
- goto _1
- }
- return _sqlite3WhereGetMask(tls, _pMaskSet, _p.X8)
+// This function is used to estimate the number of rows that will be visited
+// by scanning an index for a range of values. The range may have an upper
+// bound, a lower bound, or both. The WHERE clause terms that set the upper
+// and lower bounds are represented by pLower and pUpper respectively. For
+// example, assuming that index p is on t1(a):
+//
+// ... FROM t1 WHERE a > ? AND a < ? ...
+// |_____| |_____|
+// | |
+// pLower pUpper
+//
+// If either of the upper or lower bound is not present, then NULL is passed in
+// place of the corresponding WhereTerm.
+//
+// The value in (pBuilder->pNew->u.btree.nEq) is the number of the index
+// column subject to the range constraint. Or, equivalently, the number of
+// equality constraints optimized by the proposed index scan. For example,
+// assuming index p is on t1(a, b), and the SQL query is:
+//
+// ... FROM t1 WHERE a = ? AND b > ? AND b < ? ...
+//
+// then nEq is set to 1 (as the range restricted column, b, is the second
+// left-most column of the index). Or, if the query is:
+//
+// ... FROM t1 WHERE a > ? AND a < ? ...
+//
+// then nEq is set to 0.
+//
+// When this function is called, *pnOut is set to the sqlite3LogEst() of the
+// number of rows that the index scan is expected to visit without
+// considering the range constraints. If nEq is 0, then *pnOut is the number of
+// rows in the index. Assuming no error occurs, *pnOut is adjusted (reduced)
+// to account for the range constraints pLower and pUpper.
+//
+// In the absence of sqlite_stat4 ANALYZE data, or if such data cannot be
+// used, a single range inequality reduces the search space by a factor of 4.
+// and a pair of constraints (x>? AND x) reduces the expected number of
+// rows visited by a factor of 64.
+func _whereRangeScanEst(tls *crt.TLS, _pParse *XParse, _pBuilder *XWhereLoopBuilder, _pLower *XWhereTerm, _pUpper *XWhereTerm, _pLoop *XWhereLoop) (r0 int32) {
+ var _nNew int16
+ var _rc, _nOut int32
+ _rc = i32(0)
+ _nOut = int32(_pLoop.X7)
-_1:
- _mask = func() uint64 {
- if int32(_p.X0) == i32(160) {
- return _sqlite3WhereGetMask(tls, _pMaskSet, _p.X8)
+ func() {
+ if _pLower == nil && _pUpper == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131911), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereRangeScanEstØ00__func__Ø000))), unsafe.Pointer(str(106229)))
+ crt.X__builtin_abort(tls)
}
- return uint64(i32(0))
}()
func() {
- if ((_p.X2) & uint32(i32(16384))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130308), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExprUsageØ00__func__Ø000))), unsafe.Pointer(str(107572)))
+ if _pUpper != nil && (int32(_pUpper.X3)&i32(0)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131913), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereRangeScanEstØ00__func__Ø000))), unsafe.Pointer(str(106246)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExpr)(_p.X5) == nil {
- goto _6
+ _nNew = _whereRangeAdjust(tls, _pLower, int16(_nOut))
+ _nNew = _whereRangeAdjust(tls, _pUpper, _nNew)
+ if (((_pLower != nil) && (int32(_pLower.X2) > i32(0))) && (_pUpper != nil)) && (int32(_pUpper.X2) > i32(0)) {
+ {
+ p := &_nNew
+ *p = int16(int32(*p) - i32(20))
+ sink18 = *p
+ }
}
-
{
- p := &_mask
- *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_p.X5))
- sink15 = *p
- }
-_6:
- if (*XExpr)(_p.X4) == nil {
- goto _7
+ p := &_nOut
+ *p = (*p) - (bool2int(_pLower != nil) + bool2int(_pUpper != nil))
+ sink1 = *p
}
-
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_p.X4))
- sink15 = *p
+ if int32(_nNew) < i32(10) {
+ _nNew = int16(i32(10))
}
-_7:
- if ((_p.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _8
+ if int32(_nNew) < _nOut {
+ _nOut = int32(_nNew)
}
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) = int16(_nOut)
+ return _rc
+}
- {
- p := &_mask
- *p = (*p) | _exprSelectUsage(tls, _pMaskSet, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
- sink15 = *p
- }
- goto _9
+var _whereRangeScanEstØ00__func__Ø000 [18]int8
-_8:
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))) == nil {
- goto _10
- }
+func init() {
+ crt.Xstrncpy(nil, &_whereRangeScanEstØ00__func__Ø000[0], str(106293), 18)
+}
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */)))))))
- sink15 = *p
+// If it is not NULL, pTerm is a term that provides an upper or lower
+// bound on a range scan. Without considering pTerm, it is estimated
+// that the scan will visit nNew rows. This function returns the number
+// estimated to be visited after taking pTerm into account.
+//
+// If the user explicitly specified a likelihood() value for this term,
+// then the return value is the likelihood multiplied by the number of
+// input rows. Otherwise, this function assumes that an "IS NOT NULL" term
+// has a likelihood of 0.50, and any other term a likelihood of 0.25.
+func _whereRangeAdjust(tls *crt.TLS, _pTerm *XWhereTerm, _nNew int16) (r0 int16) {
+ var _nRet int16
+ _nRet = _nNew
+ if _pTerm == nil {
+ goto _0
}
-_10:
-_9:
- r0 = _mask
- return
+ if int32(_pTerm.X2) <= i32(0) {
+ {
+ p := &_nRet
+ *p = int16(int32(*p) + int32(_pTerm.X2))
+ sink18 = *p
+ }
+ goto _2
+ }
+ if (int32(_pTerm.X3) & i32(0)) == i32(0) {
+ {
+ p := &_nRet
+ *p = int16(int32(*p) - i32(20))
+ sink18 = *p
+ }
+ func() {
+ if i32(20) != int32(_sqlite3LogEst(tls, uint64(i32(4)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131610), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereRangeAdjustØ00__func__Ø000))), unsafe.Pointer(str(106311)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ }
+_2:
+_0:
+ return _nRet
}
-var _sqlite3WhereExprUsageØ00__func__Ø000 [22]int8 // -
+var _whereRangeAdjustØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereExprUsageØ00__func__Ø000[0], str(107608), 22)
+ crt.Xstrncpy(nil, &_whereRangeAdjustØ00__func__Ø000[0], str(106332), 17)
}
-func _exprSelectUsage(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _pS *XSelect) (r0 uint64) { // sqlite3.c:129735:1
- var _mask uint64 // sqlite3.c:129736:11
- _ = _mask
- var _1_pSrc *XSrcList // sqlite3.c:129738:13
- _ = _1_pSrc
- var _2_i int32 // sqlite3.c:129745:11
- _ = _2_i
- _mask = u64(0)
+// Add WhereLoop entries to handle OR terms. This works for either
+// btrees or virtual tables.
+func _whereLoopAddOr(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64, _mUnusable uint64) (r0 int32) {
+ var _rc, _iCur, _2_once, _2_i, _2_j int32
+ var _pItem *TSrcList_item
+ var _pWInfo *XWhereInfo
+ var _tempWC XWhereClause
+ var _pNew *XWhereLoop
+ var _pTerm, _pWCEnd, _2_pOrWCEnd, _2_pOrTerm *XWhereTerm
+ var _pWC, _2_pOrWC *XWhereClause
+ var _sSum, _sCur, _12_sPrev XWhereOrSet
+ var _sSubBuild XWhereLoopBuilder
+ _pWInfo = (*XWhereInfo)(_pBuilder.X0)
+ _rc = i32(0)
+ _pWC = (*XWhereClause)(_pBuilder.X1)
+ _pWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(_pWC.X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X3)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
+ _pNew = (*XWhereLoop)(_pBuilder.X3)
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sSum), i32(0), u32(40))
+ _pItem = (*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))))) + uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(_pNew.X3)))))*uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(68)))))))))))
+ _iCur = _pItem.X11
+ _pTerm = (*XWhereTerm)(_pWC.X5)
_0:
- if _pS == nil {
- goto _1
+ if uintptr(unsafe.Pointer(_pTerm)) >= uintptr(unsafe.Pointer(_pWCEnd)) || _rc != i32(0) {
+ goto _4
}
-
- _1_pSrc = (*XSrcList)(_pS.X8)
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_pS.X0))
- sink15 = *p
+ if (int32(_pTerm.X4)&i32(512)) == i32(0) || (((*XWhereOrInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))).X1)&(_pNew.X1)) == uint64(i32(0)) {
+ goto _6
}
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_pS.X10))
- sink15 = *p
+ _2_pOrWC = (*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */)))
+ _2_pOrWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(_2_pOrWC.X5) + 48*uintptr(_2_pOrWC.X3)))
+ _2_once = i32(1)
+ _sSubBuild = *_pBuilder
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(8 /* X2 */))))) = nil
+ *(**XWhereOrSet)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(16 /* X4 */))))) = &_sCur
+ _2_pOrTerm = (*XWhereTerm)(_2_pOrWC.X5)
+_7:
+ if uintptr(unsafe.Pointer(_2_pOrTerm)) >= uintptr(unsafe.Pointer(_2_pOrWCEnd)) {
+ goto _10
}
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprListUsage(tls, _pMaskSet, (*XExprList)(_pS.X12))
- sink15 = *p
+ if (int32(_2_pOrTerm.X4) & i32(1024)) != i32(0) {
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(4 /* X1 */))))) = (*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pOrTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */)))
+ goto _12
}
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pS.X9))
- sink15 = *p
+ if (_2_pOrTerm.X8) == _iCur {
+ *(**XWhereInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(0 /* X0 */))))) = (*XWhereInfo)(_pWC.X0)
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(4 /* X1 */))))) = _pWC
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(8 /* X2 */))) = uint8(i32(71))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(12 /* X3 */))) = i32(1)
+ *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(20 /* X5 */))))) = _2_pOrTerm
+ *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(4 /* X1 */))))) = &_tempWC
+ goto _14
}
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)(_pS.X11))
- sink15 = *p
+ goto _8
+_14:
+_12:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur)) + uintptr(0 /* X0 */))) = uint16(i32(0))
+ if ((*XTable)(_pItem.X4).X16) != 0 {
+ _rc = _whereLoopAddVirtual(tls, &_sSubBuild, _mPrereq, _mUnusable)
+ goto _16
}
- if func() int32 {
- if _1_pSrc != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129744), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprSelectUsageØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ _rc = _whereLoopAddBtree(tls, &_sSubBuild, _mPrereq)
+_16:
+ if _rc == i32(0) {
+ _rc = _whereLoopAddOr(tls, &_sSubBuild, _mPrereq, _mUnusable)
+ }
+ func() {
+ if _rc != i32(0) && int32(_sCur.X0) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133724), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddOrØ00__func__Ø000))), unsafe.Pointer(str(106349)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _4
+ }
+ }()
+ if int32(_sCur.X0) == i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum)) + uintptr(0 /* X0 */))) = uint16(i32(0))
+ goto _10
}
-
- _2_i = i32(0)
-_5:
- if _2_i >= (_1_pSrc.X0) {
- goto _8
+ if _2_once != 0 {
+ _whereOrMove(tls, &_sSum, &_sCur)
+ _2_once = i32(0)
+ goto _24
}
-
- {
- p := &_mask
- *p = (*p) | _exprSelectUsage(tls, _pMaskSet, (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_2_i))).X5))
- sink15 = *p
+ _whereOrMove(tls, &_12_sPrev, &_sSum)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum)) + uintptr(0 /* X0 */))) = uint16(i32(0))
+ _2_i = i32(0)
+_25:
+ if _2_i >= int32(_12_sPrev.X0) {
+ goto _28
}
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(_2_i))).X12))
- sink15 = *p
+ _2_j = i32(0)
+_29:
+ if _2_j >= int32(_sCur.X0) {
+ goto _32
}
+ _whereOrInsert(tls, &_sSum, ((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sPrev))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X0)|((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur))+uintptr(4 /* X1 */)))))+12*uintptr(_2_j))).X0), _sqlite3LogEstAdd(tls, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sPrev))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X1, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur))+uintptr(4 /* X1 */)))))+12*uintptr(_2_j))).X1), _sqlite3LogEstAdd(tls, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sPrev))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X2, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur))+uintptr(4 /* X1 */)))))+12*uintptr(_2_j))).X2))
+ _2_j += 1
+ goto _29
+_32:
_2_i += 1
- goto _5
-
+ goto _25
+_28:
+_24:
_8:
-_4:
- _pS = (*XSelect)(_pS.X13)
- goto _0
-
-_1:
- return _mask
-}
-
-func _sqlite3WhereExprListUsage(tls *crt.TLS, _pMaskSet *XWhereMaskSet, _pList *XExprList) (r0 uint64) { // sqlite3.c:130318:1
- var _i int32 // sqlite3.c:130319:7
- _ = _i
- var _mask uint64 // sqlite3.c:130320:11
- _ = _mask
- _mask = u64(0)
- if _pList == nil {
- goto _0
- }
-
- _i = i32(0)
-_1:
- if _i >= (_pList.X0) {
- goto _4
- }
-
- {
- p := &_mask
- *p = (*p) | _sqlite3WhereExprUsage(tls, _pMaskSet, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- sink15 = *p
+ *(*uintptr)(unsafe.Pointer(&_2_pOrTerm)) += uintptr(48)
+ goto _7
+_10:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(1))
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(i32(0)))) = _pTerm
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(8192))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(i32(0))
+ crt.Xmemset(tls, (unsafe.Pointer)((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */)))), i32(0), u32(12))
+ _2_i = i32(0)
+_33:
+ if _rc != i32(0) || _2_i >= int32(_sSum.X0) {
+ goto _37
}
- _i += 1
- goto _1
-
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = int16(int32((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X1) + i32(1))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum))+uintptr(4 /* X1 */))))) + 12*uintptr(_2_i))).X2
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum))+uintptr(4 /* X1 */))))) + 12*uintptr(_2_i))).X0
+ _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
+ _2_i += 1
+ goto _33
+_37:
+_6:
+ *(*uintptr)(unsafe.Pointer(&_pTerm)) += uintptr(48)
+ goto _0
_4:
-_0:
- r0 = _mask
- return
+ return _rc
+
+ _ = _tempWC
+ _ = _sSubBuild
+ _ = _sSum
+ _ = _sCur
+ _ = _12_sPrev
+ panic(0)
}
-var _exprSelectUsageØ00__func__Ø000 [16]int8 // -
+var _whereLoopAddOrØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_exprSelectUsageØ00__func__Ø000[0], str(107632), 16)
+ crt.Xstrncpy(nil, &_whereLoopAddOrØ00__func__Ø000[0], str(106376), 15)
}
-func _allowedOp(tls *crt.TLS, _op int32) (r0 int32) { // sqlite3.c:129028:1
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- return bool2int((((_op == i32(74)) || ((_op >= i32(78)) && (_op <= i32(82)))) || (_op == i32(75))) || (_op == i32(72)))
+// Move the content of pSrc into pDest
+func _whereOrMove(tls *crt.TLS, _pDest *XWhereOrSet, _pSrc *XWhereOrSet) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(0 /* X0 */))) = _pSrc.X0
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest))+uintptr(4 /* X1 */)))), (unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(4 /* X1 */)))), uint32(_pDest.X0)*u32(12))
}
-func _exprMightBeIndexed(tls *crt.TLS, _pFrom *XSrcList, _mPrereq uint64, _aiCurCol *int32, _pExpr *XExpr, _op int32) (r0 int32) { // sqlite3.c:129793:1
- i32(0)
- i32(0)
- func() {
- if _op > i32(82) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129805), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprMightBeIndexedØ00__func__Ø000))), unsafe.Pointer(str(107648)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_pExpr.X0) != i32(158) || (_op < i32(79) || func() int32 {
- if _op <= i32(82) {
+// Given the list of WhereLoop objects at pWInfo->pLoops, this routine
+// attempts to find the lowest cost path that visits each WhereLoop
+// once. This path is then loaded into the pWInfo->a[].pWLoop fields.
+//
+// Assume that the total number of output rows that will need to be sorted
+// will be nRowEst (in the 10*log2 representation). Or, ignore sorting
+// costs if nRowEst==0.
+//
+// Return SQLITE_OK on success or SQLITE_NOMEM of a memory allocation
+// error occurs.
+func _wherePathSolver(tls *crt.TLS, _pWInfo *XWhereInfo, _nRowEst int16) (r0 int32) {
+ var _mxCost, _mxUnsorted, _8_nOut, _8_rCost, _8_rUnsorted int16
+ var _mxChoice, _nLoop, _iLoop, _ii, _jj, _mxI, _nOrderBy, _nTo, _nFrom, _nSpace, _29_rc, _37_rc, _39_nOrder int32
+ var _8_isOrdered int8
+ var _36_wsFlags uint32
+ var _8_maskNew, _8_revMask, _29_notUsed, _37_m, _39_revMask uint64
+ var _pSpace *int8
+ var _db *Xsqlite3
+ var _pParse *XParse
+ var _aSortCost *int16
+ var _pWLoop *XWhereLoop
+ var _28_pLevel *XWhereLevel
+ var _pX **XWhereLoop
+ var _aFrom, _aTo, _pFrom, _pTo *XWherePath
+ _mxI = i32(0)
+ _mxCost = i16(0)
+ _mxUnsorted = i16(0)
+ _aSortCost = nil
+ _pParse = (*XParse)(_pWInfo.X0)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _nLoop = int32(_pWInfo.X11)
+ _mxChoice = func() int32 {
+ if _nLoop <= i32(1) {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129806), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprMightBeIndexedØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
+ if _nLoop == i32(2) {
+ return i32(5)
+ }
+ return i32(10)
}()
- }() == 0) {
- goto _6
- }
-
- _pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
-_6:
- if int32(_pExpr.X0) != i32(152) {
- goto _7
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(0)))) = _pExpr.X8
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(1)))) = int32(_pExpr.X9)
- return i32(1)
-
-_7:
- if _mPrereq != uint64(i32(0)) {
+ }()
+ func() {
+ if _nLoop > ((*XSrcList)(_pWInfo.X1).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134255), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(106391)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((*XExprList)(_pWInfo.X2) == nil) || (int32(_nRowEst) == i32(0)) {
+ _nOrderBy = i32(0)
goto _8
}
- return i32(0)
-
+ _nOrderBy = (*XExprList)(_pWInfo.X2).X0
_8:
- if (_mPrereq & (_mPrereq - uint64(i32(1)))) == uint64(i32(0)) {
- goto _9
+ _nSpace = int32(((u32(28) + (u32(4) * uint32(_nLoop))) * uint32(_mxChoice)) * uint32(i32(2)))
+ {
+ p := &_nSpace
+ *p = int32(uint32(*p) + (u32(2) * uint32(_nOrderBy)))
+ sink1 = *p
}
- return i32(0)
-
-_9:
- return _exprMightBeIndexed2(tls, _pFrom, _mPrereq, _aiCurCol, _pExpr)
-}
-
-var _exprMightBeIndexedØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_exprMightBeIndexedØ00__func__Ø000[0], str(107660), 19)
-}
-
-func _exprMightBeIndexed2(tls *crt.TLS, _pFrom *XSrcList, _mPrereq uint64, _aiCurCol *int32, _pExpr *XExpr) (r0 int32) { // sqlite3.c:129769:1
- var _pIdx *XIndex // sqlite3.c:129775:9
- _ = _pIdx
- var _i int32 // sqlite3.c:129776:7
- _ = _i
- var _iCur int32 // sqlite3.c:129777:7
- _ = _iCur
- _i = i32(0)
-_0:
- if _mPrereq <= uint64(i32(1)) {
- goto _3
+ _pSpace = (*int8)(_sqlite3DbMallocRawNN(tls, _db, uint64(_nSpace)))
+ if _pSpace == nil {
+ return _sqlite3NomemError(tls, i32(134273))
}
-
+ _aTo = (*XWherePath)(unsafe.Pointer(_pSpace))
+ _aFrom = (*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer(_aTo)) + uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(_mxChoice)))))*uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(28)))))))))))
+ crt.Xmemset(tls, (unsafe.Pointer)(_aFrom), i32(0), u32(28))
+ _pX = (**XWhereLoop)(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer(_aFrom)) + uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(_mxChoice)))))*uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(28)))))))))))))
+ *func() **XWherePath { _ii = _mxChoice * i32(2); return &_pFrom }() = _aTo
+_10:
+ if _ii <= i32(0) {
+ goto _13
+ }
+ *(***XWhereLoop)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(24 /* X6 */))))) = _pX
{
- p := func() *uint64 { _i += 1; return &_mPrereq }()
- *p = (*p) >> uint(i32(1))
- sink15 = *p
+ p := func() ***XWhereLoop {
+ *(*uintptr)(unsafe.Pointer(func() **XWherePath { _ii -= 1; return &_pFrom }())) += uintptr(28)
+ return &_pX
+ }()
+ *p = (**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 4*uintptr(_nLoop)))
+ sink68 = *p
}
- goto _0
-
-_3:
- _iCur = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X11
- _pIdx = (*XIndex)((*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */))))) + 68*uintptr(_i))).X4).X2)
-_4:
- if _pIdx == nil {
- goto _7
+ goto _10
+_13:
+ if _nOrderBy != 0 {
+ _aSortCost = (*int16)(unsafe.Pointer(_pX))
+ crt.Xmemset(tls, (unsafe.Pointer)(_aSortCost), i32(0), u32(2)*uint32(_nOrderBy))
}
-
- if (*XExprList)(_pIdx.X10) != nil {
- goto _8
- }
-
- goto _5
-
-_8:
- _i = i32(0)
-_9:
- if _i >= int32(_pIdx.X13) {
- goto _12
- }
-
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) == i32(-2) {
- goto _13
- }
-
- goto _10
-
-_13:
- if _sqlite3ExprCompareSkip(tls, _pExpr, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), _iCur) != i32(0) {
- goto _14
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(0)))) = _iCur
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCurCol)) + 4*uintptr(i32(1)))) = i32(-2)
- return i32(1)
-
-_14:
-_10:
- _i += 1
- goto _9
-
-_12:
-_5:
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _4
-
-_7:
- return i32(0)
-}
-
-func _sqlite3ExprCompareSkip(tls *crt.TLS, _pA *XExpr, _pB *XExpr, _iTab int32) (r0 int32) { // sqlite3.c:95654:1
- return _sqlite3ExprCompare(tls, _sqlite3ExprSkipCollate(tls, _pA), _sqlite3ExprSkipCollate(tls, _pB), _iTab)
-}
-
-func _operatorMask(tls *crt.TLS, _op int32) (r0 uint16) { // sqlite3.c:129079:1
- var _c uint16 // sqlite3.c:129080:7
- _ = _c
func() {
- if _allowedOp(tls, _op) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129081), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107680)))
+ if _aSortCost != nil && (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSpace))+1*uintptr(_nSpace))) != (*int8)(unsafe.Pointer((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost))+2*uintptr(_nOrderBy))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134291), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(106421)))
crt.X__builtin_abort(tls)
}
}()
- if _op != i32(74) {
- goto _2
- }
-
- _c = uint16(i32(1))
- goto _3
-
-_2:
- if _op != i32(75) {
- goto _4
- }
-
- _c = uint16(i32(256))
- goto _5
-
-_4:
- if _op != i32(72) {
- goto _6
- }
-
- _c = uint16(i32(128))
- goto _7
-
-_6:
func() {
- if (i32(2) << uint(_op-i32(78))) >= i32(32767) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129089), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107696)))
+ if _aSortCost == nil && (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSpace))+1*uintptr(_nSpace))) != (*int8)(unsafe.Pointer(_pX)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134292), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(106482)))
crt.X__builtin_abort(tls)
}
}()
- _c = uint16(i32(2) << uint(_op-i32(78)))
-_7:
-_5:
-_3:
- func() {
- if _op == i32(75) && int32(_c) != i32(256) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129092), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107728)))
- crt.X__builtin_abort(tls)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(i32(0)))))) + uintptr(16 /* X2 */))) = int16(func() uint32 {
+ if (_pParse.X42) < uint32(i32(48)) {
+ return (_pParse.X42)
}
- }()
+ return uint32(i32(48))
+ }())
func() {
- if _op == i32(74) && int32(_c) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129093), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107760)))
+ if i32(48) != int32(_sqlite3LogEst(tls, uint64(i32(28)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134299), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(106525)))
crt.X__builtin_abort(tls)
}
}()
+ _nFrom = i32(1)
func() {
- if _op == i32(78) && int32(_c) != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129094), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107784)))
+ if int32((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(i32(0)))).X5) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134301), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(106547)))
crt.X__builtin_abort(tls)
}
}()
+ if _nOrderBy != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(i32(0)))))) + uintptr(22 /* X5 */))) = int8(func() int32 {
+ if _nLoop > i32(0) {
+ return i32(-1)
+ }
+ return _nOrderBy
+ }())
+ }
+ _iLoop = i32(0)
+_30:
+ if _iLoop >= _nLoop {
+ goto _33
+ }
+ _nTo = i32(0)
+ *func() **XWherePath { _ii = i32(0); return &_pFrom }() = _aFrom
+_34:
+ if _ii >= _nFrom {
+ goto _37
+ }
+ _pWLoop = (*XWhereLoop)(_pWInfo.X19)
+_38:
+ if _pWLoop == nil {
+ goto _41
+ }
+ _8_isOrdered = _pFrom.X5
+ _8_revMask = uint64(i32(0))
+ if ((_pWLoop.X0) & (^(_pFrom.X0))) != uint64(i32(0)) {
+ goto _39
+ }
+ if ((_pWLoop.X1) & (_pFrom.X0)) != uint64(i32(0)) {
+ goto _39
+ }
+ if (((_pWLoop.X9) & uint32(i32(16384))) != uint32(i32(0))) && (int32(_pFrom.X2) < i32(10)) {
+ func() {
+ if i32(10) != int32(_sqlite3LogEst(tls, uint64(i32(2)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134331), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(60363)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _39
+ }
+ _8_rUnsorted = _sqlite3LogEstAdd(tls, _pWLoop.X5, int16(int32(_pWLoop.X6)+int32(_pFrom.X2)))
+ _8_rUnsorted = _sqlite3LogEstAdd(tls, _8_rUnsorted, _pFrom.X4)
+ _8_nOut = int16(int32(_pFrom.X2) + int32(_pWLoop.X7))
+ _8_maskNew = (_pFrom.X0) | (_pWLoop.X1)
+ if int32(_8_isOrdered) < i32(0) {
+ _8_isOrdered = _wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X2), _pFrom, _pWInfo.X10, uint16(_iLoop), _pWLoop, &_8_revMask)
+ goto _49
+ }
+ _8_revMask = _pFrom.X1
+_49:
+ if int32(_8_isOrdered) < i32(0) || int32(_8_isOrdered) >= _nOrderBy {
+ goto _51
+ }
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost)) + 2*uintptr(_8_isOrdered)))) == i32(0) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost)) + 2*uintptr(_8_isOrdered))) = _whereSortingCost(tls, _pWInfo, _nRowEst, _nOrderBy, int32(_8_isOrdered))
+ }
+ _8_rCost = _sqlite3LogEstAdd(tls, _8_rUnsorted, *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost)) + 2*uintptr(_8_isOrdered))))
+ goto _53
+_51:
+ _8_rCost = _8_rUnsorted
+_53:
+ *func() **XWherePath { _jj = i32(0); return &_pTo }() = _aTo
+_54:
+ if _jj >= _nTo {
+ goto _57
+ }
+ if ((_pTo.X0) == _8_maskNew) && (((int32(_pTo.X5) ^ int32(_8_isOrdered)) & i32(128)) == i32(0)) {
+ goto _57
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XWherePath { _jj += 1; return &_pTo }())) += uintptr(28)
+ goto _54
+_57:
+ if _jj < _nTo {
+ goto _60
+ }
+ if (_nTo >= _mxChoice) && ((int32(_8_rCost) > int32(_mxCost)) || ((int32(_8_rCost) == int32(_mxCost)) && (int32(_8_rUnsorted) >= int32(_mxUnsorted)))) {
+ goto _39
+ }
+ if _nTo < _mxChoice {
+ _jj = postInc1(&_nTo, int32(1))
+ goto _66
+ }
+ _jj = _mxI
+_66:
+ _pTo = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(_jj)))
+ goto _67
+_60:
+ if (int32(_pTo.X3) < int32(_8_rCost)) || ((int32(_pTo.X3) == int32(_8_rCost)) && (int32(_pTo.X2) <= int32(_8_nOut))) {
+ goto _39
+ }
+_67:
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(0 /* X0 */))) = (_pFrom.X0) | (_pWLoop.X1)
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */))) = _8_revMask
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(16 /* X2 */))) = _8_nOut
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(18 /* X3 */))) = _8_rCost
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(20 /* X4 */))) = _8_rUnsorted
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(22 /* X5 */))) = _8_isOrdered
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo.X6), (unsafe.Pointer)(_pFrom.X6), u32(4)*uint32(_iLoop))
+ *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo.X6)) + 4*uintptr(_iLoop))) = _pWLoop
+ if _nTo < _mxChoice {
+ goto _71
+ }
+ _mxI = i32(0)
+ _mxCost = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(i32(0)))).X3
+ _mxUnsorted = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(i32(0)))).X2
+ *func() **XWherePath { _jj = i32(1); return &_pTo }() = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(i32(1))))
+_72:
+ if _jj >= _mxChoice {
+ goto _75
+ }
+ if (int32(_pTo.X3) > int32(_mxCost)) || ((int32(_pTo.X3) == int32(_mxCost)) && (int32(_pTo.X4) > int32(_mxUnsorted))) {
+ _mxCost = _pTo.X3
+ _mxUnsorted = _pTo.X4
+ _mxI = _jj
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XWherePath { _jj += 1; return &_pTo }())) += uintptr(28)
+ goto _72
+_75:
+_71:
+_39:
+ _pWLoop = (*XWhereLoop)(_pWLoop.X14)
+ goto _38
+_41:
+ *(*uintptr)(unsafe.Pointer(func() **XWherePath { _ii += 1; return &_pFrom }())) += uintptr(28)
+ goto _34
+_37:
+ _pFrom = _aTo
+ _aTo = _aFrom
+ _aFrom = _pFrom
+ _nFrom = _nTo
+ _iLoop += 1
+ goto _30
+_33:
+ if _nFrom == i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(106569))
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pSpace))
+ return i32(1)
+ }
+ _pFrom = _aFrom
+ _ii = i32(1)
+_80:
+ if _ii >= _nFrom {
+ goto _83
+ }
+ if int32(_pFrom.X3) > int32((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(_ii))).X3) {
+ _pFrom = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom)) + 28*uintptr(_ii)))
+ }
+ _ii += 1
+ goto _80
+_83:
func() {
- if _op == i32(81) && int32(_c) != i32(16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129095), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107808)))
+ if int32(_pWInfo.X11) != _nLoop {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134512), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(106587)))
crt.X__builtin_abort(tls)
}
}()
+ _iLoop = i32(0)
+_87:
+ if _iLoop >= _nLoop {
+ goto _90
+ }
+ _28_pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))))) + uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer(uintptr(_iLoop)))))*uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer(uintptr(76)))))))))))
+ *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pLevel)) + uintptr(64 /* X18 */))))) = store67(&_pWLoop, *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_iLoop))))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pLevel)) + uintptr(44 /* X11 */))) = _pWLoop.X3
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pLevel)) + uintptr(4 /* X1 */))) = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_28_pLevel.X11))).X11
+ _iLoop += 1
+ goto _87
+_90:
+ if (int32(_pWInfo.X10)&i32(256)) == i32(0) || (int32(_pWInfo.X10)&i32(128)) != i32(0) || int32(_pWInfo.X16) != i32(0) || _nRowEst == 0 {
+ goto _94
+ }
+ _29_rc = int32(_wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X3), _pFrom, uint16(i32(128)), uint16(_nLoop-i32(1)), *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1)))), &_29_notUsed))
+ if _29_rc == ((*XExprList)(_pWInfo.X3).X0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(2))
+ }
+_94:
+ if (*XExprList)(_pWInfo.X2) == nil {
+ goto _96
+ }
+ if (int32(_pWInfo.X10) & i32(128)) == 0 {
+ goto _97
+ }
+ if int32(_pFrom.X5) == ((*XExprList)(_pWInfo.X2).X0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(2))
+ }
+ goto _99
+_97:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = _pFrom.X5
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = _pFrom.X1
+ if int32(_pWInfo.X12) > i32(0) {
+ goto _100
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = int8(i32(0))
+ if _nLoop <= i32(0) {
+ goto _101
+ }
+ _36_wsFlags = (*(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1))))).X9
+ if (_36_wsFlags&uint32(i32(4096))) != uint32(i32(0)) || (_36_wsFlags&uint32(i32(260))) == uint32(i32(260)) {
+ goto _103
+ }
+ _37_m = u64(0)
+ _37_rc = int32(_wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X2), _pFrom, uint16(i32(2048)), uint16(_nLoop-i32(1)), *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1)))), &_37_m))
+ if _37_rc == ((*XExprList)(_pWInfo.X2).X0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(52 /* X17 */))) = uint8(i32(1))
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = _37_m
+ }
+_103:
+_101:
+_100:
+_99:
+ if (int32(_pWInfo.X10)&i32(512)) == 0 || int32(_pWInfo.X12) != ((*XExprList)(_pWInfo.X2).X0) || _nLoop <= i32(0) {
+ goto _107
+ }
+ _39_revMask = u64(0)
+ _39_nOrder = int32(_wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X2), _pFrom, uint16(i32(0)), uint16(_nLoop-i32(1)), *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1)))), &_39_revMask))
func() {
- if _op == i32(80) && int32(_c) != i32(8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129096), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107832)))
+ if int32(_pWInfo.X13) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134567), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(106609)))
crt.X__builtin_abort(tls)
}
}()
+ if _39_nOrder == ((*XExprList)(_pWInfo.X2).X0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(48 /* X13 */))) = uint8(i32(1))
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = _39_revMask
+ }
+_107:
+_96:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(72 /* X21 */))) = _pFrom.X2
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pSpace))
+ return i32(0)
+
+ _ = _29_notUsed
+ panic(0)
+}
+
+var _wherePathSolverØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_wherePathSolverØ00__func__Ø000[0], str(106627), 16)
+}
+
+// Examine a WherePath (with the addition of the extra WhereLoop of the 6th
+// parameters) to see if it outputs rows in the requested ORDER BY
+// (or GROUP BY) without requiring a separate sort operation. Return N:
+//
+// N>0: N terms of the ORDER BY clause are satisfied
+// N==0: No terms of the ORDER BY clause are satisfied
+// N<0: Unknown yet how many terms of ORDER BY might be satisfied.
+//
+// Note that processing for WHERE_GROUPBY and WHERE_DISTINCTBY is not as
+// strict. With GROUP BY and DISTINCT the only requirement is that
+// equivalent rows appear immediately adjacent to one another. GROUP BY
+// and DISTINCT do not require rows to appear in any particular order as long
+// as equivalent rows are grouped together. Thus for GROUP BY and DISTINCT
+// the pOrderBy terms can be matched in any order. With ORDER BY, the
+// pOrderBy terms must be matched in strict left-to-right order.
+func _wherePathSatisfiesOrderBy(tls *crt.TLS, _pWInfo *XWhereInfo, _pOrderBy *XExprList, _pPath *XWherePath, _wctrlFlags uint16, _nLoop uint16, _pLast *XWhereLoop, _pRevMask *uint64) (r0 int8) {
+ var _iLoop, _i, _j, _iCur, _iColumn int32
+ var _obSat, _obDone, _orderDistinctMask, _ready, _38_mTerm, _41_m uint64
+ var _9_z1, _9_z2 *int8
+ var _eqOpMask, _nKeyCol, _nColumn, _nOrderBy, _15_eOp uint16
+ var _revSet, _rev, _revIdx, _isOrderDistinct, _distinctColumns, _isMatch, _14_bOnce uint8
+ var _db *Xsqlite3
+ var _pOBExpr, _18_pX, _38_p *XExpr
+ var _pIndex *XIndex
+ var _pColl *XCollSeq
+ var _pLoop *XWhereLoop
+ var _pTerm *XWhereTerm
+ _pLoop = nil
+ _db = (*Xsqlite3)((*XParse)(_pWInfo.X0).X0)
+ _obSat = u64(0)
func() {
- if _op == i32(79) && int32(_c) != i32(4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129097), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107856)))
+ if _pOrderBy == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133901), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(106643)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if _op == i32(82) && int32(_c) != i32(32) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129098), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107880)))
- crt.X__builtin_abort(tls)
+ if (_nLoop != 0) && ((int32(_db.X13) & i32(128)) != i32(0)) {
+ return int8(i32(0))
+ }
+ _nOrderBy = uint16(_pOrderBy.X0)
+ if int32(_nOrderBy) > i32(63) {
+ return int8(i32(0))
+ }
+ _isOrderDistinct = uint8(i32(1))
+ _obDone = (u64(1) << uint(int32(_nOrderBy))) - uint64(i32(1))
+ _orderDistinctMask = uint64(i32(0))
+ _ready = uint64(i32(0))
+ _eqOpMask = uint16(i32(386))
+ if (int32(_wctrlFlags) & i32(2048)) != 0 {
+ {
+ p := &_eqOpMask
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
}
- }()
- func() {
- if _op == i32(72) && int32(_c) != i32(128) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129099), unsafe.Pointer((*int8)(unsafe.Pointer(&_operatorMaskØ00__func__Ø000))), unsafe.Pointer(str(107904)))
- crt.X__builtin_abort(tls)
+ }
+ _iLoop = i32(0)
+_6:
+ if _isOrderDistinct == 0 || _obSat >= _obDone || _iLoop > int32(_nLoop) {
+ goto _11
+ }
+ if _iLoop > i32(0) {
+ {
+ p := &_ready
+ *p = (*p) | (_pLoop.X1)
+ sink17 = *p
}
- }()
- return _c
-}
-
-var _operatorMaskØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_operatorMaskØ00__func__Ø000[0], str(107928), 13)
-}
-
-func _markTermAsChild(tls *crt.TLS, _pWC *XWhereClause, _iChild int32, _iParent int32) { // sqlite3.c:129277:1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_iChild))))) + uintptr(16 /* X7 */))) = _iParent
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_iChild))))) + uintptr(8 /* X2 */))) = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_iParent))).X2
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_iParent))))) + uintptr(14 /* X5 */))) += 1
-}
-
-func _termIsEquivalence(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) (r0 int32) { // sqlite3.c:129707:1
- var _aff1 int8 // sqlite3.c:129708:8
- _ = _aff1
- var _aff2 int8 // sqlite3.c:129708:14
- _ = _aff2
- var _pColl *XCollSeq // sqlite3.c:129709:11
- _ = _pColl
- var _zColl1 *int8 // sqlite3.c:129710:14
- _ = _zColl1
- var _zColl2 *int8 // sqlite3.c:129710:23
- _ = _zColl2
- if (int32((*Xsqlite3)(_pParse.X0).X13) & i32(512)) == i32(0) {
- goto _0
}
- return i32(0)
-
-_0:
- if int32(_pExpr.X0) == i32(78) || int32(_pExpr.X0) == i32(72) {
- goto _2
+ if _iLoop >= int32(_nLoop) {
+ goto _13
}
- return i32(0)
-
-_2:
- if ((_pExpr.X2) & uint32(i32(1))) == uint32(i32(0)) {
- goto _3
+ _pLoop = *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPath.X6)) + 4*uintptr(_iLoop)))
+ if (int32(_wctrlFlags) & i32(2048)) != 0 {
+ goto _7
}
- return i32(0)
-
-_3:
- _aff1 = _sqlite3ExprAffinity(tls, (*XExpr)(_pExpr.X4))
- _aff2 = _sqlite3ExprAffinity(tls, (*XExpr)(_pExpr.X5))
- if int32(_aff1) == int32(_aff2) || int32(_aff1) >= i32(67) && int32(_aff2) >= i32(67) {
- goto _6
+ goto _15
+_13:
+ _pLoop = _pLast
+_15:
+ if ((_pLoop.X9) & uint32(i32(1024))) == 0 {
+ goto _16
}
- return i32(0)
-
-_6:
- _pColl = _sqlite3BinaryCompareCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4), (*XExpr)(_pExpr.X5))
- if _pColl != nil && _sqlite3StrICmp(tls, _pColl.X0, str(38600)) != i32(0) {
- goto _8
+ if ((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X2) != 0 {
+ _obSat = _obDone
}
- return i32(1)
-
-_8:
- _pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4))
- _zColl1 = func() *int8 {
- if _pColl != nil {
- return (_pColl.X0)
- }
- return nil
- }()
- _pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X5))
- _zColl2 = func() *int8 {
- if _pColl != nil {
- return (_pColl.X0)
- }
- return nil
- }()
- return bool2int(Xsqlite3_stricmp(tls, _zColl1, _zColl2) == i32(0))
-}
-
-func _exprCommute(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr) { // sqlite3.c:129048:1
- var _expRight uint16 // sqlite3.c:129049:7
- _ = _expRight
- var _expLeft uint16 // sqlite3.c:129050:7
- _ = _expLeft
- var _4_t *XExpr // sqlite3.c:129065:12
- _ = _4_t
- _expRight = uint16(((*XExpr)(_pExpr.X5).X2) & uint32(i32(256)))
- _expLeft = uint16(((*XExpr)(_pExpr.X4).X2) & uint32(i32(256)))
- func() {
- if _allowedOp(tls, int32(_pExpr.X0)) == 0 || int32(_pExpr.X0) == i32(74) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129051), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprCommuteØ00__func__Ø000))), unsafe.Pointer(str(107944)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_expRight) != int32(_expLeft) {
- goto _3
+ goto _11
+_16:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */))) = uint16(i32(0))
+ _iCur = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pLoop.X3))).X11
+ _i = i32(0)
+_19:
+ if _i >= int32(_nOrderBy) {
+ goto _22
}
-
- if _expRight == 0 {
- goto _4
+ if ((u64(1) << uint(_i)) & _obSat) != 0 {
+ goto _20
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr(_pExpr.X5) + uintptr(4 /* X2 */)))
- *p = (*p) & uint32(i32(-257))
- sink5 = *p
+ _pOBExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if int32(_pOBExpr.X0) != i32(152) {
+ goto _20
}
- goto _5
-
-_4:
- if _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_pExpr.X4)) == nil {
- goto _6
+ if (_pOBExpr.X8) != _iCur {
+ goto _20
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr(_pExpr.X4) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(256))
- sink5 = *p
+ _pTerm = _sqlite3WhereFindTerm(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _iCur, int32(_pOBExpr.X9), ^_ready, uint32(_eqOpMask), nil)
+ if _pTerm == nil {
+ goto _20
}
-_6:
-_5:
-_3:
- _4_t = (*XExpr)(_pExpr.X5)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(16 /* X5 */))))) = (*XExpr)(_pExpr.X4)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(12 /* X4 */))))) = _4_t
- if int32(_pExpr.X0) < i32(79) {
- goto _7
+ if int32(_pTerm.X4) != i32(1) {
+ goto _27
}
-
- i32(0)
- i32(0)
- i32(0)
- i32(0)
func() {
- if int32(_pExpr.X0) < i32(79) || int32(_pExpr.X0) > i32(82) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129071), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprCommuteØ00__func__Ø000))), unsafe.Pointer(str(107988)))
+ if (int32(_wctrlFlags) & i32(2048)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133946), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(106655)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(((int32(_pExpr.X0) - i32(79)) ^ i32(2)) + i32(79))
-_7:
-}
-
-var _exprCommuteØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_exprCommuteØ00__func__Ø000[0], str(108028), 12)
-}
-
-var _exprAnalyzeØ00opsØ001 [2]uint8 // sqlite3.c:129973:21
-
-func init() {
- _exprAnalyzeØ00opsØ001 = [2]uint8{82, 80}
-}
-
-func _transferJoinMarkings(tls *crt.TLS, _pDerived *XExpr, _pBase *XExpr) { // sqlite3.c:129267:1
- if _pDerived == nil {
- goto _0
+ _j = i32(0)
+_30:
+ if _j >= int32(_pLoop.X10) || _pTerm == (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))) {
+ goto _34
}
-
+ _j += 1
+ goto _30
+_34:
+ if _j >= int32(_pLoop.X10) {
+ goto _20
+ }
+_27:
+ if (int32(_pTerm.X4)&i32(130)) == i32(0) || int32(_pOBExpr.X9) < i32(0) {
+ goto _37
+ }
+ _pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWInfo.X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if _pColl == nil {
+ _pColl = (*XCollSeq)(_db.X2)
+ }
+ _9_z1 = _pColl.X0
+ _pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWInfo.X0), (*XExpr)(_pTerm.X0))
+ if _pColl == nil {
+ _pColl = (*XCollSeq)(_db.X2)
+ }
+ _9_z2 = _pColl.X0
+ if _sqlite3StrICmp(tls, _9_z1, _9_z2) != i32(0) {
+ goto _20
+ }
+_37:
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDerived)) + uintptr(4 /* X2 */)))
- *p = (*p) | ((_pBase.X2) & uint32(i32(1)))
- sink5 = *p
+ p := &_obSat
+ *p = (*p) | (u64(1) << uint(_i))
+ sink17 = *p
}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDerived)) + uintptr(36 /* X11 */))) = _pBase.X11
-_0:
-}
-
-func _exprAnalyzeOrTerm(tls *crt.TLS, _pSrc *XSrcList, _pWC *XWhereClause, _idxTerm int32) { // sqlite3.c:129444:1
- var _pWInfo *XWhereInfo // sqlite3.c:129449:13
- _ = _pWInfo
- var _pParse *XParse // sqlite3.c:129450:9
- _ = _pParse
- var _db *Xsqlite3 // sqlite3.c:129451:11
- _ = _db
- var _pTerm *XWhereTerm // sqlite3.c:129452:13
- _ = _pTerm
- var _pExpr *XExpr // sqlite3.c:129453:8
- _ = _pExpr
- var _i int32 // sqlite3.c:129454:7
- _ = _i
- var _pOrWc *XWhereClause // sqlite3.c:129455:15
- _ = _pOrWc
- var _pOrTerm *XWhereTerm // sqlite3.c:129456:13
- _ = _pOrTerm
- var _pOrInfo *XWhereOrInfo // sqlite3.c:129457:15
- _ = _pOrInfo
- var _chngToIN uint64 // sqlite3.c:129458:11
- _ = _chngToIN
- var _indexable uint64 // sqlite3.c:129459:11
- _ = _indexable
- var _2_pAndInfo *XWhereAndInfo // sqlite3.c:129486:20
- _ = _2_pAndInfo
- var _3_pAndWC *XWhereClause // sqlite3.c:129491:21
- _ = _3_pAndWC
- var _3_pAndTerm *XWhereTerm // sqlite3.c:129492:19
- _ = _3_pAndTerm
- var _3_j int32 // sqlite3.c:129493:13
- _ = _3_j
- var _3_b uint64 // sqlite3.c:129494:17
- _ = _3_b
- var _8_b uint64 // sqlite3.c:129520:15
- _ = _8_b
- var _9_pOther *XWhereTerm // sqlite3.c:129523:19
- _ = _9_pOther
- var _12_iOne int32 // sqlite3.c:129545:9
- _ = _12_iOne
- var _12_pOne *XWhereTerm // sqlite3.c:129546:15
- _ = _12_pOne
- var _13_iTwo int32 // sqlite3.c:129548:11
- _ = _13_iTwo
- var _13_pTwo *XWhereTerm // sqlite3.c:129549:17
- _ = _13_pTwo
- var _15_okToChngToIN int32 // sqlite3.c:129578:9
- _ = _15_okToChngToIN
- var _15_iColumn int32 // sqlite3.c:129579:9
- _ = _15_iColumn
- var _15_iCursor int32 // sqlite3.c:129580:9
- _ = _15_iCursor
- var _15_j int32 // sqlite3.c:129581:9
- _ = _15_j
- var _24_affLeft int32 // sqlite3.c:129635:15
- _ = _24_affLeft
- var _24_affRight int32 // sqlite3.c:129635:24
- _ = _24_affRight
- var _27_pDup *XExpr // sqlite3.c:129656:12
- _ = _27_pDup
- var _27_pList *XExprList // sqlite3.c:129657:16
- _ = _27_pList
- var _27_pLeft *XExpr // sqlite3.c:129658:12
- _ = _27_pLeft
- var _27_pNew *XExpr // sqlite3.c:129659:12
- _ = _27_pNew
- var _29_idxNew int32 // sqlite3.c:129674:13
- _ = _29_idxNew
- _pWInfo = (*XWhereInfo)(_pWC.X0)
- _pParse = (*XParse)(_pWInfo.X0)
- _db = (*Xsqlite3)(_pParse.X0)
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- _pExpr = (*XExpr)(_pTerm.X0)
+_20:
+ _i += 1
+ goto _19
+_22:
+ if ((_pLoop.X9) & uint32(i32(4096))) != uint32(i32(0)) {
+ goto _41
+ }
+ if ((_pLoop.X9) & uint32(i32(256))) != 0 {
+ _pIndex = nil
+ _nKeyCol = uint16(i32(0))
+ _nColumn = uint16(i32(1))
+ goto _43
+ }
+ if (store69(&_pIndex, (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4)) == nil) || (((uint32((_pIndex.X16)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) != 0) {
+ return int8(i32(0))
+ }
+ _nKeyCol = _pIndex.X13
+ _nColumn = _pIndex.X14
func() {
- if (int32(_pTerm.X3) & i32(49)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129466), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108040)))
+ if int32(_nColumn) != (int32(_nKeyCol)+i32(1)) && (((*XTable)(_pIndex.X3).X9)&uint32(i32(32))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133974), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(106688)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(_pExpr.X0) != i32(70) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129467), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108104)))
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(int32(_nColumn)-i32(1))))) != i32(-1) && (((*XTable)(_pIndex.X3).X9)&uint32(i32(32))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133975), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(106736)))
crt.X__builtin_abort(tls)
}
}()
- *(**XWhereOrInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))))) = store62(&_pOrInfo, (*XWhereOrInfo)(_sqlite3DbMallocZero(tls, _db, uint64(u32(416)))))
- if _pOrInfo != nil {
- goto _4
- }
- return
-
-_4:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(16))
- sink12 = *p
- }
- _pOrWc = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrInfo)) + uintptr(0 /* X0 */)))
- crt.Xmemset(tls, (unsafe.Pointer)((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrWc))+uintptr(24 /* X6 */)))), i32(0), u32(384))
- _sqlite3WhereClauseInit(tls, _pOrWc, _pWInfo)
- _sqlite3WhereSplit(tls, _pOrWc, _pExpr, uint8(i32(70)))
- _sqlite3WhereExprAnalyze(tls, _pSrc, _pOrWc)
- if (_db.X17) == 0 {
- goto _5
+ _isOrderDistinct = uint8(bool2int(int32(_pIndex.X15) != i32(0)))
+_43:
+ _rev = store2(&_revSet, uint8(i32(0)))
+ _distinctColumns = uint8(i32(0))
+ _j = i32(0)
+_53:
+ if _j >= int32(_nColumn) {
+ goto _56
}
- return
-
-_5:
+ _14_bOnce = uint8(i32(1))
func() {
- if (_pOrWc.X3) < i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129477), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108124)))
+ if _j < int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) && ((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))) == nil) != (_j < int32(_pLoop.X11)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(133988), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(106803)))
crt.X__builtin_abort(tls)
}
}()
- _indexable = u64(18446744073709551615)
- _chngToIN = u64(18446744073709551615)
- *func() **XWhereTerm { _i = (_pOrWc.X3) - i32(1); return &_pOrTerm }() = (*XWhereTerm)(_pOrWc.X5)
-_8:
- if _i < i32(0) || _indexable == 0 {
- goto _12
+ if _j >= int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) || _j < int32(_pLoop.X11) {
+ goto _61
}
-
- if (int32(_pOrTerm.X4) & i32(511)) != i32(0) {
- goto _13
+ _15_eOp = (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))).X4
+ if (int32(_15_eOp) & int32(_eqOpMask)) == i32(0) {
+ goto _62
}
-
- func() {
- if (int32(_pOrTerm.X3) & i32(48)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129487), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108140)))
- crt.X__builtin_abort(tls)
+ if (int32(_15_eOp) & i32(256)) != 0 {
+ _isOrderDistinct = uint8(i32(0))
+ }
+ goto _54
+_62:
+ if func() int32 {
+ if (int32(_15_eOp) & i32(1)) != 0 {
+ return i32(1)
}
- }()
- _chngToIN = uint64(i32(0))
- _2_pAndInfo = (*XWhereAndInfo)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(408))))
- if _2_pAndInfo == nil {
- goto _16
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134008), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _67
}
-
- _3_b = uint64(i32(0))
- *(**XWhereAndInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */))))))) = _2_pAndInfo
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(32))
- sink12 = *p
+ _18_pX = (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))).X0)
+ _i = _j + i32(1)
+_68:
+ if _i >= int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) {
+ goto _71
}
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(12 /* X4 */))) = uint16(i32(1024))
- _3_pAndWC = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pAndInfo)) + uintptr(0 /* X0 */)))
- crt.Xmemset(tls, (unsafe.Pointer)((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAndWC))+uintptr(24 /* X6 */)))), i32(0), u32(384))
- _sqlite3WhereClauseInit(tls, _3_pAndWC, (*XWhereInfo)(_pWC.X0))
- _sqlite3WhereSplit(tls, _3_pAndWC, (*XExpr)(_pOrTerm.X0), uint8(i32(71)))
- _sqlite3WhereExprAnalyze(tls, _pSrc, _3_pAndWC)
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pAndWC)) + uintptr(4 /* X1 */))))) = _pWC
- if (_db.X17) != 0 {
- goto _17
+ if (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_i)))).X0) == _18_pX {
+ func() {
+ if (int32((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_i)))).X4) & i32(1)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134016), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(106868)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _14_bOnce = uint8(i32(0))
+ goto _71
}
-
- *func() **XWhereTerm { _3_j = i32(0); return &_3_pAndTerm }() = (*XWhereTerm)(_3_pAndWC.X5)
-_18:
- if _3_j >= (_3_pAndWC.X3) {
- goto _21
+ _i += 1
+ goto _68
+_71:
+_67:
+_61:
+ if _pIndex == nil {
+ goto _75
}
-
- func() {
- if (*XExpr)(_3_pAndTerm.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129506), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108192)))
- crt.X__builtin_abort(tls)
+ _iColumn = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_j))))
+ _revIdx = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X7)) + 1*uintptr(_j)))
+ if _iColumn == int32((*XTable)(_pIndex.X3).X10) {
+ _iColumn = i32(-1)
+ }
+ goto _77
+_75:
+ _iColumn = i32(-1)
+ _revIdx = uint8(i32(0))
+_77:
+ if (((_isOrderDistinct != 0) && (_iColumn >= i32(0))) && (_j >= int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0))) && (int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIndex.X3).X1)+16*uintptr(_iColumn))).X3) == i32(0)) {
+ _isOrderDistinct = uint8(i32(0))
+ }
+ _isMatch = uint8(i32(0))
+ _i = i32(0)
+_82:
+ if _14_bOnce == 0 || _i >= int32(_nOrderBy) {
+ goto _86
+ }
+ if ((u64(1) << uint(_i)) & _obSat) != 0 {
+ goto _83
+ }
+ _pOBExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if (int32(_wctrlFlags) & i32(192)) == i32(0) {
+ _14_bOnce = uint8(i32(0))
+ }
+ if _iColumn < i32(-1) {
+ goto _89
+ }
+ if int32(_pOBExpr.X0) != i32(152) {
+ goto _83
+ }
+ if (_pOBExpr.X8) != _iCur {
+ goto _83
+ }
+ if int32(_pOBExpr.X9) != _iColumn {
+ goto _83
+ }
+ goto _93
+_89:
+ if _sqlite3ExprCompare(tls, _pOBExpr, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIndex.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), _iCur) != 0 {
+ goto _83
+ }
+_93:
+ if _iColumn < i32(0) {
+ goto _95
+ }
+ _pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWInfo.X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ if _pColl == nil {
+ _pColl = (*XCollSeq)(_db.X2)
+ }
+ if _sqlite3StrICmp(tls, _pColl.X0, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_j)))) != i32(0) {
+ goto _83
+ }
+_95:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */))) = uint16(_j + i32(1))
+ _isMatch = uint8(i32(1))
+ goto _86
+_83:
+ _i += 1
+ goto _82
+_86:
+ if _isMatch == 0 || (int32(_wctrlFlags)&i32(64)) != i32(0) {
+ goto _99
+ }
+ if _revSet == 0 {
+ goto _100
+ }
+ if (int32(_rev) ^ int32(_revIdx)) != int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3) {
+ _isMatch = uint8(i32(0))
+ }
+ goto _102
+_100:
+ _rev = uint8(int32(_revIdx) ^ int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3))
+ if _rev != 0 {
+ {
+ p := _pRevMask
+ *p = (*p) | (u64(1) << uint(_iLoop))
+ sink17 = *p
}
- }()
- if _allowedOp(tls, int32((*XExpr)(_3_pAndTerm.X0).X0)) == 0 && int32(_3_pAndTerm.X4) != i32(64) {
- goto _25
}
-
- {
- p := &_3_b
- *p = (*p) | _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _3_pAndTerm.X8)
- sink15 = *p
+ _revSet = uint8(i32(1))
+_102:
+_99:
+ if _isMatch == 0 {
+ goto _104
+ }
+ if _iColumn == i32(-1) {
+ _distinctColumns = uint8(i32(1))
}
-_25:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _3_j += 1; return &_3_pAndTerm }())) += uintptr(48)
- goto _18
-
-_21:
-_17:
{
- p := &_indexable
- *p = (*p) & _3_b
- sink15 = *p
+ p := &_obSat
+ *p = (*p) | (u64(1) << uint(_i))
+ sink17 = *p
}
-_16:
- goto _26
-
-_13:
- if (int32(_pOrTerm.X3) & i32(8)) == 0 {
- goto _27
+ goto _106
+_104:
+ if (_j == i32(0)) || (_j < int32(_nKeyCol)) {
+ _isOrderDistinct = uint8(i32(0))
}
-
- goto _28
-
-_27:
- _8_b = _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _pOrTerm.X8)
- if (int32(_pOrTerm.X3) & i32(2)) == 0 {
- goto _29
+ goto _56
+_106:
+_54:
+ _j += 1
+ goto _53
+_56:
+ if _distinctColumns != 0 {
+ _isOrderDistinct = uint8(i32(1))
}
-
- _9_pOther = (*XWhereTerm)(unsafe.Pointer(uintptr(_pOrWc.X5) + 48*uintptr(_pOrTerm.X7)))
- {
- p := &_8_b
- *p = (*p) | _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _9_pOther.X8)
- sink15 = *p
+_41:
+ if _isOrderDistinct == 0 {
+ goto _110
}
-_29:
{
- p := &_indexable
- *p = (*p) & _8_b
- sink15 = *p
+ p := &_orderDistinctMask
+ *p = (*p) | (_pLoop.X1)
+ sink17 = *p
}
- if (int32(_pOrTerm.X4) & i32(2)) != i32(0) {
- goto _30
+ _i = i32(0)
+_111:
+ if _i >= int32(_nOrderBy) {
+ goto _114
}
-
- _chngToIN = uint64(i32(0))
- goto _31
-
-_30:
- {
- p := &_chngToIN
- *p = (*p) & _8_b
- sink15 = *p
+ if ((u64(1) << uint(_i)) & _obSat) != 0 {
+ goto _112
}
-_31:
-_28:
-_26:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
- goto _8
-
-_12:
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrInfo)) + uintptr(408 /* X1 */))) = _indexable
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(func() int32 {
- if _indexable == uint64(i32(0)) {
- return i32(0)
+ _38_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ _38_mTerm = _sqlite3WhereExprUsage(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _38_p)
+ if (_38_mTerm == uint64(i32(0))) && (_sqlite3ExprIsConstant(tls, _38_p) == 0) {
+ goto _112
+ }
+ if (_38_mTerm & (^_orderDistinctMask)) == uint64(i32(0)) {
+ {
+ p := &_obSat
+ *p = (*p) | (u64(1) << uint(_i))
+ sink17 = *p
}
- return i32(512)
- }())
- if _indexable == 0 || (_pOrWc.X3) != i32(2) {
- goto _35
}
-
- _12_iOne = i32(0)
-_36:
- if store63(&_12_pOne, _whereNthSubterm(tls, (*XWhereTerm)(unsafe.Pointer(uintptr(_pOrWc.X5)+48*uintptr(i32(0)))), postInc1(&_12_iOne, int32(1)))) == nil {
- goto _37
+_112:
+ _i += 1
+ goto _111
+_114:
+_110:
+_7:
+ _iLoop += 1
+ goto _6
+_11:
+ if _obSat == _obDone {
+ return int8(_nOrderBy)
}
-
- _13_iTwo = i32(0)
-_38:
- if store63(&_13_pTwo, _whereNthSubterm(tls, (*XWhereTerm)(unsafe.Pointer(uintptr(_pOrWc.X5)+48*uintptr(i32(1)))), postInc1(&_13_iTwo, int32(1)))) == nil {
- goto _39
+ if _isOrderDistinct != 0 {
+ goto _120
}
-
- _whereCombineDisjuncts(tls, _pSrc, _pWC, _12_pOne, _13_pTwo)
- goto _38
-
-_39:
- goto _36
-
-_37:
-_35:
- if _chngToIN == 0 {
- goto _40
+ _i = int32(_nOrderBy) - i32(1)
+_121:
+ if _i <= i32(0) {
+ goto _124
}
-
- _15_okToChngToIN = i32(0)
- _15_iColumn = i32(-1)
- _15_iCursor = i32(-1)
- _15_j = i32(0)
- _15_j = i32(0)
-_41:
- if _15_j >= i32(2) || _15_okToChngToIN != 0 {
- goto _45
+ _41_m = (u64(1) << uint(_i)) - uint64(i32(1))
+ if (_obSat & _41_m) == _41_m {
+ return int8(_i)
}
+ _i -= 1
+ goto _121
+_124:
+ return int8(i32(0))
- _pOrTerm = (*XWhereTerm)(_pOrWc.X5)
- _i = (_pOrWc.X3) - i32(1)
-_46:
- if _i < i32(0) {
- goto _49
- }
+_120:
+ return int8(i32(-1))
+}
+
+var _wherePathSatisfiesOrderByØ00__func__Ø000 [26]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_wherePathSatisfiesOrderByØ00__func__Ø000[0], str(106906), 26)
+}
+// Return the cost of sorting nRow rows, assuming that the keys have
+// nOrderby columns and that the first nSorted columns are already in
+// order.
+func _whereSortingCost(tls *crt.TLS, _pWInfo *XWhereInfo, _nRow int16, _nOrderBy int32, _nSorted int32) (r0 int16) {
+ var _rScale, _rSortCost int16
func() {
- if (int32(_pOrTerm.X4) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129592), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108208)))
+ if _nOrderBy <= i32(0) || i32(66) != int32(_sqlite3LogEst(tls, uint64(i32(100)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134201), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereSortingCostØ00__func__Ø000))), unsafe.Pointer(str(106932)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) & i32(-65))
- sink12 = *p
+ _rScale = int16(int32(_sqlite3LogEst(tls, uint64(((_nOrderBy-_nSorted)*i32(100))/_nOrderBy))) - i32(66))
+ _rSortCost = int16((int32(_nRow) + int32(_rScale)) + i32(16))
+ if ((int32(_pWInfo.X10) & i32(16384)) != i32(0)) && (int32(_pWInfo.X5) < int32(_nRow)) {
+ _nRow = _pWInfo.X5
}
- if (_pOrTerm.X8) != _15_iCursor {
- goto _52
+ {
+ p := &_rSortCost
+ *p = int16(int32(*p) + int32(_estLog(tls, _nRow)))
+ sink18 = *p
}
+ return _rSortCost
+}
- func() {
- if _15_j != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129597), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108236)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _47
+var _whereSortingCostØ00__func__Ø000 [17]int8
-_52:
- if (_chngToIN & _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _pOrTerm.X8)) != uint64(i32(0)) {
- goto _55
- }
+func init() {
+ crt.Xstrncpy(nil, &_whereSortingCostØ00__func__Ø000[0], str(106969), 17)
+}
+// Generate code to construct the Index object for an automatic index
+// and to set up the WhereLevel object pLevel so that the code generator
+// makes use of the automatic index.
+func _constructAutomaticIndex(tls *crt.TLS, _pParse *XParse, _pWC *XWhereClause, _pSrc *TSrcList_item, _notReady uint64, _pLevel *XWhereLevel) {
+ var _nKeyCol, _addrInit, _addrTop, _regRecord, _n, _i, _mxBitCol, _iContinue, _addrCounter, _regBase, _3_iCol, _10_iCol, _16_regYield int32
+ var _idxCols, _extraCols, _3_cMask, _10_cMask uint64
+ var _zNotUsed *int8
+ var _sentWarning uint8
+ var _pTable *XTable
+ var _v *TVdbe
+ var _pTabItem *TSrcList_item
+ var _pPartial, _1_pExpr, _11_pX *XExpr
+ var _pIdx *XIndex
+ var _pColl *XCollSeq
+ var _pLoop *XWhereLoop
+ var _pTerm, _pWCEnd *XWhereTerm
+ _sentWarning = u8(0)
+ _pPartial = nil
+ _iContinue = i32(0)
+ _addrCounter = i32(0)
+ _v = (*TVdbe)(_pParse.X2)
func() {
- if (int32(_pOrTerm.X3) & i32(10)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129608), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108244)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131050), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- goto _47
-
-_55:
- _15_iColumn = *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */)))))
- _15_iCursor = _pOrTerm.X8
- goto _49
-
-_47:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
- goto _46
-
-_49:
- if _i >= i32(0) {
- goto _58
+ _addrInit = _sqlite3VdbeAddOp0(tls, _v, i32(20))
+ _nKeyCol = i32(0)
+ _pTable = (*XTable)(_pSrc.X4)
+ _pWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_pWC.X3)))
+ _pLoop = (*XWhereLoop)(_pLevel.X18)
+ _idxCols = uint64(i32(0))
+ _pTerm = (*XWhereTerm)(_pWC.X5)
+_2:
+ if uintptr(unsafe.Pointer(_pTerm)) >= uintptr(unsafe.Pointer(_pWCEnd)) {
+ goto _5
}
-
+ _1_pExpr = (*XExpr)(_pTerm.X0)
func() {
- if _15_j != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129618), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108236)))
+ if ((_1_pExpr.X2)&uint32(i32(1))) != uint32(i32(0)) && int32(_1_pExpr.X11) == (_pSrc.X11) && (_pLoop.X0) == uint64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131062), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(106986)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if (_chngToIN & (_chngToIN - uint64(i32(1)))) != uint64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129619), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108292)))
- crt.X__builtin_abort(tls)
+ if ((((_pLoop.X0) == uint64(i32(0))) && ((int32(_pTerm.X3) & i32(2)) == i32(0))) && (((_1_pExpr.X2) & uint32(i32(1))) == uint32(i32(0)))) && _sqlite3ExprIsTableConstant(tls, _1_pExpr, _pSrc.X11) != 0 {
+ _pPartial = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), _pPartial, _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _1_pExpr, i32(0)))
+ }
+ if _termCanDriveIndex(tls, _pTerm, _pSrc, _notReady) == 0 {
+ goto _14
+ }
+ _3_iCol = *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))
+ _3_cMask = func() uint64 {
+ if _3_iCol >= i32(64) {
+ return u64(9223372036854775808)
}
+ return (u64(1) << uint(_3_iCol))
}()
+ if _sentWarning == 0 {
+ Xsqlite3_log(tls, i32(284), str(107084), unsafe.Pointer(_pTable.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTable.X1)+16*uintptr(_3_iCol))).X0))
+ _sentWarning = uint8(i32(1))
+ }
+ if (_idxCols & _3_cMask) != uint64(i32(0)) {
+ goto _18
+ }
+ if _whereLoopResize(tls, (*Xsqlite3)(_pParse.X0), _pLoop, _nKeyCol+i32(1)) != 0 {
+ goto _end_auto_index_create
+ }
+ *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_nKeyCol, int32(1))))) = _pTerm
+ {
+ p := &_idxCols
+ *p = (*p) | _3_cMask
+ sink17 = *p
+ }
+_18:
+_14:
+ *(*uintptr)(unsafe.Pointer(&_pTerm)) += uintptr(48)
+ goto _2
+_5:
func() {
- if _chngToIN != _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _15_iCursor) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129620), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108316)))
+ if _nKeyCol <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131092), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(107110)))
crt.X__builtin_abort(tls)
}
}()
- goto _45
-
-_58:
- _15_okToChngToIN = i32(1)
-_65:
- if _i < i32(0) || _15_okToChngToIN == 0 {
- goto _69
- }
-
- func() {
- if (int32(_pOrTerm.X4) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129629), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108208)))
- crt.X__builtin_abort(tls)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = store14((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(44 /* X10 */))), uint16(_nKeyCol))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(16961))
+ _extraCols = (_pSrc.X14) & ((^_idxCols) | u64(9223372036854775808))
+ _mxBitCol = func() int32 {
+ if i32(63) < int32(_pTable.X11) {
+ return i32(63)
}
+ return int32(_pTable.X11)
}()
- if (_pOrTerm.X8) == _15_iCursor {
- goto _72
- }
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) & i32(-65))
- sink12 = *p
- }
- goto _73
-
-_72:
- if (*(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */)))))) == _15_iColumn {
- goto _74
+ _i = i32(0)
+_24:
+ if _i >= _mxBitCol {
+ goto _27
}
-
- _15_okToChngToIN = i32(0)
- goto _75
-
-_74:
- _24_affRight = int32(_sqlite3ExprAffinity(tls, (*XExpr)((*XExpr)(_pOrTerm.X0).X5)))
- _24_affLeft = int32(_sqlite3ExprAffinity(tls, (*XExpr)((*XExpr)(_pOrTerm.X0).X4)))
- if _24_affRight == i32(0) || _24_affRight == _24_affLeft {
- goto _77
+ if (_extraCols & (u64(1) << uint(_i))) != 0 {
+ _nKeyCol += 1
}
-
- _15_okToChngToIN = i32(0)
- goto _78
-
-_77:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(64))
- sink12 = *p
+ _i += 1
+ goto _24
+_27:
+ if ((_pSrc.X14) & u64(9223372036854775808)) != 0 {
+ {
+ p := &_nKeyCol
+ *p = (*p) + ((int32(_pTable.X11) - i32(64)) + i32(1))
+ sink1 = *p
+ }
}
-_78:
-_75:
-_73:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
- goto _65
-
-_69:
- _15_j += 1
- goto _41
-
-_45:
- if _15_okToChngToIN == 0 {
- goto _79
+ _pIdx = _sqlite3AllocateIndexObject(tls, (*Xsqlite3)(_pParse.X0), int16(_nKeyCol+i32(1)), i32(0), &_zNotUsed)
+ if _pIdx == nil {
+ goto _end_auto_index_create
}
-
- _27_pList = nil
- _27_pLeft = nil
- *func() **XWhereTerm { _i = (_pOrWc.X3) - i32(1); return &_pOrTerm }() = (*XWhereTerm)(_pOrWc.X5)
-_80:
- if _i < i32(0) {
- goto _83
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = _pIdx
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(0 /* X0 */))) = str(107120)
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(12 /* X3 */))))) = _pTable
+ _n = i32(0)
+ _idxCols = uint64(i32(0))
+ _pTerm = (*XWhereTerm)(_pWC.X5)
+_31:
+ if uintptr(unsafe.Pointer(_pTerm)) >= uintptr(unsafe.Pointer(_pWCEnd)) {
+ goto _34
}
-
- if (int32(_pOrTerm.X3) & i32(64)) != i32(0) {
- goto _84
+ if _termCanDriveIndex(tls, _pTerm, _pSrc, _notReady) == 0 {
+ goto _35
}
-
- goto _81
-
-_84:
- func() {
- if (int32(_pOrTerm.X4) & i32(2)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129663), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108208)))
- crt.X__builtin_abort(tls)
+ _10_iCol = *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))
+ _10_cMask = func() uint64 {
+ if _10_iCol >= i32(64) {
+ return u64(9223372036854775808)
}
+ return (u64(1) << uint(_10_iCol))
}()
+ if (_idxCols & _10_cMask) == uint64(i32(0)) {
+ _11_pX = (*XExpr)(_pTerm.X0)
+ {
+ p := &_idxCols
+ *p = (*p) | _10_cMask
+ sink17 = *p
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(*(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))))
+ _pColl = _sqlite3BinaryCompareCollSeq(tls, _pParse, (*XExpr)(_11_pX.X4), (*XExpr)(_11_pX.X5))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = func() *int8 {
+ if _pColl != nil {
+ return (_pColl.X0)
+ }
+ return (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+ }()
+ _n += 1
+ }
+_35:
+ *(*uintptr)(unsafe.Pointer(&_pTerm)) += uintptr(48)
+ goto _31
+_34:
func() {
- if (_pOrTerm.X8) != _15_iCursor {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129664), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108376)))
+ if uint32(_n) != uint32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131140), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(107131)))
crt.X__builtin_abort(tls)
}
}()
+ _i = i32(0)
+_43:
+ if _i >= _mxBitCol {
+ goto _46
+ }
+ if (_extraCols & (u64(1) << uint(_i))) != 0 {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(_i)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+ _n += 1
+ }
+ _i += 1
+ goto _43
+_46:
+ if ((_pSrc.X14) & u64(9223372036854775808)) == 0 {
+ goto _48
+ }
+ _i = i32(63)
+_49:
+ if _i >= int32(_pTable.X11) {
+ goto _52
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(_i)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+ _n += 1
+ _i += 1
+ goto _49
+_52:
+_48:
func() {
- if (*(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrTerm)) + uintptr(28 /* X10 */)))))) != _15_iColumn {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129665), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108408)))
+ if _n != _nKeyCol {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131158), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(107158)))
crt.X__builtin_abort(tls)
}
}()
- _27_pDup = _sqlite3ExprDup(tls, _db, (*XExpr)((*XExpr)(_pOrTerm.X0).X5), i32(0))
- _27_pList = _sqlite3ExprListAppend(tls, (*XParse)(_pWInfo.X0), _27_pList, _27_pDup)
- _27_pLeft = (*XExpr)((*XExpr)(_pOrTerm.X0).X4)
-_81:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pOrTerm }())) += uintptr(48)
- goto _80
-
-_83:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(i32(-1))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
func() {
- if _27_pLeft == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129670), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108440)))
+ if (_pLevel.X2) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(131163), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(107169)))
crt.X__builtin_abort(tls)
}
}()
- _27_pDup = _sqlite3ExprDup(tls, _db, _27_pLeft, i32(0))
- _27_pNew = _sqlite3PExpr(tls, _pParse, i32(74), _27_pDup, nil)
- if _27_pNew == nil {
- goto _93
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(8 /* X2 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(109), _pLevel.X2, _nKeyCol+i32(1))
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pIdx)
+ _sqlite3VdbeComment(tls, _v, str(107188), unsafe.Pointer(_pTable.X0))
+ _sqlite3ExprCachePush(tls, _pParse)
+ _pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((*XWhereInfo)(_pWC.X0).X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _16_regYield = _pTabItem.X7
+ _addrCounter = _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), i32(0))
+ _sqlite3VdbeAddOp3(tls, _v, i32(15), _16_regYield, i32(0), _pTabItem.X6)
+ _addrTop = _sqlite3VdbeAddOp1(tls, _v, i32(16), _16_regYield)
+ _sqlite3VdbeComment(tls, _v, str(107195), unsafe.Pointer((*XTable)(_pTabItem.X4).X0))
+ goto _58
}
-
- _transferJoinMarkings(tls, _27_pNew, _pExpr)
- func() {
- if ((_27_pNew.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129676), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprAnalyzeOrTermØ00__func__Ø000))), unsafe.Pointer(str(108452)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_27_pNew)) + uintptr(20 /* X6 */))))))) = _27_pList
- _29_idxNew = _whereClauseInsert(tls, _pWC, _27_pNew, uint16(i32(3)))
- _exprAnalyze(tls, _pSrc, _pWC, _29_idxNew)
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_idxTerm)))
- _markTermAsChild(tls, _pWC, _29_idxNew, _idxTerm)
- goto _96
-
-_93:
- _sqlite3ExprListDelete(tls, _db, _27_pList)
-_96:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(12 /* X4 */))) = uint16(i32(4096))
-_79:
-_40:
+ _addrTop = _sqlite3VdbeAddOp1(tls, _v, i32(37), _pLevel.X1)
+_58:
+ if _pPartial != nil {
+ _iContinue = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3ExprIfFalse(tls, _pParse, _pPartial, _iContinue, i32(16))
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(131072))
+ sink5 = *p
+ }
+ }
+ _regRecord = _sqlite3GetTempReg(tls, _pParse)
+ _regBase = _sqlite3GenerateIndexKey(tls, _pParse, _pIdx, _pLevel.X1, _regRecord, i32(0), nil, nil, i32(0))
+ _sqlite3VdbeAddOp2(tls, _v, i32(128), _pLevel.X2, _regRecord)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
+ if _pPartial != nil {
+ _sqlite3VdbeResolveLabel(tls, _v, _iContinue)
+ }
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _sqlite3VdbeChangeP2(tls, _v, uint32(_addrCounter), _regBase+_n)
+ _translateColumnToCopy(tls, _pParse, _addrTop, _pLevel.X1, _pTabItem.X8, i32(1))
+ _sqlite3VdbeGoto(tls, _v, _addrTop)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(0)), 16, 4)
+ goto _62
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _pLevel.X1, _addrTop+i32(1))
+_62:
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(3)))
+ _sqlite3VdbeJumpHere(tls, _v, _addrTop)
+ _sqlite3ReleaseTempReg(tls, _pParse, _regRecord)
+ _sqlite3ExprCachePop(tls, _pParse)
+ _sqlite3VdbeJumpHere(tls, _v, _addrInit)
+_end_auto_index_create:
+ _sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), _pPartial)
+ _ = _zNotUsed
}
-var _exprAnalyzeOrTermØ00__func__Ø000 [18]int8 // -
+var _constructAutomaticIndexØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_exprAnalyzeOrTermØ00__func__Ø000[0], str(108492), 18)
+ crt.Xstrncpy(nil, &_constructAutomaticIndexØ00__func__Ø000[0], str(107212), 24)
}
-func _whereNthSubterm(tls *crt.TLS, _pTerm *XWhereTerm, _N int32) (r0 *XWhereTerm) { // sqlite3.c:129288:1
- if int32(_pTerm.X4) == i32(1024) {
- goto _0
- }
- return func() *XWhereTerm {
- if _N == i32(0) {
- return _pTerm
+// Allocate heap space to hold an Index object with nCol columns.
+//
+// Increase the allocation size to provide an extra nExtra bytes
+// of 8-byte aligned space after the Index object and return a
+// pointer to this extra space in *ppExtra.
+func _sqlite3AllocateIndexObject(tls *crt.TLS, _db *Xsqlite3, _nCol int16, _nExtra int32, _ppExtra **int8) (r0 *XIndex) {
+ var _nByte int32
+ var _1_pExtra *int8
+ var _p *XIndex
+ _nByte = int32((u32(56) + (((u32(4) * uint32(_nCol)) + uint32(i32(7))) & uint32(i32(-8)))) + (((((u32(2) * uint32(int32(_nCol)+i32(1))) + (u32(2) * uint32(_nCol))) + (u32(1) * uint32(_nCol))) + uint32(i32(7))) & uint32(i32(-8))))
+ _p = (*XIndex)(_sqlite3DbMallocZero(tls, _db, uint64(_nByte+_nExtra)))
+ if _p != nil {
+ _1_pExtra = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p)))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(56))))))))
+ *(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X8 */))) = (**int8)(unsafe.Pointer(_1_pExtra))
+ {
+ p := &_1_pExtra
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(((u32(4)*uint32(_nCol))+uint32(i32(7)))&uint32(i32(-8)))))
+ sink0 = *p
}
- return nil
- }()
-
-_0:
- if _N >= ((*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */))).X3) {
- goto _3
+ *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = (*int16)(unsafe.Pointer(_1_pExtra))
+ {
+ p := &_1_pExtra
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(2)*uint32(int32(_nCol)+i32(1)))))
+ sink0 = *p
+ }
+ *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = (*int16)(unsafe.Pointer(_1_pExtra))
+ {
+ p := &_1_pExtra
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(2)*uint32(_nCol))))
+ sink0 = *p
+ }
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = (*uint8)(unsafe.Pointer(_1_pExtra))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X14 */))) = uint16(_nCol)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(50 /* X13 */))) = uint16(int32(_nCol) - i32(1))
+ *_ppExtra = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p)))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_nByte)))))))
}
-
- /* X10 */ /* X0 */
- return (*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28))))))+uintptr(0))).X5) + 48*uintptr(_N)))
-
-_3:
- return nil
+ return _p
}
-func _whereCombineDisjuncts(tls *crt.TLS, _pSrc *XSrcList, _pWC *XWhereClause, _pOne *XWhereTerm, _pTwo *XWhereTerm) { // sqlite3.c:129318:1
- var _eOp uint16 // sqlite3.c:129324:7
- _ = _eOp
- var _db *Xsqlite3 // sqlite3.c:129325:11
- _ = _db
- var _pNew *XExpr // sqlite3.c:129326:8
- _ = _pNew
- var _op int32 // sqlite3.c:129327:7
- _ = _op
- var _idxNew int32 // sqlite3.c:129328:7
- _ = _idxNew
- _eOp = uint16(int32(_pOne.X4) | int32(_pTwo.X4))
- if (int32(_pOne.X4) & i32(62)) != i32(0) {
+// Generate code that will assemble an index key and stores it in register
+// regOut. The key with be for index pIdx which is an index on pTab.
+// iCur is the index of a cursor open on the pTab table and pointing to
+// the entry that needs indexing. If pTab is a WITHOUT ROWID table, then
+// iCur must be the cursor of the PRIMARY KEY index.
+//
+// Return a register number which is the first in a block of
+// registers that holds the elements of the index key. The
+// block of registers has already been deallocated by the time
+// this routine returns.
+//
+// If *piPartIdxLabel is not NULL, fill it in with a label and jump
+// to that label if pIdx is a partial index that should be skipped.
+// The label should be resolved using sqlite3ResolvePartIdxLabel().
+// A partial index should be skipped if its WHERE clause evaluates
+// to false or null. If pIdx is not a partial index, *piPartIdxLabel
+// will be set to zero which is an empty label that is ignored by
+// sqlite3ResolvePartIdxLabel().
+//
+// The pPrior and regPrior parameters are used to implement a cache to
+// avoid unnecessary register loads. If pPrior is not NULL, then it is
+// a pointer to a different index for which an index key has just been
+// computed into register regPrior. If the current pIdx index is generating
+// its key into the same sequence of registers and if pPrior and pIdx share
+// a column in common, then the register corresponding to that column already
+// holds the correct value and the loading of that register is skipped.
+// This optimization is helpful when doing a DELETE or an INTEGRITY_CHECK
+// on a table with multiple indices, and especially with the ROWID or
+// PRIMARY KEY columns of the index.
+func _sqlite3GenerateIndexKey(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex, _iDataCur int32, _regOut int32, _prefixOnly int32, _piPartIdxLabel *int32, _pPrior *XIndex, _regPrior int32) (r0 int32) {
+ var _j, _regBase, _nCol int32
+ var _7_zAff *int8
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
+ if _piPartIdxLabel == nil {
goto _0
}
- return
-
+ if (*XExpr)(_pIdx.X9) != nil {
+ *_piPartIdxLabel = _sqlite3VdbeMakeLabel(tls, _v)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(60 /* X22 */))) = _iDataCur
+ _sqlite3ExprCachePush(tls, _pParse)
+ _sqlite3ExprIfFalseDup(tls, _pParse, (*XExpr)(_pIdx.X9), *_piPartIdxLabel, i32(16))
+ goto _2
+ }
+ *_piPartIdxLabel = i32(0)
+_2:
_0:
- if (int32(_pTwo.X4) & i32(62)) != i32(0) {
- goto _1
+ _nCol = int32(func() uint16 {
+ if _prefixOnly != 0 && (((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0) {
+ return (_pIdx.X13)
+ }
+ return (_pIdx.X14)
+ }())
+ _regBase = _sqlite3GetTempRange(tls, _pParse, _nCol)
+ if (_pPrior != nil) && ((_regBase != _regPrior) || ((*XExpr)(_pPrior.X9) != nil)) {
+ _pPrior = nil
}
- return
-
-_1:
- if (int32(_eOp)&i32(26)) == int32(_eOp) || (int32(_eOp)&i32(38)) == int32(_eOp) {
- goto _3
+ _j = i32(0)
+_9:
+ if _j >= _nCol {
+ goto _12
}
- return
-
-_3:
- func() {
- if (*XExpr)((*XExpr)(_pOne.X0).X4) == nil || (*XExpr)((*XExpr)(_pOne.X0).X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129334), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(108512)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XExpr)((*XExpr)(_pTwo.X0).X4) == nil || (*XExpr)((*XExpr)(_pTwo.X0).X5) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129335), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(108560)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3ExprCompare(tls, (*XExpr)((*XExpr)(_pOne.X0).X4), (*XExpr)((*XExpr)(_pTwo.X0).X4), i32(-1)) == 0 {
+ if ((_pPrior != nil) && (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior.X1)) + 2*uintptr(_j)))) == int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j)))))) && (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior.X1)) + 2*uintptr(_j)))) != i32(-2)) {
goto _10
}
- return
-
+ _sqlite3ExprCodeLoadIndexColumn(tls, _pParse, _pIdx, _iDataCur, _j, _regBase+_j)
+ _sqlite3VdbeDeletePriorOpcode(tls, _v, uint8(i32(74)))
_10:
- if _sqlite3ExprCompare(tls, (*XExpr)((*XExpr)(_pOne.X0).X5), (*XExpr)((*XExpr)(_pTwo.X0).X5), i32(-1)) == 0 {
- goto _11
- }
- return
-
-_11:
- if (int32(_eOp) & (int32(_eOp) - i32(1))) == i32(0) {
- goto _12
+ _j += 1
+ goto _9
+_12:
+ if _regOut == 0 {
+ goto _16
}
-
- if (int32(_eOp) & i32(24)) == 0 {
- goto _13
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regBase, _nCol, _regOut)
+ if (*XSelect)((*XTable)(_pIdx.X3).X3) != nil {
+ _7_zAff = _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pIdx)
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), _7_zAff, i32(0))
}
+_16:
+ _sqlite3ReleaseTempRange(tls, _pParse, _regBase, _nCol)
+ return _regBase
+}
- _eOp = uint16(i32(8))
- goto _14
-
-_13:
- func() {
- if (int32(_eOp) & i32(36)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129343), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(108608)))
- crt.X__builtin_abort(tls)
- }
- }()
- _eOp = uint16(i32(32))
-_14:
-_12:
- _db = (*Xsqlite3)((*XParse)((*XWhereInfo)(_pWC.X0).X0).X0)
- _pNew = _sqlite3ExprDup(tls, _db, (*XExpr)(_pOne.X0), i32(0))
- if _pNew != nil {
- goto _17
+// Like sqlite3ExprIfFalse() except that a copy is made of pExpr before
+// code generation, and that copy is deleted after code generation. This
+// ensures that the original pExpr is unchanged.
+func _sqlite3ExprIfFalseDup(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _jumpIfNull int32) {
+ var _db *Xsqlite3
+ var _pCopy *XExpr
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pCopy = _sqlite3ExprDup(tls, _db, _pExpr, i32(0))
+ if int32(_db.X17) == i32(0) {
+ _sqlite3ExprIfFalse(tls, _pParse, _pCopy, _dest, _jumpIfNull)
}
- return
+ _sqlite3ExprDelete(tls, _db, _pCopy)
+}
-_17:
- _op = i32(78)
-_18:
- if int32(_eOp) == (i32(2) << uint(_op-i32(78))) {
- goto _21
+// Generate code that will load into register regOut a value that is
+// appropriate for the iIdxCol-th column of index pIdx.
+func _sqlite3ExprCodeLoadIndexColumn(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex, _iTabCur int32, _iIdxCol int32, _regOut int32) {
+ var _iTabCol int16
+ _iTabCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iIdxCol)))
+ if int32(_iTabCol) == i32(-2) {
+ func() {
+ if (*XExprList)(_pIdx.X10) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94130), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000))), unsafe.Pointer(str(107236)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((*XExprList)(_pIdx.X10).X0) <= _iIdxCol {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(94131), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000))), unsafe.Pointer(str(107251)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(60 /* X22 */))) = _iTabCur
+ _sqlite3ExprCodeCopy(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_iIdxCol))).X0), _regOut)
+ goto _5
}
-
- func() {
- if _op >= i32(82) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129350), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereCombineDisjunctsØ00__func__Ø000))), unsafe.Pointer(str(108628)))
- crt.X__builtin_abort(tls)
- }
- }()
- _op += 1
- goto _18
-
-_21:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = uint8(_op)
- _idxNew = _whereClauseInsert(tls, _pWC, _pNew, uint16(i32(3)))
- _exprAnalyze(tls, _pSrc, _pWC, _idxNew)
+ _sqlite3ExprCodeGetColumnOfTable(tls, (*TVdbe)(_pParse.X2), (*XTable)(_pIdx.X3), _iTabCur, int32(_iTabCol), _regOut)
+_5:
}
-var _whereCombineDisjunctsØ00__func__Ø000 [22]int8 // -
+var _sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000 [31]int8
func init() {
- crt.Xstrncpy(nil, &_whereCombineDisjunctsØ00__func__Ø000[0], str(108640), 22)
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000[0], str(107281), 31)
}
-func _isLikeOrGlob(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _ppPrefix **XExpr, _pisComplete *int32, _pnoCase *int32) (r0 int32) { // sqlite3.c:129117:1
- var _z *int8 // sqlite3.c:129124:14
- _ = _z
- var _pRight *XExpr // sqlite3.c:129125:8
- _ = _pRight
- var _pLeft *XExpr // sqlite3.c:129125:17
- _ = _pLeft
- var _pList *XExprList // sqlite3.c:129126:12
- _ = _pList
- var _c int32 // sqlite3.c:129127:7
- _ = _c
- var _cnt int32 // sqlite3.c:129128:7
- _ = _cnt
- var _wc [3]int8 // sqlite3.c:129129:8
- _ = _wc
- var _db *Xsqlite3 // sqlite3.c:129130:11
- _ = _db
- var _pVal *XMem // sqlite3.c:129131:17
- _ = _pVal
- var _op int32 // sqlite3.c:129132:7
- _ = _op
- var _rc int32 // sqlite3.c:129133:7
- _ = _rc
- var _2_pReprepare *TVdbe // sqlite3.c:129147:10
- _ = _2_pReprepare
- var _2_iCol int32 // sqlite3.c:129148:9
- _ = _2_iCol
- var _9_pPrefix *XExpr // sqlite3.c:129181:12
- _ = _9_pPrefix
- var _10_v *TVdbe // sqlite3.c:129187:14
- _ = _10_v
- var _11_r1 int32 // sqlite3.c:129196:15
- _ = _11_r1
- _z = nil
+// Make a transient copy of expression pExpr and then code it using
+// sqlite3ExprCode(). This routine works just like sqlite3ExprCode()
+// except that the input expression is guaranteed to be unchanged.
+func _sqlite3ExprCodeCopy(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) {
+ var _db *Xsqlite3
_db = (*Xsqlite3)(_pParse.X0)
- _pVal = nil
- if _sqlite3IsLikeFunction(tls, _db, _pExpr, _pnoCase, (*int8)(unsafe.Pointer(&_wc))) != 0 {
- goto _0
+ _pExpr = _sqlite3ExprDup(tls, _db, _pExpr, i32(0))
+ if (_db.X17) == 0 {
+ _sqlite3ExprCode(tls, _pParse, _pExpr, _target)
}
- return i32(0)
+ _sqlite3ExprDelete(tls, _db, _pExpr)
+}
-_0:
- _pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
- _pLeft = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
- _pRight = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0))
- _op = int32(_pRight.X0)
- if _op != i32(135) {
- goto _1
+// If the last opcode is "op" and it is not a jump destination,
+// then remove it. Return true if and only if an opcode was removed.
+func _sqlite3VdbeDeletePriorOpcode(tls *crt.TLS, _p *TVdbe, _op uint8) (r0 int32) {
+ if ((_p.X27) > i32(0)) && (int32((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))).X0) == int32(_op)) {
+ return _sqlite3VdbeChangeToNoop(tls, _p, (_p.X27)-i32(1))
+ }
+ return i32(0)
+}
+
+// Return a pointer to the column affinity string associated with index
+// pIdx. A column affinity string has one character for each column in
+// the table, according to the affinity of the column:
+//
+// Character Column affinity
+// ------------------------------
+// 'A' BLOB
+// 'B' TEXT
+// 'C' NUMERIC
+// 'D' INTEGER
+// 'F' REAL
+//
+// An extra 'D' is appended to the end of the string to cover the
+// rowid that appears as the last column in every index.
+//
+// Memory for the buffer containing the column index affinity string
+// is managed along with the rest of the Index structure. It will be
+// released when sqlite3DeleteIndex() is called.
+func _sqlite3IndexAffinityStr(tls *crt.TLS, _db *Xsqlite3, _pIdx *XIndex) (r0 *int8) {
+ var _3_x int16
+ var _1_n int32
+ var _6_aff int8
+ var _1_pTab *XTable
+ if (_pIdx.X4) != nil {
+ goto _0
}
-
- _2_pReprepare = (*TVdbe)(_pParse.X61)
- _2_iCol = int32(_pRight.X9)
- _pVal = _sqlite3VdbeGetBoundValue(tls, _2_pReprepare, _2_iCol, uint8(i32(65)))
- if _pVal == nil || Xsqlite3_value_type(tls, _pVal) != i32(3) {
- goto _3
+ _1_pTab = (*XTable)(_pIdx.X3)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(16 /* X4 */))) = (*int8)(_sqlite3DbMallocRaw(tls, nil, uint64(int32(_pIdx.X14)+i32(1))))
+ if (_pIdx.X4) == nil {
+ _sqlite3OomFault(tls, _db)
+ return nil
+ }
+ _1_n = i32(0)
+_2:
+ if _1_n >= int32(_pIdx.X14) {
+ goto _5
+ }
+ _3_x = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_n)))
+ if int32(_3_x) >= i32(0) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = (*XColumn)(unsafe.Pointer(uintptr(_1_pTab.X1) + 16*uintptr(_3_x))).X4
+ goto _7
+ }
+ if int32(_3_x) == i32(-1) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = int8(i32(68))
+ goto _9
}
-
- _z = (*int8)(unsafe.Pointer(Xsqlite3_value_text(tls, _pVal)))
-_3:
- _sqlite3VdbeSetVarmask(tls, (*TVdbe)(_pParse.X2), _2_iCol)
func() {
- if int32(_pRight.X0) != i32(135) && int32(_pRight.X0) != i32(157) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(129154), unsafe.Pointer((*int8)(unsafe.Pointer(&_isLikeOrGlobØ00__func__Ø000))), unsafe.Pointer(str(108664)))
+ if int32(_3_x) != i32(-2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108932), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IndexAffinityStrØ00__func__Ø000))), unsafe.Pointer(str(107312)))
crt.X__builtin_abort(tls)
}
}()
- goto _7
-
-_1:
- if _op != i32(97) {
- goto _8
+ func() {
+ if (*XExprList)(_pIdx.X10) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108933), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IndexAffinityStrØ00__func__Ø000))), unsafe.Pointer(str(107323)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _6_aff = _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_1_n))).X0))
+ if int32(_6_aff) == i32(0) {
+ _6_aff = int8(i32(65))
}
-
- _z = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight)) + uintptr(8 /* X3 */)))))
-_8:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = _6_aff
+_9:
_7:
- if _z == nil {
- goto _9
- }
-
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0)))))))))&i32(4)) == 0 && int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(45) {
- goto _11
- }
+ _1_n += 1
+ goto _2
+_5:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = int8(i32(0))
+_0:
+ return _pIdx.X4
+}
- if int32(_pLeft.X0) == i32(152) && int32(_sqlite3ExprAffinity(tls, _pLeft)) == i32(66) && ((*XTable)(_pLeft.X14).X16) == 0 {
- goto _14
- }
+var _sqlite3IndexAffinityStrØ00__func__Ø000 [24]int8
- _sqlite3ValueFree(tls, _pVal)
- return i32(0)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3IndexAffinityStrØ00__func__Ø000[0], str(107341), 24)
+}
-_14:
-_11:
- _cnt = i32(0)
-_15:
- if store1(&_c, int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_cnt))))) == i32(0) || _c == int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(0))))) || _c == int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(1))))) || _c == int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(2))))) {
- goto _16
+// Convert OP_Column opcodes to OP_Copy in previously generated code.
+//
+// This routine runs over generated VDBE code and translates OP_Column
+// opcodes into OP_Copy when the table is being accessed via co-routine
+// instead of via table lookup.
+//
+// If the bIncrRowid parameter is 0, then any OP_Rowid instructions on
+// cursor iTabCur are transformed into OP_Null. Or, if bIncrRowid is non-zero,
+// then each OP_Rowid is transformed into an instruction to increment the
+// value stored in its output register.
+func _translateColumnToCopy(tls *crt.TLS, _pParse *XParse, _iStart int32, _iTabCur int32, _iRegister int32, _bIncrRowid int32) {
+ var _iEnd int32
+ var _v *TVdbe
+ var _pOp *XVdbeOp
+ _v = (*TVdbe)(_pParse.X2)
+ _pOp = _sqlite3VdbeGetOp(tls, _v, _iStart)
+ _iEnd = _sqlite3VdbeCurrentAddr(tls, _v)
+ if ((*Xsqlite3)(_pParse.X0).X17) != 0 {
+ return
}
-
- _cnt += 1
- goto _15
-
-_16:
- if _cnt == i32(0) || i32(255) == int32(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_cnt-i32(1)))))) {
- goto _21
+_1:
+ if _iStart >= _iEnd {
+ goto _4
}
-
- *_pisComplete = bool2int((_c == int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_wc)) + 1*uintptr(i32(0)))))) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_cnt+i32(1))))) == i32(0)))
- _9_pPrefix = _sqlite3Expr(tls, _db, i32(97), _z)
- if _9_pPrefix == nil {
- goto _23
+ if (_pOp.X3) != _iTabCur {
+ goto _2
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pPrefix)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_cnt))) = int8(i32(0))
-_23:
- *_ppPrefix = _9_pPrefix
- if _op != i32(135) {
- goto _24
+ if int32(_pOp.X0) == i32(99) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(64))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = (_pOp.X4) + _iRegister
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(8 /* X4 */))) = _pOp.X5
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(12 /* X5 */))) = i32(0)
+ goto _7
}
-
- _10_v = (*TVdbe)(_pParse.X2)
- _sqlite3VdbeSetVarmask(tls, _10_v, int32(_pRight.X9))
- if (*_pisComplete) == 0 || (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRight)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(1))))) == 0 {
- goto _26
+ if int32(_pOp.X0) != i32(125) {
+ goto _8
}
-
- _11_r1 = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3ExprCodeTarget(tls, _pParse, _pRight, _11_r1)
- _sqlite3VdbeChangeP3(tls, _10_v, uint32(_sqlite3VdbeCurrentAddr(tls, _10_v)-i32(1)), i32(0))
- _sqlite3ReleaseTempReg(tls, _pParse, _11_r1)
-_26:
-_24:
- goto _27
-
-_21:
- _z = nil
-_27:
-_9:
- _rc = bool2int(_z != nil)
- _sqlite3ValueFree(tls, _pVal)
- return _rc
+ if _bIncrRowid != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(73))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = _pOp.X4
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(8 /* X4 */))) = i32(1)
+ goto _10
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(59))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(12 /* X5 */))) = i32(0)
+_10:
+_8:
+_7:
+_2:
+ *(*uintptr)(unsafe.Pointer(func() **XVdbeOp { _iStart += 1; return &_pOp }())) += uintptr(24)
+ goto _1
+_4:
}
-func _sqlite3IsLikeFunction(tls *crt.TLS, _db *Xsqlite3, _pExpr *XExpr, _pIsNocase *int32, _aWc *int8) (r0 int32) { // sqlite3.c:107254:1
- var _pDef *XFuncDef // sqlite3.c:107255:11
- _ = _pDef
- if int32(_pExpr.X0) == i32(151) && (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil && ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0) == i32(2) {
- goto _2
+// This function is a no-op unless currently processing an EXPLAIN QUERY PLAN
+// command, or if either SQLITE_DEBUG or SQLITE_ENABLE_STMT_SCANSTATUS was
+// defined at compile-time. If it is not a no-op, a single OP_Explain opcode
+// is added to the output to describe the table scan strategy in pLevel.
+//
+// If an OP_Explain opcode is added to the VM, its address is returned.
+// Otherwise, if no OP_Explain is coded, zero is returned.
+func _sqlite3WhereExplainOneScan(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pLevel *XWhereLevel, _iLevel int32, _iFrom int32, _wctrlFlags uint16) (r0 int32) {
+ var _ret, _1_iId, _1_isSearch int32
+ var _1_flags uint32
+ var _1_zMsg, _5_zFmt, _13_zRangeOp *int8
+ var _1_db *Xsqlite3
+ var _1_v *TVdbe
+ var _1_zBuf [100]int8
+ var _1_str XStrAccum
+ var _1_pItem *TSrcList_item
+ var _5_pIdx *XIndex
+ var _1_pLoop *XWhereLoop
+ _ret = i32(0)
+ _1_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
+ _1_v = (*TVdbe)(_pParse.X2)
+ _1_db = (*Xsqlite3)(_pParse.X0)
+ _1_iId = _pParse.X58
+ _1_pLoop = (*XWhereLoop)(_pLevel.X18)
+ _1_flags = _1_pLoop.X9
+ if ((_1_flags & uint32(i32(8192))) != 0) || (int32(_wctrlFlags)&i32(32)) != 0 {
+ return i32(0)
}
- return i32(0)
-
-_2:
- func() {
- if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107262), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(43888)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pDef = _sqlite3FindFunction(tls, _db, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), i32(2), uint8(i32(1)), uint8(i32(0)))
- if func() int32 {
- if _pDef == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107264), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ _1_isSearch = bool2int((((_1_flags & uint32(i32(48))) != uint32(i32(0))) || (((_1_flags & uint32(i32(1024))) == uint32(i32(0))) && (int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X0) > i32(0)))) || (int32(_wctrlFlags)&i32(3)) != 0)
+ _sqlite3StrAccumInit(tls, &_1_str, _1_db, (*int8)(unsafe.Pointer(&_1_zBuf)), int32(u32(100)), i32(1000000000))
+ _sqlite3StrAccumAppendAll(tls, &_1_str, func() *int8 {
+ if _1_isSearch != 0 {
+ return str(107365)
}
- return i32(0)
- }() == 0 && (int32(_pDef.X1)&i32(4)) != i32(0) {
+ return str(107372)
+ }())
+ if (*XSelect)(_1_pItem.X5) != nil {
+ _sqlite3XPrintf(tls, &_1_str, str(107377), int32(_1_pItem.X10))
goto _8
}
- return i32(0)
-
+ _sqlite3XPrintf(tls, &_1_str, str(107390), unsafe.Pointer(_1_pItem.X2))
_8:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_aWc), _pDef.X2, uint32(i32(3)))
- func() {
- if (*int8)(unsafe.Pointer(&_likeInfoAlt)) != (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+uintptr(0 /* X0 */))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107273), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(108716)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+1*uintptr(i32(1)))) != (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+uintptr(1 /* X1 */))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107274), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(108768)))
- crt.X__builtin_abort(tls)
- }
- }()
+ if (_1_pItem.X3) != nil {
+ _sqlite3XPrintf(tls, &_1_str, str(107400), unsafe.Pointer(_1_pItem.X3))
+ }
+ if (_1_flags & uint32(i32(1280))) != uint32(i32(0)) {
+ goto _10
+ }
+ _5_zFmt = nil
func() {
- if (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+1*uintptr(i32(2)))) != (*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_likeInfoAlt))+uintptr(2 /* X2 */))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107275), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IsLikeFunctionØ00__func__Ø000))), unsafe.Pointer(str(108828)))
+ if (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X4) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126959), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExplainOneScanØ00__func__Ø000))), unsafe.Pointer(str(107407)))
crt.X__builtin_abort(tls)
}
}()
- *_pIsNocase = bool2int((int32(_pDef.X1) & i32(8)) == i32(0))
- return i32(1)
-}
-
-var _sqlite3IsLikeFunctionØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3IsLikeFunctionØ00__func__Ø000[0], str(108888), 22)
-}
-
-var _likeInfoAlt TcompareInfo // sqlite3.c:106139:33
-
-func init() {
- _likeInfoAlt = TcompareInfo{X0: u8(37), X1: u8(95), X2: u8(0), X3: u8(0)}
-}
-
-func _sqlite3VdbeGetBoundValue(tls *crt.TLS, _v *TVdbe, _iVar int32, _aff uint8) (r0 *XMem) { // sqlite3.c:75959:1
- var _1_pMem *XMem // sqlite3.c:75962:9
- _ = _1_pMem
- var _2_pRet *XMem // sqlite3.c:75964:21
- _ = _2_pRet
+ _5_pIdx = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop)) + uintptr(28 /* X8 */))))).X4)
func() {
- if _iVar <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75960), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeGetBoundValueØ00__func__Ø000))), unsafe.Pointer(str(108912)))
+ if (_1_flags&uint32(i32(16384))) != 0 && (_1_flags&uint32(i32(64))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126961), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExplainOneScanØ00__func__Ø000))), unsafe.Pointer(str(107432)))
crt.X__builtin_abort(tls)
}
}()
- if _v == nil {
- goto _2
+ if (((*XTable)(_1_pItem.X4).X9)&uint32(i32(32))) == uint32(i32(0)) || int32((uint32(_5_pIdx.X16)<>uint(i32(30))) != i32(2) {
+ goto _17
}
-
- _1_pMem = (*XMem)(unsafe.Pointer(uintptr(_v.X24) + 48*uintptr(_iVar-i32(1))))
- if i32(0) != (int32(_1_pMem.X1) & i32(1)) {
- goto _3
+ if _1_isSearch != 0 {
+ _5_zFmt = str(107484)
}
-
- _2_pRet = _sqlite3ValueNew(tls, (*Xsqlite3)(_v.X0))
- if _2_pRet == nil {
- goto _4
+ goto _19
+_17:
+ if (_1_flags & uint32(i32(131072))) != 0 {
+ _5_zFmt = str(107496)
+ goto _21
+ }
+ if (_1_flags & uint32(i32(16384))) != 0 {
+ _5_zFmt = str(107529)
+ goto _23
+ }
+ if (_1_flags & uint32(i32(64))) != 0 {
+ _5_zFmt = str(107554)
+ goto _25
+ }
+ _5_zFmt = str(107572)
+_25:
+_23:
+_21:
+_19:
+ if _5_zFmt != nil {
+ _sqlite3StrAccumAppend(tls, &_1_str, str(107581), i32(7))
+ _sqlite3XPrintf(tls, &_1_str, _5_zFmt, unsafe.Pointer(_5_pIdx.X0))
+ _explainIndexRange(tls, &_1_str, _1_pLoop)
+ }
+ goto _27
+_10:
+ if (_1_flags&uint32(i32(256))) == uint32(i32(0)) || (_1_flags&uint32(i32(15))) == uint32(i32(0)) {
+ goto _29
+ }
+ if (_1_flags & uint32(i32(5))) != 0 {
+ _13_zRangeOp = str(107589)
+ goto _31
+ }
+ if (_1_flags & uint32(i32(48))) == uint32(i32(48)) {
+ _13_zRangeOp = str(107591)
+ goto _33
+ }
+ if (_1_flags & uint32(i32(32))) != 0 {
+ _13_zRangeOp = str(107605)
+ goto _35
}
-
- _sqlite3VdbeMemCopy(tls, _2_pRet, _1_pMem)
- _sqlite3ValueApplyAffinity(tls, _2_pRet, _aff, uint8(i32(1)))
-_4:
- return _2_pRet
-
-_3:
-_2:
- r0 = nil
- return
-}
-
-var _sqlite3VdbeGetBoundValueØ00__func__Ø000 [25]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeGetBoundValueØ00__func__Ø000[0], str(108920), 25)
-}
-
-func _sqlite3VdbeSetVarmask(tls *crt.TLS, _v *TVdbe, _iVar int32) { // sqlite3.c:75980:1
func() {
- if _iVar <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(75981), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeSetVarmaskØ00__func__Ø000))), unsafe.Pointer(str(108912)))
+ if (_1_flags & uint32(i32(16))) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126989), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExplainOneScanØ00__func__Ø000))), unsafe.Pointer(str(107607)))
crt.X__builtin_abort(tls)
}
}()
- if _iVar < i32(32) {
- goto _2
+ _13_zRangeOp = str(107629)
+_35:
+_33:
+_31:
+ _sqlite3XPrintf(tls, &_1_str, str(107631), unsafe.Pointer(_13_zRangeOp))
+ goto _38
+_29:
+ if (_1_flags & uint32(i32(1024))) != uint32(i32(0)) {
+ _sqlite3XPrintf(tls, &_1_str, str(107669), (*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X0, unsafe.Pointer((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X4))
}
+_38:
+_27:
+ _1_zMsg = _sqlite3StrAccumFinish(tls, &_1_str)
+ _ret = _sqlite3VdbeAddOp4(tls, _1_v, i32(165), _1_iId, _iLevel, _iFrom, _1_zMsg, i32(-1))
+ return _ret
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(192 /* X41 */)))
- *p = (*p) | u32(2147483648)
- sink5 = *p
+ _ = _1_str
+ _ = _1_zBuf
+ panic(0)
+}
+
+var _sqlite3WhereExplainOneScanØ00__func__Ø000 [27]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WhereExplainOneScanØ00__func__Ø000[0], str(107696), 27)
+}
+
+// Argument pLevel describes a strategy for scanning table pTab. This
+// function appends text to pStr that describes the subset of table
+// rows scanned by the strategy in the form of an SQL expression.
+//
+// For example, if the query:
+//
+// SELECT * FROM t1 WHERE a=1 AND b>2;
+//
+// is run and there is an index on (a, b), then this function returns a
+// string similar to:
+//
+// "a=? AND b>?"
+func _explainIndexRange(tls *crt.TLS, _pStr *XStrAccum, _pLoop *XWhereLoop) {
+ var _i, _j int32
+ var _1_z *int8
+ var _nEq, _nSkip uint16
+ var _pIndex *XIndex
+ _pIndex = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
+ _nEq = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X0
+ _nSkip = _pLoop.X11
+ if (int32(_nEq) == i32(0)) && (((_pLoop.X9) & uint32(i32(48))) == uint32(i32(0))) {
+ return
}
- goto _3
-
+ _sqlite3StrAccumAppend(tls, _pStr, str(107723), i32(2))
+ _i = i32(0)
_2:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v)) + uintptr(192 /* X41 */)))
- *p = (*p) | (u32(1) << uint(_iVar-i32(1)))
- sink5 = *p
- }
-_3:
-}
-
-var _sqlite3VdbeSetVarmaskØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeSetVarmaskØ00__func__Ø000[0], str(108948), 22)
-}
-
-var _isLikeOrGlobØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_isLikeOrGlobØ00__func__Ø000[0], str(108972), 13)
-}
-
-func _sqlite3VdbeChangeP3(tls *crt.TLS, _p *TVdbe, _addr uint32, _val int32) { // sqlite3.c:72211:1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sqlite3VdbeGetOp(tls, _p, int32(_addr)))) + uintptr(12 /* X5 */))) = _val
-}
-
-func _isMatchOfColumn(tls *crt.TLS, _pExpr *XExpr, _peOp2 *uint8) (r0 int32) { // sqlite3.c:129225:1
- var _pList *XExprList // sqlite3.c:129238:12
- _ = _pList
- var _pCol *XExpr // sqlite3.c:129239:8
- _ = _pCol
- var _i int32 // sqlite3.c:129240:7
- _ = _i
- if int32(_pExpr.X0) == i32(151) {
- goto _0
- }
- return i32(0)
-
-_0:
- _pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))
- if _pList != nil && (_pList.X0) == i32(2) {
- goto _2
+ if _i >= int32(_nEq) {
+ goto _5
}
- return i32(0)
-
-_2:
- _pCol = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(1)))).X0)
- if int32(_pCol.X0) == i32(152) && ((*XTable)(_pCol.X14).X16) != 0 {
- goto _4
+ _1_z = _explainIndexColumnName(tls, _pIndex, _i)
+ if _i != 0 {
+ _sqlite3StrAccumAppend(tls, _pStr, str(107726), i32(5))
}
- return i32(0)
-
-_4:
- _i = i32(0)
+ _sqlite3XPrintf(tls, _pStr, func() *int8 {
+ if _i >= int32(_nSkip) {
+ return str(107732)
+ }
+ return str(107737)
+ }(), unsafe.Pointer(_1_z))
+ _i += 1
+ goto _2
_5:
- if _i >= i32(4) {
- goto _8
+ _j = _i
+ if ((_pLoop.X9) & uint32(i32(32))) != 0 {
+ _explainAppendTerm(tls, _pStr, _pIndex, int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X1), _j, _i, str(107605))
+ _i = i32(1)
}
-
- if _sqlite3StrICmp(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), (*TEncName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_isMatchOfColumnØ00aOpØ001))+8*uintptr(_i))).X0) != i32(0) {
- goto _9
+ if ((_pLoop.X9) & uint32(i32(16))) != 0 {
+ _explainAppendTerm(tls, _pStr, _pIndex, int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X2), _j, _i, str(107629))
}
-
- *_peOp2 = (*TEncName)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_isMatchOfColumnØ00aOpØ001)) + 8*uintptr(_i))).X1
- return i32(1)
-
-_9:
- _i += 1
- goto _5
-
-_8:
- return i32(0)
-}
-
-var _isMatchOfColumnØ00aOpØ001 [4]TEncName // sqlite3.c:129232:5
-
-func init() {
- _isMatchOfColumnØ00aOpØ001 = [4]TEncName{TEncName{X0: str(97824), X1: u8(64)}, TEncName{X0: str(6540), X1: u8(66)}, TEncName{X0: str(6548), X1: u8(65)}, TEncName{X0: str(108988), X1: u8(67)}}
+ _sqlite3StrAccumAppend(tls, _pStr, str(37898), i32(1))
}
-func _sqlite3ExprForVectorField(tls *crt.TLS, _pParse *XParse, _pVector *XExpr, _iField int32) (r0 *XExpr) { // sqlite3.c:91302:1
- var _pRet *XExpr // sqlite3.c:91307:8
- _ = _pRet
- if int32(_pVector.X0) != i32(119) {
- goto _0
+// Return the name of the i-th column of the pIdx index.
+func _explainIndexColumnName(tls *crt.TLS, _pIdx *XIndex, _i int32) (r0 *int8) {
+ _i = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i))))
+ if _i == i32(-2) {
+ return str(107745)
}
-
- func() {
- if ((_pVector.X2) & uint32(i32(2048))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91309), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprForVectorFieldØ00__func__Ø000))), unsafe.Pointer(str(108996)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pRet = _sqlite3PExpr(tls, _pParse, i32(159), nil, nil)
- if _pRet == nil {
- goto _3
+ if _i == i32(-1) {
+ return str(27227)
}
+ return (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1) + 16*uintptr(_i))).X0
+}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(32 /* X9 */))) = int16(_iField)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pRet)) + uintptr(12 /* X4 */))))) = _pVector
-_3:
+// This routine is a helper for explainIndexRange() below
+//
+// pStr holds the text of an expression that we are building up one term
+// at a time. This routine adds a new term to the end of the expression.
+// Terms are separated by AND so add the "AND" text for second and subsequent
+// terms only.
+func _explainAppendTerm(tls *crt.TLS, _pStr *XStrAccum, _pIdx *XIndex, _nTerm int32, _iTerm int32, _bAnd int32, _zOp *int8) {
+ var _i int32
func() {
- if _pRet != nil && (_pRet.X8) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91331), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprForVectorFieldØ00__func__Ø000))), unsafe.Pointer(str(109028)))
+ if _nTerm < i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126844), unsafe.Pointer((*int8)(unsafe.Pointer(&_explainAppendTermØ00__func__Ø000))), unsafe.Pointer(str(107752)))
crt.X__builtin_abort(tls)
}
}()
- goto _7
-
-_0:
- if int32(_pVector.X0) != i32(158) {
- goto _8
+ if _bAnd != 0 {
+ _sqlite3StrAccumAppend(tls, _pStr, str(107726), i32(5))
}
-
- _pVector = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_iField))).X0)
-_8:
- _pRet = _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _pVector, i32(0))
-_7:
- return _pRet
-}
-
-var _sqlite3ExprForVectorFieldØ00__func__Ø000 [26]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprForVectorFieldØ00__func__Ø000[0], str(109056), 26)
-}
-
-func _isDistinctRedundant(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pWC *XWhereClause, _pDistinct *XExprList) (r0 int32) { // sqlite3.c:130831:1
- var _pTab *XTable // sqlite3.c:130837:9
- _ = _pTab
- var _pIdx *XIndex // sqlite3.c:130838:9
- _ = _pIdx
- var _i int32 // sqlite3.c:130839:7
- _ = _i
- var _iBase int32 // sqlite3.c:130840:7
- _ = _iBase
- var _1_p *XExpr // sqlite3.c:130854:10
- _ = _1_p
- if (_pTabList.X0) == i32(1) {
- goto _0
+ if _nTerm > i32(1) {
+ _sqlite3StrAccumAppend(tls, _pStr, str(107761), i32(1))
}
- return i32(0)
-
-_0:
- _iBase = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X11
- _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
_i = i32(0)
-_1:
- if _i >= (_pDistinct.X0) {
- goto _4
- }
-
- _1_p = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDistinct))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if int32(_1_p.X0) != i32(152) || (_1_p.X8) != _iBase || int32(_1_p.X9) >= i32(0) {
+_4:
+ if _i >= _nTerm {
goto _7
}
- return i32(1)
-
-_7:
+ if _i != 0 {
+ _sqlite3StrAccumAppend(tls, _pStr, str(107763), i32(1))
+ }
+ _sqlite3StrAccumAppendAll(tls, _pStr, _explainIndexColumnName(tls, _pIdx, _iTerm+_i))
_i += 1
- goto _1
-
-_4:
- _pIdx = (*XIndex)(_pTab.X2)
-_8:
- if _pIdx == nil {
- goto _11
+ goto _4
+_7:
+ if _nTerm > i32(1) {
+ _sqlite3StrAccumAppend(tls, _pStr, str(37898), i32(1))
}
-
- if int32(_pIdx.X15) != i32(0) {
- goto _12
+ _sqlite3StrAccumAppend(tls, _pStr, _zOp, i32(1))
+ if _nTerm > i32(1) {
+ _sqlite3StrAccumAppend(tls, _pStr, str(107761), i32(1))
}
-
- goto _9
-
-_12:
_i = i32(0)
-_13:
- if _i >= int32(_pIdx.X13) {
- goto _16
- }
-
- if nil != _sqlite3WhereFindTerm(tls, _pWC, _iBase, _i, u64(18446744073709551615), uint32(i32(2)), _pIdx) {
- goto _17
- }
-
- if _findIndexCol(tls, _pParse, _pDistinct, _iBase, _pIdx, _i) >= i32(0) {
- goto _18
- }
-
- goto _16
-
-_18:
- if _indexColumnNotNull(tls, _pIdx, _i) != i32(0) {
- goto _19
- }
-
- goto _16
-
-_19:
-_17:
- _i += 1
- goto _13
-
-_16:
- if _i != int32(_pIdx.X13) {
- goto _20
- }
- return i32(1)
-
-_20:
-_9:
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _8
-
_11:
- return i32(0)
-}
-
-func _sqlite3WhereFindTerm(tls *crt.TLS, _pWC *XWhereClause, _iCur int32, _iColumn int32, _notReady uint64, _op uint32, _pIdx *XIndex) (r0 *XWhereTerm) { // sqlite3.c:130745:1
- var _pResult *XWhereTerm // sqlite3.c:130753:13
- _ = _pResult
- var _p *XWhereTerm // sqlite3.c:130754:13
- _ = _p
- var _scan XWhereScan // sqlite3.c:130755:13
- _ = _scan
- _pResult = nil
- _p = _whereScanInit(tls, &_scan, _pWC, _iCur, _iColumn, _op, _pIdx)
- {
- p := &_op
- *p = (*p) & uint32(i32(130))
- sink5 = *p
- }
-_0:
- if _p == nil {
- goto _1
- }
-
- if ((_p.X11) & _notReady) != uint64(i32(0)) {
- goto _2
- }
-
- if (_p.X11) != uint64(i32(0)) || (uint32(_p.X4)&_op) == uint32(i32(0)) {
- goto _4
- }
- return _p
-
-_4:
- if _pResult != nil {
- goto _5
- }
-
- _pResult = _p
-_5:
-_2:
- _p = _whereScanNext(tls, &_scan)
- goto _0
-
-_1:
- return _pResult
-}
-
-func _whereScanInit(tls *crt.TLS, _pScan *XWhereScan, _pWC *XWhereClause, _iCur int32, _iColumn int32, _opMask uint32, _pIdx *XIndex) (r0 *XWhereTerm) { // sqlite3.c:130683:1
- var _1_j int32 // sqlite3.c:130697:9
- _ = _1_j
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(0 /* X0 */))))) = _pWC
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(4 /* X1 */))))) = _pWC
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(12 /* X3 */))))) = nil
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(16 /* X4 */))) = int8(i32(0))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(8 /* X2 */))) = nil
- if _pIdx == nil {
- goto _0
+ if _i >= _nTerm {
+ goto _14
}
-
- _1_j = _iColumn
- _iColumn = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_j))))
- if _iColumn != i32(-2) {
- goto _1
+ if _i != 0 {
+ _sqlite3StrAccumAppend(tls, _pStr, str(107763), i32(1))
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(12 /* X3 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */))))) + 20*uintptr(_1_j))).X0)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(8 /* X2 */))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_1_j)))
- goto _2
-
-_1:
- if _iColumn != int32((*XTable)(_pIdx.X3).X10) {
- goto _3
+ _sqlite3StrAccumAppend(tls, _pStr, str(50423), i32(1))
+ _i += 1
+ goto _11
+_14:
+ if _nTerm > i32(1) {
+ _sqlite3StrAccumAppend(tls, _pStr, str(37898), i32(1))
+ }
+}
+
+var _explainAppendTermØ00__func__Ø000 [18]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_explainAppendTermØ00__func__Ø000[0], str(107765), 18)
+}
+
+// Generate code for the start of the iLevel-th loop in the WHERE clause
+// implementation described by pWInfo.
+func _sqlite3WhereCodeOneLoopStart(tls *crt.TLS, _pWInfo *XWhereInfo, _iLevel int32, _notReady uint64) (r0 uint64) {
+ var _j, _k, _iCur, _addrNxt, _omitTable, _bRev, _addrBrk, _addrHalt, _addrCont, _iRowidReg, _iReleaseReg, _loopAgain, _3_regYield, _4_iReg, _4_addrNotFound, _4_nConstraint, _4_iIn, _5_iTarget, _15_testOp, _15_start, _15_memEndValue, _17_r1, _17_rTemp, _17_op, _26_regBase, _26_startEq, _26_endEq, _26_start_constraints, _26_nConstraint, _26_iIdxCur, _26_nExtraReg, _26_op, _65_iCovCur, _65_regReturn, _65_regRowset, _65_regRowid, _65_iLoopBody, _65_iRetInit, _65_untestedTerms, _65_ii, _66_nNotReady, _72_iTerm, _76_jmp1, _78_addrExplain, _79_r, _79_iSet, _81_nPk, _81_iPk, _82_iCol, _92_skipLikeAddr int32
+ var _96_x uint32
+ var _26_zStartAff, _26_zEndAff *int8
+ var _26_nEq, _26_nBtm, _26_nTop, _65_wctrlFlags uint16
+ var _26_bSeekPastNull, _26_bStopAtNull, _35_t, _36_t uint8
+ var _db *Xsqlite3
+ var _65_pTab *XTable
+ var _v *TVdbe
+ var _65_pOrTab *XSrcList
+ var _pTabItem, _66_origSrc *TSrcList_item
+ var _7_pRight, _10_pCompare, _10_pRight, _17_pX, _21_pX, _38_pRight, _46_pRight, _65_pAndExpr, _73_pExpr, _76_pOrExpr, _92_pE, _97_pE *XExpr
+ var _97_sEAlt XExpr
+ var _pParse *XParse
+ var _17_aMoveOp [4]uint8
+ var _pIdx, _58_pPk, _65_pCov, _71_pPk, _81_pPk *XIndex
+ var _10_pOp *XVdbeOp
+ var _76_pSubWInfo *XWhereInfo
+ var _pLoop, _78_pSubLoop *XWhereLoop
+ var _pLevel *XWhereLevel
+ var _pTerm, _15_pStart, _15_pEnd, _26_pRangeStart, _26_pRangeEnd, _34_t, _75_pOrTerm, _97_pAlt *XWhereTerm
+ var _pWC, _65_pOrWc *XWhereClause
+ _iRowidReg = i32(0)
+ _iReleaseReg = i32(0)
+ _pIdx = nil
+ _pParse = (*XParse)(_pWInfo.X0)
+ _v = (*TVdbe)(_pParse.X2)
+ _pWC = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_iLevel)))
+ _pLoop = (*XWhereLoop)(_pLevel.X18)
+ _pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
+ _iCur = _pTabItem.X11
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(68 /* X19 */))) = _notReady & (^_sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _iCur))
+ _bRev = int32(((_pWInfo.X20) >> uint(_iLevel)) & uint64(i32(1)))
+ _omitTable = bool2int((((_pLoop.X9) & uint32(i32(64))) != uint32(i32(0))) && ((int32(_pWInfo.X10) & i32(32)) == i32(0)))
+ _addrBrk = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(12 /* X3 */))), store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(16 /* X4 */))), _sqlite3VdbeMakeLabel(tls, _v)))
+ _addrCont = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(24 /* X6 */))), _sqlite3VdbeMakeLabel(tls, _v))
+ if (int32(_pLevel.X11) > i32(0)) && ((int32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+68*uintptr(i32(0))))))+uintptr(36 /* X9 */))).X0) & i32(8)) != i32(0)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(0 /* X0 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _pLevel.X0)
+ _sqlite3VdbeComment(tls, _v, str(107783))
}
-
- _iColumn = i32(-1)
- goto _4
-
+ _j = _iLevel
_3:
- if _iColumn < i32(0) {
- goto _5
- }
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(16 /* X4 */))) = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1) + 16*uintptr(_iColumn))).X4
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(8 /* X2 */))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_1_j)))
-_5:
-_4:
-_2:
- goto _6
-
-_0:
- if _iColumn != i32(-2) {
+ if _j <= i32(0) || ((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(_j))).X0) != i32(0) {
goto _7
}
- return nil
-
-_7:
-_6:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(20 /* X7 */))) = _opMask
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(24 /* X8 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(i32(0)))) = _iCur
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(i32(0)))) = int16(_iColumn)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(17 /* X5 */))) = uint8(i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(18 /* X6 */))) = uint8(i32(1))
- return _whereScanNext(tls, _pScan)
-}
-
-func _whereScanNext(tls *crt.TLS, _pScan *XWhereScan) (r0 *XWhereTerm) { // sqlite3.c:130582:1
- var _iCur int32 // sqlite3.c:130583:7
- _ = _iCur
- var _iColumn int16 // sqlite3.c:130584:7
- _ = _iColumn
- var _pX *XExpr // sqlite3.c:130585:8
- _ = _pX
- var _pWC *XWhereClause // sqlite3.c:130586:15
- _ = _pWC
- var _pTerm *XWhereTerm // sqlite3.c:130587:13
- _ = _pTerm
- var _k int32 // sqlite3.c:130588:7
- _ = _k
- var _5_j int32 // sqlite3.c:130609:17
- _ = _5_j
- var _10_pColl *XCollSeq // sqlite3.c:130625:23
- _ = _10_pColl
- var _10_pParse *XParse // sqlite3.c:130626:21
- _ = _10_pParse
- _k = _pScan.X8
- func() {
- if int32(_pScan.X6) > int32(_pScan.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130590), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereScanNextØ00__func__Ø000))), unsafe.Pointer(str(109084)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pWC = (*XWhereClause)(_pScan.X1)
-_2:
- _iColumn = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(int32(_pScan.X6)-i32(1))))
- _iCur = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(int32(_pScan.X6)-i32(1))))
- func() {
- if _pWC == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130595), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereScanNextØ00__func__Ø000))), unsafe.Pointer(str(109116)))
- crt.X__builtin_abort(tls)
- }
- }()
-_6:
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(_pWC.X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(_k)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
+ _j -= 1
+ goto _3
_7:
- if _k >= (_pWC.X3) {
- goto _10
- }
-
- if (_pTerm.X8) != _iCur || (*(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) != int32(_iColumn) || int32(_iColumn) == i32(-2) && _sqlite3ExprCompareSkip(tls, (*XExpr)((*XExpr)(_pTerm.X0).X4), (*XExpr)(_pScan.X3), _iCur) != i32(0) || int32(_pScan.X6) > i32(1) && (((*XExpr)(_pTerm.X0).X2)&uint32(i32(1))) != uint32(i32(0)) {
- goto _16
+ _addrHalt = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_j))).X3
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _3_regYield = _pTabItem.X7
+ _sqlite3VdbeAddOp3(tls, _v, i32(15), _3_regYield, i32(0), _pTabItem.X6)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _sqlite3VdbeAddOp2(tls, _v, i32(16), _3_regYield, _addrBrk)
+ _sqlite3VdbeComment(tls, _v, str(107195), unsafe.Pointer((*XTable)(_pTabItem.X4).X0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(13))
+ goto _9
}
-
- if (int32(_pTerm.X4)&i32(2048)) == i32(0) || int32(_pScan.X5) >= i32(11) || int32(store34(&_pX, _sqlite3ExprSkipCollate(tls, (*XExpr)((*XExpr)(_pTerm.X0).X5))).X0) != i32(152) {
- goto _19
+ if ((_pLoop.X9) & uint32(i32(1024))) == uint32(i32(0)) {
+ goto _10
}
-
- _5_j = i32(0)
-_20:
- if _5_j >= int32(_pScan.X5) {
- goto _23
+ _4_nConstraint = int32(_pLoop.X10)
+ _sqlite3ExprCachePush(tls, _pParse)
+ _4_iReg = _sqlite3GetTempRange(tls, _pParse, _4_nConstraint+i32(2))
+ _4_addrNotFound = _pLevel.X3
+ _j = i32(0)
+_11:
+ if _j >= _4_nConstraint {
+ goto _14
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(_5_j)))) != (_pX.X8) || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(_5_j)))) != int32(_pX.X9) {
- goto _25
+ _5_iTarget = (_4_iReg + _j) + i32(2)
+ _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
+ if func() int32 {
+ if _pTerm == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ goto _12
}
-
- goto _23
-
-_25:
- _5_j += 1
- goto _20
-
-_23:
- if _5_j != int32(_pScan.X5) {
- goto _26
+ if (int32(_pTerm.X4) & i32(1)) != 0 {
+ _codeEqualityTerm(tls, _pParse, _pTerm, _pLevel, _j, _bRev, _5_iTarget)
+ _4_addrNotFound = _pLevel.X4
+ goto _19
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(_5_j))) = _pX.X8
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(_5_j))) = _pX.X9
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(17 /* X5 */))) += 1
-_26:
+ _7_pRight = (*XExpr)((*XExpr)(_pTerm.X0).X5)
+ _codeExprOrVector(tls, _pParse, _7_pRight, _5_iTarget, i32(1))
_19:
- if (uint32(_pTerm.X4) & (_pScan.X7)) == uint32(i32(0)) {
+_12:
+ _j += 1
+ goto _11
+_14:
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), (*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0, _4_iReg)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), _4_nConstraint, _4_iReg+i32(1))
+ _sqlite3VdbeAddOp4(tls, _v, i32(11), _iCur, _4_addrNotFound, _4_iReg, (*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4, func() int32 {
+ if ((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X1) != 0 {
+ return i32(-1)
+ }
+ return i32(-2)
+ }())
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _iCur
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(func() int32 {
+ if (_pWInfo.X14) != 0 {
+ return i32(164)
+ }
+ return i32(50)
+ }())
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
+ _4_iIn = (*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0
+ _j = _4_nConstraint - i32(1)
+_24:
+ if _j < i32(0) {
goto _27
}
-
- if (_pScan.X2) == nil || (int32(_pTerm.X4)&i32(256)) != i32(0) {
- goto _29
- }
-
- _10_pParse = (*XParse)((*XWhereInfo)(_pWC.X0).X0)
- _pX = (*XExpr)(_pTerm.X0)
- if _sqlite3IndexAffinityOk(tls, _pX, _pScan.X4) != 0 {
+ _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
+ if (_j < i32(16)) && ((int32((*t66)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X3)>>uint(_j))&i32(1)) != 0 {
+ _disableTerm(tls, _pLevel, _pTerm)
goto _30
}
-
- goto _8
-
-_30:
+ if (int32(_pTerm.X4) & i32(1)) == i32(0) {
+ goto _31
+ }
func() {
- if (*XExpr)(_pX.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130631), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereScanNextØ00__func__Ø000))), unsafe.Pointer(str(109124)))
+ if (*TInLoop)((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1) == nil && (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128027), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(107812)))
crt.X__builtin_abort(tls)
}
}()
- _10_pColl = _sqlite3BinaryCompareCollSeq(tls, _10_pParse, (*XExpr)(_pX.X4), (*XExpr)(_pX.X5))
- if _10_pColl != nil {
- goto _33
+ if (_db.X17) == 0 {
+ func() {
+ if _4_iIn <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128029), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(107856)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _10_pOp = _sqlite3VdbeGetOp(tls, _v, (*TInLoop)(unsafe.Pointer(uintptr((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1)+12*uintptr(preInc1(&_4_iIn, -1)))).X1)
+ func() {
+ if int32(_10_pOp.X0) != i32(99) && int32(_10_pOp.X0) != i32(125) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128031), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(107862)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_10_pOp.X0) == i32(99) && (_10_pOp.X5) != ((_4_iReg+_j)+i32(2)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128032), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(107910)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_10_pOp.X0) == i32(125) && (_10_pOp.X4) != ((_4_iReg+_j)+i32(2)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128033), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(107954)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp3(tls, _v, int32(_10_pOp.X0), _10_pOp.X3, _10_pOp.X4, _10_pOp.X5)
}
-
- _10_pColl = (*XCollSeq)((*Xsqlite3)(_10_pParse.X0).X2)
-_33:
- if _sqlite3StrICmp(tls, _10_pColl.X0, _pScan.X2) == 0 {
- goto _34
+ _10_pCompare = _sqlite3PExpr(tls, _pParse, i32(78), nil, nil)
+ func() {
+ if _10_pCompare == nil && (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128041), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(107997)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _10_pCompare == nil {
+ goto _50
}
-
- goto _8
-
-_34:
-_29:
- if (int32(_pTerm.X4)&i32(130)) == i32(0) || int32(store34(&_pX, (*XExpr)((*XExpr)(_pTerm.X0).X5)).X0) != i32(152) || (_pX.X8) != (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(28 /* X9 */))))) + 4*uintptr(i32(0))))) || int32(_pX.X9) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[11]int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan))+uintptr(72 /* X10 */))))) + 2*uintptr(i32(0))))) {
- goto _38
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pCompare)) + uintptr(12 /* X4 */))))) = (*XExpr)((*XExpr)(_pTerm.X0).X4)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pCompare)) + uintptr(16 /* X5 */))))) = store36(&_10_pRight, _sqlite3Expr(tls, _db, i32(157), nil))
+ if _10_pRight != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pRight)) + uintptr(28 /* X8 */))) = (_4_iReg + _j) + i32(2)
+ _sqlite3ExprIfFalse(tls, _pParse, _10_pCompare, _pLevel.X6, i32(0))
}
-
- goto _8
-
-_38:
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(4 /* X1 */))))) = _pWC
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(24 /* X8 */))) = _k + i32(1)
- return _pTerm
-
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pCompare)) + uintptr(12 /* X4 */))))) = nil
+ _sqlite3ExprDelete(tls, _db, _10_pCompare)
+_50:
+_31:
+_30:
+ _j -= 1
+ goto _24
_27:
-_16:
-_8:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _k += 1; return &_pTerm }())) += uintptr(48)
- goto _7
-
+ _sqlite3ExprCachePop(tls, _pParse)
+ goto _52
_10:
- _pWC = (*XWhereClause)(_pWC.X1)
- _k = i32(0)
- if _pWC != nil {
- goto _6
- }
-
- if int32(_pScan.X6) < int32(_pScan.X5) {
- goto _39
- }
-
- goto _3
-
-_39:
- _pWC = (*XWhereClause)(_pScan.X0)
- _k = i32(0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pScan)) + uintptr(18 /* X6 */))) += 1
- goto _2
-
-_3:
- return nil
-}
-
-var _whereScanNextØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereScanNextØ00__func__Ø000[0], str(109136), 14)
-}
-
-func _sqlite3IndexAffinityOk(tls *crt.TLS, _pExpr *XExpr, _idx_affinity int8) (r0 int32) { // sqlite3.c:91144:1
- var _aff int8 // sqlite3.c:91145:8
- _ = _aff
- _aff = _comparisonAffinity(tls, _pExpr)
- switch int32(_aff) {
- case i32(65):
- goto _1
- case i32(66):
- goto _2
- default:
- goto _3
+ if ((_pLoop.X9)&uint32(i32(256))) == uint32(i32(0)) || ((_pLoop.X9)&uint32(i32(5))) == uint32(i32(0)) {
+ goto _54
}
-
-_1:
- return i32(1)
-
-_2:
- return bool2int(int32(_idx_affinity) == i32(66))
-
-_3:
- return bool2int(int32(_idx_affinity) >= i32(67))
-}
-
-func _comparisonAffinity(tls *crt.TLS, _pExpr *XExpr) (r0 int8) { // sqlite3.c:91121:1
- var _aff int8 // sqlite3.c:91122:8
- _ = _aff
func() {
- if int32(_pExpr.X0) != i32(78) && int32(_pExpr.X0) != i32(74) && int32(_pExpr.X0) != i32(81) && int32(_pExpr.X0) != i32(79) && int32(_pExpr.X0) != i32(82) && int32(_pExpr.X0) != i32(80) && int32(_pExpr.X0) != i32(77) && int32(_pExpr.X0) != i32(72) && int32(_pExpr.X0) != i32(148) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91123), unsafe.Pointer((*int8)(unsafe.Pointer(&_comparisonAffinityØ00__func__Ø000))), unsafe.Pointer(str(109152)))
+ if int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128073), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108029)))
crt.X__builtin_abort(tls)
}
}()
+ _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(i32(0))))
func() {
- if (*XExpr)(_pExpr.X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91126), unsafe.Pointer((*int8)(unsafe.Pointer(&_comparisonAffinityØ00__func__Ø000))), unsafe.Pointer(str(109332)))
+ if _pTerm == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128075), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108051)))
crt.X__builtin_abort(tls)
}
}()
- _aff = _sqlite3ExprAffinity(tls, (*XExpr)(_pExpr.X4))
- if (*XExpr)(_pExpr.X5) == nil {
- goto _12
- }
-
- _aff = _sqlite3CompareAffinity(tls, (*XExpr)(_pExpr.X5), _aff)
- goto _13
-
-_12:
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _14
- }
-
- _aff = _sqlite3CompareAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0)+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0), _aff)
- goto _15
-
-_14:
- if int32(_aff) != i32(0) {
- goto _16
- }
-
- _aff = int8(i32(65))
-_16:
-_15:
-_13:
- r0 = _aff
- return
-}
-
-var _comparisonAffinityØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_comparisonAffinityØ00__func__Ø000[0], str(109348), 19)
-}
-
-func _findIndexCol(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _iBase int32, _pIdx *XIndex, _iCol int32) (r0 int32) { // sqlite3.c:130779:1
- var _i int32 // sqlite3.c:130786:7
- _ = _i
- var _zColl *int8 // sqlite3.c:130787:14
- _ = _zColl
- var _1_p *XExpr // sqlite3.c:130790:10
- _ = _1_p
- var _2_pColl *XCollSeq // sqlite3.c:130795:15
- _ = _2_pColl
- _zColl = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_iCol)))
- _i = i32(0)
-_0:
- if _i >= (_pList.X0) {
- goto _3
- }
-
- _1_p = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if int32(_1_p.X0) != i32(152) || int32(_1_p.X9) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iCol)))) || (_1_p.X8) != _iBase {
- goto _6
- }
-
- _2_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if _2_pColl == nil || i32(0) != _sqlite3StrICmp(tls, _2_pColl.X0, _zColl) {
- goto _8
- }
- return _i
-
-_8:
-_6:
- _i += 1
- goto _0
-
-_3:
- return i32(-1)
-}
-
-func _indexColumnNotNull(tls *crt.TLS, _pIdx *XIndex, _iCol int32) (r0 int32) { // sqlite3.c:130808:1
- var _j int32 // sqlite3.c:130809:7
- _ = _j
func() {
- if _pIdx == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130810), unsafe.Pointer((*int8)(unsafe.Pointer(&_indexColumnNotNullØ00__func__Ø000))), unsafe.Pointer(str(43128)))
+ if (*XExpr)(_pTerm.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128076), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108060)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _iCol < i32(0) || _iCol >= int32(_pIdx.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130811), unsafe.Pointer((*int8)(unsafe.Pointer(&_indexColumnNotNullØ00__func__Ø000))), unsafe.Pointer(str(109368)))
+ if _omitTable != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128077), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108076)))
crt.X__builtin_abort(tls)
}
}()
- _j = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iCol))))
- if _j < i32(0) {
- goto _5
+ _iReleaseReg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _iRowidReg = _codeEqualityTerm(tls, _pParse, _pTerm, _pLevel, i32(0), _bRev, _iReleaseReg)
+ if _iRowidReg != _iReleaseReg {
+ _sqlite3ReleaseTempReg(tls, _pParse, _iReleaseReg)
}
- return int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1) + 16*uintptr(_j))).X3)
-
-_5:
- if _j != i32(-1) {
- goto _7
+ _addrNxt = _pLevel.X4
+ _sqlite3VdbeAddOp3(tls, _v, i32(31), _iCur, _addrNxt, _iRowidReg)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _iRowidReg, i32(1))
+ _sqlite3ExprCacheStore(tls, _pParse, _iCur, i32(-1), _iRowidReg)
+ _sqlite3VdbeComment(tls, _v, str(61650))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(164))
+ goto _64
+_54:
+ if ((_pLoop.X9)&uint32(i32(256))) == uint32(i32(0)) || ((_pLoop.X9)&uint32(i32(2))) == uint32(i32(0)) {
+ goto _66
}
- return i32(1)
-
-_7:
+ _15_testOp = i32(164)
+ _15_memEndValue = i32(0)
func() {
- if _j != i32(-2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130818), unsafe.Pointer((*int8)(unsafe.Pointer(&_indexColumnNotNullØ00__func__Ø000))), unsafe.Pointer(str(109400)))
+ if _omitTable != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128099), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108076)))
crt.X__builtin_abort(tls)
}
}()
- return i32(0)
-}
-
-var _indexColumnNotNullØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_indexColumnNotNullØ00__func__Ø000[0], str(109408), 19)
-}
-
-func _whereShortCut(tls *crt.TLS, _pBuilder *XWhereLoopBuilder) (r0 int32) { // sqlite3.c:134594:1
- var _pWInfo *XWhereInfo // sqlite3.c:134595:13
- _ = _pWInfo
- var _pItem *TSrcList_item // sqlite3.c:134596:23
- _ = _pItem
- var _pWC *XWhereClause // sqlite3.c:134597:15
- _ = _pWC
- var _pTerm *XWhereTerm // sqlite3.c:134598:13
- _ = _pTerm
- var _pLoop *XWhereLoop // sqlite3.c:134599:13
- _ = _pLoop
- var _iCur int32 // sqlite3.c:134600:7
- _ = _iCur
- var _j int32 // sqlite3.c:134601:7
- _ = _j
- var _pTab *XTable // sqlite3.c:134602:9
- _ = _pTab
- var _pIdx *XIndex // sqlite3.c:134603:9
- _ = _pIdx
- var _3_opMask int32 // sqlite3.c:134628:11
- _ = _3_opMask
- _pWInfo = (*XWhereInfo)(_pBuilder.X0)
- if (int32(_pWInfo.X10) & i32(32)) == 0 {
- goto _0
+ _j = i32(0)
+ _15_pStart = store65(&_15_pEnd, nil)
+ if ((_pLoop.X9) & uint32(i32(32))) != 0 {
+ _15_pStart = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
+ }
+ if ((_pLoop.X9) & uint32(i32(16))) != 0 {
+ _15_pEnd = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
}
- return i32(0)
-
-_0:
func() {
- if ((*XSrcList)(_pWInfo.X1).X0) < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134607), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereShortCutØ00__func__Ø000))), unsafe.Pointer(str(109428)))
+ if _15_pStart == nil && _15_pEnd == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128104), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108089)))
crt.X__builtin_abort(tls)
}
}()
- _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1) + uintptr(8 /* X2 */)))))
- _pTab = (*XTable)(_pItem.X4)
- if (_pTab.X16) == 0 {
- goto _3
+ if _bRev != 0 {
+ _pTerm = _15_pStart
+ _15_pStart = _15_pEnd
+ _15_pEnd = _pTerm
}
- return i32(0)
-
-_3:
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _4
+ if _15_pStart == nil {
+ goto _75
}
- return i32(0)
-
-_4:
- _iCur = _pItem.X11
- _pWC = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
- _pLoop = (*XWhereLoop)(_pBuilder.X3)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(46 /* X11 */))) = uint16(i32(0))
- _pTerm = _sqlite3WhereFindTerm(tls, _pWC, _iCur, i32(-1), uint64(i32(0)), uint32(i32(130)), nil)
- if _pTerm == nil {
- goto _5
- }
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(4353))
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(i32(0)))) = _pTerm
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(44 /* X10 */))) = uint16(i32(1))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(1))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(22 /* X6 */))) = int16(i32(33))
- goto _6
-
-_5:
- _pIdx = (*XIndex)(_pTab.X2)
-_7:
- if _pIdx == nil {
- goto _10
- }
-
+ _17_aMoveOp = [4]uint8{u8(27), u8(25), u8(24), u8(26)}
+ i32(0)
+ i32(0)
+ i32(0)
func() {
- if (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(60 /* X15 */))))) != (**XWhereTerm)(unsafe.Pointer(_pLoop.X13)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134629), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereShortCutØ00__func__Ø000))), unsafe.Pointer(str(109456)))
+ if (int32(_15_pStart.X3) & i32(0)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128129), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108110)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_pIdx.X15) != i32(0) && (*XExpr)(_pIdx.X9) == nil && int32(_pIdx.X13) <= i32(3) {
- goto _15
- }
-
- goto _8
-
-_15:
- _3_opMask = func() int32 {
- if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0 {
- return i32(130)
+ _17_pX = (*XExpr)(_15_pStart.X0)
+ func() {
+ if _17_pX == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(67534)))
+ crt.X__builtin_abort(tls)
}
- return i32(2)
}()
- _j = i32(0)
-_18:
- if _j >= int32(_pIdx.X13) {
- goto _21
- }
-
- _pTerm = _sqlite3WhereFindTerm(tls, _pWC, _iCur, _j, uint64(i32(0)), uint32(_3_opMask), _pIdx)
- if _pTerm != nil {
- goto _22
- }
-
- goto _21
-
-_22:
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j))) = _pTerm
- _j += 1
- goto _18
-
-_21:
- if _j == int32(_pIdx.X13) {
- goto _23
- }
-
- goto _8
-
-_23:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(4609))
- if ((uint32((_pIdx.X16)>>uint(i32(5)))<>uint(i32(31))) == 0 && ((_pItem.X14)&(^_columnsInIndex(tls, _pIdx))) != uint64(i32(0)) {
- goto _25
- }
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(64))
- sink5 = *p
+ if _sqlite3ExprIsVector(tls, (*XExpr)(_17_pX.X5)) != 0 {
+ _17_r1 = store1(&_17_rTemp, _sqlite3GetTempReg(tls, _pParse))
+ _codeExprOrVector(tls, _pParse, (*XExpr)(_17_pX.X5), _17_r1, i32(1))
+ _17_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_17_aMoveOp)) + 1*uintptr((int32(_17_pX.X0)-i32(79))|i32(1)))))
+ goto _81
}
-_25:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(44 /* X10 */))) = uint16(_j)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(_j)
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = _pIdx
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(22 /* X6 */))) = int16(i32(39))
- goto _10
-
-_8:
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _7
-
-_10:
-_6:
- if (_pLoop.X9) == 0 {
- goto _26
+ _17_r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_17_pX.X5), &_17_rTemp)
+ _disableTerm(tls, _pLevel, _15_pStart)
+ _17_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_17_aMoveOp)) + 1*uintptr(int32(_17_pX.X0)-i32(79)))))
+_81:
+ _sqlite3VdbeAddOp3(tls, _v, _17_op, _iCur, _addrBrk, _17_r1)
+ _sqlite3VdbeComment(tls, _v, str(61650))
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _17_r1, i32(1))
+ _sqlite3ReleaseTempReg(tls, _pParse, _17_rTemp)
+ goto _82
+_75:
+ _sqlite3VdbeAddOp2(tls, _v, func() int32 {
+ if _bRev != 0 {
+ return i32(33)
+ }
+ return i32(37)
+ }(), _iCur, _addrHalt)
+_82:
+ if _15_pEnd == nil {
+ goto _85
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) = i16(1)
- *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))))) + uintptr(64 /* X18 */))))) = _pLoop
+ _21_pX = (*XExpr)(_15_pEnd.X0)
func() {
- if ((*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))).X0) != i32(1) || _iCur != (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[64]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */)))))+uintptr(4 /* X1 */))))) + 4*uintptr(i32(0))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134657), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereShortCutØ00__func__Ø000))), unsafe.Pointer(str(109492)))
+ if _21_pX == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(67534)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(8 /* X1 */))) = uint64(i32(1))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))))) + uintptr(4 /* X1 */))) = _iCur
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(72 /* X21 */))) = int16(i32(1))
- if (*XExprList)(_pWInfo.X2) == nil {
- goto _30
- }
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = int8((*XExprList)(_pWInfo.X2).X0)
-_30:
- if (int32(_pWInfo.X10) & i32(256)) == 0 {
- goto _31
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(1))
-_31:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(16 /* X2 */))) = int8(i32(48))
- return i32(1)
-
-_26:
- return i32(0)
-}
-
-var _whereShortCutØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereShortCutØ00__func__Ø000[0], str(109548), 14)
-}
-
-func _columnsInIndex(tls *crt.TLS, _pIdx *XIndex) (r0 uint64) { // sqlite3.c:133056:1
- var _m uint64 // sqlite3.c:133057:11
- _ = _m
- var _j int32 // sqlite3.c:133058:7
- _ = _j
- var _1_x int32 // sqlite3.c:133060:9
- _ = _1_x
- _m = u64(0)
- _j = int32(_pIdx.X14) - i32(1)
-_0:
- if _j < i32(0) {
- goto _3
- }
-
- _1_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j))))
- if _1_x < i32(0) {
- goto _4
- }
-
- if _1_x >= i32(63) {
- goto _5
- }
-
- {
- p := &_m
- *p = (*p) | (u64(1) << uint(_1_x))
- sink15 = *p
- }
-_5:
-_4:
- _j -= 1
- goto _0
-
-_3:
- return _m
-}
-
-func _whereLoopAddAll(tls *crt.TLS, _pBuilder *XWhereLoopBuilder) (r0 int32) { // sqlite3.c:133777:1
- var _pWInfo *XWhereInfo // sqlite3.c:133778:13
- _ = _pWInfo
- var _mPrereq uint64 // sqlite3.c:133779:11
- _ = _mPrereq
- var _mPrior uint64 // sqlite3.c:133780:11
- _ = _mPrior
- var _iTab int32 // sqlite3.c:133781:7
- _ = _iTab
- var _pTabList *XSrcList // sqlite3.c:133782:11
- _ = _pTabList
- var _pItem *TSrcList_item // sqlite3.c:133783:23
- _ = _pItem
- var _pEnd *TSrcList_item // sqlite3.c:133784:23
- _ = _pEnd
- var _db *Xsqlite3 // sqlite3.c:133785:11
- _ = _db
- var _rc int32 // sqlite3.c:133786:7
- _ = _rc
- var _pNew *XWhereLoop // sqlite3.c:133787:13
- _ = _pNew
- var _priorJointype uint8 // sqlite3.c:133788:6
- _ = _priorJointype
- var _1_mUnusable uint64 // sqlite3.c:133794:13
- _ = _1_mUnusable
- var _3_p *TSrcList_item // sqlite3.c:133805:27
- _ = _3_p
- _pWInfo = (*XWhereInfo)(_pBuilder.X0)
- _mPrereq = u64(0)
- _mPrior = u64(0)
- _pTabList = (*XSrcList)(_pWInfo.X1)
- _pEnd = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pWInfo.X11)))
- _db = (*Xsqlite3)((*XParse)(_pWInfo.X0).X0)
- _rc = i32(0)
- _priorJointype = u8(0)
- _pNew = (*XWhereLoop)(_pBuilder.X3)
- _whereLoopInit(tls, _pNew)
- *func() **TSrcList_item { _iTab = i32(0); return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList)) + uintptr(8 /* X2 */)))))
-_0:
- if uintptr(unsafe.Pointer(_pItem)) >= uintptr(unsafe.Pointer(_pEnd)) {
- goto _3
- }
-
- _1_mUnusable = uint64(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(17 /* X3 */))) = uint8(_iTab)
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X1 */))) = _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _pItem.X11)
- if ((int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem))+uintptr(36 /* X9 */))).X0) | int32(_priorJointype)) & i32(10)) == i32(0) {
- goto _4
- }
-
- _mPrereq = _mPrior
-_4:
- _priorJointype = (*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(36 /* X9 */))).X0
- if ((*XTable)(_pItem.X4).X16) == 0 {
- goto _5
- }
-
- _3_p = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + 68*uintptr(i32(1))))
-_6:
- if uintptr(unsafe.Pointer(_3_p)) >= uintptr(unsafe.Pointer(_pEnd)) {
- goto _9
- }
-
- if _1_mUnusable == 0 && (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_p))+uintptr(36 /* X9 */))).X0)&i32(10)) == 0 {
- goto _11
- }
-
- {
- p := &_1_mUnusable
- *p = (*p) | _sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _3_p.X11)
- sink15 = *p
+ func() {
+ if (int32(_15_pEnd.X3) & i32(0)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108144)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _15_memEndValue = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _codeExprOrVector(tls, _pParse, (*XExpr)(_21_pX.X5), _15_memEndValue, i32(1))
+ if (i32(0) == _sqlite3ExprIsVector(tls, (*XExpr)(_21_pX.X5))) && ((int32(_21_pX.X0) == i32(81)) || (int32(_21_pX.X0) == i32(79))) {
+ _15_testOp = func() int32 {
+ if _bRev != 0 {
+ return i32(80)
+ }
+ return i32(82)
+ }()
+ goto _95
}
-_11:
- *(*uintptr)(unsafe.Pointer(&_3_p)) += uintptr(68)
- goto _6
-
-_9:
- _rc = _whereLoopAddVirtual(tls, _pBuilder, _mPrereq, _1_mUnusable)
- goto _12
-
-_5:
- _rc = _whereLoopAddBtree(tls, _pBuilder, _mPrereq)
-_12:
- if _rc != i32(0) {
- goto _13
+ _15_testOp = func() int32 {
+ if _bRev != 0 {
+ return i32(81)
+ }
+ return i32(79)
+ }()
+_95:
+ if i32(0) == _sqlite3ExprIsVector(tls, (*XExpr)(_21_pX.X5)) {
+ _disableTerm(tls, _pLevel, _15_pEnd)
}
-
- _rc = _whereLoopAddOr(tls, _pBuilder, _mPrereq, _1_mUnusable)
-_13:
- {
- p := &_mPrior
- *p = (*p) | (_pNew.X1)
- sink15 = *p
+_85:
+ _15_start = _sqlite3VdbeCurrentAddr(tls, _v)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(func() int32 {
+ if _bRev != 0 {
+ return i32(6)
+ }
+ return i32(7)
+ }())
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _iCur
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _15_start
+ func() {
+ if int32(_pLevel.X14) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128180), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108176)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _15_testOp != i32(164) {
+ _iRowidReg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(125), _iCur, _iRowidReg)
+ _sqlite3ExprCacheStore(tls, _pParse, _iCur, i32(-1), _iRowidReg)
+ _sqlite3VdbeAddOp3(tls, _v, _15_testOp, _15_memEndValue, _addrBrk, _iRowidReg)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(83)))
}
- if _rc == 0 && (_db.X17) == 0 {
- goto _15
+ goto _104
+_66:
+ if ((_pLoop.X9) & uint32(i32(512))) == 0 {
+ goto _105
}
-
- goto _3
-
-_15:
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _iTab += 1; return &_pItem }())) += uintptr(68)
- goto _0
-
-_3:
- _whereLoopClear(tls, _db, _pNew)
- return _rc
-}
-
-func _whereLoopAddVirtual(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64, _mUnusable uint64) (r0 int32) { // sqlite3.c:133533:1
- var _rc int32 // sqlite3.c:133538:7
- _ = _rc
- var _pWInfo *XWhereInfo // sqlite3.c:133539:13
- _ = _pWInfo
- var _pParse *XParse // sqlite3.c:133540:9
- _ = _pParse
- var _pWC *XWhereClause // sqlite3.c:133541:15
- _ = _pWC
- var _pSrc *TSrcList_item // sqlite3.c:133542:23
- _ = _pSrc
- var _p *Xsqlite3_index_info // sqlite3.c:133543:22
- _ = _p
- var _nConstraint int32 // sqlite3.c:133544:7
- _ = _nConstraint
- var _bIn int32 // sqlite3.c:133545:7
- _ = _bIn
- var _pNew *XWhereLoop // sqlite3.c:133546:13
- _ = _pNew
- var _mBest uint64 // sqlite3.c:133547:11
- _ = _mBest
- var _mNoOmit uint16 // sqlite3.c:133548:7
- _ = _mNoOmit
- var _2_seenZero int32 // sqlite3.c:133580:9
- _ = _2_seenZero
- var _2_seenZeroNoIN int32 // sqlite3.c:133581:9
- _ = _2_seenZeroNoIN
- var _2_mPrev uint64 // sqlite3.c:133582:13
- _ = _2_mPrev
- var _2_mBestNoIn uint64 // sqlite3.c:133583:13
- _ = _2_mBestNoIn
- var _5_i int32 // sqlite3.c:133602:11
- _ = _5_i
- var _5_mNext uint64 // sqlite3.c:133603:15
- _ = _5_mNext
- var _6_mThis uint64 // sqlite3.c:133606:17
- _ = _6_mThis
- _rc = i32(0)
+ _26_nEq = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X0
+ _26_nBtm = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X1
+ _26_nTop = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X2
+ _26_pRangeStart = nil
+ _26_pRangeEnd = nil
+ _26_nExtraReg = i32(0)
+ _26_zEndAff = nil
+ _26_bSeekPastNull = u8(0)
+ _26_bStopAtNull = u8(0)
+ _pIdx = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
+ _26_iIdxCur = _pLevel.X2
func() {
- if (_mPrereq & _mUnusable) != uint64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133550), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(109564)))
+ if int32(_26_nEq) < int32(_pLoop.X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128260), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108190)))
crt.X__builtin_abort(tls)
}
}()
- _pWInfo = (*XWhereInfo)(_pBuilder.X0)
- _pParse = (*XParse)(_pWInfo.X0)
- _pWC = (*XWhereClause)(_pBuilder.X1)
- _pNew = (*XWhereLoop)(_pBuilder.X3)
- _pSrc = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pNew.X3)))
func() {
- if ((*XTable)(_pSrc.X4).X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133556), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(109592)))
+ if (*XExprList)(_pWInfo.X2) != nil && ((*XExprList)(_pWInfo.X2).X0) != i32(1) && (int32(_pWInfo.X10)&i32(1)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108208)))
crt.X__builtin_abort(tls)
}
}()
- _p = _allocateIndexInfo(tls, _pParse, _pWC, _mUnusable, _pSrc, (*XExprList)(_pBuilder.X2), &_mNoOmit)
- if _p != nil {
- goto _4
+ if (((int32(_pWInfo.X10) & i32(1)) != i32(0)) && (int32(_pWInfo.X12) > i32(0))) && (int32(_pIdx.X13) > int32(_26_nEq)) {
+ func() {
+ if int32(_pLoop.X11) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128277), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108303)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _26_bSeekPastNull = uint8(i32(1))
+ _26_nExtraReg = i32(1)
}
- return _sqlite3NomemError(tls, i32(133559))
-
-_4:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(1024))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
- _nConstraint = _p.X0
- if _whereLoopResize(tls, (*Xsqlite3)(_pParse.X0), _pNew, _nConstraint) == 0 {
- goto _5
+ _j = int32(_26_nEq)
+ if ((_pLoop.X9) & uint32(i32(32))) != 0 {
+ _26_pRangeStart = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
+ _26_nExtraReg = func() int32 {
+ if _26_nExtraReg > int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X1) {
+ return _26_nExtraReg
+ }
+ return int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X1)
+ }()
+ func() {
+ if (int32(_26_pRangeStart.X3)&i32(256)) != i32(0) && ((_pLoop.X9)&uint32(i32(16))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128290), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108319)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
-
- _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_p))
- return _sqlite3NomemError(tls, i32(133567))
-
-_5:
- _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, u64(18446744073709551615), uint16(i32(0)), _p, _mNoOmit, &_bIn)
- if _rc != i32(0) || store15(&_mBest, (_pNew.X0)&(^_mPrereq)) == uint64(i32(0)) {
- goto _7
+ if ((_pLoop.X9) & uint32(i32(16))) == 0 {
+ goto _123
}
-
- _2_seenZero = i32(0)
- _2_seenZeroNoIN = i32(0)
- _2_mPrev = u64(0)
- _2_mBestNoIn = u64(0)
- if _bIn == 0 {
- goto _8
+ _26_pRangeEnd = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
+ _26_nExtraReg = func() int32 {
+ if _26_nExtraReg > int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X2) {
+ return _26_nExtraReg
+ }
+ return int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X2)
+ }()
+ if (int32(_26_pRangeEnd.X3) & i32(256)) != i32(0) {
+ func() {
+ if _26_pRangeStart == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128298), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108401)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32(_26_pRangeStart.X3) & i32(256)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128299), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108416)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(36 /* X9 */))) = uint32(preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), int32(_pLevel.X9))
+ _sqlite3VdbeComment(tls, _v, str(108452))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(40 /* X10 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
+ func() {
+ if (_bRev & i32(-2)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128308), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108470)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(36 /* X9 */)))
+ *p = (*p) << uint(i32(1))
+ sink5 = *p
+ }
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(_bRev^bool2int(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_26_nEq)))) == i32(1)))
+ sink5 = *p
+ }
}
-
- _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, u64(18446744073709551615), uint16(i32(1)), _p, _mNoOmit, &_bIn)
+ if _26_pRangeStart != nil {
+ goto _133
+ }
+ _j = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_26_nEq))))
+ if ((_j >= i32(0)) && (int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1)+16*uintptr(_j))).X3) == i32(0))) || (_j == i32(-2)) {
+ _26_bSeekPastNull = uint8(i32(1))
+ }
+_133:
+_123:
func() {
- if _bIn != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133591), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(109616)))
+ if _26_pRangeEnd != nil && (int32(_26_pRangeEnd.X3)&i32(0)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128320), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108485)))
crt.X__builtin_abort(tls)
}
}()
- _2_mBestNoIn = (_pNew.X0) & (^_mPrereq)
- if _2_mBestNoIn != uint64(i32(0)) {
- goto _11
- }
-
- _2_seenZero = i32(1)
- _2_seenZeroNoIN = i32(1)
-_11:
-_8:
-_12:
- if _rc != i32(0) {
- goto _13
+ if ((int32(_26_nEq) < int32(_pIdx.X13)) && (_bRev == bool2int(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_26_nEq)))) == i32(0)))) || (_bRev != 0 && (int32(_pIdx.X13) == int32(_26_nEq))) {
+ _34_t = _26_pRangeEnd
+ _26_pRangeEnd = _26_pRangeStart
+ _26_pRangeStart = _34_t
+ _35_t = _26_bSeekPastNull
+ _26_bSeekPastNull = _26_bStopAtNull
+ _26_bStopAtNull = _35_t
+ _36_t = uint8(_26_nBtm)
+ _26_nBtm = _26_nTop
+ _26_nTop = uint16(_36_t)
}
-
- _5_mNext = u64(18446744073709551615)
+ _26_regBase = _codeAllEqualityTerms(tls, _pParse, _pLevel, _bRev, _26_nExtraReg, &_26_zStartAff)
func() {
- if _5_mNext <= uint64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133604), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualØ00__func__Ø000))), unsafe.Pointer(str(109624)))
+ if _26_zStartAff != nil && _sqlite3Strlen30(tls, _26_zStartAff) < int32(_26_nEq) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128340), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108538)))
crt.X__builtin_abort(tls)
}
}()
- _5_i = i32(0)
-_16:
- if _5_i >= _nConstraint {
- goto _19
- }
-
- _6_mThis = ((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr(_p.X1)+12*uintptr(_5_i))).X3))).X11) & (^_mPrereq)
- if _6_mThis <= _2_mPrev || _6_mThis >= _5_mNext {
- goto _21
- }
-
- _5_mNext = _6_mThis
-_21:
- _5_i += 1
- goto _16
-
-_19:
- _2_mPrev = _5_mNext
- if _5_mNext != u64(18446744073709551615) {
- goto _22
- }
-
- goto _13
-
-_22:
- if _5_mNext != _mBest && _5_mNext != _2_mBestNoIn {
- goto _24
- }
-
- goto _12
-
-_24:
- _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, _5_mNext|_mPrereq, uint16(i32(0)), _p, _mNoOmit, &_bIn)
- if (_pNew.X0) != _mPrereq {
- goto _25
- }
-
- _2_seenZero = i32(1)
- if _bIn != i32(0) {
- goto _26
+ if (_26_zStartAff != nil) && (_26_nTop != 0) {
+ _26_zEndAff = _sqlite3DbStrDup(tls, _db, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_zStartAff))+1*uintptr(_26_nEq))))
}
-
- _2_seenZeroNoIN = i32(1)
-_26:
-_25:
- goto _12
-
-_13:
- if _rc != i32(0) || _2_seenZero != i32(0) {
- goto _28
+ _addrNxt = _pLevel.X4
+ _26_startEq = bool2int((_26_pRangeStart == nil) || (int32(_26_pRangeStart.X4)&i32(40)) != 0)
+ _26_endEq = bool2int((_26_pRangeEnd == nil) || (int32(_26_pRangeEnd.X4)&i32(40)) != 0)
+ _26_start_constraints = bool2int((_26_pRangeStart != nil) || (int32(_26_nEq) > i32(0)))
+ _26_nConstraint = int32(_26_nEq)
+ if _26_pRangeStart == nil {
+ goto _152
}
-
- _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, _mPrereq, uint16(i32(0)), _p, _mNoOmit, &_bIn)
- if _bIn != i32(0) {
- goto _29
+ _38_pRight = (*XExpr)((*XExpr)(_26_pRangeStart.X0).X5)
+ _codeExprOrVector(tls, _pParse, _38_pRight, _26_regBase+int32(_26_nEq), int32(_26_nBtm))
+ _whereLikeOptimizationStringFixup(tls, _v, _pLevel, _26_pRangeStart)
+ if ((int32(_26_pRangeStart.X3) & i32(0)) == i32(0)) && _sqlite3ExprCanBeNull(tls, _38_pRight) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), _26_regBase+int32(_26_nEq), _addrNxt)
}
-
- _2_seenZeroNoIN = i32(1)
-_29:
-_28:
- if _rc != i32(0) || _2_seenZeroNoIN != i32(0) {
- goto _31
+ if _26_zStartAff != nil {
+ _updateRangeAffinityStr(tls, _38_pRight, int32(_26_nBtm), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_zStartAff))+1*uintptr(_26_nEq))))
}
-
- _rc = _whereLoopAddVirtualOne(tls, _pBuilder, _mPrereq, _mPrereq, uint16(i32(1)), _p, _mNoOmit, &_bIn)
-_31:
-_7:
- if (_p.X7) == 0 {
- goto _32
+ {
+ p := &_26_nConstraint
+ *p = (*p) + int32(_26_nBtm)
+ sink1 = *p
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)(_p.X6))
-_32:
- _sqlite3DbFreeNN(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_p))
- return _rc
-}
-
-var _whereLoopAddVirtualØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereLoopAddVirtualØ00__func__Ø000[0], str(109632), 20)
-}
-
-func _allocateIndexInfo(tls *crt.TLS, _pParse *XParse, _pWC *XWhereClause, _mUnusable uint64, _pSrc *TSrcList_item, _pOrderBy *XExprList, _pmNoOmit *uint16) (r0 *Xsqlite3_index_info) { // sqlite3.c:131223:1
- var _i int32 // sqlite3.c:131231:7
- _ = _i
- var _j int32 // sqlite3.c:131231:10
- _ = _j
- var _nTerm int32 // sqlite3.c:131232:7
- _ = _nTerm
- var _pIdxCons *Tsqlite3_index_constraint // sqlite3.c:131233:35
- _ = _pIdxCons
- var _pIdxOrderBy *Tsqlite3_index_orderby // sqlite3.c:131234:32
- _ = _pIdxOrderBy
- var _pUsage *Tsqlite3_index_orderby // sqlite3.c:131235:41
- _ = _pUsage
- var _pTerm *XWhereTerm // sqlite3.c:131236:13
- _ = _pTerm
- var _nOrderBy int32 // sqlite3.c:131237:7
- _ = _nOrderBy
- var _pIdxInfo *Xsqlite3_index_info // sqlite3.c:131238:22
- _ = _pIdxInfo
- var _mNoOmit uint16 // sqlite3.c:131239:7
- _ = _mNoOmit
- var _2_n int32 // sqlite3.c:131263:9
- _ = _2_n
- var _3_pExpr *XExpr // sqlite3.c:131265:12
- _ = _3_pExpr
- var _6_op uint8 // sqlite3.c:131299:8
- _ = _6_op
- var _9_pExpr *XExpr // sqlite3.c:131340:10
- _ = _9_pExpr
- _mNoOmit = u16(0)
- *func() **XWhereTerm { _i = store1(&_nTerm, i32(0)); return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
-_0:
- if _i >= (_pWC.X3) {
- goto _3
+ if _sqlite3ExprIsVector(tls, _38_pRight) == i32(0) {
+ _disableTerm(tls, _pLevel, _26_pRangeStart)
+ goto _157
}
-
- if (_pTerm.X8) == (_pSrc.X11) {
- goto _4
+ _26_startEq = i32(1)
+_157:
+ _26_bSeekPastNull = uint8(i32(0))
+ goto _158
+_152:
+ if _26_bSeekPastNull != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _26_regBase+int32(_26_nEq))
+ _26_nConstraint += 1
+ _26_startEq = i32(0)
+ _26_start_constraints = i32(1)
}
-
- goto _1
-
-_4:
- if ((_pTerm.X11) & _mUnusable) == 0 {
- goto _5
+_158:
+ _codeApplyAffinity(tls, _pParse, _26_regBase, _26_nConstraint-int32(_26_bSeekPastNull), _26_zStartAff)
+ if (int32(_pLoop.X11) > i32(0)) && (_26_nConstraint == int32(_pLoop.X11)) {
+ goto _162
}
-
- goto _1
-
-_5:
+ _26_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aStartOpØ001)) + 1*uintptr(((_26_start_constraints<= _2_n {
- goto _16
+ if _sqlite3ExprIsVector(tls, _46_pRight) == i32(0) {
+ _disableTerm(tls, _pLevel, _26_pRangeEnd)
+ goto _173
}
-
- _3_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- if int32(_3_pExpr.X0) == i32(152) && (_3_pExpr.X8) == (_pSrc.X11) {
- goto _18
+ _26_endEq = i32(1)
+_173:
+ goto _174
+_165:
+ if _26_bStopAtNull != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _26_regBase+int32(_26_nEq))
+ _26_endEq = i32(0)
+ _26_nConstraint += 1
}
-
- goto _16
-
-_18:
- _i += 1
- goto _13
-
-_16:
- if _i != _2_n {
- goto _19
+_174:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_26_zStartAff))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_26_zEndAff))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
+ if _26_nConstraint != 0 {
+ _26_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aEndOpØ002)) + 1*uintptr((_bRev*i32(2))+_26_endEq))))
+ _sqlite3VdbeAddOp4Int(tls, _v, _26_op, _26_iIdxCur, _addrNxt, _26_regBase, _26_nConstraint)
}
-
- _nOrderBy = _2_n
-_19:
-_12:
- _pIdxInfo = (*Xsqlite3_index_info)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64((u32(64)+(u32(20)*uint32(_nTerm)))+(u32(8)*uint32(_nOrderBy)))))
- if _pIdxInfo != nil {
- goto _20
+ if _omitTable != 0 {
+ goto _178
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(61516))
- return nil
-
-_20:
- _pIdxCons = (*Tsqlite3_index_constraint)(unsafe.Pointer((*Xsqlite3_index_info)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + 64*uintptr(i32(1))))))
- _pIdxOrderBy = (*Tsqlite3_index_orderby)(unsafe.Pointer((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons)) + 12*uintptr(_nTerm)))))
- _pUsage = (*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxOrderBy)) + 8*uintptr(_nOrderBy)))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(0 /* X0 */))) = _nTerm
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(8 /* X2 */))) = _nOrderBy
- *(**Tsqlite3_index_constraint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(4 /* X1 */))))) = _pIdxCons
- *(**Tsqlite3_index_orderby)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(12 /* X3 */))))) = _pIdxOrderBy
- *(**Tsqlite3_index_orderby)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(16 /* X4 */))))) = _pUsage
- *func() **XWhereTerm { _i = store1(&_j, i32(0)); return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
-_21:
- if _i >= (_pWC.X3) {
- goto _24
+ if (((*XTable)(_pIdx.X3).X9) & uint32(i32(32))) != uint32(i32(0)) {
+ goto _179
}
-
- if (_pTerm.X8) == (_pSrc.X11) {
- goto _25
+ if (int32(_pWInfo.X10)&i32(1024)) != 0 || ((int32(_pWInfo.X10)&i32(4096)) != 0 && (int32(_pWInfo.X14) == i32(1))) {
+ _iRowidReg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(131), _26_iIdxCur, _iRowidReg)
+ _sqlite3ExprCacheStore(tls, _pParse, _iCur, i32(-1), _iRowidReg)
+ _sqlite3VdbeAddOp3(tls, _v, i32(32), _iCur, i32(0), _iRowidReg)
+ goto _183
}
-
- goto _22
-
-_25:
- if ((_pTerm.X11) & _mUnusable) == 0 {
- goto _26
+ _codeDeferredSeek(tls, _pWInfo, _pIdx, _iCur, _26_iIdxCur)
+_183:
+ goto _184
+_179:
+ if _iCur == _26_iIdxCur {
+ goto _185
+ }
+ _58_pPk = _sqlite3PrimaryKeyIndex(tls, (*XTable)(_pIdx.X3))
+ _iRowidReg = _sqlite3GetTempRange(tls, _pParse, int32(_58_pPk.X13))
+ _j = i32(0)
+_186:
+ if _j >= int32(_58_pPk.X13) {
+ goto _189
+ }
+ _k = int32(_sqlite3ColumnOfIndex(tls, _pIdx, *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_58_pPk.X1)) + 2*uintptr(_j)))))
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _26_iIdxCur, _k, _iRowidReg+_j)
+ _j += 1
+ goto _186
+_189:
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iCur, _addrCont, _iRowidReg, int32(_58_pPk.X13))
+_185:
+_184:
+_178:
+ _whereIndexExprTrans(tls, _pIdx, _iCur, _26_iIdxCur, _pWInfo)
+ if ((_pLoop.X9) & uint32(i32(4096))) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(164))
+ goto _191
+ }
+ if _bRev != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(6))
+ goto _193
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(7))
+_193:
+_191:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _26_iIdxCur
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(46 /* X13 */))) = uint8(func() int32 {
+ if ((_pLoop.X9) & uint32(i32(65536))) != uint32(i32(0)) {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+ if ((_pLoop.X9) & uint32(i32(15))) == uint32(i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(47 /* X14 */))) = uint8(i32(1))
+ goto _197
}
-
- goto _22
-
-_26:
func() {
- if ((int32(_pTerm.X4) & i32(-2049)) & ((int32(_pTerm.X4) & i32(-2049)) - i32(1))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131302), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(109652)))
+ if int32(_pLevel.X14) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128498), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108176)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pTerm.X4) & i32(-2433)) != i32(0) {
- goto _29
+_197:
+ if _omitTable != 0 {
+ _pIdx = nil
}
-
- goto _22
-
-_29:
- if (int32(_pTerm.X3) & i32(0)) == 0 {
- goto _30
+ goto _201
+_105:
+ if ((_pLoop.X9) & uint32(i32(8192))) == 0 {
+ goto _202
}
-
- goto _22
-
-_30:
+ _65_pCov = nil
+ _65_iCovCur = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _65_regReturn = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _65_regRowset = i32(0)
+ _65_regRowid = i32(0)
+ _65_iLoopBody = _sqlite3VdbeMakeLabel(tls, _v)
+ _65_untestedTerms = i32(0)
+ _65_pAndExpr = nil
+ _65_pTab = (*XTable)(_pTabItem.X4)
+ _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(i32(0))))
func() {
- if (*(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) < i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131309), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(109696)))
+ if _pTerm == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128565), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108051)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(0 /* X0 */))) = *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(8 /* X3 */))) = _i
- _6_op = uint8(int32(uint8(_pTerm.X4)) & i32(8191))
- if int32(_6_op) != i32(1) {
- goto _33
- }
-
- _6_op = uint8(i32(2))
-_33:
- if int32(_6_op) != i32(64) {
- goto _34
- }
-
- _6_op = _pTerm.X6
-_34:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(4 /* X1 */))) = _6_op
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
- i32(0)
func() {
- if (int32(_pTerm.X4) & i32(127)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131327), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocateIndexInfoØ00__func__Ø000))), unsafe.Pointer(str(109724)))
+ if (int32(_pTerm.X4) & i32(512)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128566), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108592)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_6_op)&i32(60)) == 0 || _sqlite3ExprIsVector(tls, (*XExpr)((*XExpr)(_pTerm.X0).X5)) == 0 {
- goto _38
+ func() {
+ if (int32(_pTerm.X3) & i32(16)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108617)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _65_pOrWc = (*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(52))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _65_regReturn
+ if int32(_pWInfo.X11) <= i32(1) {
+ goto _209
}
-
- if _i >= i32(16) {
- goto _39
+ _66_nNotReady = (int32(_pWInfo.X11) - _iLevel) - i32(1)
+ _65_pOrTab = (*XSrcList)(_sqlite3DbMallocRaw(tls, _db, uint64(u32(76)+(uint32(_66_nNotReady)*u32(68)))))
+ if _65_pOrTab == nil {
+ return _notReady
}
-
- {
- p := &_mNoOmit
- *p = uint16(int32(*p) | (i32(1) << uint(_i)))
- sink12 = *p
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab)) + uintptr(4 /* X1 */))) = uint32(uint8(_66_nNotReady + i32(1)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab)) + uintptr(0 /* X0 */))) = int32(_65_pOrTab.X1)
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab))+uintptr(8 /* X2 */)))), (unsafe.Pointer)(_pTabItem), u32(68))
+ _66_origSrc = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1) + uintptr(8 /* X2 */)))))
+ _k = i32(1)
+_211:
+ if _k > _66_nNotReady {
+ goto _214
}
-_39:
- if int32(_6_op) != i32(16) {
- goto _40
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab))+uintptr(8 /* X2 */)))))+68*uintptr(_k)))), (unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_66_origSrc))+68*uintptr((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+76*uintptr(_k))).X11)))), u32(68))
+ _k += 1
+ goto _211
+_214:
+ goto _215
+_209:
+ _65_pOrTab = (*XSrcList)(_pWInfo.X1)
+_215:
+ if (int32(_pWInfo.X10) & i32(16)) != i32(0) {
+ goto _216
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(8))
-_40:
- if int32(_6_op) != i32(4) {
- goto _41
+ if ((_65_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _65_regRowset = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _65_regRowset)
+ goto _218
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_constraint)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons))+12*uintptr(_j))))) + uintptr(4 /* X1 */))) = uint8(i32(32))
-_41:
-_38:
- _j += 1
-_22:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i += 1; return &_pTerm }())) += uintptr(48)
- goto _21
-
-_24:
- _i = i32(0)
-_42:
- if _i >= _nOrderBy {
- goto _45
+ _71_pPk = _sqlite3PrimaryKeyIndex(tls, _65_pTab)
+ _65_regRowset = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(110), _65_regRowset, int32(_71_pPk.X13))
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _71_pPk)
+_218:
+ _65_regRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+_216:
+ _65_iRetInit = _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _65_regReturn)
+ if (_pWC.X3) <= i32(1) {
+ goto _219
}
-
- _9_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxOrderBy))+8*uintptr(_i))))) + uintptr(0 /* X0 */))) = int32(_9_pExpr.X9)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxOrderBy))+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X3
- _i += 1
- goto _42
-
-_45:
- *_pmNoOmit = _mNoOmit
- return _pIdxInfo
-}
-
-var _allocateIndexInfoØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_allocateIndexInfoØ00__func__Ø000[0], str(109792), 18)
-}
-
-func _whereLoopResize(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop, _n int32) (r0 int32) { // sqlite3.c:132196:1
- var _paNew **XWhereTerm // sqlite3.c:132197:13
- _ = _paNew
- if int32(_p.X12) < _n {
- goto _0
+ _72_iTerm = i32(0)
+_220:
+ if _72_iTerm >= (_pWC.X3) {
+ goto _223
}
- return i32(0)
-
-_0:
- _n = (_n + i32(7)) & i32(-8)
- _paNew = (**XWhereTerm)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(4)*uint32(_n))))
- if _paNew != nil {
- goto _1
+ _73_pExpr = (*XExpr)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_72_iTerm))).X0)
+ if (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_72_iTerm))) == _pTerm {
+ goto _221
}
- return _sqlite3NomemError(tls, i32(132201))
-
-_1:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_paNew), (unsafe.Pointer)(_p.X13), u32(4)*uint32(_p.X12))
- if (**XWhereTerm)(unsafe.Pointer(_p.X13)) == (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(60 /* X15 */))))) {
- goto _2
+ if ((_73_pExpr.X2) & uint32(i32(1))) != uint32(i32(0)) {
+ goto _221
}
-
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p.X13))
-_2:
- *(***XWhereTerm)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X13 */))))) = _paNew
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(48 /* X12 */))) = uint16(_n)
- return i32(0)
-}
-
-func _whereLoopAddVirtualOne(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64, _mUsable uint64, _mExclude uint16, _pIdxInfo *Xsqlite3_index_info, _mNoOmit uint16, _pbIn *int32) (r0 int32) { // sqlite3.c:133379:1
- var _pWC *XWhereClause // sqlite3.c:133388:15
- _ = _pWC
- var _pIdxCons *Tsqlite3_index_constraint // sqlite3.c:133389:35
- _ = _pIdxCons
- var _pUsage *Tsqlite3_index_orderby // sqlite3.c:133390:41
- _ = _pUsage
- var _i int32 // sqlite3.c:133391:7
- _ = _i
- var _mxTerm int32 // sqlite3.c:133392:7
- _ = _mxTerm
- var _rc int32 // sqlite3.c:133393:7
- _ = _rc
- var _pNew *XWhereLoop // sqlite3.c:133394:13
- _ = _pNew
- var _pParse *XParse // sqlite3.c:133395:9
- _ = _pParse
- var _pSrc *TSrcList_item // sqlite3.c:133396:23
- _ = _pSrc
- var _nConstraint int32 // sqlite3.c:133397:7
- _ = _nConstraint
- var _1_pTerm *XWhereTerm // sqlite3.c:133407:15
- _ = _1_pTerm
- var _3_iTerm int32 // sqlite3.c:133437:9
- _ = _3_iTerm
- var _4_pTerm *XWhereTerm // sqlite3.c:133439:17
- _ = _4_pTerm
- var _4_j int32 // sqlite3.c:133440:11
- _ = _4_j
- _pWC = (*XWhereClause)(_pBuilder.X1)
- _pUsage = (*Tsqlite3_index_orderby)(_pIdxInfo.X4)
- _rc = i32(0)
- _pNew = (*XWhereLoop)(_pBuilder.X3)
- _pParse = (*XParse)((*XWhereInfo)(_pBuilder.X0).X0)
- _pSrc = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((*XWhereInfo)(_pBuilder.X0).X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pNew.X3)))
- _nConstraint = _pIdxInfo.X0
- func() {
- if (_mUsable & _mPrereq) != _mPrereq {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133399), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(109812)))
- crt.X__builtin_abort(tls)
- }
- }()
- *_pbIn = i32(0)
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _mPrereq
- _pIdxCons = *(**Tsqlite3_index_constraint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(4 /* X1 */)))))
- _i = i32(0)
-_2:
- if _i >= _nConstraint {
- goto _5
+ if (int32((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_72_iTerm))).X3) & i32(6)) != i32(0) {
+ goto _221
}
-
- _1_pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_pIdxCons.X3)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons)) + uintptr(5 /* X2 */))) = uint8(i32(0))
- if ((_1_pTerm.X11)&_mUsable) != (_1_pTerm.X11) || (int32(_1_pTerm.X4)&int32(_mExclude)) != i32(0) {
- goto _7
+ if (int32((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_72_iTerm))).X4) & i32(8191)) == i32(0) {
+ goto _221
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxCons)) + uintptr(5 /* X2 */))) = uint8(i32(1))
-_7:
- *(*uintptr)(unsafe.Pointer(func() **Tsqlite3_index_constraint { _i += 1; return &_pIdxCons }())) += uintptr(12)
- goto _2
-
-_5:
- crt.Xmemset(tls, (unsafe.Pointer)(_pUsage), i32(0), u32(8)*uint32(_nConstraint))
+ _73_pExpr = _sqlite3ExprDup(tls, _db, _73_pExpr, i32(0))
+ _65_pAndExpr = _sqlite3ExprAnd(tls, _db, _65_pAndExpr, _73_pExpr)
+_221:
+ _72_iTerm += 1
+ goto _220
+_223:
+ if _65_pAndExpr != nil {
+ _65_pAndExpr = _sqlite3PExpr(tls, _pParse, i32(327), nil, _65_pAndExpr)
+ }
+_219:
+ _65_wctrlFlags = uint16(i32(32) | (int32(_pWInfo.X10) & i32(1024)))
+ _65_ii = i32(0)
+_229:
+ if _65_ii >= (_65_pOrWc.X3) {
+ goto _232
+ }
+ _75_pOrTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_65_pOrWc.X5) + 48*uintptr(_65_ii)))
+ if (_75_pOrTerm.X8) != _iCur && (int32(_75_pOrTerm.X4)&i32(1024)) == i32(0) {
+ goto _234
+ }
+ _76_pOrExpr = (*XExpr)(_75_pOrTerm.X0)
+ _76_jmp1 = i32(0)
+ if (_65_pAndExpr != nil) && (((_76_pOrExpr.X2) & uint32(i32(1))) == uint32(i32(0))) {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pAndExpr)) + uintptr(12 /* X4 */))))) = _76_pOrExpr
+ _76_pOrExpr = _65_pAndExpr
+ }
+ _76_pSubWInfo = _sqlite3WhereBegin(tls, _pParse, _65_pOrTab, _76_pOrExpr, nil, nil, _65_wctrlFlags, _65_iCovCur)
func() {
- if (_pIdxInfo.X7) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133418), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(109844)))
+ if _76_pSubWInfo == nil && (_pParse.X16) == 0 && (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128672), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108651)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(24 /* X6 */))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(20 /* X5 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(32 /* X8 */))) = i32(0)
- *(*float64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(36 /* X9 */))) = float64(5e+98)
- *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(44 /* X10 */))) = int64(i32(25))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(52 /* X11 */))) = i32(0)
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(56 /* X12 */))) = uint64(int64(_pSrc.X14))
- _rc = _vtabBestIndex(tls, _pParse, (*XTable)(_pSrc.X4), _pIdxInfo)
- if _rc == 0 {
- goto _10
+ if _76_pSubWInfo == nil {
+ goto _241
}
- return _rc
+ _78_addrExplain = _sqlite3WhereExplainOneScan(tls, _pParse, _65_pOrTab, (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_76_pSubWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))), _iLevel, int32(_pLevel.X11), uint16(i32(0)))
-_10:
- _mxTerm = i32(-1)
- func() {
- if int32(_pNew.X12) < _nConstraint {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133432), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(109876)))
- crt.X__builtin_abort(tls)
+ if (int32(_pWInfo.X10) & i32(16)) != i32(0) {
+ goto _242
+ }
+ _79_iSet = func() int32 {
+ if _65_ii == ((_65_pOrWc.X3) - i32(1)) {
+ return i32(-1)
}
+ return _65_ii
}()
- _i = i32(0)
-_13:
- if _i >= _nConstraint {
- goto _16
+ if ((_65_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _79_r = _sqlite3ExprCodeGetColumn(tls, _pParse, _65_pTab, i32(-1), _iCur, _65_regRowid, uint8(i32(0)))
+ _76_jmp1 = _sqlite3VdbeAddOp4Int(tls, _v, i32(43), _65_regRowset, i32(0), _79_r, _79_iSet)
+ goto _246
}
-
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_i))) = nil
- _i += 1
- goto _13
-
-_16:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */))) = uint16(i32(0))
- _pIdxCons = *(**Tsqlite3_index_constraint)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(4 /* X1 */)))))
- _i = i32(0)
-_17:
- if _i >= _nConstraint {
- goto _20
+ _81_pPk = _sqlite3PrimaryKeyIndex(tls, _65_pTab)
+ _81_nPk = int32(_81_pPk.X13)
+ _79_r = _sqlite3GetTempRange(tls, _pParse, _81_nPk)
+ _81_iPk = i32(0)
+_247:
+ if _81_iPk >= _81_nPk {
+ goto _250
}
-
- if store1(&_3_iTerm, ((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pUsage))+8*uintptr(_i))).X0)-i32(1)) < i32(0) {
- goto _21
+ _82_iCol = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_pPk.X1)) + 2*uintptr(_81_iPk))))
+ _sqlite3ExprCodeGetColumnToReg(tls, _pParse, _65_pTab, _82_iCol, _iCur, _79_r+_81_iPk)
+ _81_iPk += 1
+ goto _247
+_250:
+ if _79_iSet != 0 {
+ _76_jmp1 = _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _65_regRowset, i32(0), _79_r, _81_nPk)
}
-
- _4_j = _pIdxCons.X3
- if _3_iTerm < _nConstraint && _4_j >= i32(0) && _4_j < (_pWC.X3) && (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_3_iTerm)))) == nil && int32(_pIdxCons.X2) != i32(0) {
- goto _26
+ if _79_iSet < i32(0) {
+ goto _252
}
-
- _rc = i32(1)
- _sqlite3ErrorMsg(tls, _pParse, str(109904), unsafe.Pointer((*XTable)(_pSrc.X4).X0))
- return _rc
-
-_26:
- _4_pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_4_j)))
- {
- p := (*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */)))
- *p = (*p) | (_4_pTerm.X11)
- sink15 = *p
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _79_r, _81_nPk, _65_regRowid)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _65_regRowset, _65_regRowid, _79_r, _81_nPk)
+ if _79_iSet != 0 {
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
+ }
+_252:
+ _sqlite3ReleaseTempRange(tls, _pParse, _79_r, _81_nPk)
+_246:
+_242:
+ _sqlite3VdbeAddOp2(tls, _v, i32(14), _65_regReturn, _65_iLoopBody)
+ if _76_jmp1 != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _76_jmp1)
+ }
+ if (_76_pSubWInfo.X15) != 0 {
+ _65_untestedTerms = i32(1)
}
+ _78_pSubLoop = (*XWhereLoop)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_76_pSubWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(i32(0)))).X18)
func() {
- if _3_iTerm >= int32(_pNew.X12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133456), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(109932)))
+ if ((_78_pSubLoop.X9) & uint32(i32(16384))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128759), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108697)))
crt.X__builtin_abort(tls)
}
}()
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_3_iTerm))) = _4_pTerm
- if _3_iTerm <= _mxTerm {
- goto _29
+ if ((((_78_pSubLoop.X9) & uint32(i32(512))) != uint32(i32(0))) && ((_65_ii == i32(0)) || ((*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_78_pSubLoop))+uintptr(28 /* X8 */))))).X4) == _65_pCov))) && ((((_65_pTab.X9) & uint32(i32(32))) == uint32(i32(0))) || (int32((uint32((*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_78_pSubLoop))+uintptr(28 /* X8 */))))).X4).X16)<>uint(i32(30))) != i32(2))) {
+ func() {
+ if ((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_76_pSubWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(i32(0)))).X2) != _65_iCovCur {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128764), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108739)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _65_pCov = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_78_pSubLoop)) + uintptr(28 /* X8 */))))).X4)
+ goto _265
}
-
- _mxTerm = _3_iTerm
-_29:
- if _3_iTerm >= i32(16) || ((*Tsqlite3_index_orderby)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pUsage))+8*uintptr(_i))).X1) == 0 {
- goto _31
+ _65_pCov = nil
+_265:
+ _sqlite3WhereEnd(tls, _76_pSubWInfo)
+_241:
+_234:
+ _65_ii += 1
+ goto _229
+_232:
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))))) = _65_pCov
+ if _65_pCov != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(8 /* X2 */))) = _65_iCovCur
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */)))
- *p = uint16(int32(*p) | (i32(1) << uint(_3_iTerm)))
- sink12 = *p
+ if _65_pAndExpr != nil {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pAndExpr)) + uintptr(12 /* X4 */))))) = nil
+ _sqlite3ExprDelete(tls, _db, _65_pAndExpr)
}
-_31:
- if (int32(_4_pTerm.X4) & i32(1)) == i32(0) {
- goto _32
+ _sqlite3VdbeChangeP1(tls, _v, uint32(_65_iRetInit), _sqlite3VdbeCurrentAddr(tls, _v))
+ _sqlite3VdbeGoto(tls, _v, _pLevel.X3)
+ _sqlite3VdbeResolveLabel(tls, _v, _65_iLoopBody)
+ if int32(_pWInfo.X11) > i32(1) {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_65_pOrTab))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(32 /* X8 */))) = i32(0)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(52 /* X11 */)))
- *p = (*p) & i32(-2)
- sink1 = *p
+ if _65_untestedTerms == 0 {
+ _disableTerm(tls, _pLevel, _pTerm)
}
- *_pbIn = i32(1)
+ goto _270
+_202:
func() {
- if (int32(_mExclude) & i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133470), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(109952)))
+ if _bRev != i32(0) && _bRev != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108772)))
crt.X__builtin_abort(tls)
}
}()
-_32:
-_21:
- *(*uintptr)(unsafe.Pointer(func() **Tsqlite3_index_constraint { _i += 1; return &_pIdxCons }())) += uintptr(12)
- goto _17
-
-_20:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */)))
- *p = uint16(int32(*p) & (^int32(_mNoOmit)))
- sink12 = *p
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(164))
+ goto _275
}
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(_mxTerm + i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aStepØ003)) + 1*uintptr(_bRev)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _iCur
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = i32(1) + _sqlite3VdbeAddOp2(tls, _v, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aStartØ004)) + 1*uintptr(_bRev)))), _iCur, _addrHalt)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(47 /* X14 */))) = uint8(i32(1))
+_275:
+_270:
+_201:
+_104:
+_64:
+_52:
+_9:
+_276:
+ _loopAgain = i32(0)
+ *func() *int32 { _pTerm = (*XWhereTerm)(_pWC.X5); return &_j }() = _pWC.X3
+_277:
+ if _j <= i32(0) {
+ goto _280
+ }
+ _92_skipLikeAddr = i32(0)
+ if (int32(_pTerm.X3) & i32(6)) != 0 {
+ goto _278
+ }
+ if ((_pTerm.X12) & (_pLevel.X19)) != uint64(i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(50 /* X15 */))) = uint8(i32(1))
+ goto _278
+ }
+ _92_pE = (*XExpr)(_pTerm.X0)
func() {
- if int32(_pNew.X10) > int32(_pNew.X12) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133477), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddVirtualOneØ00__func__Ø000))), unsafe.Pointer(str(109976)))
+ if _92_pE == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128839), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108791)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _pIdxInfo.X5
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(_pIdxInfo.X7)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdxInfo)) + uintptr(28 /* X7 */))) = i32(0)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))) = _pIdxInfo.X6
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(5 /* X2 */))) = int8(func() int32 {
- if (_pIdxInfo.X8) != 0 {
- return (_pIdxInfo.X2)
- }
- return i32(0)
- }())
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstFromDouble(tls, _pIdxInfo.X9)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _sqlite3LogEst(tls, uint64(_pIdxInfo.X10))
- if ((_pIdxInfo.X11) & i32(1)) == 0 {
- goto _39
+ if (_pLevel.X0) != 0 && (((_92_pE.X2) & uint32(i32(1))) == uint32(i32(0))) {
+ goto _278
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(4096))
- sink5 = *p
+ if (_pIdx != nil) && (_sqlite3ExprCoveredByIndex(tls, _92_pE, _pLevel.X1, _pIdx) == 0) {
+ _loopAgain = i32(1)
+ goto _278
+ }
+ if (int32(_pTerm.X3) & i32(512)) != 0 {
+ _96_x = _pLevel.X9
+ func() {
+ if _96_x <= uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128857), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108797)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _92_skipLikeAddr = _sqlite3VdbeAddOp1(tls, _v, func() int32 {
+ if (_96_x & uint32(i32(1))) != 0 {
+ return i32(22)
+ }
+ return i32(21)
+ }(), int32(_96_x>>uint(i32(1))))
+ }
+ _sqlite3ExprIfFalse(tls, _pParse, _92_pE, _addrCont, i32(16))
+ if _92_skipLikeAddr != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _92_skipLikeAddr)
}
- goto _40
-
-_39:
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) & uint32(i32(-4097))
- sink5 = *p
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(4))
+ sink14 = *p
}
-_40:
- _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
- if ((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X1) == 0 {
- goto _41
+_278:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _j -= 1; return &_pTerm }())) += uintptr(48)
+ goto _277
+_280:
+ _pIdx = nil
+ if _loopAgain != 0 {
+ goto _276
}
-
- Xsqlite3_free(tls, (unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X4))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
-_41:
- return _rc
-}
-
-var _whereLoopAddVirtualOneØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereLoopAddVirtualOneØ00__func__Ø000[0], str(110004), 23)
-}
-
-func _vtabBestIndex(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _p *Xsqlite3_index_info) (r0 int32) { // sqlite3.c:131363:1
- var _pVtab *Xsqlite3_vtab // sqlite3.c:131364:16
- _ = _pVtab
- var _rc int32 // sqlite3.c:131365:7
- _ = _rc
- _pVtab = (*Xsqlite3_vtab)(_sqlite3GetVTable(tls, (*Xsqlite3)(_pParse.X0), _pTab).X2)
- _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, *Xsqlite3_index_info) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32
- }{((*Xsqlite3_module)(_pVtab.X0).X3)})))(tls, _pVtab, _p)
- if _rc == i32(0) {
- goto _0
+ *func() *int32 { _pTerm = (*XWhereTerm)(_pWC.X5); return &_j }() = _pWC.X3
+_295:
+ if _j <= i32(0) {
+ goto _298
}
-
- if _rc != i32(7) {
- goto _1
+ if (int32(_pTerm.X3) & i32(6)) != 0 {
+ goto _296
}
-
- _sqlite3OomFault(tls, (*Xsqlite3)(_pParse.X0))
- goto _2
-
-_1:
- if (_pVtab.X2) != nil {
- goto _3
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(24316), unsafe.Pointer(_sqlite3ErrStr(tls, _rc)))
- goto _4
-
-_3:
- _sqlite3ErrorMsg(tls, _pParse, str(24316), unsafe.Pointer(_pVtab.X2))
-_4:
-_2:
-_0:
- Xsqlite3_free(tls, (unsafe.Pointer)(_pVtab.X2))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVtab)) + uintptr(8 /* X2 */))) = nil
- return _pParse.X16
-}
-
-func _sqlite3LogEstFromDouble(tls *crt.TLS, _x float64) (r0 int16) { // sqlite3.c:29083:1
- var _a uint64 // sqlite3.c:29084:7
- _ = _a
- var _e int16 // sqlite3.c:29085:10
- _ = _e
- i32(0)
- if _x > float64(i32(1)) {
- goto _0
+ if (int32(_pTerm.X4) & i32(130)) == i32(0) {
+ goto _296
}
- return int16(i32(0))
-
-_0:
- if _x > float64(i32(2000000000)) {
- goto _1
+ if (int32(_pTerm.X4) & i32(2048)) == i32(0) {
+ goto _296
}
- return _sqlite3LogEst(tls, uint64(_x))
-
-_1:
- crt.Xmemcpy(tls, (unsafe.Pointer)(&_a), (unsafe.Pointer)(&_x), uint32(i32(8)))
- _e = int16((_a >> uint(i32(52))) - uint64(i32(1022)))
- return int16(int32(_e) * i32(10))
-}
-
-func _whereLoopInsert(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _pTemplate *XWhereLoop) (r0 int32) { // sqlite3.c:132436:1
- var _ppPrev **XWhereLoop // sqlite3.c:132437:13
- _ = _ppPrev
- var _p *XWhereLoop // sqlite3.c:132437:23
- _ = _p
- var _pWInfo *XWhereInfo // sqlite3.c:132438:13
- _ = _pWInfo
- var _db *Xsqlite3 // sqlite3.c:132439:11
- _ = _db
- var _rc int32 // sqlite3.c:132440:7
- _ = _rc
- var _6_ppTail **XWhereLoop // sqlite3.c:132506:15
- _ = _6_ppTail
- var _6_pToDel *XWhereLoop // sqlite3.c:132507:15
- _ = _6_pToDel
- var _8_pIndex *XIndex // sqlite3.c:132525:11
- _ = _8_pIndex
- _pWInfo = (*XWhereInfo)(_pBuilder.X0)
- _db = (*Xsqlite3)((*XParse)(_pWInfo.X0).X0)
- if (*XWhereOrSet)(_pBuilder.X4) == nil {
- goto _0
+ if (_pTerm.X8) != _iCur {
+ goto _296
}
-
- if (_pTemplate.X10) == 0 {
- goto _1
+ if (_pLevel.X0) != 0 {
+ goto _296
}
-
- _whereOrInsert(tls, (*XWhereOrSet)(_pBuilder.X4), _pTemplate.X0, _pTemplate.X6, _pTemplate.X7)
-_1:
- return i32(0)
-
-_0:
- _whereLoopAdjustCost(tls, (*XWhereLoop)(_pWInfo.X19), _pTemplate)
- _ppPrev = _whereLoopFindLesser(tls, (**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(60 /* X19 */))))), _pTemplate)
- if _ppPrev != nil {
- goto _2
+ _97_pE = (*XExpr)(_pTerm.X0)
+ func() {
+ if ((_97_pE.X2) & uint32(i32(1))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108801)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if ((_pTerm.X11) & (_pLevel.X19)) == uint64(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108835)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _97_pAlt = _sqlite3WhereFindTerm(tls, _pWC, _iCur, *(*int32)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))), _notReady, uint32(i32(131)), nil)
+ if _97_pAlt == nil {
+ goto _296
}
- return i32(0)
-
-_2:
- _p = *_ppPrev
- if _p != nil {
- goto _4
+ if (int32(_97_pAlt.X3) & i32(4)) != 0 {
+ goto _296
}
-
- *_ppPrev = store65(&_p, (*XWhereLoop)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(72)))))
- if _p != nil {
- goto _5
+ _97_sEAlt = *(*XExpr)(_97_pAlt.X0)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_97_sEAlt)) + uintptr(12 /* X4 */))))) = (*XExpr)(_97_pE.X4)
+ _sqlite3ExprIfFalse(tls, _pParse, &_97_sEAlt, _addrCont, i32(16))
+_296:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _j -= 1; return &_pTerm }())) += uintptr(48)
+ goto _295
+_298:
+ if (_pLevel.X0) == 0 {
+ goto _310
}
- return _sqlite3NomemError(tls, i32(132499))
-
-_5:
- _whereLoopInit(tls, _p)
- *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X14 */))))) = nil
- goto _6
-
-_4:
- _6_ppTail = (**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X14 */)))))
-_7:
- if (*_6_ppTail) == nil {
- goto _8
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(28 /* X7 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _pLevel.X0)
+ _sqlite3VdbeComment(tls, _v, str(108878))
+ _sqlite3ExprCacheClear(tls, _pParse)
+ *func() *int32 { _pTerm = (*XWhereTerm)(_pWC.X5); return &_j }() = i32(0)
+_311:
+ if _j >= (_pWC.X3) {
+ goto _314
}
-
- _6_ppTail = _whereLoopFindLesser(tls, _6_ppTail, _pTemplate)
- if _6_ppTail != nil {
- goto _9
+ if (int32(_pTerm.X3) & i32(6)) != 0 {
+ goto _312
}
-
- goto _8
-
-_9:
- _6_pToDel = *_6_ppTail
- if _6_pToDel != nil {
- goto _10
+ if ((_pTerm.X12) & (_pLevel.X19)) != uint64(i32(0)) {
+ func() {
+ if (_pWInfo.X15) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108899)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _312
}
-
- goto _8
-
-_10:
- *_6_ppTail = (*XWhereLoop)(_6_pToDel.X14)
- _whereLoopDelete(tls, _db, _6_pToDel)
- goto _7
-
-_8:
-_6:
- _rc = _whereLoopXfer(tls, _db, _p, _pTemplate)
- if ((_p.X9) & uint32(i32(1024))) != uint32(i32(0)) {
- goto _11
+ func() {
+ if (*XExpr)(_pTerm.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(128917), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(108921)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pTerm.X0), _addrCont, i32(16))
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(4))
+ sink14 = *p
}
+_312:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _j += 1; return &_pTerm }())) += uintptr(48)
+ goto _311
+_314:
+_310:
+ return _pLevel.X19
- _8_pIndex = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X8 */))))).X4)
- if _8_pIndex == nil || (_8_pIndex.X11) != i32(0) {
- goto _13
+ _ = _17_aMoveOp
+ _ = _78_addrExplain
+ _ = _97_sEAlt
+ panic(0)
+}
+
+var _sqlite3WhereCodeOneLoopStartØ00__func__Ø000 [29]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WhereCodeOneLoopStartØ00__func__Ø000[0], str(108934), 29)
+}
+
+// Generate code for a single equality term of the WHERE clause. An equality
+// term can be either X=expr or X IN (...). pTerm is the term to be
+// coded.
+//
+// The current value for the constraint is left in a register, the index
+// of which is returned. An attempt is made store the result in iTarget but
+// this is only guaranteed for TK_ISNULL and TK_IN constraints. If the
+// constraint is a TK_EQ or TK_IS, then the current value might be left in
+// some other register and it is the caller's responsibility to compensate.
+//
+// For a constraint of the form X=expr, the expression is evaluated in
+// straight-line code. For constraints of the form X IN (...)
+// this routine sets up a loop that will iterate over all values of X.
+func _codeEqualityTerm(tls *crt.TLS, _pParse *XParse, _pTerm *XWhereTerm, _pLevel *XWhereLevel, _iEq int32, _bRev int32, _iTarget int32) (r0 int32) {
+ var _iReg, _3_eType, _3_iTab, _3_i, _3_nEq, _11_iField, _19_iMap, _21_iOut, _23_iCol int32
+ var _3_aiMap *int32
+ var _9_savedDbOptFlags uint16
+ var _9_db *Xsqlite3
+ var _v *TVdbe
+ var _9_pOrigRhs, _9_pOrigLhs, _9_pRhs, _9_pLhs, _13_pOrderBy *XExprList
+ var _9_pSelect *XSelect
+ var _pX, _11_pNewRhs, _11_pNewLhs, _12_pLeft *XExpr
+ var _3_pLoop *XWhereLoop
+ var _3_pIn *TInLoop
+ _pX = (*XExpr)(_pTerm.X0)
+ _v = (*TVdbe)(_pParse.X2)
+ func() {
+ if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereLoop)(_pLevel.X18).X13)) + 4*uintptr(_iEq)))) != _pTerm {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127197), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(108963)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _iTarget <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127198), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(108998)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32(_pX.X0) == i32(78)) || (int32(_pX.X0) == i32(72)) {
+ _iReg = _sqlite3ExprCodeTarget(tls, _pParse, (*XExpr)(_pX.X5), _iTarget)
+ goto _6
}
-
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
-_13:
-_11:
- r0 = _rc
- return
-}
-
-func _whereOrInsert(tls *crt.TLS, _pSet *XWhereOrSet, _prereq uint64, _rRun int16, _nOut int16) (r0 int32) { // sqlite3.c:130516:1
- var _i uint16 // sqlite3.c:130522:7
- _ = _i
- var _p *XWhereOrCost // sqlite3.c:130523:15
- _ = _p
- *func() **XWhereOrCost { _i = _pSet.X0; return &_p }() = (*XWhereOrCost)(unsafe.Pointer((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet)) + uintptr(4 /* X1 */)))))
-_0:
- if int32(_i) <= i32(0) {
- goto _3
+ if int32(_pX.X0) == i32(75) {
+ _iReg = _iTarget
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _iReg)
+ goto _8
}
-
- if int32(_rRun) > int32(_p.X1) || (_prereq&(_p.X0)) != _prereq {
- goto _5
+ _3_eType = i32(5)
+ _3_pLoop = (*XWhereLoop)(_pLevel.X18)
+ _3_nEq = i32(0)
+ _3_aiMap = nil
+ if ((((_3_pLoop.X9) & uint32(i32(1024))) == uint32(i32(0))) && ((*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop))+uintptr(28 /* X8 */))))).X4) != nil)) && ((*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop))+uintptr(28 /* X8 */))))).X4).X7)) + 1*uintptr(_iEq)))) != 0) {
+ _bRev = bool2int(_bRev == 0)
}
-
- goto _whereOrInsert_done
-
-_5:
- if int32(_p.X1) > int32(_rRun) || ((_p.X0)&_prereq) != (_p.X0) {
- goto _7
+ func() {
+ if int32(_pX.X0) != i32(74) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127222), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(102005)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _iReg = _iTarget
+ _3_i = i32(0)
+_14:
+ if _3_i >= _iEq {
+ goto _17
}
- return i32(0)
-
-_7:
- *(*uintptr)(unsafe.Pointer(func() **XWhereOrCost { _i -= 1; return &_p }())) += uintptr(12)
- goto _0
-
-_3:
- if int32(_pSet.X0) >= i32(3) {
- goto _8
+ if ((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))) != nil) && ((*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) == _pX) {
+ _disableTerm(tls, _pLevel, _pTerm)
+ return _iTarget
}
-
- _p = (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(4 /* X1 */))))) + 12*uintptr(postInc12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(0 /* X0 */))), uint16(1)))))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X2 */))) = _nOut
- goto _9
-
-_8:
- _p = (*XWhereOrCost)(unsafe.Pointer((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet)) + uintptr(4 /* X1 */)))))
- _i = uint16(i32(1))
-_10:
- if int32(_i) >= int32(_pSet.X0) {
- goto _13
+ _3_i += 1
+ goto _14
+_17:
+ _3_i = _iEq
+_20:
+ if _3_i >= int32(_3_pLoop.X10) {
+ goto _23
}
-
- if int32(_p.X1) <= int32((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(4 /* X1 */)))))+12*uintptr(_i))).X1) {
- goto _14
+ if func() int32 {
+ if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))) != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127232), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 && ((*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) == _pX) {
+ _3_nEq += 1
}
-
- _p = (*XWhereOrCost)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSet))+uintptr(4 /* X1 */))))))) + uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer(uintptr(_i)))))*uintptr(unsafe.Pointer((*XWhereOrCost)(unsafe.Pointer(uintptr(12)))))))))))
-_14:
- _i += 1
- goto _10
-
-_13:
- if int32(_p.X1) > int32(_rRun) {
- goto _15
+ _3_i += 1
+ goto _20
+_23:
+ if (((_pX.X2) & uint32(i32(2048))) == uint32(i32(0))) || (((*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */)))))).X0).X0) == i32(1)) {
+ _3_eType = _sqlite3FindInIndex(tls, _pParse, _pX, uint32(i32(4)), nil, nil)
+ goto _30
}
- return i32(0)
-
-_15:
-_9:
-_whereOrInsert_done:
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = _prereq
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X1 */))) = _rRun
- if int32(_p.X2) <= int32(_nOut) {
- goto _16
+ _9_pSelect = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */))))))
+ _9_db = (*Xsqlite3)(_pParse.X0)
+ _9_savedDbOptFlags = _9_db.X13
+ _9_pOrigRhs = (*XExprList)(_9_pSelect.X0)
+ _9_pOrigLhs = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr(_pX.X4) + uintptr(20 /* X6 */))))))
+ _9_pRhs = nil
+ _9_pLhs = nil
+ _3_i = _iEq
+_31:
+ if _3_i >= int32(_3_pLoop.X10) {
+ goto _34
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(10 /* X2 */))) = _nOut
-_16:
- return i32(1)
-}
-
-func _whereLoopAdjustCost(tls *crt.TLS, _p *XWhereLoop, _pTemplate *XWhereLoop) { // sqlite3.c:132312:1
- if ((_pTemplate.X9) & uint32(i32(512))) != uint32(i32(0)) {
- goto _0
+ if (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) == _pX {
+ _11_iField = ((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X9) - i32(1)
+ _11_pNewRhs = _sqlite3ExprDup(tls, _9_db, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pOrigRhs))+uintptr(8 /* X2 */)))))+20*uintptr(_11_iField))).X0), i32(0))
+ _11_pNewLhs = _sqlite3ExprDup(tls, _9_db, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pOrigLhs))+uintptr(8 /* X2 */)))))+20*uintptr(_11_iField))).X0), i32(0))
+ _9_pRhs = _sqlite3ExprListAppend(tls, _pParse, _9_pRhs, _11_pNewRhs)
+ _9_pLhs = _sqlite3ExprListAppend(tls, _pParse, _9_pLhs, _11_pNewLhs)
}
- return
-
-_0:
-_1:
- if _p == nil {
- goto _4
+ _3_i += 1
+ goto _31
+_34:
+ if (_9_db.X17) != 0 {
+ goto _36
}
-
- if int32(_p.X3) == int32(_pTemplate.X3) {
- goto _5
+ _12_pLeft = (*XExpr)(_pX.X4)
+ if (*XExprList)(_9_pSelect.X12) == nil {
+ goto _37
}
-
- goto _2
-
-_5:
- if ((_p.X9) & uint32(i32(512))) != uint32(i32(0)) {
- goto _6
+ _13_pOrderBy = (*XExprList)(_9_pSelect.X12)
+ _3_i = i32(0)
+_38:
+ if _3_i >= (_13_pOrderBy.X0) {
+ goto _41
}
-
- goto _2
-
-_6:
- if _whereLoopCheaperProperSubset(tls, _p, _pTemplate) == 0 {
- goto _7
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i)))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
+ _3_i += 1
+ goto _38
+_41:
+_37:
+ if (_9_pLhs.X0) == i32(1) {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(12 /* X4 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pLhs))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
+ goto _43
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(22 /* X6 */))) = _p.X6
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(24 /* X7 */))) = int16(int32(_p.X7) - i32(1))
- goto _8
-
-_7:
- if _whereLoopCheaperProperSubset(tls, _pTemplate, _p) == 0 {
- goto _9
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pLeft)) + uintptr(20 /* X6 */))))))) = _9_pLhs
+ _3_aiMap = (*int32)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(4)*uint32(_3_nEq))))
+_43:
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pSelect)) + uintptr(0 /* X0 */))))) = _9_pRhs
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_db)) + uintptr(60 /* X13 */)))
+ *p = uint16(int32(*p) | i32(1))
+ sink14 = *p
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(22 /* X6 */))) = _p.X6
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTemplate)) + uintptr(24 /* X7 */))) = int16(int32(_p.X7) + i32(1))
-_9:
-_8:
-_2:
- _p = (*XWhereLoop)(_p.X14)
- goto _1
-
-_4:
-}
-
-func _whereLoopCheaperProperSubset(tls *crt.TLS, _pX *XWhereLoop, _pY *XWhereLoop) (r0 int32) { // sqlite3.c:132275:1
- var _i int32 // sqlite3.c:132279:7
- _ = _i
- var _j int32 // sqlite3.c:132279:10
- _ = _j
- if (int32(_pX.X10) - int32(_pX.X11)) < (int32(_pY.X10) - int32(_pY.X11)) {
- goto _0
+ _3_eType = _sqlite3FindInIndex(tls, _pParse, _pX, uint32(i32(4)), nil, _3_aiMap)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_db)) + uintptr(60 /* X13 */))) = _9_savedDbOptFlags
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pSelect)) + uintptr(0 /* X0 */))))) = _9_pOrigRhs
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pLeft)) + uintptr(20 /* X6 */))))))) = _9_pOrigLhs
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(12 /* X4 */))))) = _12_pLeft
+_36:
+ _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _9_pLhs)
+ _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _9_pRhs)
+_30:
+ if _3_eType == i32(4) {
+ _bRev = bool2int(_bRev == 0)
}
- return i32(0)
-
-_0:
- if int32(_pY.X11) <= int32(_pX.X11) {
- goto _1
+ _3_iTab = _pX.X8
+ _sqlite3VdbeAddOp2(tls, _v, func() int32 {
+ if _bRev != 0 {
+ return i32(33)
+ }
+ return i32(37)
+ }(), _3_iTab, i32(0))
+ func() {
+ if ((_3_pLoop.X9) & uint32(i32(8192))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127304), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(109008)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop)) + uintptr(40 /* X9 */)))
+ *p = (*p) | uint32(i32(2048))
+ sink5 = *p
}
- return i32(0)
-
-_1:
- if int32(_pX.X6) < int32(_pY.X6) {
- goto _2
+ if ((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(16 /* X4 */))) = _sqlite3VdbeMakeLabel(tls, _v)
}
-
- if int32(_pX.X6) <= int32(_pY.X6) {
- goto _3
+ _3_i = (*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))))) + uintptr(0 /* X0 */)))
+ *p = (*p) + _3_nEq
+ sink1 = *p
}
- return i32(0)
-
-_3:
- if int32(_pX.X7) <= int32(_pY.X7) {
- goto _4
+ *(**TInLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))))) + uintptr(4 /* X1 */))))) = (*TInLoop)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_pParse.X0), (*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1, uint64(u32(12)*uint32((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X0))))
+ _3_pIn = (*TInLoop)((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X1)
+ if _3_pIn == nil {
+ goto _50
}
- return i32(0)
-
-_4:
-_2:
- _i = int32(_pX.X10) - i32(1)
-_5:
- if _i < i32(0) {
- goto _8
+ _19_iMap = i32(0)
+ {
+ p := &_3_pIn
+ *p = (*TInLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 12*uintptr(_3_i)))
+ sink71 = *p
}
-
- if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX.X13)) + 4*uintptr(_i)))) != nil {
- goto _9
+ _3_i = _iEq
+_51:
+ if _3_i >= int32(_3_pLoop.X10) {
+ goto _54
}
-
- goto _6
-
-_9:
- _j = int32(_pY.X10) - i32(1)
-_10:
- if _j < i32(0) {
- goto _13
+ if (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) != _pX {
+ goto _55
}
-
- if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pY.X13)) + 4*uintptr(_j)))) != (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX.X13)) + 4*uintptr(_i)))) {
- goto _14
+ _21_iOut = (_iReg + _3_i) - _iEq
+ if _3_eType == i32(1) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(4 /* X1 */))) = _sqlite3VdbeAddOp2(tls, _v, i32(125), _3_iTab, _21_iOut)
+ goto _57
}
-
- goto _13
-
-_14:
- _j -= 1
- goto _10
-
-_13:
- if _j >= i32(0) {
- goto _15
+ _23_iCol = func() int32 {
+ if _3_aiMap != nil {
+ return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_aiMap)) + 4*uintptr(postInc1(&_19_iMap, int32(1))))))
+ }
+ return i32(0)
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(4 /* X1 */))) = _sqlite3VdbeAddOp3(tls, _v, i32(99), _3_iTab, _23_iCol, _21_iOut)
+_57:
+ _sqlite3VdbeAddOp1(tls, _v, i32(75), _21_iOut)
+ if _3_i == _iEq {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(0 /* X0 */))) = _3_iTab
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(8 /* X2 */))) = uint8(func() int32 {
+ if _bRev != 0 {
+ return i32(4)
+ }
+ return i32(5)
+ }())
+ goto _63
}
- return i32(0)
-
-_15:
-_6:
- _i -= 1
- goto _5
-
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(8 /* X2 */))) = uint8(i32(164))
+_63:
+ *(*uintptr)(unsafe.Pointer(&_3_pIn)) += uintptr(12)
+_55:
+ _3_i += 1
+ goto _51
+_54:
+ goto _64
+_50:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))))) + uintptr(0 /* X0 */))) = i32(0)
+_64:
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_3_aiMap))
_8:
- return i32(1)
-}
+_6:
+ _disableTerm(tls, _pLevel, _pTerm)
+ return _iReg
-func _whereLoopFindLesser(tls *crt.TLS, _ppPrev **XWhereLoop, _pTemplate *XWhereLoop) (r0 **XWhereLoop) { // sqlite3.c:132348:1
- var _p *XWhereLoop // sqlite3.c:132352:13
- _ = _p
- _p = *_ppPrev
+ _ = _19_iMap
+ panic(0)
+}
+
+var _codeEqualityTermØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_codeEqualityTermØ00__func__Ø000[0], str(109045), 17)
+}
+
+// Disable a term in the WHERE clause. Except, do not disable the term
+// if it controls a LEFT OUTER JOIN and it did not originate in the ON
+// or USING clause of that join.
+//
+// Consider the term t2.z='ok' in the following queries:
+//
+// (1) SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.x WHERE t2.z='ok'
+// (2) SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.x AND t2.z='ok'
+// (3) SELECT * FROM t1, t2 WHERE t1.a=t2.x AND t2.z='ok'
+//
+// The t2.z='ok' is disabled in the in (2) because it originates
+// in the ON clause. The term is disabled in (3) because it is not part
+// of a LEFT OUTER JOIN. In (1), the term is not disabled.
+//
+// Disabling a term causes that term to not be tested in the inner loop
+// of the join. Disabling is an optimization. When terms are satisfied
+// by indices, we disable them to prevent redundant tests in the inner
+// loop. We would get the correct results if nothing were ever disabled,
+// but joins might run a little slower. The trick is to disable as much
+// as we can without disabling too much. If we disabled in (1), we'd get
+// the wrong answer. See ticket #813.
+//
+// If all the children of a term are disabled, then that term is also
+// automatically disabled. In this way, terms get disabled if derived
+// virtual terms are tested first. For example:
+//
+// x GLOB 'abc*' AND x>='abc' AND x<'acd'
+// \___________/ \______/ \_____/
+// parent child1 child2
+//
+// Only the parent term was in the original WHERE clause. The child1
+// and child2 terms were added by the LIKE optimization. If both of
+// the virtual child terms are valid, then testing of the parent can be
+// skipped.
+//
+// Usually the parent term is marked as TERM_CODED. But if the parent
+// term was originally TERM_LIKE, then the parent gets TERM_LIKECOND instead.
+// The TERM_LIKECOND marking indicates that the term should be coded inside
+// a conditional such that is only evaluated on the second pass of a
+// LIKE-optimization loop, when scanning BLOBs instead of strings.
+func _disableTerm(tls *crt.TLS, _pLevel *XWhereLevel, _pTerm *XWhereTerm) {
+ var _nLoop int32
+ _nLoop = i32(0)
_0:
- if _p == nil {
- goto _3
+ if func() int32 {
+ if _pTerm != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127088), unsafe.Pointer((*int8)(unsafe.Pointer(&_disableTermØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 || (int32(_pTerm.X3)&i32(4)) != i32(0) || (_pLevel.X0) != i32(0) && (((*XExpr)(_pTerm.X0).X2)&uint32(i32(1))) == uint32(i32(0)) || ((_pLevel.X19)&(_pTerm.X12)) != uint64(i32(0)) {
+ goto _1
}
-
- if int32(_p.X3) == int32(_pTemplate.X3) && int32(_p.X4) == int32(_pTemplate.X4) {
- goto _5
+ if _nLoop != 0 && ((int32(_pTerm.X3) & i32(1024)) != i32(0)) {
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(512))
+ sink14 = *p
+ }
+ goto _10
+ }
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
+ *p = uint16(int32(*p) | i32(4))
+ sink14 = *p
+ }
+_10:
+ if (_pTerm.X7) < i32(0) {
+ goto _1
+ }
+ _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_pTerm.X1).X5) + 48*uintptr(_pTerm.X7)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(14 /* X5 */))) -= 1
+ if int32(_pTerm.X5) != i32(0) {
+ goto _1
}
+ _nLoop += 1
+ goto _0
+_1:
+}
- goto _1
+var _disableTermØ00__func__Ø000 [12]int8
-_5:
+func init() {
+ crt.Xstrncpy(nil, &_disableTermØ00__func__Ø000[0], str(109062), 12)
+}
+
+// If the expression passed as the second argument is a vector, generate
+// code to write the first nReg elements of the vector into an array
+// of registers starting with iReg.
+//
+// If the expression is not a vector, then nReg must be passed 1. In
+// this case, generate code to evaluate the expression and leave the
+// result in register iReg.
+func _codeExprOrVector(tls *crt.TLS, _pParse *XParse, _p *XExpr, _iReg int32, _nReg int32) {
+ var _2_iSelect, _3_i int32
+ var _2_v *TVdbe
+ var _3_pList *XExprList
func() {
- if int32(_p.X5) != i32(0) && int32(_pTemplate.X5) != i32(0) && int32(_p.X5) != int32(_pTemplate.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132363), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopFindLesserØ00__func__Ø000))), unsafe.Pointer(str(110028)))
+ if _nReg <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127810), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeExprOrVectorØ00__func__Ø000))), unsafe.Pointer(str(109074)))
crt.X__builtin_abort(tls)
}
}()
+ if _sqlite3ExprIsVector(tls, _p) == 0 {
+ goto _2
+ }
+ if ((_p.X2) & uint32(i32(2048))) != 0 {
+ _2_v = (*TVdbe)(_pParse.X2)
+ _2_iSelect = _sqlite3CodeSubselect(tls, _pParse, _p, i32(0), i32(0))
+ _sqlite3VdbeAddOp3(tls, _2_v, i32(64), _2_iSelect, _iReg, _nReg-i32(1))
+ goto _4
+ }
+ _3_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))
func() {
- if int32(_p.X5) < int32(_pTemplate.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132369), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopFindLesserØ00__func__Ø000))), unsafe.Pointer(str(110100)))
+ if _nReg > (_3_pList.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127822), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeExprOrVectorØ00__func__Ø000))), unsafe.Pointer(str(109081)))
crt.X__builtin_abort(tls)
}
}()
- if ((_p.X9)&uint32(i32(16384))) == uint32(i32(0)) || int32(_pTemplate.X11) != i32(0) || ((_pTemplate.X9)&uint32(i32(512))) == uint32(i32(0)) || ((_pTemplate.X9)&uint32(i32(1))) == uint32(i32(0)) || ((_p.X0)&(_pTemplate.X0)) != (_pTemplate.X0) {
- goto _16
- }
-
- goto _3
-
-_16:
- if ((_p.X0)&(_pTemplate.X0)) != (_p.X0) || int32(_p.X5) > int32(_pTemplate.X5) || int32(_p.X6) > int32(_pTemplate.X6) || int32(_p.X7) > int32(_pTemplate.X7) {
- goto _20
- }
- return nil
-
-_20:
- if ((_p.X0)&(_pTemplate.X0)) != (_pTemplate.X0) || int32(_p.X6) < int32(_pTemplate.X6) || int32(_p.X7) < int32(_pTemplate.X7) {
- goto _23
+ _3_i = i32(0)
+_7:
+ if _3_i >= _nReg {
+ goto _10
}
-
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i))).X0), _iReg+_3_i)
+ _3_i += 1
+ goto _7
+_10:
+_4:
+ goto _11
+_2:
func() {
- if int32(_p.X5) < int32(_pTemplate.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132405), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopFindLesserØ00__func__Ø000))), unsafe.Pointer(str(110100)))
+ if _nReg != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127828), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeExprOrVectorØ00__func__Ø000))), unsafe.Pointer(str(109100)))
crt.X__builtin_abort(tls)
}
}()
- goto _3
-
-_23:
-_1:
- *func() **XWhereLoop {
- _ppPrev = (**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(56 /* X14 */)))))
- return &_p
- }() = *_ppPrev
- goto _0
-
-_3:
- return _ppPrev
-}
-
-var _whereLoopFindLesserØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereLoopFindLesserØ00__func__Ø000[0], str(110132), 20)
-}
-
-func _whereLoopDelete(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop) { // sqlite3.c:132231:1
- _whereLoopClear(tls, _db, _p)
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p))
-}
-
-func _whereLoopClear(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop) { // sqlite3.c:132187:1
- if (**XWhereTerm)(unsafe.Pointer(_p.X13)) == (**XWhereTerm)(unsafe.Pointer((*[3]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(60 /* X15 */))))) {
- goto _0
- }
-
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_p.X13))
-_0:
- _whereLoopClearUnion(tls, _db, _p)
- _whereLoopInit(tls, _p)
-}
-
-func _whereLoopClearUnion(tls *crt.TLS, _db *Xsqlite3, _p *XWhereLoop) { // sqlite3.c:132170:1
- if ((_p.X9) & uint32(i32(17408))) == 0 {
- goto _0
- }
-
- if ((_p.X9)&uint32(i32(1024))) == uint32(i32(0)) || ((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X1) == 0 {
- goto _2
- }
-
- Xsqlite3_free(tls, (unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))) = nil
- goto _3
-
-_2:
- if ((_p.X9)&uint32(i32(16384))) == uint32(i32(0)) || (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4) == nil {
- goto _5
- }
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)((*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4).X4))
- _sqlite3DbFreeNN(tls, _db, (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))).X4)
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
-_5:
-_3:
-_0:
-}
-
-func _whereLoopXfer(tls *crt.TLS, _db *Xsqlite3, _pTo *XWhereLoop, _pFrom *XWhereLoop) (r0 int32) { // sqlite3.c:132212:1
- _whereLoopClearUnion(tls, _db, _pTo)
- if _whereLoopResize(tls, _db, _pTo, int32(_pFrom.X10)) == 0 {
- goto _0
- }
-
- crt.Xmemset(tls, (unsafe.Pointer)((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo))+uintptr(28 /* X8 */)))), i32(0), u32(12))
- return _sqlite3NomemError(tls, i32(132216))
-
-_0:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo), (unsafe.Pointer)(_pFrom), u32(48))
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo.X13), (unsafe.Pointer)(_pFrom.X13), uint32(_pTo.X10)*u32(4))
- if ((_pFrom.X9) & uint32(i32(1024))) == 0 {
- goto _1
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
- goto _2
-
-_1:
- if ((_pFrom.X9) & uint32(i32(16384))) == uint32(i32(0)) {
- goto _3
- }
-
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
-_3:
-_2:
- r0 = i32(0)
- return
+ _sqlite3ExprCode(tls, _pParse, _p, _iReg)
+_11:
}
-func _whereLoopAddBtree(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64) (r0 int32) { // sqlite3.c:133127:1
- var _pWInfo *XWhereInfo // sqlite3.c:133131:13
- _ = _pWInfo
- var _pProbe *XIndex // sqlite3.c:133132:9
- _ = _pProbe
- var _sPk XIndex // sqlite3.c:133133:9
- _ = _sPk
- var _aiRowEstPk [2]int16 // sqlite3.c:133134:10
- _ = _aiRowEstPk
- var _aiColumnPk int16 // sqlite3.c:133135:7
- _ = _aiColumnPk
- var _pTabList *XSrcList // sqlite3.c:133136:11
- _ = _pTabList
- var _pSrc *TSrcList_item // sqlite3.c:133137:23
- _ = _pSrc
- var _pNew *XWhereLoop // sqlite3.c:133138:13
- _ = _pNew
- var _rc int32 // sqlite3.c:133139:7
- _ = _rc
- var _iSortIdx int32 // sqlite3.c:133140:7
- _ = _iSortIdx
- var _b int32 // sqlite3.c:133141:7
- _ = _b
- var _rSize int16 // sqlite3.c:133142:10
- _ = _rSize
- var _rLogSize int16 // sqlite3.c:133143:10
- _ = _rLogSize
- var _pWC *XWhereClause // sqlite3.c:133144:15
- _ = _pWC
- var _pTab *XTable // sqlite3.c:133145:9
- _ = _pTab
- var _3_pFirst *XIndex // sqlite3.c:133165:11
- _ = _3_pFirst
- var _5_pTerm *XWhereTerm // sqlite3.c:133199:15
- _ = _5_pTerm
- var _5_pWCEnd *XWhereTerm // sqlite3.c:133200:15
- _ = _5_pWCEnd
- var _12_m uint64 // sqlite3.c:133273:15
- _ = _12_m
- var _16_nLookup int16 // sqlite3.c:133306:18
- _ = _16_nLookup
- var _16_ii int32 // sqlite3.c:133307:15
- _ = _16_ii
- var _16_iCur int32 // sqlite3.c:133308:15
- _ = _16_iCur
- var _16_pWC2 *XWhereClause // sqlite3.c:133309:23
- _ = _16_pWC2
- var _17_pTerm *XWhereTerm // sqlite3.c:133311:23
- _ = _17_pTerm
- _aiColumnPk = i16(-1)
- _rc = i32(0)
- _iSortIdx = i32(1)
- _pNew = (*XWhereLoop)(_pBuilder.X3)
- _pWInfo = (*XWhereInfo)(_pBuilder.X0)
- _pTabList = (*XSrcList)(_pWInfo.X1)
- _pSrc = (*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))))) + uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(_pNew.X3)))))*uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(68)))))))))))
- _pTab = (*XTable)(_pSrc.X4)
- _pWC = (*XWhereClause)(_pBuilder.X1)
+var _codeExprOrVectorØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_codeExprOrVectorØ00__func__Ø000[0], str(109108), 17)
+}
+
+// Generate code that will evaluate all == and IN constraints for an
+// index scan.
+//
+// For example, consider table t1(a,b,c,d,e,f) with index i1(a,b,c).
+// Suppose the WHERE clause is this: a==5 AND b IN (1,2,3) AND c>5 AND c<10
+// The index has as many as three equality constraints, but in this
+// example, the third "c" value is an inequality. So only two
+// constraints are coded. This routine will generate code to evaluate
+// a==5 and b IN (1,2,3). The current values for a and b will be stored
+// in consecutive registers and the index of the first register is returned.
+//
+// In the example above nEq==2. But this subroutine works for any value
+// of nEq including 0. If nEq==0, this routine is nearly a no-op.
+// The only thing it does is allocate the pLevel->iMem memory cell and
+// compute the affinity string.
+//
+// The nExtraReg parameter is 0 or 1. It is 0 if all WHERE clause constraints
+// are == or IN and are covered by the nEq. nExtraReg is 1 if there is
+// an inequality constraint (such as the "c>=5 AND c<10" in the example) that
+// occurs after the nEq quality constraints.
+//
+// This routine allocates a range of nEq+nExtraReg memory cells and returns
+// the index of the first memory cell in that range. The code that
+// calls this routine will use that memory range to store keys for
+// start and termination conditions of the loop.
+// key value of the loop. If one or more IN operators appear, then
+// this routine allocates an additional nEq memory cells for internal
+// use.
+//
+// Before returning, *pzAff is set to point to a buffer containing a
+// copy of the column affinity string of the index allocated using
+// sqlite3DbMalloc(). Except, entries in the copy of the string associated
+// with equality constraints that use BLOB or NONE affinity are set to
+// SQLITE_AFF_BLOB. This is to deal with SQL such as the following:
+//
+// CREATE TABLE t1(a TEXT PRIMARY KEY, b);
+// SELECT ... FROM t1 AS t2, t1 WHERE t1.a = t2.b;
+//
+// In the example above, the index on t1(a) has TEXT affinity. But since
+// the right hand side of the equality constraint (t2.b) has BLOB/NONE affinity,
+// no conversion should be attempted before using a t2.b value as part of
+// a key to search the index. Hence the first byte in the returned affinity
+// string in this example would be set to SQLITE_AFF_BLOB.
+func _codeAllEqualityTerms(tls *crt.TLS, _pParse *XParse, _pLevel *XWhereLevel, _bRev int32, _nExtraReg int32, _pzAff **int8) (r0 int32) {
+ var _j, _regBase, _nReg, _1_iIdxCur, _3_r1 int32
+ var _zAff *int8
+ var _nEq, _nSkip uint16
+ var _v *TVdbe
+ var _9_pRight *XExpr
+ var _pIdx *XIndex
+ var _pLoop *XWhereLoop
+ var _pTerm *XWhereTerm
+ _v = (*TVdbe)(_pParse.X2)
+ _pLoop = (*XWhereLoop)(_pLevel.X18)
func() {
- if ((*XTable)(_pSrc.X4).X16) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133153), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeØ00__func__Ø000))), unsafe.Pointer(str(110152)))
+ if ((_pLoop.X9) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127415), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(109125)))
crt.X__builtin_abort(tls)
}
}()
- if (*XIndex)(_pSrc.X16) == nil {
- goto _2
- }
-
- _pProbe = (*XIndex)(_pSrc.X16)
- goto _3
-
-_2:
- if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- goto _4
+ _nEq = (*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X0
+ _nSkip = _pLoop.X11
+ _pIdx = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
+ func() {
+ if _pIdx == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127419), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(42069)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _regBase = (_pParse.X18) + i32(1)
+ _nReg = int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) + _nExtraReg
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nReg
+ sink1 = *p
}
-
- _pProbe = (*XIndex)(_pTab.X2)
- goto _5
-
-_4:
- crt.Xmemset(tls, (unsafe.Pointer)(&_sPk), i32(0), u32(56))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(50 /* X13 */))) = uint16(i32(1))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(52 /* X14 */))) = uint16(i32(1))
- *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(4 /* X1 */))) = &_aiColumnPk
- *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(8 /* X2 */))) = (*int16)(unsafe.Pointer(&_aiRowEstPk))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(54 /* X15 */))) = uint8(i32(5))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(12 /* X3 */))))) = _pTab
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(48 /* X12 */))) = _pTab.X13
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiRowEstPk)) + 2*uintptr(i32(0)))) = _pTab.X12
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiRowEstPk)) + 2*uintptr(i32(1)))) = int16(i32(0))
- _3_pFirst = (*XIndex)((*XTable)(_pSrc.X4).X2)
- if int32((uint32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X1)<>uint(i32(31))) != i32(0) {
- goto _6
+ _zAff = _sqlite3DbStrDup(tls, (*Xsqlite3)(_pParse.X0), _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pIdx))
+ func() {
+ if _zAff == nil && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127428), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(109166)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _nSkip == 0 {
+ goto _7
}
-
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sPk)) + uintptr(20 /* X5 */))))) = _3_pFirst
-_6:
- _pProbe = &_sPk
-_5:
-_3:
- _rSize = _pTab.X12
- _rLogSize = _estLog(tls, _rSize)
- if (*XWhereOrSet)(_pBuilder.X4) != nil || (int32(_pWInfo.X10)&i32(32)) != i32(0) || (((*Xsqlite3)((*XParse)(_pWInfo.X0).X0).X6)&i32(1048576)) == i32(0) || (*XIndex)(_pSrc.X16) != nil || ((uint32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X1)<>uint(i32(31))) != 0 || ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) || ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X1)>>uint(i32(3)))<>uint(i32(31))) != 0 || ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X1)>>uint(i32(5)))<>uint(i32(31))) != 0 {
- goto _14
+ _1_iIdxCur = _pLevel.X2
+ _sqlite3VdbeAddOp1(tls, _v, func() int32 {
+ if _bRev != 0 {
+ return i32(33)
+ }
+ return i32(37)
+ }(), _1_iIdxCur)
+ _sqlite3VdbeComment(tls, _v, str(109202), unsafe.Pointer(_pIdx.X0))
+ _j = _sqlite3VdbeAddOp0(tls, _v, i32(13))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(20 /* X5 */))) = _sqlite3VdbeAddOp4Int(tls, _v, func() int32 {
+ if _bRev != 0 {
+ return i32(24)
+ }
+ return i32(27)
+ }(), _1_iIdxCur, i32(0), _regBase, int32(_nSkip))
+ _sqlite3VdbeJumpHere(tls, _v, _j)
+ _j = i32(0)
+_12:
+ if _j >= int32(_nSkip) {
+ goto _15
}
-
- _5_pWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(_pWC.X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X3)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
- _5_pTerm = (*XWhereTerm)(_pWC.X5)
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _1_iIdxCur, _j, _regBase+_j)
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(_explainIndexColumnName(tls, _pIdx, _j)))
+ _j += 1
+ goto _12
_15:
- if _rc != i32(0) || uintptr(unsafe.Pointer(_5_pTerm)) >= uintptr(unsafe.Pointer(_5_pWCEnd)) {
- goto _19
- }
-
- if ((_5_pTerm.X11) & (_pNew.X1)) == 0 {
- goto _20
- }
-
- goto _16
-
-_20:
- if _termCanDriveIndex(tls, _5_pTerm, _pSrc, uint64(i32(0))) == 0 {
- goto _21
- }
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(1))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = uint16(i32(0))
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = nil
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(1))
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(i32(0)))) = _5_pTerm
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16((int32(_rLogSize) + int32(_rSize)) + i32(4))
- if (*XSelect)(_pTab.X3) != nil || ((_pTab.X9)&uint32(i32(2))) != uint32(i32(0)) {
- goto _23
- }
-
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */)))
- *p = int16(int32(*p) + i32(24))
- sink16 = *p
- }
-_23:
- if int32(_pNew.X5) >= i32(0) {
- goto _24
- }
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
-_24:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = int16(i32(43))
+_7:
func() {
- if i32(43) != int32(_sqlite3LogEst(tls, uint64(i32(20)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133227), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeØ00__func__Ø000))), unsafe.Pointer(str(110176)))
+ if _zAff != nil && int32(crt.Xstrlen(tls, _zAff)) < int32(_nEq) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127451), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(109224)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _rLogSize, _pNew.X7)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(16384))
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _mPrereq | (_5_pTerm.X11)
- _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
-_21:
-_16:
- *(*uintptr)(unsafe.Pointer(&_5_pTerm)) += uintptr(48)
- goto _15
-
+ _j = int32(_nSkip)
_19:
-_14:
-_27:
- if _rc != i32(0) || _pProbe == nil {
- goto _31
- }
-
- if (*XExpr)(_pProbe.X9) == nil || _whereUsablePartialIndex(tls, _pSrc.X11, _pWC, (*XExpr)(_pProbe.X9)) != 0 {
- goto _33
+ if _j >= int32(_nEq) {
+ goto _22
}
-
- goto _28
-
-_33:
- _rSize = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(i32(0))))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = uint16(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = uint16(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = uint16(i32(0))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(i32(0))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _mPrereq
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _rSize
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = _pProbe
- _b = _indexMightHelpWithOrderBy(tls, _pBuilder, _pProbe, _pSrc.X11)
+ _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
func() {
- if (int32(_pWInfo.X10)&i32(4)) != i32(0) && _b != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133258), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeØ00__func__Ø000))), unsafe.Pointer(str(110200)))
+ if _pTerm == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127455), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(108051)))
crt.X__builtin_abort(tls)
}
}()
- if (_pProbe.X11) > i32(0) {
- goto _37
+ _3_r1 = _codeEqualityTerm(tls, _pParse, _pTerm, _pLevel, _j, _bRev, _regBase+_j)
+ if _3_r1 == (_regBase + _j) {
+ goto _25
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(256))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(func() int32 {
- if _b != 0 {
- return _iSortIdx
- }
- return i32(0)
- }())
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = int16(int32(_rSize) + i32(16))
- _whereLoopOutputAdjust(tls, _pWC, _pNew, _rSize)
- _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _rSize
- if _rc == 0 {
- goto _40
+ if _nReg == i32(1) {
+ _sqlite3ReleaseTempReg(tls, _pParse, _regBase)
+ _regBase = _3_r1
+ goto _27
}
-
+ _sqlite3VdbeAddOp2(tls, _v, i32(65), _3_r1, _regBase+_j)
+_27:
+_25:
+ if (int32(_pTerm.X4) & i32(1)) == 0 {
+ goto _28
+ }
+ if (((*XExpr)(_pTerm.X0).X2) & uint32(i32(2048))) == 0 {
+ goto _29
+ }
+ if _zAff != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))) = int8(i32(65))
+ }
+_29:
goto _31
-
-_40:
- goto _41
-
-_37:
- if ((uint32((_pProbe.X16)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _42
+_28:
+ if (int32(_pTerm.X4) & i32(256)) != i32(0) {
+ goto _32
}
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(576))
- _12_m = uint64(i32(0))
- goto _43
-
-_42:
- _12_m = (_pSrc.X14) & (^_columnsInIndex(tls, _pProbe))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(func() int32 {
- if _12_m == uint64(i32(0)) {
- return i32(576)
- }
- return i32(512)
- }())
-_43:
- if _b == 0 && ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) && (*XExpr)(_pProbe.X9) == nil && (_12_m != uint64(i32(0)) || int32((uint32((_pProbe.X16)>>uint(i32(2)))<>uint(i32(31))) != i32(0) || int32(_pProbe.X12) >= int32(_pTab.X13) || (int32(_pWInfo.X10)&i32(4)) != i32(0) || (_sqlite3Config.X4) == 0 || (int32((*Xsqlite3)((*XParse)(_pWInfo.X0).X0).X13)&i32(64)) != i32(0)) {
- goto _54
+ _9_pRight = (*XExpr)((*XExpr)(_pTerm.X0).X5)
+ if ((int32(_pTerm.X3) & i32(2048)) == i32(0)) && _sqlite3ExprCanBeNull(tls, _9_pRight) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), _regBase+_j, _pLevel.X3)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(func() int32 {
- if _b != 0 {
- return _iSortIdx
- }
- return i32(0)
- }())
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = int16((int32(_rSize) + i32(1)) + ((i32(15) * int32(_pProbe.X12)) / int32(_pTab.X13)))
- if _12_m == uint64(i32(0)) {
- goto _57
+ if _zAff == nil {
+ goto _35
}
-
- _16_nLookup = int16(int32(_rSize) + i32(16))
- _16_iCur = _pSrc.X11
- _16_pWC2 = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
- _16_ii = i32(0)
-_58:
- if _16_ii >= (_16_pWC2.X3) {
- goto _61
+ if int32(_sqlite3CompareAffinity(tls, _9_pRight, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))))) == i32(65) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))) = int8(i32(65))
}
-
- _17_pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_16_pWC2.X5) + 48*uintptr(_16_ii)))
- if _sqlite3ExprCoveredByIndex(tls, (*XExpr)(_17_pTerm.X0), _16_iCur, _pProbe) != 0 {
- goto _62
+ if _sqlite3ExprNeedsNoAffinityChange(tls, _9_pRight, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j)))) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))) = int8(i32(65))
}
+_35:
+_32:
+_31:
+ _j += 1
+ goto _19
+_22:
+ *_pzAff = _zAff
+ return _regBase
+}
- goto _61
+var _codeAllEqualityTermsØ00__func__Ø000 [21]int8
-_62:
- if int32(_17_pTerm.X2) > i32(0) {
- goto _63
- }
+func init() {
+ crt.Xstrncpy(nil, &_codeAllEqualityTermsØ00__func__Ø000[0], str(109258), 21)
+}
- {
- p := &_16_nLookup
- *p = int16(int32(*p) + int32(_17_pTerm.X2))
- sink16 = *p
+// Return TRUE if the given expression is a constant which would be
+// unchanged by OP_Affinity with the affinity given in the second
+// argument.
+//
+// This routine is used to determine if the OP_Affinity operation
+// can be omitted. When in doubt return FALSE. A false negative
+// is harmless. A false positive, however, can result in the wrong
+// answer.
+func _sqlite3ExprNeedsNoAffinityChange(tls *crt.TLS, _p *XExpr, _aff int8) (r0 int32) {
+ var _op uint8
+ if int32(_aff) == i32(65) {
+ return i32(1)
}
- goto _64
-
-_63:
- _16_nLookup -= 1
- if (int32(_17_pTerm.X4) & i32(130)) == 0 {
- goto _65
+_1:
+ if (int32(_p.X0) == i32(156)) || (int32(_p.X0) == i32(155)) {
+ _p = (*XExpr)(_p.X4)
+ goto _1
}
-
- {
- p := &_16_nLookup
- *p = int16(int32(*p) - i32(19))
- sink16 = *p
+ _op = _p.X0
+ if int32(_op) == i32(157) {
+ _op = _p.X12
}
-_65:
-_64:
- _16_ii += 1
- goto _58
-
-_61:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _pNew.X6, _16_nLookup)
-_57:
- _whereLoopOutputAdjust(tls, _pWC, _pNew, _rSize)
- _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _rSize
- if _rc == 0 {
- goto _66
+ switch int32(_op) {
+ case i32(97):
+ goto _8
+ case i32(132):
+ goto _7
+ case i32(133):
+ goto _9
+ case i32(134):
+ goto _6
+ case i32(152):
+ goto _10
+ default:
+ goto _11
}
- goto _31
+_6:
+ return bool2int((int32(_aff) == i32(68)) || (int32(_aff) == i32(67)))
-_66:
-_54:
-_41:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBuilder)) + uintptr(20 /* X5 */))) = uint32(i32(0))
- _rc = _whereLoopAddBtreeIndex(tls, _pBuilder, _pSrc, _pProbe, int16(i32(0)))
- if (_pBuilder.X5) != uint32(i32(1)) {
- goto _67
- }
+_7:
+ return bool2int((int32(_aff) == i32(69)) || (int32(_aff) == i32(67)))
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(256))
- sink5 = *p
- }
-_67:
- if (*XIndex)(_pSrc.X16) == nil {
- goto _68
- }
+_8:
+ return bool2int(int32(_aff) == i32(66))
- goto _31
+_9:
+ return i32(1)
-_68:
-_28:
- *func() *int32 { _pProbe = (*XIndex)(_pProbe.X5); return &_iSortIdx }() += 1
- goto _27
+_10:
+ func() {
+ if (_p.X8) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92905), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprNeedsNoAffinityChangeØ00__func__Ø000))), unsafe.Pointer(str(109279)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return bool2int((int32(_p.X9) < i32(0)) && ((int32(_aff) == i32(68)) || (int32(_aff) == i32(67))))
-_31:
- return _rc
+_11:
+ return i32(0)
}
-var _whereLoopAddBtreeØ00__func__Ø000 [18]int8 // -
+var _sqlite3ExprNeedsNoAffinityChangeØ00__func__Ø000 [33]int8
func init() {
- crt.Xstrncpy(nil, &_whereLoopAddBtreeØ00__func__Ø000[0], str(110256), 18)
-}
-
-func _estLog(tls *crt.TLS, _N int16) (r0 int16) { // sqlite3.c:130892:1
- return int16(func() int32 {
- if int32(_N) <= i32(10) {
- return i32(0)
- }
- return (int32(_sqlite3LogEst(tls, uint64(_N))) - i32(33))
- }())
+ crt.Xstrncpy(nil, &_sqlite3ExprNeedsNoAffinityChangeØ00__func__Ø000[0], str(109292), 33)
}
-func _termCanDriveIndex(tls *crt.TLS, _pTerm *XWhereTerm, _pSrc *TSrcList_item, _notReady uint64) (r0 int32) { // sqlite3.c:130992:1
- var _aff int8 // sqlite3.c:130997:8
- _ = _aff
- if (_pTerm.X8) == (_pSrc.X11) {
- goto _0
+// If the most recently coded instruction is a constant range constraint
+// (a string literal) that originated from the LIKE optimization, then
+// set P3 and P5 on the OP_String opcode so that the string will be cast
+// to a BLOB at appropriate times.
+//
+// The LIKE optimization trys to evaluate "x LIKE 'abc%'" as a range
+// expression: "x>='ABC' AND x<'abd'". But this requires that the range
+// scan loop run twice, once for strings and a second time for BLOBs.
+// The OP_String opcodes on the second pass convert the upper and lower
+// bound string constants to blobs. This routine makes the necessary changes
+// to the OP_String opcodes for that to happen.
+//
+// Except, of course, if SQLITE_LIKE_DOESNT_MATCH_BLOBS is defined, then
+// only the one pass through the string space is required, so this routine
+// becomes a no-op.
+func _whereLikeOptimizationStringFixup(tls *crt.TLS, _v *TVdbe, _pLevel *XWhereLevel, _pTerm *XWhereTerm) {
+ var _1_pOp *XVdbeOp
+ if (int32(_pTerm.X3) & i32(256)) != 0 {
+ func() {
+ if (_pLevel.X9) <= uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127522), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLikeOptimizationStringFixupØ00__func__Ø000))), unsafe.Pointer(str(109325)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _1_pOp = _sqlite3VdbeGetOp(tls, _v, i32(-1))
+ func() {
+ if _1_pOp == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127524), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLikeOptimizationStringFixupØ00__func__Ø000))), unsafe.Pointer(str(109348)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_1_pOp.X0) != i32(97) && ((*Xsqlite3)((*XParse)((*XWhereInfo)((*XWhereClause)(_pTerm.X1).X0).X0).X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127525), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLikeOptimizationStringFixupØ00__func__Ø000))), unsafe.Pointer(str(109355)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(12 /* X5 */))) = int32((_pLevel.X9) >> uint(i32(1)))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(2 /* X2 */))) = uint16(uint8((_pLevel.X9) & uint32(i32(1))))
}
- return i32(0)
+}
-_0:
- if (int32(_pTerm.X4) & i32(130)) != i32(0) {
- goto _1
- }
- return i32(0)
+var _whereLikeOptimizationStringFixupØ00__func__Ø000 [33]int8
-_1:
- if ((_pTerm.X11) & _notReady) == uint64(i32(0)) {
- goto _2
- }
- return i32(0)
+func init() {
+ crt.Xstrncpy(nil, &_whereLikeOptimizationStringFixupØ00__func__Ø000[0], str(109427), 33)
+}
-_2:
- if (*(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) >= i32(0) {
+// Expression pRight, which is the RHS of a comparison operation, is
+// either a vector of n elements or, if n==1, a scalar expression.
+// Before the comparison operation, affinity zAff is to be applied
+// to the pRight values. This function modifies characters within the
+// affinity string to SQLITE_AFF_BLOB if either:
+//
+// * the comparison will be performed with no affinity, or
+// * the affinity change in zAff is guaranteed not to change the value.
+func _updateRangeAffinityStr(tls *crt.TLS, _pRight *XExpr, _n int32, _zAff *int8) {
+ var _i int32
+ var _1_p *XExpr
+ _i = i32(0)
+_0:
+ if _i >= _n {
goto _3
}
- return i32(0)
-
-_3:
- _aff = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pSrc.X4).X1) + 16*uintptr(*(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))))).X4
- if _sqlite3IndexAffinityOk(tls, (*XExpr)(_pTerm.X0), _aff) != 0 {
- goto _4
+ _1_p = _sqlite3VectorFieldSubexpr(tls, _pRight, _i)
+ if (int32(_sqlite3CompareAffinity(tls, _1_p, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_i))))) == i32(65)) || _sqlite3ExprNeedsNoAffinityChange(tls, _1_p, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_i)))) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_i))) = int8(i32(65))
}
- return i32(0)
-
-_4:
- return i32(1)
+ _i += 1
+ goto _0
+_3:
}
-func _whereUsablePartialIndex(tls *crt.TLS, _iTab int32, _pWC *XWhereClause, _pWhere *XExpr) (r0 int32) { // sqlite3.c:133073:1
- var _i int32 // sqlite3.c:133074:7
- _ = _i
- var _pTerm *XWhereTerm // sqlite3.c:133075:13
- _ = _pTerm
- var _2_pExpr *XExpr // sqlite3.c:133081:10
- _ = _2_pExpr
-_0:
- if int32(_pWhere.X0) != i32(71) {
- goto _1
+// Code an OP_Affinity opcode to apply the column affinity string zAff
+// to the n registers starting at base.
+//
+// As an optimization, SQLITE_AFF_BLOB entries (which are no-ops) at the
+// beginning and end of zAff are ignored. If all entries in zAff are
+// SQLITE_AFF_BLOB, then no code gets generated.
+//
+// This routine makes its own copy of zAff so that the caller is free
+// to modify zAff after this routine returns.
+func _codeApplyAffinity(tls *crt.TLS, _pParse *XParse, _base int32, _n int32, _zAff *int8) {
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
+ if _zAff == nil {
+ func() {
+ if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127120), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeApplyAffinityØ00__func__Ø000))), unsafe.Pointer(str(42486)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return
}
-
- if _whereUsablePartialIndex(tls, _iTab, _pWC, (*XExpr)(_pWhere.X4)) != 0 {
- goto _2
+ func() {
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127123), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeApplyAffinityØ00__func__Ø000))), unsafe.Pointer(str(42064)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+_5:
+ if (_n > i32(0)) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(i32(0))))) == i32(65)) {
+ _n -= 1
+ _base += 1
+ *(*uintptr)(unsafe.Pointer(&_zAff)) += uintptr(1)
+ goto _5
}
- return i32(0)
-
-_2:
- _pWhere = (*XExpr)(_pWhere.X5)
- goto _0
-
-_1:
- *func() **XWhereTerm { _i = i32(0); return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
-_3:
- if _i >= (_pWC.X3) {
- goto _6
+_8:
+ if (_n > i32(1)) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_n-i32(1))))) == i32(65)) {
+ _n -= 1
+ goto _8
}
-
- _2_pExpr = (*XExpr)(_pTerm.X0)
- if _sqlite3ExprImpliesExpr(tls, _2_pExpr, _pWhere, _iTab) == 0 || ((_2_pExpr.X2)&uint32(i32(1))) != uint32(i32(0)) && int32(_2_pExpr.X11) != _iTab {
- goto _9
+ if _n > i32(0) {
+ _sqlite3VdbeAddOp4(tls, _v, i32(100), _base, _n, i32(0), _zAff, _n)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _base, _n)
}
- return i32(1)
+}
-_9:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i += 1; return &_pTerm }())) += uintptr(48)
- goto _3
+var _codeApplyAffinityØ00__func__Ø000 [18]int8
-_6:
- return i32(0)
+func init() {
+ crt.Xstrncpy(nil, &_codeApplyAffinityØ00__func__Ø000[0], str(109460), 18)
}
-func _sqlite3ExprImpliesExpr(tls *crt.TLS, _pE1 *XExpr, _pE2 *XExpr, _iTab int32) (r0 int32) { // sqlite3.c:95681:1
- var _3_pX *XExpr // sqlite3.c:95692:10
- _ = _3_pX
- if _sqlite3ExprCompare(tls, _pE1, _pE2, _iTab) != i32(0) {
- goto _0
- }
- return i32(1)
-
-_0:
- if int32(_pE2.X0) != i32(70) || _sqlite3ExprImpliesExpr(tls, _pE1, (*XExpr)(_pE2.X4), _iTab) == 0 && _sqlite3ExprImpliesExpr(tls, _pE1, (*XExpr)(_pE2.X5), _iTab) == 0 {
- goto _3
- }
- return i32(1)
+var _sqlite3WhereCodeOneLoopStartØ00aStartOpØ001 [8]uint8
-_3:
- if int32(_pE2.X0) != i32(76) || int32(_pE1.X0) == i32(75) || int32(_pE1.X0) == i32(72) {
- goto _6
- }
+func init() {
+ _sqlite3WhereCodeOneLoopStartØ00aStartOpØ001 = [8]uint8{0, 0, 37, 33, 27, 24, 26, 25}
+}
- _3_pX = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pE1.X4))
- if _sqlite3ExprCompare(tls, _3_pX, (*XExpr)(_pE2.X4), _iTab) != i32(0) {
- goto _7
- }
- return i32(1)
+var _sqlite3WhereCodeOneLoopStartØ00aEndOpØ002 [4]uint8
-_7:
-_6:
- r0 = i32(0)
- return
+func init() {
+ _sqlite3WhereCodeOneLoopStartØ00aEndOpØ002 = [4]uint8{41, 39, 38, 40}
}
-func _indexMightHelpWithOrderBy(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _pIndex *XIndex, _iCursor int32) (r0 int32) { // sqlite3.c:133022:1
- var _pOB *XExprList // sqlite3.c:133027:12
- _ = _pOB
- var _aColExpr *XExprList // sqlite3.c:133028:12
- _ = _aColExpr
- var _ii int32 // sqlite3.c:133029:7
- _ = _ii
- var _jj int32 // sqlite3.c:133029:11
- _ = _jj
- var _1_pExpr *XExpr // sqlite3.c:133034:10
- _ = _1_pExpr
- if ((uint32((_pIndex.X16)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _0
- }
- return i32(0)
-
-_0:
- if store40(&_pOB, (*XExprList)((*XWhereInfo)(_pBuilder.X0).X2)) != nil {
- goto _1
- }
- return i32(0)
-
-_1:
- _ii = i32(0)
-_2:
- if _ii >= (_pOB.X0) {
- goto _5
- }
-
- _1_pExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOB))+uintptr(8 /* X2 */)))))+20*uintptr(_ii))).X0))
- if int32(_1_pExpr.X0) != i32(152) || (_1_pExpr.X8) != _iCursor {
+// Cursor iCur is open on an intkey b-tree (a table). Register iRowid contains
+// a rowid value just read from cursor iIdxCur, open on index pIdx. This
+// function generates code to do a deferred seek of cursor iCur to the
+// rowid stored in register iRowid.
+//
+// Normally, this is just:
+//
+// OP_Seek $iCur $iRowid
+//
+// However, if the scan currently being coded is a branch of an OR-loop and
+// the statement currently being coded is a SELECT, then P3 of the OP_Seek
+// is set to iIdxCur and P4 is set to point to an array of integers
+// containing one entry for each column of the table cursor iCur is open
+// on. For each table column, if the column is the i'th column of the
+// index, then the corresponding array entry is set to (i+1). If the column
+// does not appear in the index at all, the array entry is set to 0.
+func _codeDeferredSeek(tls *crt.TLS, _pWInfo *XWhereInfo, _pIdx *XIndex, _iCur int32, _iIdxCur int32) {
+ var _1_i int32
+ var _1_ai *int32
+ var _1_pTab *XTable
+ var _v *TVdbe
+ var _pParse *XParse
+ _pParse = (*XParse)(_pWInfo.X0)
+ _v = (*TVdbe)(_pParse.X2)
+ func() {
+ if _iIdxCur <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127779), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeDeferredSeekØ00__func__Ø000))), unsafe.Pointer(str(109478)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(int32(_pIdx.X14)-i32(1))))) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127780), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeDeferredSeekØ00__func__Ø000))), unsafe.Pointer(str(109488)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp3(tls, _v, i32(130), _iIdxCur, i32(0), _iCur)
+ if (int32(_pWInfo.X10)&i32(32)) == 0 || (func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }().X29) != uint32(i32(0)) {
goto _7
}
-
- if int32(_1_pExpr.X9) >= i32(0) {
+ _1_pTab = (*XTable)(_pIdx.X3)
+ _1_ai = (*int32)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(4)*uint32(int32(_1_pTab.X11)+i32(1)))))
+ if _1_ai == nil {
goto _8
}
- return i32(1)
-
-_8:
- _jj = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ai)) + 4*uintptr(i32(0)))) = int32(_1_pTab.X11)
+ _1_i = i32(0)
_9:
- if _jj >= int32(_pIndex.X13) {
+ if _1_i >= (int32(_pIdx.X14) - i32(1)) {
goto _12
}
-
- if int32(_1_pExpr.X9) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_jj)))) {
- goto _13
+ func() {
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_i)))) >= int32(_1_pTab.X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127792), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeDeferredSeekØ00__func__Ø000))), unsafe.Pointer(str(109524)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_i)))) >= i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ai)) + 4*uintptr(int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_i))))+i32(1)))) = _1_i + i32(1)
}
- return i32(1)
-
-_13:
- _jj += 1
+ _1_i += 1
goto _9
-
_12:
- goto _14
-
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_1_ai)), i32(-12))
+_8:
_7:
- if store40(&_aColExpr, (*XExprList)(_pIndex.X10)) == nil {
- goto _15
- }
-
- _jj = i32(0)
-_16:
- if _jj >= int32(_pIndex.X13) {
- goto _19
- }
-
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_jj)))) == i32(-2) {
- goto _20
- }
-
- goto _17
-
-_20:
- if _sqlite3ExprCompare(tls, _1_pExpr, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aColExpr))+uintptr(8 /* X2 */)))))+20*uintptr(_jj))).X0), _iCursor) != i32(0) {
- goto _21
- }
- return i32(1)
-
-_21:
-_17:
- _jj += 1
- goto _16
+}
-_19:
-_15:
-_14:
- _ii += 1
- goto _2
+var _codeDeferredSeekØ00__func__Ø000 [17]int8
-_5:
- return i32(0)
+func init() {
+ crt.Xstrncpy(nil, &_codeDeferredSeekØ00__func__Ø000[0], str(109553), 17)
}
-func _whereLoopOutputAdjust(tls *crt.TLS, _pWC *XWhereClause, _pLoop *XWhereLoop, _nRow int16) { // sqlite3.c:132562:1
- var _pTerm *XWhereTerm // sqlite3.c:132567:13
- _ = _pTerm
- var _pX *XWhereTerm // sqlite3.c:132567:21
- _ = _pX
- var _notAllowed uint64 // sqlite3.c:132568:11
- _ = _notAllowed
- var _i int32 // sqlite3.c:132569:7
- _ = _i
- var _j int32 // sqlite3.c:132569:10
- _ = _j
- var _k int32 // sqlite3.c:132569:13
- _ = _k
- var _iReduce int16 // sqlite3.c:132570:10
- _ = _iReduce
- var _6_pRight *XExpr // sqlite3.c:132593:16
- _ = _6_pRight
- _notAllowed = ^((_pLoop.X0) | (_pLoop.X1))
- _iReduce = i16(0)
+// For an indexes on expression X, locate every instance of expression X in pExpr
+// and change that subexpression into a reference to the appropriate column of
+// the index.
+func _whereIndexExprTrans(tls *crt.TLS, _pIdx *XIndex, _iTabCur int32, _iIdxCur int32, _pWInfo *XWhereInfo) {
+ var _iIdxCol int32
+ var _aColExpr *XExprList
+ var _w XWalker
+ var _x XIdxExprTrans
+ _aColExpr = (*XExprList)(_pIdx.X10)
+ if _aColExpr == nil {
+ return
+ }
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _whereIndexExprTransNode
+ *(**XIdxExprTrans)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = &_x
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(4 /* X1 */))) = _iTabCur
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(8 /* X2 */))) = _iIdxCur
+ _iIdxCol = i32(0)
+_1:
+ if _iIdxCol >= (_aColExpr.X0) {
+ goto _4
+ }
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iIdxCol)))) != i32(-2) {
+ goto _2
+ }
func() {
- if ((_pLoop.X9) & uint32(i32(16384))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132572), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopOutputAdjustØ00__func__Ø000))), unsafe.Pointer(str(110276)))
+ if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aColExpr))+uintptr(8 /* X2 */)))))+20*uintptr(_iIdxCol))).X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(127887), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereIndexExprTransØ00__func__Ø000))), unsafe.Pointer(str(109570)))
crt.X__builtin_abort(tls)
}
}()
- *func() **XWhereTerm { _i = _pWC.X3; return &_pTerm }() = (*XWhereTerm)(_pWC.X5)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(12 /* X3 */))) = _iIdxCol
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(0 /* X0 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aColExpr))+uintptr(8 /* X2 */))))) + 20*uintptr(_iIdxCol))).X0)
+ _sqlite3WalkExpr(tls, &_w, (*XExpr)(_pWInfo.X4))
+ _sqlite3WalkExprList(tls, &_w, (*XExprList)(_pWInfo.X2))
+ _sqlite3WalkExprList(tls, &_w, (*XExprList)(_pWInfo.X3))
_2:
- if _i <= i32(0) {
- goto _5
- }
+ _iIdxCol += 1
+ goto _1
+_4:
+ _ = _w
+ _ = _x
+}
- if (int32(_pTerm.X3) & i32(2)) == i32(0) {
- goto _6
+// The walker node callback used to transform matching expressions into
+// a reference to an index column for an index on an expression.
+//
+// If pExpr matches, then transform it into a reference to the index column
+// that contains the value of pExpr.
+func _whereIndexExprTransNode(tls *crt.TLS, _p *XWalker, _pExpr *XExpr) (r0 int32) {
+ var _pX *XIdxExprTrans
+ _pX = (*XIdxExprTrans)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))))))
+ if _sqlite3ExprCompare(tls, _pExpr, (*XExpr)(_pX.X0), _pX.X1) == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(152))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _pX.X2
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(_pX.X3)
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = nil
+ return i32(1)
}
+ return i32(0)
+}
- goto _5
-
-_6:
- if ((_pTerm.X12) & (_pLoop.X1)) != uint64(i32(0)) {
- goto _7
- }
+var _whereIndexExprTransØ00__func__Ø000 [20]int8
- goto _3
+func init() {
+ crt.Xstrncpy(nil, &_whereIndexExprTransØ00__func__Ø000[0], str(109600), 20)
+}
-_7:
- if ((_pTerm.X12) & _notAllowed) == uint64(i32(0)) {
- goto _8
+func _sqlite3ExprCodeGetColumnToReg(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iColumn int32, _iTable int32, _iReg int32) {
+ var _r1 int32
+ _r1 = _sqlite3ExprCodeGetColumn(tls, _pParse, _pTab, _iColumn, _iTable, _iReg, uint8(i32(0)))
+ if _r1 != _iReg {
+ _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(65), _r1, _iReg)
+ }
+}
+
+// Generate the end of the WHERE loop. See comments on
+// sqlite3WhereBegin() for additional information.
+func _sqlite3WhereEnd(tls *crt.TLS, _pWInfo *XWhereInfo) {
+ var _i, _1_addr, _2_addrSeek, _2_n, _3_r1, _3_j, _3_op, _6_j, _11_ws, _16_k, _16_last, _22_x int32
+ var _db *Xsqlite3
+ var _16_pTab *XTable
+ var _v *TVdbe
+ var _pTabList *XSrcList
+ var _16_pTabItem *TSrcList_item
+ var _pParse *XParse
+ var _2_pIdx, _16_pIdx, _23_pPk *XIndex
+ var _16_pOp *XVdbeOp
+ var _pLoop *XWhereLoop
+ var _pLevel *XWhereLevel
+ var _6_pIn *TInLoop
+ _pParse = (*XParse)(_pWInfo.X0)
+ _v = (*TVdbe)(_pParse.X2)
+ _pTabList = (*XSrcList)(_pWInfo.X1)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _sqlite3ExprCacheClear(tls, _pParse)
+ _i = int32(_pWInfo.X11) - i32(1)
+_0:
+ if _i < i32(0) {
+ goto _3
}
-
- goto _3
-
-_8:
- _j = int32(_pLoop.X10) - i32(1)
-_9:
- if _j < i32(0) {
- goto _12
+ _pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_i)))
+ _pLoop = (*XWhereLoop)(_pLevel.X18)
+ if int32(_pLevel.X12) == i32(164) {
+ goto _4
}
-
- _pX = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
- if _pX != nil {
+ _2_addrSeek = i32(0)
+ if int32(_pWInfo.X16) != i32(2) || ((_pLoop.X9)&uint32(i32(512))) == uint32(i32(0)) || ((uint32((store69(&_2_pIdx, (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4)).X16)>>uint(i32(7)))<>uint(i32(31))) == 0 || store1(&_2_n, int32((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X3)) <= i32(0) || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx.X2)) + 2*uintptr(_2_n)))) < i32(36) {
+ goto _9
+ }
+ _3_r1 = (_pParse.X18) + i32(1)
+ _3_j = i32(0)
+_10:
+ if _3_j >= _2_n {
goto _13
}
-
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _pLevel.X2, _3_j, _3_r1+_3_j)
+ _3_j += 1
goto _10
-
_13:
- if _pX != _pTerm {
- goto _14
- }
-
- goto _12
-
-_14:
- if (_pX.X7) < i32(0) || (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_pX.X7))) != _pTerm {
- goto _16
- }
-
- goto _12
-
-_16:
-_10:
- _j -= 1
- goto _9
-
-_12:
- if _j >= i32(0) {
- goto _17
- }
-
- if int32(_pTerm.X2) > i32(0) {
- goto _18
- }
-
{
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */)))
- *p = int16(int32(*p) + int32(_pTerm.X2))
- sink16 = *p
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + (_2_n + i32(1))
+ sink1 = *p
}
- goto _19
-
-_18:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) -= 1
- if (int32(_pTerm.X4) & i32(130)) == 0 {
- goto _20
+ _3_op = func() int32 {
+ if int32(_pLevel.X12) == i32(6) {
+ return i32(24)
+ }
+ return i32(27)
+ }()
+ _2_addrSeek = _sqlite3VdbeAddOp4Int(tls, _v, _3_op, _pLevel.X2, i32(0), _3_r1, _2_n)
+ _sqlite3VdbeAddOp2(tls, _v, i32(13), i32(1), _pLevel.X16)
+_9:
+ _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X6)
+ _sqlite3VdbeAddOp3(tls, _v, int32(_pLevel.X12), _pLevel.X15, _pLevel.X16, int32(_pLevel.X13))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_pLevel.X14))
+ if _2_addrSeek != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _2_addrSeek)
}
-
- _6_pRight = (*XExpr)((*XExpr)(_pTerm.X0).X5)
- if _sqlite3ExprIsInteger(tls, _6_pRight, &_k) == 0 || _k < i32(-1) || _k > i32(1) {
+ goto _17
+_4:
+ _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X6)
+_17:
+ if ((_pLoop.X9)&uint32(i32(2048))) == 0 || ((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X0) <= i32(0) {
+ goto _19
+ }
+ _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X4)
+ *func() **TInLoop {
+ _6_j = (*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0
+ return &_6_pIn
+ }() = (*TInLoop)(unsafe.Pointer(uintptr((*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1) + 12*uintptr(_6_j-i32(1))))
+_20:
+ if _6_j <= i32(0) {
goto _23
}
-
- _k = i32(10)
- goto _24
-
-_23:
- _k = i32(20)
-_24:
- if int32(_iReduce) >= _k {
- goto _25
+ _sqlite3VdbeJumpHere(tls, _v, (_6_pIn.X1)+i32(1))
+ if int32(_6_pIn.X2) != i32(164) {
+ _sqlite3VdbeAddOp2(tls, _v, int32(_6_pIn.X2), _6_pIn.X0, _6_pIn.X1)
}
-
- _iReduce = int16(_k)
-_25:
-_20:
+ _sqlite3VdbeJumpHere(tls, _v, (_6_pIn.X1)-i32(1))
+ *(*uintptr)(unsafe.Pointer(func() **TInLoop { _6_j -= 1; return &_6_pIn }())) += uintptr(4294967284)
+ goto _20
+_23:
_19:
-_17:
-_3:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_pTerm }())) += uintptr(48)
- goto _2
-
-_5:
- if int32(_pLoop.X7) <= (int32(_nRow) - int32(_iReduce)) {
- goto _26
+ _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X3)
+ if (_pLevel.X5) != 0 {
+ _sqlite3VdbeGoto(tls, _v, _pLevel.X5)
+ _sqlite3VdbeComment(tls, _v, str(109620), unsafe.Pointer((*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4).X0))
+ _sqlite3VdbeJumpHere(tls, _v, _pLevel.X5)
+ _sqlite3VdbeJumpHere(tls, _v, (_pLevel.X5)-i32(2))
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) = int16(int32(_nRow) - int32(_iReduce))
-_26:
-}
-
-var _whereLoopOutputAdjustØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereLoopOutputAdjustØ00__func__Ø000[0], str(110316), 22)
-}
-
-func _sqlite3ExprCoveredByIndex(tls *crt.TLS, _pExpr *XExpr, _iCur int32, _pIdx *XIndex) (r0 int32) { // sqlite3.c:95737:1
- var _w XWalker // sqlite3.c:95742:10
- _ = _w
- var _xcov XIdList // sqlite3.c:95743:19
- _ = _xcov
- crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_xcov)) + uintptr(4 /* X1 */))) = _iCur
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_xcov)) + uintptr(0 /* X0 */))))) = _pIdx
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _exprIdxCover
- *(**XIdList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = &_xcov
- _sqlite3WalkExpr(tls, &_w, _pExpr)
- return bool2int((_w.X5) == 0)
-}
-
-func _exprIdxCover(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:95716:1
- if int32(_pExpr.X0) != i32(152) || (_pExpr.X8) != ((*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */)))))).X1) || int32(_sqlite3ColumnOfIndex(tls, (*XIndex)((*XIdList)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */)))))).X0), _pExpr.X9)) >= i32(0) {
- goto _2
+ if (_pLevel.X10) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(48), int32((_pLevel.X9)>>uint(i32(1))), _pLevel.X10)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(1))
- return i32(2)
-
-_2:
- return i32(0)
-}
-
-func _whereLoopAddBtreeIndex(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _pSrc *TSrcList_item, _pProbe *XIndex, _nInMul int16) (r0 int32) { // sqlite3.c:132696:1
- var _pWInfo *XWhereInfo // sqlite3.c:132702:13
- _ = _pWInfo
- var _pParse *XParse // sqlite3.c:132703:9
- _ = _pParse
- var _db *Xsqlite3 // sqlite3.c:132704:11
- _ = _db
- var _pNew *XWhereLoop // sqlite3.c:132705:13
- _ = _pNew
- var _pTerm *XWhereTerm // sqlite3.c:132706:13
- _ = _pTerm
- var _opMask int32 // sqlite3.c:132707:7
- _ = _opMask
- var _scan XWhereScan // sqlite3.c:132708:13
- _ = _scan
- var _saved_prereq uint64 // sqlite3.c:132709:11
- _ = _saved_prereq
- var _saved_nLTerm uint16 // sqlite3.c:132710:7
- _ = _saved_nLTerm
- var _saved_nEq uint16 // sqlite3.c:132711:7
- _ = _saved_nEq
- var _saved_nBtm uint16 // sqlite3.c:132712:7
- _ = _saved_nBtm
- var _saved_nTop uint16 // sqlite3.c:132713:7
- _ = _saved_nTop
- var _saved_nSkip uint16 // sqlite3.c:132714:7
- _ = _saved_nSkip
- var _saved_wsFlags uint32 // sqlite3.c:132715:7
- _ = _saved_wsFlags
- var _saved_nOut int16 // sqlite3.c:132716:10
- _ = _saved_nOut
- var _rc int32 // sqlite3.c:132717:7
- _ = _rc
- var _rSize int16 // sqlite3.c:132718:10
- _ = _rSize
- var _rLogSize int16 // sqlite3.c:132719:10
- _ = _rLogSize
- var _pTop *XWhereTerm // sqlite3.c:132720:13
- _ = _pTop
- var _pBtm *XWhereTerm // sqlite3.c:132720:24
- _ = _pBtm
- var _3_eOp uint16 // sqlite3.c:132753:9
- _ = _3_eOp
- var _3_rCostIdx int16 // sqlite3.c:132754:12
- _ = _3_rCostIdx
- var _3_nOutUnadjusted int16 // sqlite3.c:132755:12
- _ = _3_nOutUnadjusted
- var _3_nIn int32 // sqlite3.c:132756:9
- _ = _3_nIn
- var _8_pExpr *XExpr // sqlite3.c:132804:12
- _ = _8_pExpr
- var _9_i int32 // sqlite3.c:132808:13
- _ = _9_i
- var _12_iCol int32 // sqlite3.c:132826:11
- _ = _12_iCol
- var _21_nEq int32 // sqlite3.c:132885:11
- _ = _21_nEq
- var _30_nIter int16 // sqlite3.c:132992:12
- _ = _30_nIter
- _pWInfo = (*XWhereInfo)(_pBuilder.X0)
- _pParse = (*XParse)(_pWInfo.X0)
- _db = (*Xsqlite3)(_pParse.X0)
- _rc = i32(0)
- _pTop = nil
- _pBtm = nil
- _pNew = (*XWhereLoop)(_pBuilder.X3)
- if (_db.X17) == 0 {
- goto _0
+ if (_pLevel.X0) == 0 {
+ goto _27
}
- return _sqlite3NomemError(tls, i32(132723))
-
-_0:
- func() {
- if ((_pNew.X9) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132727), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110340)))
- crt.X__builtin_abort(tls)
- }
- }()
+ _11_ws = int32(_pLoop.X9)
+ _1_addr = _sqlite3VdbeAddOp1(tls, _v, i32(46), _pLevel.X0)
func() {
- if ((_pNew.X9) & uint32(i32(16))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132728), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110380)))
+ if (_11_ws&i32(64)) != i32(0) && (_11_ws&i32(512)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135312), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(109641)))
crt.X__builtin_abort(tls)
}
}()
- if ((_pNew.X9) & uint32(i32(32))) == 0 {
- goto _5
+ if (_11_ws & i32(64)) == i32(0) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(126), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_i))).X11)
}
-
- _opMask = i32(24)
- goto _6
-
-_5:
+ if (_11_ws&i32(512)) != 0 || ((_11_ws&i32(8192)) != 0 && ((*XIndex)(*(*unsafe.Pointer)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */)))))) != nil)) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(126), _pLevel.X2)
+ }
+ if int32(_pLevel.X12) == i32(52) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(14), _pLevel.X15, _pLevel.X7)
+ goto _36
+ }
+ _sqlite3VdbeGoto(tls, _v, _pLevel.X7)
+_36:
+ _sqlite3VdbeJumpHere(tls, _v, _1_addr)
+_27:
+ _i -= 1
+ goto _0
+_3:
+ _sqlite3VdbeResolveLabel(tls, _v, _pWInfo.X8)
func() {
- if int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X1) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132732), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110420)))
+ if int32(_pWInfo.X11) > (_pTabList.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(109693)))
crt.X__builtin_abort(tls)
}
}()
- _opMask = i32(447)
-_6:
- if ((uint32((_pProbe.X16)>>uint(i32(2))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _9
- }
-
- {
- p := &_opMask
- *p = (*p) & i32(-61)
- sink1 = *p
+ *func() **XWhereLevel { _i = i32(0); return &_pLevel }() = (*XWhereLevel)(unsafe.Pointer((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(744 /* X24 */)))))
+_39:
+ if _i >= int32(_pWInfo.X11) {
+ goto _42
}
-_9:
+ _16_pIdx = nil
+ _16_pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
+ _16_pTab = (*XTable)(_16_pTabItem.X4)
func() {
- if int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X0) >= int32(_pProbe.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132737), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110444)))
+ if _16_pTab == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135344), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(43594)))
crt.X__builtin_abort(tls)
}
}()
- _saved_nEq = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X0
- _saved_nBtm = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X1
- _saved_nTop = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(28 /* X8 */))))).X2
- _saved_nSkip = _pNew.X11
- _saved_nLTerm = _pNew.X10
- _saved_wsFlags = _pNew.X9
- _saved_prereq = _pNew.X0
- _saved_nOut = _pNew.X7
- _pTerm = _whereScanInit(tls, &_scan, (*XWhereClause)(_pBuilder.X1), _pSrc.X11, int32(_saved_nEq), uint32(_opMask), _pProbe)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
- _rSize = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(i32(0))))
- _rLogSize = _estLog(tls, _rSize)
-_12:
- if _rc != i32(0) || _pTerm == nil {
- goto _16
- }
-
- _3_eOp = _pTerm.X4
- _3_nIn = i32(0)
- if int32(_3_eOp) != i32(256) && (int32(_pTerm.X3)&i32(0)) == i32(0) || _indexColumnNotNull(tls, _pProbe, int32(_saved_nEq)) == 0 {
- goto _19
- }
-
- goto _13
-
-_19:
- if ((_pTerm.X11) & (_pNew.X1)) == 0 {
- goto _20
+ _pLoop = (*XWhereLoop)(_pLevel.X18)
+ if ((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ _translateColumnToCopy(tls, _pParse, _pLevel.X8, _pLevel.X1, _16_pTabItem.X8, i32(0))
+ goto _40
}
-
- goto _13
-
-_20:
- if (int32(_pTerm.X3)&i32(256)) == 0 || int32(_pTerm.X4) != i32(16) {
- goto _22
+ if ((_pLoop.X9) & uint32(i32(576))) != 0 {
+ _16_pIdx = (*XIndex)((*t61)(unsafe.Pointer((*t62)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
+ goto _47
}
-
- goto _13
-
-_22:
- if (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(36 /* X9 */))).X0)&i32(8)) == i32(0) || (((*XExpr)(_pTerm.X0).X2)&uint32(i32(1))) != uint32(i32(0)) || (int32(_3_eOp)&i32(384)) == i32(0) {
- goto _25
+ if ((_pLoop.X9) & uint32(i32(8192))) != 0 {
+ _16_pIdx = (*XIndex)(*(*unsafe.Pointer)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))))
}
-
- goto _13
-
-_25:
- if int32(_pProbe.X15) == i32(0) || int32(_saved_nEq) != (int32(_pProbe.X13)-i32(1)) {
- goto _27
+_47:
+ if _16_pIdx == nil || int32(_pWInfo.X14) != i32(0) && (((*XTable)(_16_pIdx.X3).X9)&uint32(i32(32))) == uint32(i32(0)) || (_db.X17) != 0 {
+ goto _52
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBuilder)) + uintptr(20 /* X5 */)))
- *p = (*p) | uint32(i32(2))
- sink5 = *p
+ _16_last = _sqlite3VdbeCurrentAddr(tls, _v)
+ _16_k = _pLevel.X8
+ _16_pOp = _sqlite3VdbeGetOp(tls, _v, _16_k)
+_53:
+ if _16_k >= _16_last {
+ goto _56
}
- goto _28
-
-_27:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pBuilder)) + uintptr(20 /* X5 */)))
- *p = (*p) | uint32(i32(1))
- sink5 = *p
+ if (_16_pOp.X3) != (_pLevel.X1) {
+ goto _54
}
-_28:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = _saved_wsFlags
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _saved_nEq
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = _saved_nBtm
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = _saved_nTop
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = _saved_nLTerm
- if _whereLoopResize(tls, _db, _pNew, int32(_pNew.X10)+i32(1)) == 0 {
- goto _29
+ if int32(_16_pOp.X0) != i32(99) {
+ goto _58
}
-
- goto _16
-
-_29:
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(postInc12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(44 /* X10 */))), uint16(1))))) = _pTerm
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = (_saved_prereq | (_pTerm.X11)) & (^(_pNew.X1))
+ _22_x = _16_pOp.X4
func() {
- if int32(_nInMul) != i32(0) && ((_pNew.X9)&uint32(i32(8))) == uint32(i32(0)) && ((_pNew.X9)&uint32(i32(4))) == uint32(i32(0)) && ((_pNew.X9)&uint32(i32(32768))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132797), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110480)))
+ if (*XTable)(_16_pIdx.X3) != _16_pTab {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(109724)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_3_eOp) & i32(1)) == 0 {
- goto _35
- }
-
- _8_pExpr = (*XExpr)(_pTerm.X0)
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(4))
- sink5 = *p
+ if ((_16_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ _23_pPk = _sqlite3PrimaryKeyIndex(tls, _16_pTab)
+ _22_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_23_pPk.X1)) + 2*uintptr(_22_x))))
+ func() {
+ if _22_x < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135389), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(109743)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
- if ((_8_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _36
+ _22_x = int32(_sqlite3ColumnOfIndex(tls, _16_pIdx, int16(_22_x)))
+ if _22_x >= i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(8 /* X4 */))) = _22_x
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(4 /* X3 */))) = _pLevel.X2
}
-
- _3_nIn = i32(46)
func() {
- if i32(46) != int32(_sqlite3LogEst(tls, uint64(i32(25)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132809), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110612)))
+ if ((_pLoop.X9)&uint32(i32(64))) != uint32(i32(0)) && _22_x < i32(0) && (_pWInfo.X14) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(135396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(109748)))
crt.X__builtin_abort(tls)
}
}()
- _9_i = i32(0)
-_39:
- if _9_i >= (int32(_pNew.X10) - i32(1)) {
- goto _42
+ goto _69
+_58:
+ if int32(_16_pOp.X0) == i32(125) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(4 /* X3 */))) = _pLevel.X2
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(131))
+ goto _71
}
-
- if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_9_i)))) == nil || (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(_9_i)))).X0) != _8_pExpr {
- goto _44
+ if int32(_16_pOp.X0) == i32(23) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(4 /* X3 */))) = _pLevel.X2
}
-
- _3_nIn = i32(0)
-_44:
- _9_i += 1
+_71:
+_69:
+_54:
+ *(*uintptr)(unsafe.Pointer(func() **XVdbeOp { _16_k += 1; return &_16_pOp }())) += uintptr(24)
+ goto _53
+_56:
+_52:
+_40:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereLevel { _i += 1; return &_pLevel }())) += uintptr(76)
goto _39
-
_42:
- goto _45
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(144 /* X42 */))) = uint32(_pWInfo.X9)
+ _whereInfoFree(tls, _db, _pWInfo)
+}
-_36:
+var _sqlite3WhereEndØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WhereEndØ00__func__Ø000[0], str(109813), 16)
+}
+
+// Free a WhereInfo structure
+func _whereInfoFree(tls *crt.TLS, _db *Xsqlite3, _pWInfo *XWhereInfo) {
+ var _1_i int32
+ var _4_p *XWhereLoop
+ var _2_pLevel *XWhereLevel
if func() int32 {
- if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pExpr)) + uintptr(20 /* X6 */)))))) != nil) && ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pExpr)) + uintptr(20 /* X6 */)))))).X0) != 0 {
+ if _pWInfo != nil {
return i32(1)
}
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132819), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(132240), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereInfoFreeØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(0)
}()
}() == 0 {
- goto _49
+ goto _2
}
+ _1_i = i32(0)
+_3:
+ if _1_i >= int32(_pWInfo.X11) {
+ goto _6
+ }
+ _2_pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_1_i)))
+ if ((*XWhereLoop)(_2_pLevel.X18) != nil) && ((((*XWhereLoop)(_2_pLevel.X18).X9) & uint32(i32(2048))) != 0) {
+ _sqlite3DbFree(tls, _db, (*T_ht)(unsafe.Pointer((*t70)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pLevel))+uintptr(56 /* X17 */))))).X1)
+ }
+ _1_i += 1
+ goto _3
+_6:
+ _sqlite3WhereClauseClear(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))))
+_9:
+ if (*XWhereLoop)(_pWInfo.X19) != nil {
+ _4_p = (*XWhereLoop)(_pWInfo.X19)
+ *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(60 /* X19 */))))) = (*XWhereLoop)(_4_p.X14)
+ _whereLoopDelete(tls, _db, _4_p)
+ goto _9
+ }
+ _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pWInfo))
+_2:
+}
- _3_nIn = int32(_sqlite3LogEst(tls, uint64((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_8_pExpr)) + uintptr(20 /* X6 */)))))).X0)))
- func() {
- if _3_nIn <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132822), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110636)))
- crt.X__builtin_abort(tls)
- }
- }()
-_49:
-_45:
- goto _52
+var _whereInfoFreeØ00__func__Ø000 [14]int8
-_35:
- if (int32(_3_eOp) & i32(130)) == 0 {
- goto _53
- }
+func init() {
+ crt.Xstrncpy(nil, &_whereInfoFreeØ00__func__Ø000[0], str(109829), 14)
+}
- _12_iCol = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X1)) + 2*uintptr(_saved_nEq))))
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(1))
- sink5 = *p
+// Deallocate a WhereClause structure. The WhereClause structure
+// itself is not freed. This routine is the inverse of
+// sqlite3WhereClauseInit().
+func _sqlite3WhereClauseClear(tls *crt.TLS, _pWC *XWhereClause) {
+ var _i int32
+ var _db *Xsqlite3
+ var _a *XWhereTerm
+ _db = (*Xsqlite3)((*XParse)((*XWhereInfo)(_pWC.X0).X0).X0)
+ *func() **XWhereTerm { _i = (_pWC.X3) - i32(1); return &_a }() = (*XWhereTerm)(_pWC.X5)
+_0:
+ if _i < i32(0) {
+ goto _3
}
- func() {
- if int32(_saved_nEq) != int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132828), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110644)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _12_iCol != i32(-1) && (_12_iCol <= i32(0) || int32(_nInMul) != i32(0) || int32(_saved_nEq) != (int32(_pProbe.X13)-i32(1))) {
- goto _59
+ if (int32(_a.X3) & i32(1)) != 0 {
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_a.X0))
}
-
- if _12_iCol < i32(0) || int32((uint32((_pProbe.X16)>>uint(i32(3)))<>uint(i32(31))) != i32(0) {
- goto _61
+ if (int32(_a.X3) & i32(16)) != 0 {
+ _whereOrInfoDelete(tls, _db, (*XWhereOrInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + uintptr(28 /* X10 */)))))))
+ goto _6
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(65536))
- sink5 = *p
+ if (int32(_a.X3) & i32(32)) != 0 {
+ _whereAndInfoDelete(tls, _db, (*XWhereAndInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t63)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + uintptr(28 /* X10 */)))))))
}
- goto _62
-
-_61:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(4096))
- sink5 = *p
+_6:
+ *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_a }())) += uintptr(48)
+ goto _0
+_3:
+ if (*XWhereTerm)(_pWC.X5) != (*XWhereTerm)(unsafe.Pointer((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC))+uintptr(24 /* X6 */))))) {
+ _sqlite3DbFree(tls, _db, _pWC.X5)
}
-_62:
-_59:
- goto _63
+}
-_53:
- if (int32(_3_eOp) & i32(256)) == 0 {
- goto _64
- }
+// Deallocate all memory associated with a WhereOrInfo object.
+func _whereOrInfoDelete(tls *crt.TLS, _db *Xsqlite3, _p *XWhereOrInfo) {
+ _sqlite3WhereClauseClear(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p))
+}
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(8))
- sink5 = *p
- }
- goto _65
+// Deallocate all memory associated with a WhereAndInfo object.
+func _whereAndInfoDelete(tls *crt.TLS, _db *Xsqlite3, _p *XWhereAndInfo) {
+ _sqlite3WhereClauseClear(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p))
+}
-_64:
- if (int32(_3_eOp) & i32(36)) == 0 {
- goto _66
- }
+var _sqlite3WhereCodeOneLoopStartØ00aStepØ003 [2]uint8
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(34))
- sink5 = *p
- }
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = uint16(_whereRangeVectorLen(tls, _pParse, _pSrc.X11, _pProbe, int32(_saved_nEq), _pTerm))
- _pBtm = _pTerm
- _pTop = nil
- if (int32(_pTerm.X3) & i32(256)) == 0 {
- goto _67
- }
+func init() {
+ _sqlite3WhereCodeOneLoopStartØ00aStepØ003 = [2]uint8{7, 6}
+}
- _pTop = (*XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + 48*uintptr(i32(1))))
- func() {
- if int32((uintptr(unsafe.Pointer(_pTop))-uintptr(unsafe.Pointer((*XWhereTerm)((*XWhereClause)(_pTerm.X1).X5))))/48) >= ((*XWhereClause)(_pTerm.X1).X3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132853), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110676)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32(_pTop.X3) & i32(256)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132854), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110720)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pTop.X4) != i32(16) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132855), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110752)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _whereLoopResize(tls, _db, _pNew, int32(_pNew.X10)+i32(1)) == 0 {
- goto _74
- }
+var _sqlite3WhereCodeOneLoopStartØ00aStartØ004 [2]uint8
- goto _16
+func init() {
+ _sqlite3WhereCodeOneLoopStartØ00aStartØ004 = [2]uint8{37, 33}
+}
-_74:
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(postInc12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(44 /* X10 */))), uint16(1))))) = _pTop
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(16))
- sink5 = *p
- }
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = uint16(i32(1))
-_67:
- goto _75
+// Return the estimated number of output rows from a WHERE clause
+func _sqlite3WhereOutputRowCount(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int16) {
+ return _pWInfo.X21
+}
-_66:
+// Return one of the WHERE_DISTINCT_xxxxx values to indicate how this
+// WHERE clause returns outputs for DISTINCT processing.
+func _sqlite3WhereIsDistinct(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) {
+ return int32(_pWInfo.X16)
+}
+
+// Return TRUE if the WHERE clause returns rows in ORDER BY order.
+// Return FALSE if the output needs to be sorted.
+func _sqlite3WhereIsOrdered(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) {
+ return int32(_pWInfo.X12)
+}
+
+// Return TRUE if the innermost loop of the WHERE clause implementation
+// returns rows in ORDER BY order for complete run of the inner loop.
+//
+// Across multiple iterations of outer loops, the output rows need not be
+// sorted. As long as rows are sorted for just the innermost loop, this
+// routine can return TRUE.
+func _sqlite3WhereOrderedInnerLoop(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) {
+ return int32(_pWInfo.X17)
+}
+
+// Return the VDBE address or label to jump to in order to continue
+// immediately with the next row of a WHERE clause.
+func _sqlite3WhereContinueLabel(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) {
func() {
- if (int32(_3_eOp) & i32(24)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132862), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110776)))
+ if (_pWInfo.X7) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(130460), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereContinueLabelØ00__func__Ø000))), unsafe.Pointer(str(109843)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(18))
- sink5 = *p
+ return _pWInfo.X7
+}
+
+var _sqlite3WhereContinueLabelØ00__func__Ø000 [26]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3WhereContinueLabelØ00__func__Ø000[0], str(109864), 26)
+}
+
+// Return the VDBE address or label to jump to in order to break
+// out of a WHERE loop.
+func _sqlite3WhereBreakLabel(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) {
+ return _pWInfo.X8
+}
+
+// Call sqlite3ExprAnalyzeAggregates() for every expression in an
+// expression list. Return the number of errors.
+//
+// If an error is found, the analysis is cut short.
+func _sqlite3ExprAnalyzeAggList(tls *crt.TLS, _pNC *XNameContext, _pList *XExprList) {
+ var _i int32
+ var _pItem *TExprList_item
+ if _pList == nil {
+ goto _0
}
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = uint16(_whereRangeVectorLen(tls, _pParse, _pSrc.X11, _pProbe, int32(_saved_nEq), _pTerm))
- _pTop = _pTerm
- _pBtm = func() *XWhereTerm {
- if ((_pNew.X9) & uint32(i32(32))) != uint32(i32(0)) {
- return (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(int32(_pNew.X10)-i32(2)))))
- }
- return nil
- }()
-_75:
-_65:
-_63:
-_52:
+ *func() *int32 {
+ _pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
+ return &_i
+ }() = i32(0)
+_1:
+ if _i >= (_pList.X0) {
+ goto _4
+ }
+ _sqlite3ExprAnalyzeAggregates(tls, _pNC, (*XExpr)(_pItem.X0))
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
+ goto _1
+_4:
+_0:
+}
+
+// Analyze the pExpr expression looking for aggregate functions and
+// for variables that need to be added to AggInfo object that pNC->pAggInfo
+// points to. Additional entries are made on the AggInfo object as
+// necessary.
+//
+// This routine should only be called after the expression has been
+// analyzed by sqlite3ResolveExprNames().
+func _sqlite3ExprAnalyzeAggregates(tls *crt.TLS, _pNC *XNameContext, _pExpr *XExpr) {
+ var _w XWalker
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _analyzeAggregate
+ *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _analyzeAggregatesInSelect
+ *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pNC
func() {
- if int32(_pNew.X7) != int32(_saved_nOut) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132879), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110796)))
+ if (*XSrcList)(_pNC.X1) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95995), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAnalyzeAggregatesØ00__func__Ø000))), unsafe.Pointer(str(94459)))
crt.X__builtin_abort(tls)
}
}()
- if ((_pNew.X9) & uint32(i32(2))) == 0 {
- goto _82
- }
+ _sqlite3WalkExpr(tls, &_w, _pExpr)
+ _ = _w
+}
- _whereRangeScanEst(tls, _pParse, _pBuilder, _pBtm, _pTop, _pNew)
- goto _83
+// This is the xExprCallback for a tree walker. It is used to
+// implement sqlite3ExprAnalyzeAggregates(). See sqlite3ExprAnalyzeAggregates
+// for additional information.
+func _analyzeAggregate(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ var _i, _5_k, _9_j, _9_n int32
+ var _17_enc uint8
+ var _pSrcList *XSrcList
+ var _3_pItem *TSrcList_item
+ var _9_pGB *XExprList
+ var _9_pTerm *TExprList_item
+ var _10_pE *XExpr
+ var _pParse *XParse
+ var _pNC *XNameContext
+ var _pAggInfo *XAggInfo
+ var _4_pCol *TAggInfo_col
+ var _14_pItem *TAggInfo_func
+ _pNC = (*XNameContext)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
+ _pParse = (*XParse)(_pNC.X0)
+ _pSrcList = (*XSrcList)(_pNC.X1)
+ _pAggInfo = (*XAggInfo)(_pNC.X3)
+ switch int32(_pExpr.X0) {
+ case i32(152):
+ goto _2
+ case i32(153):
+ goto _3
+ case i32(154):
+ goto _1
+ default:
+ goto _4
+ }
-_82:
- _21_nEq = int32(preInc12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */)))))))+uintptr(0 /* X0 */))), uint16(1)))
- func() {
- if (int32(_3_eOp) & i32(387)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132886), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110820)))
- crt.X__builtin_abort(tls)
+_1:
+_2:
+ if func() int32 {
+ if _pSrcList != nil {
+ return i32(1)
}
- }()
- func() {
- if int32(_pNew.X7) != int32(_saved_nOut) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132888), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110796)))
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95863), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
- }
- }()
- if int32(_pTerm.X2) > i32(0) || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X1)) + 2*uintptr(_saved_nEq)))) < i32(0) {
- goto _89
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _7
+ }
+ _3_pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrcList)) + uintptr(8 /* X2 */)))))
+ _i = i32(0)
+_8:
+ if _i >= (_pSrcList.X0) {
+ goto _11
}
-
func() {
- if (int32(_3_eOp)&i32(1)) == 0 && _3_nIn != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132890), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110856)))
+ if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95867), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(96005)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
- *p = int16(int32(*p) + int32(_pTerm.X2))
- sink16 = *p
+ if (_pExpr.X8) != (_3_pItem.X11) {
+ goto _14
}
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
- *p = int16(int32(*p) - _3_nIn)
- sink16 = *p
+ _4_pCol = (*TAggInfo_col)(_pAggInfo.X8)
+ _5_k = i32(0)
+_15:
+ if _5_k >= (_pAggInfo.X9) {
+ goto _18
}
- goto _93
-
-_89:
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
- *p = int16(int32(*p) + (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(_21_nEq)))) - int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(_21_nEq-i32(1)))))))
- sink16 = *p
+ if ((_4_pCol.X1) == (_pExpr.X8)) && ((_4_pCol.X2) == int32(_pExpr.X9)) {
+ goto _18
}
- if (int32(_3_eOp) & i32(256)) == 0 {
- goto _94
+ *(*uintptr)(unsafe.Pointer(func() **TAggInfo_col { _5_k += 1; return &_4_pCol }())) += uintptr(24)
+ goto _15
+_18:
+ if _5_k < (_pAggInfo.X9) || store1(&_5_k, _addAggInfoColumn(tls, (*Xsqlite3)(_pParse.X0), _pAggInfo)) < i32(0) {
+ goto _22
}
-
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
- *p = int16(int32(*p) + i32(10))
- sink16 = *p
+ _4_pCol = (*TAggInfo_col)(unsafe.Pointer(uintptr(_pAggInfo.X8) + 24*uintptr(_5_k)))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(0 /* X0 */))))) = (*XTable)(_pExpr.X14)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(4 /* X1 */))) = _pExpr.X8
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(8 /* X2 */))) = int32(_pExpr.X9)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(16 /* X4 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(12 /* X3 */))) = i32(-1)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(20 /* X5 */))))) = _pExpr
+ if (*XExprList)(_pAggInfo.X7) == nil {
+ goto _23
}
-_94:
-_93:
-_83:
- _3_rCostIdx = int16((int32(_pNew.X7) + i32(1)) + ((i32(15) * int32(_pProbe.X12)) / int32((*XTable)(_pSrc.X4).X13)))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _rLogSize, _3_rCostIdx)
- if ((_pNew.X9) & uint32(i32(320))) != uint32(i32(0)) {
- goto _95
+ _9_pGB = (*XExprList)(_pAggInfo.X7)
+ _9_pTerm = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pGB)) + uintptr(8 /* X2 */)))))
+ _9_n = _9_pGB.X0
+ _9_j = i32(0)
+_24:
+ if _9_j >= _9_n {
+ goto _27
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = _sqlite3LogEstAdd(tls, _pNew.X6, int16(int32(_pNew.X7)+i32(16)))
-_95:
- _3_nOutUnadjusted = _pNew.X7
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */)))
- *p = int16(int32(*p) + (int32(_nInMul) + _3_nIn))
- sink16 = *p
+ _10_pE = (*XExpr)(_9_pTerm.X0)
+ if ((int32(_10_pE.X0) == i32(152)) && ((_10_pE.X8) == (_pExpr.X8))) && (int32(_10_pE.X9) == int32(_pExpr.X9)) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(12 /* X3 */))) = _9_j
+ goto _27
}
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
- *p = int16(int32(*p) + (int32(_nInMul) + _3_nIn))
- sink16 = *p
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _9_j += 1; return &_9_pTerm }())) += uintptr(20)
+ goto _24
+_27:
+_23:
+ if (_4_pCol.X3) < i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(12 /* X3 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pAggInfo))+uintptr(12 /* X4 */))), int32(1))
}
- _whereLoopOutputAdjust(tls, (*XWhereClause)(_pBuilder.X1), _pNew, _rSize)
- _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
- if ((_pNew.X9) & uint32(i32(2))) == 0 {
- goto _96
+_22:
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(131072))
+ sink5 = *p
}
+ *(**XAggInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(40 /* X13 */))))) = _pAggInfo
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(154))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(34 /* X10 */))) = int16(_5_k)
+ goto _11
+_14:
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_3_pItem }())) += uintptr(68)
+ goto _8
+_11:
+_7:
+ return i32(1)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
- goto _97
-
-_96:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _3_nOutUnadjusted
-_97:
- if ((_pNew.X9)&uint32(i32(16))) != uint32(i32(0)) || int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))).X0) >= int32(_pProbe.X14) {
- goto _99
+_3:
+ if (int32(_pNC.X7)&i32(8)) != i32(0) || (_pWalker.X4) != int32(_pExpr.X12) {
+ goto _33
+ }
+ _14_pItem = (*TAggInfo_func)(_pAggInfo.X11)
+ _i = i32(0)
+_34:
+ if _i >= (_pAggInfo.X12) {
+ goto _37
+ }
+ if _sqlite3ExprCompare(tls, (*XExpr)(_14_pItem.X0), _pExpr, i32(-1)) == i32(0) {
+ goto _37
+ }
+ *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_14_pItem }())) += uintptr(16)
+ goto _34
+_37:
+ if _i < (_pAggInfo.X12) {
+ goto _39
+ }
+ _17_enc = (*Xsqlite3)(_pParse.X0).X14
+ _i = _addAggInfoFunc(tls, (*Xsqlite3)(_pParse.X0), _pAggInfo)
+ if _i < i32(0) {
+ goto _40
}
-
- _whereLoopAddBtreeIndex(tls, _pBuilder, _pSrc, _pProbe, int16(int32(_nInMul)+_3_nIn))
-_99:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
-_13:
- _pTerm = _whereScanNext(tls, &_scan)
- goto _12
-
-_16:
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = _saved_prereq
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _saved_nEq
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(2 /* X1 */))) = _saved_nBtm
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X2 */))) = _saved_nTop
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = _saved_nSkip
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = _saved_wsFlags
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = _saved_nLTerm
func() {
- if i32(42) != int32(_sqlite3LogEst(tls, uint64(i32(18)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132985), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddBtreeIndexØ00__func__Ø000))), unsafe.Pointer(str(110880)))
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95945), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(42778)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_saved_nEq) != int32(_saved_nSkip) || (int32(_saved_nEq)+i32(1)) >= int32(_pProbe.X13) || int32((uint32((_pProbe.X16)>>uint(i32(6)))<>uint(i32(31))) != i32(0) || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(int32(_saved_nEq)+i32(1))))) < i32(42) || store1(&_rc, _whereLoopResize(tls, _db, _pNew, int32(_pNew.X10)+i32(1))) != i32(0) {
- goto _106
+ _14_pItem = (*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11) + 16*uintptr(_i)))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(0 /* X0 */))))) = _pExpr
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(8 /* X2 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ func() {
+ if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95949), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(42524)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(4 /* X1 */))))) = _sqlite3FindFunction(tls, (*Xsqlite3)(_pParse.X0), *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), func() int32 {
+ if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
+ return ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0)
+ }
+ return i32(0)
+ }(), _17_enc, uint8(i32(0)))
+ if ((_pExpr.X2) & uint32(i32(16))) != 0 {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(12 /* X3 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ goto _48
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) += 1
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) += 1
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(postInc12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(44 /* X10 */))), uint16(1))))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(12 /* X3 */))) = i32(-1)
+_48:
+_40:
+_39:
+ func() {
+ if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95962), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(96005)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(32768))
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(131072))
sink5 = *p
}
- _30_nIter = int16(int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(_saved_nEq)))) - int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProbe.X2)) + 2*uintptr(int32(_saved_nEq)+i32(1))))))
- {
- p := (*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */)))
- *p = int16(int32(*p) - int32(_30_nIter))
- sink16 = *p
- }
- {
- p := &_30_nIter
- *p = int16(int32(*p) + i32(5))
- sink16 = *p
- }
- _whereLoopAddBtreeIndex(tls, _pBuilder, _pSrc, _pProbe, int16(int32(_30_nIter)+int32(_nInMul)))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = _saved_nOut
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = _saved_nEq
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(46 /* X11 */))) = _saved_nSkip
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = _saved_wsFlags
-_106:
- return _rc
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(34 /* X10 */))) = int16(_i)
+ *(**XAggInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(40 /* X13 */))))) = _pAggInfo
+ return i32(1)
+
+_33:
+ return i32(0)
+
+_4:
+ return i32(0)
}
-var _whereLoopAddBtreeIndexØ00__func__Ø000 [23]int8 // -
+var _analyzeAggregateØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_whereLoopAddBtreeIndexØ00__func__Ø000[0], str(110904), 23)
+ crt.Xstrncpy(nil, &_analyzeAggregateØ00__func__Ø000[0], str(109890), 17)
}
-func _whereRangeVectorLen(tls *crt.TLS, _pParse *XParse, _iCur int32, _pIdx *XIndex, _nEq int32, _pTerm *XWhereTerm) (r0 int32) { // sqlite3.c:132625:1
- var _nCmp int32 // sqlite3.c:132632:7
- _ = _nCmp
- var _i int32 // sqlite3.c:132633:7
- _ = _i
- var _1_aff int8 // sqlite3.c:132639:10
- _ = _1_aff
- var _1_idxaff int8 // sqlite3.c:132640:10
- _ = _1_idxaff
- var _1_pColl *XCollSeq // sqlite3.c:132641:13
- _ = _1_pColl
- var _1_pLhs *XExpr // sqlite3.c:132642:10
- _ = _1_pLhs
- var _1_pRhs *XExpr // sqlite3.c:132643:10
- _ = _1_pRhs
- _nCmp = _sqlite3ExprVectorSize(tls, (*XExpr)((*XExpr)(_pTerm.X0).X4))
- _nCmp = func() int32 {
- if _nCmp < (int32(_pIdx.X14) - _nEq) {
- return _nCmp
+// Add a new element to the pAggInfo->aCol[] array. Return the index of
+// the new element. Return a negative number if malloc fails.
+func _addAggInfoColumn(tls *crt.TLS, _db *Xsqlite3, _pInfo *XAggInfo) (r0 int32) {
+ var _i int32
+ *(**TAggInfo_col)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(28 /* X8 */))))) = (*TAggInfo_col)(_sqlite3ArrayAllocate(tls, _db, _pInfo.X8, int32(u32(24)), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(32 /* X9 */))), &_i))
+ return _i
+}
+
+// pArray is a pointer to an array of objects. Each object in the
+// array is szEntry bytes in size. This routine uses sqlite3DbRealloc()
+// to extend the array so that there is space for a new object at the end.
+//
+// When this function is called, *pnEntry contains the current size of
+// the array (in entries - so the allocation is ((*pnEntry) * szEntry) bytes
+// in total).
+//
+// If the realloc() is successful (i.e. if no OOM condition occurs), the
+// space allocated for the new object is zeroed, *pnEntry updated to
+// reflect the new size of the array and a pointer to the new allocation
+// returned. *pIdx is set to the index of the new array entry in this case.
+//
+// Otherwise, if the realloc() fails, *pIdx is set to -1, *pnEntry remains
+// unchanged and a copy of pArray returned.
+func _sqlite3ArrayAllocate(tls *crt.TLS, _db *Xsqlite3, _pArray unsafe.Pointer, _szEntry int32, _pnEntry *int32, _pIdx *int32) (r0 unsafe.Pointer) {
+ var _n, _1_sz int32
+ var _z *int8
+ var _1_pNew unsafe.Pointer
+ _n = *_pnEntry
+ if (_n & (_n - i32(1))) != i32(0) {
+ goto _0
+ }
+ _1_sz = func() int32 {
+ if _n == i32(0) {
+ return i32(1)
}
- return (int32(_pIdx.X14) - _nEq)
+ return (i32(2) * _n)
}()
- _i = i32(1)
-_2:
- if _i >= _nCmp {
- goto _5
- }
-
- _1_idxaff = int8(i32(0))
- _1_pLhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((*XExpr)(_pTerm.X0).X4) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- _1_pRhs = (*XExpr)((*XExpr)(_pTerm.X0).X5)
- if ((_1_pRhs.X2) & uint32(i32(2048))) == 0 {
- goto _6
+ _1_pNew = _sqlite3DbRealloc(tls, _db, _pArray, uint64(_1_sz*_szEntry))
+ if _1_pNew == nil {
+ *_pIdx = i32(-1)
+ return _pArray
}
+ _pArray = _1_pNew
+_0:
+ _z = (*int8)(_pArray)
+ crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_n*_szEntry)))), i32(0), uint32(_szEntry))
+ *_pIdx = _n
+ *_pnEntry += 1
+ return _pArray
+}
- _1_pRhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pRhs)) + uintptr(20 /* X6 */)))))).X0)+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- goto _7
+// Add a new element to the pAggInfo->aFunc[] array. Return the index of
+// the new element. Return a negative number if malloc fails.
+func _addAggInfoFunc(tls *crt.TLS, _db *Xsqlite3, _pInfo *XAggInfo) (r0 int32) {
+ var _i int32
+ *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(40 /* X11 */))))) = (*TAggInfo_func)(_sqlite3ArrayAllocate(tls, _db, _pInfo.X11, int32(u32(16)), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(44 /* X12 */))), &_i))
+ return _i
+}
-_6:
- _1_pRhs = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pRhs)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
-_7:
- if int32(_1_pLhs.X0) == i32(152) && (_1_pLhs.X8) == _iCur && int32(_1_pLhs.X9) == int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i+_nEq)))) && int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_i+_nEq)))) == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_nEq)))) {
- goto _11
- }
+func _analyzeAggregatesInSelect(tls *crt.TLS, _pWalker *XWalker, _pSelect *XSelect) (r0 int32) {
+ return i32(0)
+}
- goto _5
+var _sqlite3ExprAnalyzeAggregatesØ00__func__Ø000 [29]int8
-_11:
- _1_aff = _sqlite3CompareAffinity(tls, _1_pRhs, _sqlite3ExprAffinity(tls, _1_pLhs))
- _1_idxaff = _sqlite3TableColumnAffinity(tls, (*XTable)(_pIdx.X3), int32(_1_pLhs.X9))
- if int32(_1_aff) == int32(_1_idxaff) {
- goto _12
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprAnalyzeAggregatesØ00__func__Ø000[0], str(109907), 29)
+}
- goto _5
+// Transfer eligible terms from the HAVING clause of a query, which is
+// processed after grouping, to the WHERE clause, which is processed before
+// grouping. For example, the query:
+//
+// SELECT * FROM WHERE a=? GROUP BY b HAVING b=? AND c=?
+//
+// can be rewritten as:
+//
+// SELECT * FROM WHERE a=? AND b=? GROUP BY b HAVING c=?
+//
+// A term of the HAVING expression is eligible for transfer if it consists
+// entirely of constants and expressions that are also GROUP BY terms that
+// use the "BINARY" collation sequence.
+func _havingToWhere(tls *crt.TLS, _pParse *XParse, _pGroupBy *XExprList, _pHaving *XExpr, _ppWhere **XExpr) {
+ var _sWalker XWalker
+ var _sCtx THavingToWhereCtx
+ *(***XExpr)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(0 /* X0 */))))) = _ppWhere
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(4 /* X1 */))))) = _pGroupBy
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sWalker), i32(0), u32(28))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWalker)) + uintptr(0 /* X0 */))))) = _pParse
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWalker)) + uintptr(4 /* X1 */))))) = _havingToWhereExprCb
+ *(**THavingToWhereCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWalker)) + uintptr(24 /* X6 */))))))) = &_sCtx
+ _sqlite3WalkExpr(tls, &_sWalker, _pHaving)
+ _ = _sCtx
+ _ = _sWalker
+}
-_12:
- _1_pColl = _sqlite3BinaryCompareCollSeq(tls, _pParse, _1_pLhs, _1_pRhs)
- if _1_pColl != nil {
- goto _13
+// sqlite3WalkExpr() callback used by havingToWhere().
+//
+// If the node passed to the callback is a TK_AND node, return
+// WRC_Continue to tell sqlite3WalkExpr() to iterate through child nodes.
+//
+// Otherwise, return WRC_Prune. In this case, also check if the
+// sub-expression matches the criteria for being moved to the WHERE
+// clause. If so, add it to the WHERE clause and replace the sub-expression
+// within the HAVING expression with a constant "1".
+func _havingToWhereExprCb(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ var _2_db *Xsqlite3
+ var _2_pNew, _3_pWhere *XExpr
+ var _4_t XExpr
+ var _1_p *THavingToWhereCtx
+ if int32(_pExpr.X0) == i32(71) {
+ goto _0
}
-
- goto _5
-
-_13:
- if _sqlite3StrICmp(tls, _1_pColl.X0, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_i+_nEq)))) == 0 {
- goto _14
+ _1_p = (*THavingToWhereCtx)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
+ if _sqlite3ExprIsConstantOrGroupBy(tls, (*XParse)(_pWalker.X0), _pExpr, (*XExprList)(_1_p.X1)) == 0 {
+ goto _1
+ }
+ _2_db = (*Xsqlite3)((*XParse)(_pWalker.X0).X0)
+ _2_pNew = _sqlite3ExprAlloc(tls, _2_db, i32(134), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3IntTokens))+8*uintptr(i32(1)))), i32(0))
+ if _2_pNew != nil {
+ _3_pWhere = *(**XExpr)(unsafe.Pointer(_1_p.X0))
+ _4_t = *_2_pNew
+ *_2_pNew = *_pExpr
+ *_pExpr = _4_t
+ _2_pNew = _sqlite3ExprAnd(tls, _2_db, _3_pWhere, _2_pNew)
+ *(**XExpr)(unsafe.Pointer(_1_p.X0)) = _2_pNew
}
+_1:
+ return i32(1)
- goto _5
+_0:
+ return i32(0)
+}
-_14:
- _i += 1
- goto _2
+// Walk the expression tree passed as the first argument. Return non-zero
+// if the expression consists entirely of constants or copies of terms
+// in pGroupBy that sort with the BINARY collation sequence.
+//
+// This routine is used to determine if a term of the HAVING clause can
+// be promoted into the WHERE clause. In order for such a promotion to work,
+// the value of the HAVING clause term must be the same for all members of
+// a "group". The requirement that the GROUP BY term must be BINARY
+// assumes that no other collating sequence will have a finer-grained
+// grouping than binary. In other words (A=B COLLATE binary) implies
+// A=B in every other collating sequence. The requirement that the
+// GROUP BY be BINARY is stricter than necessary. It would also work
+// to promote HAVING clauses that use the same alternative collating
+// sequence as the GROUP BY term, but that is much harder to check,
+// alternative collating sequences are uncommon, and this is only an
+// optimization, so we take the easy way out and simply require the
+// GROUP BY to use the BINARY collating sequence.
+func _sqlite3ExprIsConstantOrGroupBy(tls *crt.TLS, _pParse *XParse, _p *XExpr, _pGroupBy *XExprList) (r0 int32) {
+ var _w XWalker
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */))) = uint8(i32(1))
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _exprNodeIsConstantOrGroupBy
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pGroupBy
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = _pParse
+ _sqlite3WalkExpr(tls, &_w, _p)
+ return int32(_w.X5)
-_5:
- return _i
+ _ = _w
+ panic(0)
}
-func _whereRangeScanEst(tls *crt.TLS, _pParse *XParse, _pBuilder *XWhereLoopBuilder, _pLower *XWhereTerm, _pUpper *XWhereTerm, _pLoop *XWhereLoop) (r0 int32) { // sqlite3.c:131779:1
- var _rc int32 // sqlite3.c:131786:7
- _ = _rc
- var _nOut int32 // sqlite3.c:131787:7
- _ = _nOut
- var _nNew int16 // sqlite3.c:131788:10
- _ = _nNew
- _rc = i32(0)
- _nOut = int32(_pLoop.X7)
+// sqlite3WalkExpr() callback used by sqlite3ExprIsConstantOrGroupBy().
+func _exprNodeIsConstantOrGroupBy(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ var _i int32
+ var _pGroupBy *XExprList
+ var _1_p *XExpr
+ var _2_pColl *XCollSeq
+ _pGroupBy = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
+ _i = i32(0)
+_0:
+ if _i >= (_pGroupBy.X0) {
+ goto _3
+ }
+ _1_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroupBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ if _sqlite3ExprCompare(tls, _pExpr, _1_p, i32(-1)) >= i32(2) {
+ goto _4
+ }
+ _2_pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWalker.X0), _1_p)
+ if (_2_pColl == nil) || (Xsqlite3_stricmp(tls, str(37881), _2_pColl.X0) == i32(0)) {
+ return i32(1)
+ }
+_4:
+ _i += 1
+ goto _0
+_3:
+ if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ return i32(2)
+ }
+ return _exprNodeIsConstant(tls, _pWalker, _pExpr)
+}
+// Unless an "EXPLAIN QUERY PLAN" command is being processed, this function
+// is a no-op. Otherwise, it adds a single row of output to the EQP result,
+// where the caption is of the form:
+//
+// "USE TEMP B-TREE FOR xxx"
+//
+// where xxx is one of "DISTINCT", "ORDER BY" or "GROUP BY". Exactly which
+// is determined by the zUsage argument.
+func _explainTempTable(tls *crt.TLS, _pParse *XParse, _zUsage *int8) {
+ var _1_zMsg *int8
+ var _1_v *TVdbe
+ if int32(_pParse.X54) == i32(2) {
+ _1_v = (*TVdbe)(_pParse.X2)
+ _1_zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(109936), unsafe.Pointer(_zUsage))
+ _sqlite3VdbeAddOp4(tls, _1_v, i32(165), _pParse.X58, i32(0), i32(0), _1_zMsg, i32(-1))
+ }
+}
+
+// If the WHERE_GROUPBY flag is set in the mask passed to sqlite3WhereBegin(),
+// the planner assumes that the specified pOrderBy list is actually a GROUP
+// BY clause - and so any order that groups rows as required satisfies the
+// request.
+//
+// Normally, in this case it is not possible for the caller to determine
+// whether or not the rows are really being delivered in sorted order, or
+// just in some other order that provides the required grouping. However,
+// if the WHERE_SORTBYGROUP flag is also passed to sqlite3WhereBegin(), then
+// this function may be called on the returned WhereInfo object. It returns
+// true if the rows really will be sorted in the specified order, or false
+// otherwise.
+//
+// For example, assuming:
+//
+// CREATE INDEX i1 ON t1(x, Y);
+//
+// then
+//
+// SELECT * FROM t1 GROUP BY x,y ORDER BY x,y; -- IsSorted()==1
+// SELECT * FROM t1 GROUP BY y,x ORDER BY y,x; -- IsSorted()==0
+func _sqlite3WhereIsSorted(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) {
func() {
- if _pLower == nil && _pUpper == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131911), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereRangeScanEstØ00__func__Ø000))), unsafe.Pointer(str(110928)))
+ if (int32(_pWInfo.X10) & i32(64)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereIsSortedØ00__func__Ø000))), unsafe.Pointer(str(109959)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _pUpper != nil && (int32(_pUpper.X3)&i32(0)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131913), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereRangeScanEstØ00__func__Ø000))), unsafe.Pointer(str(110948)))
+ if (int32(_pWInfo.X10) & i32(512)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(134160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereIsSortedØ00__func__Ø000))), unsafe.Pointer(str(109994)))
crt.X__builtin_abort(tls)
}
}()
- _nNew = _whereRangeAdjust(tls, _pLower, int16(_nOut))
- _nNew = _whereRangeAdjust(tls, _pUpper, _nNew)
- if _pLower == nil || int32(_pLower.X2) <= i32(0) || _pUpper == nil || int32(_pUpper.X2) <= i32(0) {
- goto _9
- }
+ return int32(_pWInfo.X13)
+}
- {
- p := &_nNew
- *p = int16(int32(*p) - i32(20))
- sink16 = *p
- }
-_9:
- {
- p := &_nOut
- *p = (*p) - (bool2int(_pLower != nil) + bool2int(_pUpper != nil))
- sink1 = *p
- }
- if int32(_nNew) >= i32(10) {
- goto _10
- }
-
- _nNew = int16(i32(10))
-_10:
- if int32(_nNew) >= _nOut {
- goto _11
- }
-
- _nOut = int32(_nNew)
-_11:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(24 /* X7 */))) = int16(_nOut)
- return _rc
-}
-
-var _whereRangeScanEstØ00__func__Ø000 [18]int8 // -
+var _sqlite3WhereIsSortedØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_whereRangeScanEstØ00__func__Ø000[0], str(110996), 18)
+ crt.Xstrncpy(nil, &_sqlite3WhereIsSortedØ00__func__Ø000[0], str(110033), 21)
}
-func _whereRangeAdjust(tls *crt.TLS, _pTerm *XWhereTerm, _nNew int16) (r0 int16) { // sqlite3.c:131604:1
- var _nRet int16 // sqlite3.c:131605:10
- _ = _nRet
- _nRet = _nNew
- if _pTerm == nil {
- goto _0
- }
-
- if int32(_pTerm.X2) > i32(0) {
- goto _1
- }
-
- {
- p := &_nRet
- *p = int16(int32(*p) + int32(_pTerm.X2))
- sink16 = *p
- }
- goto _2
-
-_1:
- if (int32(_pTerm.X3) & i32(0)) != i32(0) {
+// Update the accumulator memory cells for an aggregate based on
+// the current cursor position.
+func _updateAccumulator(tls *crt.TLS, _pParse *XParse, _pAggInfo *XAggInfo) {
+ var _i, _regHit, _addrHitTest, _1_nArg, _1_addrNext, _1_regAgg, _5_j int32
+ var _v *TVdbe
+ var _1_pList *XExprList
+ var _5_pItem *TExprList_item
+ var _5_pColl *XCollSeq
+ var _pC *TAggInfo_col
+ var _pF *TAggInfo_func
+ _v = (*TVdbe)(_pParse.X2)
+ _regHit = i32(0)
+ _addrHitTest = i32(0)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pAggInfo)) + uintptr(0 /* X0 */))) = uint8(i32(1))
+ *func() **TAggInfo_func { _i = i32(0); return &_pF }() = (*TAggInfo_func)(_pAggInfo.X11)
+_0:
+ if _i >= (_pAggInfo.X12) {
goto _3
}
-
- {
- p := &_nRet
- *p = int16(int32(*p) - i32(20))
- sink16 = *p
- }
+ _1_addrNext = i32(0)
+ _1_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr(_pF.X0) + uintptr(20 /* X6 */))))))
func() {
- if i32(20) != int32(_sqlite3LogEst(tls, uint64(i32(4)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131610), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereRangeAdjustØ00__func__Ø000))), unsafe.Pointer(str(111016)))
+ if (((*XExpr)(_pF.X0).X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121330), unsafe.Pointer((*int8)(unsafe.Pointer(&_updateAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(110054)))
crt.X__builtin_abort(tls)
}
}()
-_3:
-_2:
-_0:
- r0 = _nRet
- return
-}
-
-var _whereRangeAdjustØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereRangeAdjustØ00__func__Ø000[0], str(111040), 17)
-}
-
-func _whereLoopAddOr(tls *crt.TLS, _pBuilder *XWhereLoopBuilder, _mPrereq uint64, _mUnusable uint64) (r0 int32) { // sqlite3.c:133654:1
- var _pWInfo *XWhereInfo // sqlite3.c:133659:13
- _ = _pWInfo
- var _pWC *XWhereClause // sqlite3.c:133660:15
- _ = _pWC
- var _pNew *XWhereLoop // sqlite3.c:133661:13
- _ = _pNew
- var _pTerm *XWhereTerm // sqlite3.c:133662:13
- _ = _pTerm
- var _pWCEnd *XWhereTerm // sqlite3.c:133662:21
- _ = _pWCEnd
- var _rc int32 // sqlite3.c:133663:7
- _ = _rc
- var _iCur int32 // sqlite3.c:133664:7
- _ = _iCur
- var _tempWC XWhereClause // sqlite3.c:133665:15
- _ = _tempWC
- var _sSubBuild XWhereLoopBuilder // sqlite3.c:133666:20
- _ = _sSubBuild
- var _sSum XWhereOrSet // sqlite3.c:133667:14
- _ = _sSum
- var _sCur XWhereOrSet // sqlite3.c:133667:20
- _ = _sCur
- var _pItem *TSrcList_item // sqlite3.c:133668:23
- _ = _pItem
- var _2_pOrWC *XWhereClause // sqlite3.c:133681:19
- _ = _2_pOrWC
- var _2_pOrWCEnd *XWhereTerm // sqlite3.c:133682:17
- _ = _2_pOrWCEnd
- var _2_pOrTerm *XWhereTerm // sqlite3.c:133683:17
- _ = _2_pOrTerm
- var _2_once int32 // sqlite3.c:133684:11
- _ = _2_once
- var _2_i int32 // sqlite3.c:133685:11
- _ = _2_i
- var _2_j int32 // sqlite3.c:133685:14
- _ = _2_j
- var _12_sPrev XWhereOrSet // sqlite3.c:133732:22
- _ = _12_sPrev
- _pWInfo = (*XWhereInfo)(_pBuilder.X0)
- _rc = i32(0)
- _pWC = (*XWhereClause)(_pBuilder.X1)
- _pWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(_pWC.X5))) + uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X3)))))*uintptr(unsafe.Pointer((*XWhereTerm)(unsafe.Pointer(uintptr(48)))))))))))
- _pNew = (*XWhereLoop)(_pBuilder.X3)
- crt.Xmemset(tls, (unsafe.Pointer)(&_sSum), i32(0), u32(40))
- _pItem = (*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))))) + uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(_pNew.X3)))))*uintptr(unsafe.Pointer((*TSrcList_item)(unsafe.Pointer(uintptr(68)))))))))))
- _iCur = _pItem.X11
- _pTerm = (*XWhereTerm)(_pWC.X5)
-_0:
- if uintptr(unsafe.Pointer(_pTerm)) >= uintptr(unsafe.Pointer(_pWCEnd)) || _rc != i32(0) {
- goto _4
- }
-
- if (int32(_pTerm.X4)&i32(512)) == i32(0) || (((*XWhereOrInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))).X1)&(_pNew.X1)) == uint64(i32(0)) {
- goto _6
+ if _1_pList != nil {
+ _1_nArg = _1_pList.X0
+ _1_regAgg = _sqlite3GetTempRange(tls, _pParse, _1_nArg)
+ _sqlite3ExprCodeExprList(tls, _pParse, _1_pList, _1_regAgg, i32(0), uint8(i32(1)))
+ goto _7
}
-
- _2_pOrWC = (*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */)))
- _2_pOrWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(_2_pOrWC.X5) + 48*uintptr(_2_pOrWC.X3)))
- _2_once = i32(1)
- _sSubBuild = *_pBuilder
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(8 /* X2 */))))) = nil
- *(**XWhereOrSet)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(16 /* X4 */))))) = &_sCur
- _2_pOrTerm = (*XWhereTerm)(_2_pOrWC.X5)
+ _1_nArg = i32(0)
+ _1_regAgg = i32(0)
_7:
- if uintptr(unsafe.Pointer(_2_pOrTerm)) >= uintptr(unsafe.Pointer(_2_pOrWCEnd)) {
- goto _10
- }
-
- if (int32(_2_pOrTerm.X4) & i32(1024)) == i32(0) {
- goto _11
- }
-
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(4 /* X1 */))))) = (*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pOrTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */)))
- goto _12
-
-_11:
- if (_2_pOrTerm.X8) != _iCur {
- goto _13
- }
-
- *(**XWhereInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(0 /* X0 */))))) = (*XWhereInfo)(_pWC.X0)
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(4 /* X1 */))))) = _pWC
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(8 /* X2 */))) = uint8(i32(71))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(12 /* X3 */))) = i32(1)
- *(**XWhereTerm)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_tempWC)) + uintptr(20 /* X5 */))))) = _2_pOrTerm
- *(**XWhereClause)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSubBuild)) + uintptr(4 /* X1 */))))) = &_tempWC
- goto _14
-
-_13:
- goto _8
-
-_14:
-_12:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur)) + uintptr(0 /* X0 */))) = uint16(i32(0))
- if ((*XTable)(_pItem.X4).X16) == 0 {
- goto _15
+ if (_pF.X3) >= i32(0) {
+ _1_addrNext = _sqlite3VdbeMakeLabel(tls, _v)
+ _codeDistinct(tls, _pParse, _pF.X3, _1_addrNext, i32(1), _1_regAgg)
}
-
- _rc = _whereLoopAddVirtual(tls, &_sSubBuild, _mPrereq, _mUnusable)
- goto _16
-
-_15:
- _rc = _whereLoopAddBtree(tls, &_sSubBuild, _mPrereq)
-_16:
- if _rc != i32(0) {
- goto _17
+ if (int32((*XFuncDef)(_pF.X1).X1) & i32(32)) == 0 {
+ goto _9
}
-
- _rc = _whereLoopAddOr(tls, &_sSubBuild, _mPrereq, _mUnusable)
-_17:
+ _5_pColl = nil
func() {
- if _rc != i32(0) && int32(_sCur.X0) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133724), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLoopAddOrØ00__func__Ø000))), unsafe.Pointer(str(111060)))
+ if _1_pList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121349), unsafe.Pointer((*int8)(unsafe.Pointer(&_updateAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(90087)))
crt.X__builtin_abort(tls)
}
}()
- if int32(_sCur.X0) != i32(0) {
- goto _21
+ *func() **TExprList_item { _5_j = i32(0); return &_5_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pList)) + uintptr(8 /* X2 */)))))
+_12:
+ if _5_pColl != nil || _5_j >= _1_nArg {
+ goto _16
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum)) + uintptr(0 /* X0 */))) = uint16(i32(0))
- goto _10
-
-_21:
- if _2_once == 0 {
- goto _23
+ _5_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_5_pItem.X0))
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _5_j += 1; return &_5_pItem }())) += uintptr(20)
+ goto _12
+_16:
+ if _5_pColl == nil {
+ _5_pColl = (*XCollSeq)((*Xsqlite3)(_pParse.X0).X2)
}
-
- _whereOrMove(tls, &_sSum, &_sCur)
- _2_once = i32(0)
- goto _24
-
-_23:
- _whereOrMove(tls, &_12_sPrev, &_sSum)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum)) + uintptr(0 /* X0 */))) = uint16(i32(0))
- _2_i = i32(0)
-_25:
- if _2_i >= int32(_12_sPrev.X0) {
- goto _28
+ if (_regHit == i32(0)) && (_pAggInfo.X10) != 0 {
+ _regHit = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
}
-
- _2_j = i32(0)
-_29:
- if _2_j >= int32(_sCur.X0) {
- goto _32
+ _sqlite3VdbeAddOp4(tls, _v, i32(68), _regHit, i32(0), i32(0), (*int8)(unsafe.Pointer(_5_pColl)), i32(-3))
+_9:
+ _sqlite3VdbeAddOp3(tls, _v, i32(150), i32(0), _1_regAgg, _pF.X2)
+ _sqlite3VdbeAppendP4(tls, _v, _pF.X1, i32(-4))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(uint8(_1_nArg)))
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _1_regAgg, _1_nArg)
+ _sqlite3ReleaseTempRange(tls, _pParse, _1_regAgg, _1_nArg)
+ if _1_addrNext != 0 {
+ _sqlite3VdbeResolveLabel(tls, _v, _1_addrNext)
+ _sqlite3ExprCacheClear(tls, _pParse)
}
+ *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_pF }())) += uintptr(16)
+ goto _0
+_3:
+ if _regHit != 0 {
+ _addrHitTest = _sqlite3VdbeAddOp1(tls, _v, i32(21), _regHit)
+ }
+ _sqlite3ExprCacheClear(tls, _pParse)
+ *func() **TAggInfo_col { _i = i32(0); return &_pC }() = (*TAggInfo_col)(_pAggInfo.X8)
+_22:
+ if _i >= (_pAggInfo.X10) {
+ goto _25
+ }
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)(_pC.X5), _pC.X4)
+ *(*uintptr)(unsafe.Pointer(func() **TAggInfo_col { _i += 1; return &_pC }())) += uintptr(24)
+ goto _22
+_25:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pAggInfo)) + uintptr(0 /* X0 */))) = uint8(i32(0))
+ _sqlite3ExprCacheClear(tls, _pParse)
+ if _addrHitTest != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _addrHitTest)
+ }
+}
- _whereOrInsert(tls, &_sSum, ((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sPrev))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X0)|((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur))+uintptr(4 /* X1 */)))))+12*uintptr(_2_j))).X0), _sqlite3LogEstAdd(tls, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sPrev))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X1, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur))+uintptr(4 /* X1 */)))))+12*uintptr(_2_j))).X1), _sqlite3LogEstAdd(tls, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_12_sPrev))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X2, (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCur))+uintptr(4 /* X1 */)))))+12*uintptr(_2_j))).X2))
- _2_j += 1
- goto _29
-
-_32:
- _2_i += 1
- goto _25
+var _updateAccumulatorØ00__func__Ø000 [18]int8
-_28:
-_24:
-_8:
- *(*uintptr)(unsafe.Pointer(&_2_pOrTerm)) += uintptr(48)
- goto _7
+func init() {
+ crt.Xstrncpy(nil, &_updateAccumulatorØ00__func__Ø000[0], str(110096), 18)
+}
-_10:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X10 */))) = uint16(i32(1))
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew.X13)) + 4*uintptr(i32(0)))) = _pTerm
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X9 */))) = uint32(i32(8192))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X5 */))) = int16(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(18 /* X4 */))) = uint8(i32(0))
- crt.Xmemset(tls, (unsafe.Pointer)((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(28 /* X8 */)))), i32(0), u32(12))
- _2_i = i32(0)
-_33:
- if _rc != i32(0) || _2_i >= int32(_sSum.X0) {
- goto _37
+// Invoke the OP_AggFinalize opcode for every aggregate function
+// in the AggInfo structure.
+func _finalizeAggFunctions(tls *crt.TLS, _pParse *XParse, _pAggInfo *XAggInfo) {
+ var _i int32
+ var _v *TVdbe
+ var _1_pList *XExprList
+ var _pF *TAggInfo_func
+ _v = (*TVdbe)(_pParse.X2)
+ *func() **TAggInfo_func { _i = i32(0); return &_pF }() = (*TAggInfo_func)(_pAggInfo.X11)
+_0:
+ if _i >= (_pAggInfo.X12) {
+ goto _3
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(22 /* X6 */))) = int16(int32((*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum))+uintptr(4 /* X1 */)))))+12*uintptr(_2_i))).X1) + i32(1))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(24 /* X7 */))) = (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum))+uintptr(4 /* X1 */))))) + 12*uintptr(_2_i))).X2
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))) = (*XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSum))+uintptr(4 /* X1 */))))) + 12*uintptr(_2_i))).X0
- _rc = _whereLoopInsert(tls, _pBuilder, _pNew)
- _2_i += 1
- goto _33
-
-_37:
-_6:
- *(*uintptr)(unsafe.Pointer(&_pTerm)) += uintptr(48)
+ _1_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr(_pF.X0) + uintptr(20 /* X6 */))))))
+ func() {
+ if (((*XExpr)(_pF.X0).X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121306), unsafe.Pointer((*int8)(unsafe.Pointer(&_finalizeAggFunctionsØ00__func__Ø000))), unsafe.Pointer(str(110054)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp2(tls, _v, i32(152), _pF.X2, func() int32 {
+ if _1_pList != nil {
+ return (_1_pList.X0)
+ }
+ return i32(0)
+ }())
+ _sqlite3VdbeAppendP4(tls, _v, _pF.X1, i32(-4))
+ *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_pF }())) += uintptr(16)
goto _0
-
-_4:
- return _rc
+_3:
}
-var _whereLoopAddOrØ00__func__Ø000 [15]int8 // -
+var _finalizeAggFunctionsØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_whereLoopAddOrØ00__func__Ø000[0], str(111088), 15)
-}
-
-func _whereOrMove(tls *crt.TLS, _pDest *XWhereOrSet, _pSrc *XWhereOrSet) { // sqlite3.c:130504:1
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest)) + uintptr(0 /* X0 */))) = _pSrc.X0
- crt.Xmemcpy(tls, (unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest))+uintptr(4 /* X1 */)))), (unsafe.Pointer)((*[3]XWhereOrCost)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(4 /* X1 */)))), uint32(_pDest.X0)*u32(12))
+ crt.Xstrncpy(nil, &_finalizeAggFunctionsØ00__func__Ø000[0], str(110114), 21)
}
-func _wherePathSolver(tls *crt.TLS, _pWInfo *XWhereInfo, _nRowEst int16) (r0 int32) { // sqlite3.c:134226:1
- var _mxChoice int32 // sqlite3.c:134227:7
- _ = _mxChoice
- var _nLoop int32 // sqlite3.c:134228:7
- _ = _nLoop
- var _pParse *XParse // sqlite3.c:134229:9
- _ = _pParse
- var _db *Xsqlite3 // sqlite3.c:134230:11
- _ = _db
- var _iLoop int32 // sqlite3.c:134231:7
- _ = _iLoop
- var _ii int32 // sqlite3.c:134232:7
- _ = _ii
- var _jj int32 // sqlite3.c:134232:11
- _ = _jj
- var _mxI int32 // sqlite3.c:134233:7
- _ = _mxI
- var _nOrderBy int32 // sqlite3.c:134234:7
- _ = _nOrderBy
- var _mxCost int16 // sqlite3.c:134235:10
- _ = _mxCost
- var _mxUnsorted int16 // sqlite3.c:134236:10
- _ = _mxUnsorted
- var _nTo int32 // sqlite3.c:134237:7
- _ = _nTo
- var _nFrom int32 // sqlite3.c:134237:12
- _ = _nFrom
- var _aFrom *XWherePath // sqlite3.c:134238:13
- _ = _aFrom
- var _aTo *XWherePath // sqlite3.c:134239:13
- _ = _aTo
- var _pFrom *XWherePath // sqlite3.c:134240:13
- _ = _pFrom
- var _pTo *XWherePath // sqlite3.c:134241:13
- _ = _pTo
- var _pWLoop *XWhereLoop // sqlite3.c:134242:13
- _ = _pWLoop
- var _pX **XWhereLoop // sqlite3.c:134243:13
- _ = _pX
- var _aSortCost *int16 // sqlite3.c:134244:10
- _ = _aSortCost
- var _pSpace *int8 // sqlite3.c:134245:8
- _ = _pSpace
- var _nSpace int32 // sqlite3.c:134246:7
- _ = _nSpace
- var _8_nOut int16 // sqlite3.c:134319:16
- _ = _8_nOut
- var _8_rCost int16 // sqlite3.c:134320:16
- _ = _8_rCost
- var _8_rUnsorted int16 // sqlite3.c:134321:16
- _ = _8_rUnsorted
- var _8_isOrdered int8 // sqlite3.c:134322:12
- _ = _8_isOrdered
- var _8_maskNew uint64 // sqlite3.c:134323:17
- _ = _8_maskNew
- var _8_revMask uint64 // sqlite3.c:134324:17
- _ = _8_revMask
- var _28_pLevel *XWhereLevel // sqlite3.c:134515:16
- _ = _28_pLevel
- var _29_notUsed uint64 // sqlite3.c:134525:13
- _ = _29_notUsed
- var _29_rc int32 // sqlite3.c:134526:9
- _ = _29_rc
- var _36_wsFlags uint32 // sqlite3.c:134543:15
- _ = _36_wsFlags
- var _37_m uint64 // sqlite3.c:134547:21
- _ = _37_m
- var _37_rc int32 // sqlite3.c:134548:17
- _ = _37_rc
- var _39_revMask uint64 // sqlite3.c:134563:15
- _ = _39_revMask
- var _39_nOrder int32 // sqlite3.c:134564:11
- _ = _39_nOrder
- _mxI = i32(0)
- _mxCost = i16(0)
- _mxUnsorted = i16(0)
- _aSortCost = nil
- _pParse = (*XParse)(_pWInfo.X0)
- _db = (*Xsqlite3)(_pParse.X0)
- _nLoop = int32(_pWInfo.X11)
- _mxChoice = func() int32 {
- if _nLoop <= i32(1) {
- return i32(1)
+// Reset the aggregate accumulator.
+//
+// The aggregate accumulator is a set of memory cells that hold
+// intermediate results while calculating an aggregate. This
+// routine generates code that stores NULLs in all of those memory
+// cells.
+func _resetAccumulator(tls *crt.TLS, _pParse *XParse, _pAggInfo *XAggInfo) {
+ var _i, _nReg int32
+ var _v *TVdbe
+ var _4_pE *XExpr
+ var _6_pKeyInfo *XKeyInfo
+ var _pFunc *TAggInfo_func
+ _v = (*TVdbe)(_pParse.X2)
+ _nReg = (_pAggInfo.X12) + (_pAggInfo.X9)
+ if _nReg == i32(0) {
+ return
+ }
+ func() {
+ if _nReg != (((_pAggInfo.X6) - (_pAggInfo.X5)) + i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121268), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(110135)))
+ crt.X__builtin_abort(tls)
}
- return func() int32 {
- if _nLoop == i32(2) {
- return i32(5)
- }
- return i32(10)
- }()
}()
+ _i = i32(0)
+_3:
+ if _i >= (_pAggInfo.X9) {
+ goto _6
+ }
func() {
- if _nLoop > ((*XSrcList)(_pWInfo.X1).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134255), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(111104)))
+ if ((*TAggInfo_col)(unsafe.Pointer(uintptr(_pAggInfo.X8)+24*uintptr(_i))).X4) < (_pAggInfo.X5) || ((*TAggInfo_col)(unsafe.Pointer(uintptr(_pAggInfo.X8)+24*uintptr(_i))).X4) > (_pAggInfo.X6) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121270), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(110175)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExprList)(_pWInfo.X2) != nil && int32(_nRowEst) != i32(0) {
- goto _7
- }
-
- _nOrderBy = i32(0)
- goto _8
-
-_7:
- _nOrderBy = (*XExprList)(_pWInfo.X2).X0
-_8:
- _nSpace = int32(((u32(28) + (u32(4) * uint32(_nLoop))) * uint32(_mxChoice)) * uint32(i32(2)))
- {
- p := &_nSpace
- *p = int32(uint32(*p) + (u32(2) * uint32(_nOrderBy)))
- sink1 = *p
- }
- _pSpace = (*int8)(_sqlite3DbMallocRawNN(tls, _db, uint64(_nSpace)))
- if _pSpace != nil {
- goto _9
- }
- return _sqlite3NomemError(tls, i32(134273))
-
-_9:
- _aTo = (*XWherePath)(unsafe.Pointer(_pSpace))
- _aFrom = (*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer(_aTo)) + uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(_mxChoice)))))*uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(28)))))))))))
- crt.Xmemset(tls, (unsafe.Pointer)(_aFrom), i32(0), u32(28))
- _pX = (**XWhereLoop)(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer(_aFrom)) + uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(_mxChoice)))))*uintptr(unsafe.Pointer((*XWherePath)(unsafe.Pointer(uintptr(28)))))))))))))
- *func() **XWherePath { _ii = _mxChoice * i32(2); return &_pFrom }() = _aTo
+ _i += 1
+ goto _3
+_6:
+ _i = i32(0)
_10:
- if _ii <= i32(0) {
+ if _i >= (_pAggInfo.X12) {
goto _13
}
-
- *(***XWhereLoop)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom)) + uintptr(24 /* X6 */))))) = _pX
- {
- p := func() ***XWhereLoop {
- *(*uintptr)(unsafe.Pointer(func() **XWherePath { _ii -= 1; return &_pFrom }())) += uintptr(28)
- return &_pX
- }()
- *p = (**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 4*uintptr(_nLoop)))
- sink66 = *p
- }
- goto _10
-
-_13:
- if _nOrderBy == 0 {
- goto _14
- }
-
- _aSortCost = (*int16)(unsafe.Pointer(_pX))
- crt.Xmemset(tls, (unsafe.Pointer)(_aSortCost), i32(0), u32(2)*uint32(_nOrderBy))
-_14:
func() {
- if _aSortCost != nil && (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSpace))+1*uintptr(_nSpace))) != (*int8)(unsafe.Pointer((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost))+2*uintptr(_nOrderBy))))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134291), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(111136)))
+ if ((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11)+16*uintptr(_i))).X2) < (_pAggInfo.X5) || ((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11)+16*uintptr(_i))).X2) > (_pAggInfo.X6) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121274), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(110258)))
crt.X__builtin_abort(tls)
}
}()
+ _i += 1
+ goto _10
+_13:
+ _sqlite3VdbeAddOp3(tls, _v, i32(59), i32(0), _pAggInfo.X5, _pAggInfo.X6)
+ *func() *int32 { _pFunc = (*TAggInfo_func)(_pAggInfo.X11); return &_i }() = i32(0)
+_17:
+ if _i >= (_pAggInfo.X12) {
+ goto _20
+ }
+ if (_pFunc.X3) < i32(0) {
+ goto _21
+ }
+ _4_pE = (*XExpr)(_pFunc.X0)
func() {
- if _aSortCost == nil && (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSpace))+1*uintptr(_nSpace))) != (*int8)(unsafe.Pointer(_pX)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134292), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(111200)))
+ if ((_4_pE.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(121282), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(110343)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(i32(0)))))) + uintptr(16 /* X2 */))) = int16(func() uint32 {
- if (_pParse.X42) < uint32(i32(48)) {
- return (_pParse.X42)
- }
- return uint32(i32(48))
- }())
+ if ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pE)) + uintptr(20 /* X6 */)))))) == nil) || (((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pE)) + uintptr(20 /* X6 */)))))).X0) != i32(1)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(110378))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFunc)) + uintptr(12 /* X3 */))) = i32(-1)
+ goto _26
+ }
+ _6_pKeyInfo = _keyInfoFromExprList(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pE)) + uintptr(20 /* X6 */)))))), i32(0), i32(0))
+ _sqlite3VdbeAddOp4(tls, _v, i32(110), _pFunc.X3, i32(0), i32(0), (*int8)(unsafe.Pointer(_6_pKeyInfo)), i32(-5))
+_26:
+_21:
+ *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_pFunc }())) += uintptr(16)
+ goto _17
+_20:
+}
+
+var _resetAccumulatorØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_resetAccumulatorØ00__func__Ø000[0], str(110429), 17)
+}
+
+// The select statement passed as the first argument is an aggregate query.
+// The second argument is the associated aggregate-info object. This
+// function tests if the SELECT is of the form:
+//
+// SELECT count(*) FROM
+//
+// where table is a database table, not a sub-select or view. If the query
+// does match this pattern, then a pointer to the Table object representing
+// is returned. Otherwise, 0 is returned.
+func _isSimpleCount(tls *crt.TLS, _p *XSelect, _pAggInfo *XAggInfo) (r0 *XTable) {
+ var _pTab *XTable
+ var _pExpr *XExpr
func() {
- if i32(48) != int32(_sqlite3LogEst(tls, uint64(i32(28)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134299), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(111244)))
+ if (*XExprList)(_p.X10) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120492), unsafe.Pointer((*int8)(unsafe.Pointer(&_isSimpleCountØ00__func__Ø000))), unsafe.Pointer(str(110446)))
crt.X__builtin_abort(tls)
}
}()
- _nFrom = i32(1)
+ if ((((*XExpr)(_p.X9) != nil) || (((*XExprList)(_p.X0).X0) != i32(1))) || (((*XSrcList)(_p.X8).X0) != i32(1))) || ((*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X5) != nil) {
+ return nil
+ }
+ _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
+ _pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0)+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
func() {
- if int32((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(i32(0)))).X5) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134301), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(111268)))
+ if _pTab == nil || (*XSelect)(_pTab.X3) != nil || _pExpr == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120501), unsafe.Pointer((*int8)(unsafe.Pointer(&_isSimpleCountØ00__func__Ø000))), unsafe.Pointer(str(110459)))
crt.X__builtin_abort(tls)
}
}()
- if _nOrderBy == 0 {
- goto _27
+ if (_pTab.X16) != 0 {
+ return nil
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(i32(0)))))) + uintptr(22 /* X5 */))) = int8(func() int32 {
- if _nLoop > i32(0) {
- return i32(-1)
- }
- return _nOrderBy
- }())
-_27:
- _iLoop = i32(0)
-_30:
- if _iLoop >= _nLoop {
- goto _33
+ if int32(_pExpr.X0) != i32(153) {
+ return nil
}
-
- _nTo = i32(0)
- *func() **XWherePath { _ii = i32(0); return &_pFrom }() = _aFrom
-_34:
- if _ii >= _nFrom {
- goto _37
+ if func() int32 {
+ if (_pAggInfo.X12) == i32(0) {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120505), unsafe.Pointer((*int8)(unsafe.Pointer(&_isSimpleCountØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return nil
}
-
- _pWLoop = (*XWhereLoop)(_pWInfo.X19)
-_38:
- if _pWLoop == nil {
- goto _41
+ if (int32((*XFuncDef)((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11)+16*uintptr(i32(0)))).X1).X1) & i32(256)) == i32(0) {
+ return nil
}
-
- _8_isOrdered = _pFrom.X5
- _8_revMask = uint64(i32(0))
- if ((_pWLoop.X0) & (^(_pFrom.X0))) == uint64(i32(0)) {
- goto _42
+ if ((_pExpr.X2) & uint32(i32(16))) != 0 {
+ return nil
}
+ return _pTab
+}
- goto _39
-
-_42:
- if ((_pWLoop.X1) & (_pFrom.X0)) == uint64(i32(0)) {
- goto _43
- }
+var _isSimpleCountØ00__func__Ø000 [14]int8
- goto _39
+func init() {
+ crt.Xstrncpy(nil, &_isSimpleCountØ00__func__Ø000[0], str(110491), 14)
+}
-_43:
- if ((_pWLoop.X9)&uint32(i32(16384))) == uint32(i32(0)) || int32(_pFrom.X2) >= i32(10) {
- goto _45
+func _explainSimpleCount(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pIdx *XIndex) {
+ var _1_bCover int32
+ var _1_zEqp *int8
+ if int32(_pParse.X54) == i32(2) {
+ _1_bCover = bool2int((_pIdx != nil) && ((((_pTab.X9) & uint32(i32(32))) == uint32(i32(0))) || (int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2))))
+ _1_zEqp = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(110505), unsafe.Pointer(_pTab.X0), unsafe.Pointer(func() *int8 {
+ if _1_bCover != 0 {
+ return str(110523)
+ }
+ return str(0)
+ }()), unsafe.Pointer(func() *int8 {
+ if _1_bCover != 0 {
+ return (_pIdx.X0)
+ }
+ return str(0)
+ }()))
+ _sqlite3VdbeAddOp4(tls, (*TVdbe)(_pParse.X2), i32(165), _pParse.X58, i32(0), i32(0), _1_zEqp, i32(-1))
+ }
+}
+
+// Based on the contents of the AggInfo structure indicated by the first
+// argument, this function checks if the following are true:
+//
+// * the query contains just a single aggregate function,
+// * the aggregate function is either min() or max(), and
+// * the argument to the aggregate function is a column value.
+//
+// If all of the above are true, then WHERE_ORDERBY_MIN or WHERE_ORDERBY_MAX
+// is returned as appropriate. Also, *ppMinMax is set to point to the
+// list of arguments passed to the aggregate before returning.
+//
+// Or, if the conditions above are not met, *ppMinMax is set to 0 and
+// WHERE_ORDERBY_NORMAL is returned.
+func _minMaxQuery(tls *crt.TLS, _pAggInfo *XAggInfo, _ppMinMax **XExprList) (r0 uint8) {
+ var _eRet int32
+ var _2_zFunc *int8
+ var _1_pEList *XExprList
+ var _1_pExpr *XExpr
+ _eRet = i32(0)
+ *_ppMinMax = nil
+ if (_pAggInfo.X12) != i32(1) {
+ goto _0
}
-
+ _1_pExpr = (*XExpr)((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11) + 16*uintptr(i32(0)))).X0)
+ _1_pEList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pExpr)) + uintptr(20 /* X6 */))))))
func() {
- if i32(10) != int32(_sqlite3LogEst(tls, uint64(i32(2)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134331), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(90424)))
+ if int32(_1_pExpr.X0) != i32(153) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120460), unsafe.Pointer((*int8)(unsafe.Pointer(&_minMaxQueryØ00__func__Ø000))), unsafe.Pointer(str(96778)))
crt.X__builtin_abort(tls)
}
}()
- goto _39
-
-_45:
- _8_rUnsorted = _sqlite3LogEstAdd(tls, _pWLoop.X5, int16(int32(_pWLoop.X6)+int32(_pFrom.X2)))
- _8_rUnsorted = _sqlite3LogEstAdd(tls, _8_rUnsorted, _pFrom.X4)
- _8_nOut = int16(int32(_pFrom.X2) + int32(_pWLoop.X7))
- _8_maskNew = (_pFrom.X0) | (_pWLoop.X1)
- if int32(_8_isOrdered) >= i32(0) {
- goto _48
+ if _1_pEList == nil || (_1_pEList.X0) != i32(1) || int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0).X0) != i32(154) {
+ goto _5
}
-
- _8_isOrdered = _wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X2), _pFrom, _pWInfo.X10, uint16(_iLoop), _pWLoop, &_8_revMask)
- goto _49
-
-_48:
- _8_revMask = _pFrom.X1
-_49:
- if int32(_8_isOrdered) < i32(0) || int32(_8_isOrdered) >= _nOrderBy {
- goto _51
+ _2_zFunc = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pExpr)) + uintptr(8 /* X3 */)))))
+ if _sqlite3StrICmp(tls, _2_zFunc, str(7709)) == i32(0) {
+ _eRet = i32(1)
+ *_ppMinMax = _1_pEList
+ goto _7
}
-
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost)) + 2*uintptr(_8_isOrdered)))) != i32(0) {
- goto _52
+ if _sqlite3StrICmp(tls, _2_zFunc, str(7713)) == i32(0) {
+ _eRet = i32(2)
+ *_ppMinMax = _1_pEList
}
+_7:
+_5:
+_0:
+ func() {
+ if (*_ppMinMax) != nil && ((*_ppMinMax).X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(120473), unsafe.Pointer((*int8)(unsafe.Pointer(&_minMaxQueryØ00__func__Ø000))), unsafe.Pointer(str(110546)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return uint8(_eRet)
+}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost)) + 2*uintptr(_8_isOrdered))) = _whereSortingCost(tls, _pWInfo, _nRowEst, _nOrderBy, int32(_8_isOrdered))
-_52:
- _8_rCost = _sqlite3LogEstAdd(tls, _8_rUnsorted, *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aSortCost)) + 2*uintptr(_8_isOrdered))))
- goto _53
+var _minMaxQueryØ00__func__Ø000 [12]int8
-_51:
- _8_rCost = _8_rUnsorted
-_53:
- *func() **XWherePath { _jj = i32(0); return &_pTo }() = _aTo
-_54:
- if _jj >= _nTo {
- goto _57
- }
+func init() {
+ crt.Xstrncpy(nil, &_minMaxQueryØ00__func__Ø000[0], str(110584), 12)
+}
- if (_pTo.X0) != _8_maskNew || ((int32(_pTo.X5)^int32(_8_isOrdered))&i32(128)) != i32(0) {
- goto _59
+// If the inner loop was generated using a non-null pOrderBy argument,
+// then the results were placed in a sorter. After the loop is terminated
+// we need to run the sorter and output the results. The following
+// routine generates the code needed to do that.
+func _generateSortTail(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pSort *XSortCtx, _nColumn int32, _pDest *XSelectDest) {
+ var _addrBreak, _addrContinue, _addr, _addrOnce, _iTab, _eDest, _iParm, _regRow, _regRowid, _iCol, _nKey, _iSortTab, _nSortData, _i, _bSeq, _4_regSortOut, _7_iRead int32
+ var _v *TVdbe
+ var _pOrderBy *XExprList
+ var _aOutEx *TExprList_item
+ _v = (*TVdbe)(_pParse.X2)
+ _addrBreak = _pSort.X6
+ _addrContinue = _sqlite3VdbeMakeLabel(tls, _v)
+ _addrOnce = i32(0)
+ _pOrderBy = (*XExprList)(_pSort.X0)
+ _eDest = int32(_pDest.X0)
+ _iParm = _pDest.X2
+ _aOutEx = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0) + uintptr(8 /* X2 */)))))
+ func() {
+ if _addrBreak >= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117761), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateSortTailØ00__func__Ø000))), unsafe.Pointer(str(110596)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pSort.X4) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(14), _pSort.X3, _pSort.X4)
+ _sqlite3VdbeGoto(tls, _v, _addrBreak)
+ _sqlite3VdbeResolveLabel(tls, _v, _pSort.X4)
}
-
- goto _57
-
-_59:
- *(*uintptr)(unsafe.Pointer(func() **XWherePath { _jj += 1; return &_pTo }())) += uintptr(28)
- goto _54
-
-_57:
- if _jj < _nTo {
- goto _60
+ _iTab = _pSort.X2
+ if ((_eDest == i32(9)) || (_eDest == i32(13))) || (_eDest == i32(10)) {
+ _regRowid = i32(0)
+ _regRow = _pDest.X3
+ _nSortData = _nColumn
+ goto _6
}
-
- if _nTo < _mxChoice || int32(_8_rCost) <= int32(_mxCost) && (int32(_8_rCost) != int32(_mxCost) || int32(_8_rUnsorted) < int32(_mxUnsorted)) {
- goto _64
+ _regRowid = _sqlite3GetTempReg(tls, _pParse)
+ _regRow = _sqlite3GetTempRange(tls, _pParse, _nColumn)
+ _nSortData = _nColumn
+_6:
+ _nKey = (_pOrderBy.X0) - (_pSort.X1)
+ if (int32(_pSort.X7) & i32(1)) == 0 {
+ goto _7
}
-
- goto _39
-
-_64:
- if _nTo >= _mxChoice {
- goto _65
+ _4_regSortOut = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _iSortTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ if (_pSort.X4) != 0 {
+ _addrOnce = _sqlite3VdbeAddOp0(tls, _v, i32(20))
}
-
- _jj = postInc1(&_nTo, int32(1))
- goto _66
-
-_65:
- _jj = _mxI
-_66:
- _pTo = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(_jj)))
- goto _67
-
-_60:
- if int32(_pTo.X3) >= int32(_8_rCost) && (int32(_pTo.X3) != int32(_8_rCost) || int32(_pTo.X2) > int32(_8_nOut)) {
- goto _70
- }
-
- goto _39
-
-_70:
-_67:
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(0 /* X0 */))) = (_pFrom.X0) | (_pWLoop.X1)
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(8 /* X1 */))) = _8_revMask
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(16 /* X2 */))) = _8_nOut
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(18 /* X3 */))) = _8_rCost
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(20 /* X4 */))) = _8_rUnsorted
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(22 /* X5 */))) = _8_isOrdered
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pTo.X6), (unsafe.Pointer)(_pFrom.X6), u32(4)*uint32(_iLoop))
- *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo.X6)) + 4*uintptr(_iLoop))) = _pWLoop
- if _nTo < _mxChoice {
- goto _71
- }
-
- _mxI = i32(0)
- _mxCost = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(i32(0)))).X3
- _mxUnsorted = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(i32(0)))).X2
- *func() **XWherePath { _jj = i32(1); return &_pTo }() = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aTo)) + 28*uintptr(i32(1))))
-_72:
- if _jj >= _mxChoice {
- goto _75
- }
-
- if int32(_pTo.X3) <= int32(_mxCost) && (int32(_pTo.X3) != int32(_mxCost) || int32(_pTo.X4) <= int32(_mxUnsorted)) {
- goto _78
+ _sqlite3VdbeAddOp3(tls, _v, i32(113), _iSortTab, _4_regSortOut, (_nKey+i32(1))+_nSortData)
+ if _addrOnce != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _addrOnce)
}
-
- _mxCost = _pTo.X3
- _mxUnsorted = _pTo.X4
- _mxI = _jj
-_78:
- *(*uintptr)(unsafe.Pointer(func() **XWherePath { _jj += 1; return &_pTo }())) += uintptr(28)
- goto _72
-
-_75:
-_71:
-_39:
- _pWLoop = (*XWhereLoop)(_pWLoop.X14)
- goto _38
-
-_41:
- *(*uintptr)(unsafe.Pointer(func() **XWherePath { _ii += 1; return &_pFrom }())) += uintptr(28)
- goto _34
-
-_37:
- _pFrom = _aTo
- _aTo = _aFrom
- _aFrom = _pFrom
- _nFrom = _nTo
- _iLoop += 1
- goto _30
-
-_33:
- if _nFrom != i32(0) {
- goto _79
+ _addr = i32(1) + _sqlite3VdbeAddOp2(tls, _v, i32(35), _iTab, _addrBreak)
+ _codeOffset(tls, _v, _p.X5, _addrContinue)
+ _sqlite3VdbeAddOp3(tls, _v, i32(123), _iTab, _4_regSortOut, _iSortTab)
+ _bSeq = i32(0)
+ goto _10
+_7:
+ _addr = i32(1) + _sqlite3VdbeAddOp2(tls, _v, i32(36), _iTab, _addrBreak)
+ _codeOffset(tls, _v, _p.X5, _addrContinue)
+ _iSortTab = _iTab
+ _bSeq = i32(1)
+_10:
+ *func() *int32 { _i = i32(0); return &_iCol }() = _nKey + _bSeq
+_11:
+ if _i >= _nSortData {
+ goto _14
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(111292))
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pSpace))
- return i32(1)
-
-_79:
- _pFrom = _aFrom
- _ii = i32(1)
-_80:
- if _ii >= _nFrom {
- goto _83
+ if ((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx))+20*uintptr(_i))))) + uintptr(16 /* X5 */))))).X0) != 0 {
+ _7_iRead = int32((*t43)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))).X0) - i32(1)
+ goto _16
}
-
- if int32(_pFrom.X3) <= int32((*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom))+28*uintptr(_ii))).X3) {
- goto _84
+ _7_iRead = postInc1(&_iCol, int32(1))
+_16:
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _iSortTab, _7_iRead, _regRow+_i)
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(func() *int8 {
+ if ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx)) + 20*uintptr(_i))).X1) != nil {
+ return ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx)) + 20*uintptr(_i))).X1)
+ }
+ return ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx)) + 20*uintptr(_i))).X2)
+ }()))
+ _i += 1
+ goto _11
+_14:
+ switch _eDest {
+ case i32(10):
+ goto _23
+ case i32(11):
+ goto _22
+ case i32(12):
+ goto _21
+ case i32(14):
+ goto _20
+ default:
+ goto _24
}
- _pFrom = (*XWherePath)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aFrom)) + 28*uintptr(_ii)))
-_84:
- _ii += 1
- goto _80
-
-_83:
+_20:
+_21:
+ _sqlite3VdbeAddOp2(tls, _v, i32(117), _iParm, _regRowid)
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), _iParm, _regRow, _regRowid)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
+ goto _25
+_22:
func() {
- if int32(_pWInfo.X11) != _nLoop {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134512), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(111312)))
+ if _nColumn != _sqlite3Strlen30(tls, _pDest.X1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117817), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateSortTailØ00__func__Ø000))), unsafe.Pointer(str(110608)))
crt.X__builtin_abort(tls)
}
}()
- _iLoop = i32(0)
-_87:
- if _iLoop >= _nLoop {
- goto _90
+ _sqlite3VdbeAddOp4(tls, _v, i32(101), _regRow, _nColumn, _regRowid, _pDest.X1, _nColumn)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _regRow, _nColumn)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _regRowid, _regRow, _nColumn)
+ goto _25
+_23:
+ goto _25
+_24:
+ func() {
+ if _eDest != i32(9) && _eDest != i32(13) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(117830), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateSortTailØ00__func__Ø000))), unsafe.Pointer(str(110650)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _eDest == i32(9) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), _pDest.X3, _nColumn)
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _pDest.X3, _nColumn)
+ goto _32
}
-
- _28_pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))))) + uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer(uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer(uintptr(_iLoop)))))*uintptr(unsafe.Pointer((*XWhereLevel)(unsafe.Pointer(uintptr(76)))))))))))
- *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pLevel)) + uintptr(64 /* X18 */))))) = store65(&_pWLoop, *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_iLoop))))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pLevel)) + uintptr(44 /* X11 */))) = _pWLoop.X3
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pLevel)) + uintptr(4 /* X1 */))) = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_28_pLevel.X11))).X11
- _iLoop += 1
- goto _87
-
-_90:
- if (int32(_pWInfo.X10)&i32(256)) == i32(0) || (int32(_pWInfo.X10)&i32(128)) != i32(0) || int32(_pWInfo.X16) != i32(0) || _nRowEst == 0 {
- goto _94
+ _sqlite3VdbeAddOp1(tls, _v, i32(16), _pDest.X2)
+_32:
+ goto _25
+_25:
+ if _regRowid == 0 {
+ goto _33
}
-
- _29_rc = int32(_wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X3), _pFrom, uint16(i32(128)), uint16(_nLoop-i32(1)), *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1)))), &_29_notUsed))
- if _29_rc != ((*XExprList)(_pWInfo.X3).X0) {
- goto _95
+ if _eDest == i32(11) {
+ _sqlite3ReleaseTempRange(tls, _pParse, _regRow, _nColumn)
+ goto _35
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(2))
-_95:
-_94:
- if (*XExprList)(_pWInfo.X2) == nil {
- goto _96
+ _sqlite3ReleaseTempReg(tls, _pParse, _regRow)
+_35:
+ _sqlite3ReleaseTempReg(tls, _pParse, _regRowid)
+_33:
+ _sqlite3VdbeResolveLabel(tls, _v, _addrContinue)
+ if (int32(_pSort.X7) & i32(1)) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(3), _iTab, _addr)
+ goto _37
}
-
- if (int32(_pWInfo.X10) & i32(128)) == 0 {
- goto _97
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _iTab, _addr)
+_37:
+ if (_pSort.X3) != 0 {
+ _sqlite3VdbeAddOp1(tls, _v, i32(52), _pSort.X3)
}
+ _sqlite3VdbeResolveLabel(tls, _v, _addrBreak)
+ _ = _iCol
+}
- if int32(_pFrom.X5) != ((*XExprList)(_pWInfo.X2).X0) {
- goto _98
- }
+var _generateSortTailØ00__func__Ø000 [17]int8
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(51 /* X16 */))) = uint8(i32(2))
-_98:
- goto _99
+func init() {
+ crt.Xstrncpy(nil, &_generateSortTailØ00__func__Ø000[0], str(110692), 17)
+}
-_97:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = _pFrom.X5
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = _pFrom.X1
- if int32(_pWInfo.X12) > i32(0) {
- goto _100
+// Argument pVector points to a vector expression - either a TK_VECTOR
+// or TK_SELECT that returns more than one column. This function returns
+// the register number of a register that contains the value of
+// element iField of the vector.
+//
+// If pVector is a TK_SELECT expression, then code for it must have
+// already been generated using the exprCodeSubselect() routine. In this
+// case parameter regSelect should be the first in an array of registers
+// containing the results of the sub-select.
+//
+// If pVector is of type TK_VECTOR, then code for the requested field
+// is generated. In this case (*pRegFree) may be set to the number of
+// a temporary register to be freed by the caller before returning.
+//
+// Before returning, output parameter (*ppExpr) is set to point to the
+// Expr object corresponding to element iElem of the vector.
+func _exprVectorRegister(tls *crt.TLS, _pParse *XParse, _pVector *XExpr, _iField int32, _regSelect int32, _ppExpr **XExpr, _pRegFree *int32) (r0 int32) {
+ var _op uint8
+ _op = _pVector.X0
+ func() {
+ if int32(_op) != i32(158) && int32(_op) != i32(157) && int32(_op) != i32(119) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91384), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprVectorRegisterØ00__func__Ø000))), unsafe.Pointer(str(110709)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_op) == i32(157) {
+ *_ppExpr = _sqlite3VectorFieldSubexpr(tls, _pVector, _iField)
+ return (_pVector.X8) + _iField
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(47 /* X12 */))) = int8(i32(0))
- if _nLoop <= i32(0) {
- goto _101
+ if int32(_op) == i32(119) {
+ *_ppExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20 /* X6 */)))))).X0)+uintptr(8 /* X2 */))))) + 20*uintptr(_iField))).X0)
+ return _regSelect + _iField
}
+ *_ppExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_iField))).X0)
+ return _sqlite3ExprCodeTemp(tls, _pParse, *_ppExpr, _pRegFree)
+}
- _36_wsFlags = (*(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1))))).X9
- if (_36_wsFlags&uint32(i32(4096))) != uint32(i32(0)) || (_36_wsFlags&uint32(i32(260))) == uint32(i32(260)) {
- goto _103
+var _exprVectorRegisterØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_exprVectorRegisterØ00__func__Ø000[0], str(110759), 19)
+}
+
+// The first parameter (pDef) is a function implementation. The
+// second parameter (pExpr) is the first argument to this function.
+// If pExpr is a column in a virtual table, then let the virtual
+// table implementation have an opportunity to overload the function.
+//
+// This routine is used to allow virtual table implementations to
+// overload MATCH, LIKE, GLOB, and REGEXP operators.
+//
+// Return either the pDef argument (indicating no change) or a
+// new FuncDef structure that is marked as ephemeral using the
+// SQLITE_FUNC_EPHEM flag.
+func _sqlite3VtabOverloadFunction(tls *crt.TLS, _db *Xsqlite3, _pDef *XFuncDef, _nArg int32, _pExpr *XExpr) (r0 *XFuncDef) {
+ var _rc int32
+ var _zLowerName *int8
+ var _pArg unsafe.Pointer
+ var _z *uint8
+ var _pTab *XTable
+ var _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem)
+ var _pNew *XFuncDef
+ var _pVtab *Xsqlite3_vtab
+ var _pMod *Xsqlite3_module
+ _xSFunc = nil
+ _pArg = nil
+ _rc = i32(0)
+ if func() int32 {
+ if _pExpr == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126040), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabOverloadFunctionØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return _pDef
}
-
- _37_m = u64(0)
- _37_rc = int32(_wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X2), _pFrom, uint16(i32(2048)), uint16(_nLoop-i32(1)), *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1)))), &_37_m))
- if _37_rc != ((*XExprList)(_pWInfo.X2).X0) {
- goto _104
+ if int32(_pExpr.X0) != i32(152) {
+ return _pDef
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(52 /* X17 */))) = uint8(i32(1))
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = _37_m
-_104:
-_103:
-_101:
-_100:
-_99:
- if (int32(_pWInfo.X10)&i32(512)) == 0 || int32(_pWInfo.X12) != ((*XExprList)(_pWInfo.X2).X0) || _nLoop <= i32(0) {
- goto _107
+ _pTab = (*XTable)(_pExpr.X14)
+ if _pTab == nil {
+ return _pDef
}
-
- _39_revMask = u64(0)
- _39_nOrder = int32(_wherePathSatisfiesOrderBy(tls, _pWInfo, (*XExprList)(_pWInfo.X2), _pFrom, uint16(i32(0)), uint16(_nLoop-i32(1)), *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom.X6)) + 4*uintptr(_nLoop-i32(1)))), &_39_revMask))
+ if (_pTab.X16) == 0 {
+ return _pDef
+ }
+ _pVtab = (*Xsqlite3_vtab)(_sqlite3GetVTable(tls, _db, _pTab).X2)
func() {
- if int32(_pWInfo.X13) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134567), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSolverØ00__func__Ø000))), unsafe.Pointer(str(111336)))
+ if _pVtab == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabOverloadFunctionØ00__func__Ø000))), unsafe.Pointer(str(110778)))
crt.X__builtin_abort(tls)
}
}()
- if _39_nOrder != ((*XExprList)(_pWInfo.X2).X0) {
- goto _110
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(48 /* X13 */))) = uint8(i32(1))
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(64 /* X20 */))) = _39_revMask
-_110:
-_107:
-_96:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(72 /* X21 */))) = _pFrom.X2
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pSpace))
- return i32(0)
-}
-
-var _wherePathSolverØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_wherePathSolverØ00__func__Ø000[0], str(111356), 16)
-}
-
-func _wherePathSatisfiesOrderBy(tls *crt.TLS, _pWInfo *XWhereInfo, _pOrderBy *XExprList, _pPath *XWherePath, _wctrlFlags uint16, _nLoop uint16, _pLast *XWhereLoop, _pRevMask *uint64) (r0 int8) { // sqlite3.c:133845:1
- var _revSet uint8 // sqlite3.c:133854:6
- _ = _revSet
- var _rev uint8 // sqlite3.c:133855:6
- _ = _rev
- var _revIdx uint8 // sqlite3.c:133856:6
- _ = _revIdx
- var _isOrderDistinct uint8 // sqlite3.c:133857:6
- _ = _isOrderDistinct
- var _distinctColumns uint8 // sqlite3.c:133858:6
- _ = _distinctColumns
- var _isMatch uint8 // sqlite3.c:133859:6
- _ = _isMatch
- var _eqOpMask uint16 // sqlite3.c:133860:7
- _ = _eqOpMask
- var _nKeyCol uint16 // sqlite3.c:133861:7
- _ = _nKeyCol
- var _nColumn uint16 // sqlite3.c:133862:7
- _ = _nColumn
- var _nOrderBy uint16 // sqlite3.c:133863:7
- _ = _nOrderBy
- var _iLoop int32 // sqlite3.c:133864:7
- _ = _iLoop
- var _i int32 // sqlite3.c:133865:7
- _ = _i
- var _j int32 // sqlite3.c:133865:10
- _ = _j
- var _iCur int32 // sqlite3.c:133866:7
- _ = _iCur
- var _iColumn int32 // sqlite3.c:133867:7
- _ = _iColumn
- var _pLoop *XWhereLoop // sqlite3.c:133868:13
- _ = _pLoop
- var _pTerm *XWhereTerm // sqlite3.c:133869:13
- _ = _pTerm
- var _pOBExpr *XExpr // sqlite3.c:133870:8
- _ = _pOBExpr
- var _pColl *XCollSeq // sqlite3.c:133871:11
- _ = _pColl
- var _pIndex *XIndex // sqlite3.c:133872:9
- _ = _pIndex
- var _db *Xsqlite3 // sqlite3.c:133873:11
- _ = _db
- var _obSat uint64 // sqlite3.c:133874:11
- _ = _obSat
- var _obDone uint64 // sqlite3.c:133875:11
- _ = _obDone
- var _orderDistinctMask uint64 // sqlite3.c:133876:11
- _ = _orderDistinctMask
- var _ready uint64 // sqlite3.c:133877:11
- _ = _ready
- var _9_z1 *int8 // sqlite3.c:133951:20
- _ = _9_z1
- var _9_z2 *int8 // sqlite3.c:133951:25
- _ = _9_z2
- var _14_bOnce uint8 // sqlite3.c:133986:12
- _ = _14_bOnce
- var _15_eOp uint16 // sqlite3.c:133992:15
- _ = _15_eOp
- var _18_pX *XExpr // sqlite3.c:134013:18
- _ = _18_pX
- var _38_p *XExpr // sqlite3.c:134111:14
- _ = _38_p
- var _38_mTerm uint64 // sqlite3.c:134112:17
- _ = _38_mTerm
- var _41_m uint64 // sqlite3.c:134126:15
- _ = _41_m
- _pLoop = nil
- _db = (*Xsqlite3)((*XParse)(_pWInfo.X0).X0)
- _obSat = u64(0)
func() {
- if _pOrderBy == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133901), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(111372)))
+ if (*Xsqlite3_module)(_pVtab.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126047), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabOverloadFunctionØ00__func__Ø000))), unsafe.Pointer(str(110787)))
crt.X__builtin_abort(tls)
}
}()
- if _nLoop == 0 || (int32(_db.X13)&i32(128)) == i32(0) {
- goto _3
- }
- return int8(i32(0))
-
-_3:
- _nOrderBy = uint16(_pOrderBy.X0)
- if int32(_nOrderBy) <= i32(63) {
- goto _4
- }
- return int8(i32(0))
-
-_4:
- _isOrderDistinct = uint8(i32(1))
- _obDone = (u64(1) << uint(int32(_nOrderBy))) - uint64(i32(1))
- _orderDistinctMask = uint64(i32(0))
- _ready = uint64(i32(0))
- _eqOpMask = uint16(i32(386))
- if (int32(_wctrlFlags) & i32(2048)) == 0 {
- goto _5
- }
-
- {
- p := &_eqOpMask
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
+ _pMod = (*Xsqlite3_module)(_pVtab.X0)
+ if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32
+ }{(*(*func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32, *int8, *func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer), *unsafe.Pointer) int32
+ }{(_pMod.X18)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32
+ }{nil})) {
+ return _pDef
}
-_5:
- _iLoop = i32(0)
-_6:
- if _isOrderDistinct == 0 || _obSat >= _obDone || _iLoop > int32(_nLoop) {
+ _zLowerName = _sqlite3DbStrDup(tls, _db, _pDef.X6)
+ if _zLowerName == nil {
goto _11
}
-
- if _iLoop <= i32(0) {
- goto _12
- }
-
- {
- p := &_ready
- *p = (*p) | (_pLoop.X1)
- sink15 = *p
- }
+ _z = (*uint8)(unsafe.Pointer(_zLowerName))
_12:
- if _iLoop >= int32(_nLoop) {
- goto _13
- }
-
- _pLoop = *(**XWhereLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPath.X6)) + 4*uintptr(_iLoop)))
- if (int32(_wctrlFlags) & i32(2048)) == 0 {
- goto _14
+ if (*_z) == 0 {
+ goto _15
}
-
- goto _7
-
-_14:
- goto _15
-
-_13:
- _pLoop = _pLast
+ *_z = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_z)))
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
+ goto _12
_15:
- if ((_pLoop.X9) & uint32(i32(1024))) == 0 {
- goto _16
- }
-
- if ((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X2) == 0 {
- goto _17
- }
-
- _obSat = _obDone
-_17:
- goto _11
-
-_16:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */))) = uint16(i32(0))
- _iCur = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pLoop.X3))).X11
- _i = i32(0)
-_19:
- if _i >= int32(_nOrderBy) {
- goto _22
- }
-
- if ((u64(1) << uint(_i)) & _obSat) == 0 {
- goto _23
+ _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32, *int8, *func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer), *unsafe.Pointer) int32
+ }{(_pMod.X18)})))(tls, _pVtab, _nArg, _zLowerName, &_xSFunc, &_pArg)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zLowerName))
+_11:
+ if _rc == i32(0) {
+ return _pDef
}
-
- goto _20
-
-_23:
- _pOBExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if int32(_pOBExpr.X0) == i32(152) {
- goto _24
+ _pNew = (*XFuncDef)(_sqlite3DbMallocZero(tls, _db, uint64((u32(28)+uint32(_sqlite3Strlen30(tls, _pDef.X6)))+uint32(i32(1)))))
+ if _pNew == nil {
+ return _pDef
}
-
- goto _20
-
-_24:
- if (_pOBExpr.X8) == _iCur {
- goto _25
+ *_pNew = *_pDef
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X6 */))) = (*int8)(unsafe.Pointer((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + 28*uintptr(i32(1))))))
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+28*uintptr(i32(1))))), (unsafe.Pointer)(_pDef.X6), uint32(_sqlite3Strlen30(tls, _pDef.X6)+i32(1)))
+ *(*func(*crt.TLS, *Xsqlite3_context, int32, **XMem))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))))) = _xSFunc
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X2 */))) = _pArg
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(2 /* X1 */)))
+ *p = uint16(int32(*p) | i32(16))
+ sink14 = *p
}
+ return _pNew
+}
- goto _20
-
-_25:
- _pTerm = _sqlite3WhereFindTerm(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))), _iCur, int32(_pOBExpr.X9), ^_ready, uint32(_eqOpMask), nil)
- if _pTerm != nil {
- goto _26
- }
+var _sqlite3VtabOverloadFunctionØ00__func__Ø000 [28]int8
- goto _20
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VtabOverloadFunctionØ00__func__Ø000[0], str(110805), 28)
+}
-_26:
- if int32(_pTerm.X4) != i32(1) {
- goto _27
- }
+// The code generator calls this routine if is discovers that it is
+// possible to abort a statement prior to completion. In order to
+// perform this abort without corrupting the database, we need to make
+// sure that the statement is protected by a statement transaction.
+//
+// Technically, we only need to set the mayAbort flag if the
+// isMultiWrite flag was previously set. There is a time dependency
+// such that the abort must occur after the multiwrite. This makes
+// some statements involving the REPLACE conflict resolution algorithm
+// go a little faster. But taking advantage of this time dependency
+// makes it more difficult to prove that the code is correct (in
+// particular, it prevents us from writing an effective
+// implementation of sqlite3AssertMayAbort()) and so we have chosen
+// to take the safe route and skip the optimization.
+func _sqlite3MayAbort(tls *crt.TLS, _pParse *XParse) {
+ var _pToplevel *XParse
+ _pToplevel = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(21 /* X9 */))) = uint8(i32(1))
+}
+// Code an OP_Halt that causes the vdbe to return an SQLITE_CONSTRAINT
+// error. The onError parameter determines which (if any) of the statement
+// and/or current transaction is rolled back.
+func _sqlite3HaltConstraint(tls *crt.TLS, _pParse *XParse, _errCode int32, _onError int32, _p4 *int8, _p4type int8, _p5Errmsg uint8) {
+ var _v *TVdbe
+ _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if (int32(_wctrlFlags) & i32(2048)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133946), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(111384)))
+ if (_errCode & i32(255)) != i32(19) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103850), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HaltConstraintØ00__func__Ø000))), unsafe.Pointer(str(110833)))
crt.X__builtin_abort(tls)
}
}()
- _j = i32(0)
-_30:
- if _j >= int32(_pLoop.X10) || _pTerm == (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))) {
- goto _34
- }
-
- _j += 1
- goto _30
-
-_34:
- if _j < int32(_pLoop.X10) {
- goto _35
- }
-
- goto _20
-
-_35:
-_27:
- if (int32(_pTerm.X4)&i32(130)) == i32(0) || int32(_pOBExpr.X9) < i32(0) {
- goto _37
- }
-
- _pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWInfo.X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if _pColl != nil {
- goto _38
- }
-
- _pColl = (*XCollSeq)(_db.X2)
-_38:
- _9_z1 = _pColl.X0
- _pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWInfo.X0), (*XExpr)(_pTerm.X0))
- if _pColl != nil {
- goto _39
- }
-
- _pColl = (*XCollSeq)(_db.X2)
-_39:
- _9_z2 = _pColl.X0
- if _sqlite3StrICmp(tls, _9_z1, _9_z2) == i32(0) {
- goto _40
- }
-
- goto _20
-
-_40:
-_37:
- {
- p := &_obSat
- *p = (*p) | (u64(1) << uint(_i))
- sink15 = *p
- }
-_20:
- _i += 1
- goto _19
-
-_22:
- if ((_pLoop.X9) & uint32(i32(4096))) != uint32(i32(0)) {
- goto _41
- }
-
- if ((_pLoop.X9) & uint32(i32(256))) == 0 {
- goto _42
+ if _onError == i32(2) {
+ _sqlite3MayAbort(tls, _pParse)
}
+ _sqlite3VdbeAddOp4(tls, _v, i32(55), _errCode, _onError, i32(0), _p4, int32(_p4type))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_p5Errmsg))
+}
- _pIndex = nil
- _nKeyCol = uint16(i32(0))
- _nColumn = uint16(i32(1))
- goto _43
+var _sqlite3HaltConstraintØ00__func__Ø000 [22]int8
-_42:
- if store67(&_pIndex, (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4)) != nil && ((uint32((_pIndex.X16)>>uint(i32(2)))<>uint(i32(31))) == 0 {
- goto _45
- }
- return int8(i32(0))
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3HaltConstraintØ00__func__Ø000[0], str(110867), 22)
+}
-_45:
- _nKeyCol = _pIndex.X13
- _nColumn = _pIndex.X14
+// Prepare a virtual machine for execution for the first time after
+// creating the virtual machine. This involves things such
+// as allocating registers and initializing the program counter.
+// After the VDBE has be prepped, it can be executed by one or more
+// calls to sqlite3VdbeExec().
+//
+// This function may be called exactly once on each virtual machine.
+// After this routine is called the VM has been "packaged" and is ready
+// to run. After this routine is called, further calls to
+// sqlite3VdbeAddOp() functions are prohibited. This routine disconnects
+// the Vdbe from the Parse object that helped generate it so that the
+// the Vdbe becomes an independent entity and the Parse object can be
+// destroyed.
+//
+// Use the sqlite3VdbeRewind() procedure to restore a virtual machine back
+// to its initial state after it has been run.
+func _sqlite3VdbeMakeReady(tls *crt.TLS, _p *TVdbe, _pParse *XParse) {
+ var _nVar, _nMem, _nCursor, _nArg, _n int32
+ var _db *Xsqlite3
+ var _x TReusableSpace
func() {
- if int32(_nColumn) != (int32(_nKeyCol)+i32(1)) && (((*XTable)(_pIndex.X3).X9)&uint32(i32(32))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133974), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(111420)))
+ if _p == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73360), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(789)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(int32(_nColumn)-i32(1))))) != i32(-1) && (((*XTable)(_pIndex.X3).X9)&uint32(i32(32))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133975), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(111468)))
+ if (_p.X27) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73361), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(41716)))
crt.X__builtin_abort(tls)
}
}()
- _isOrderDistinct = uint8(bool2int(int32(_pIndex.X15) != i32(0)))
-_43:
- _rev = store2(&_revSet, uint8(i32(0)))
- _distinctColumns = uint8(i32(0))
- _j = i32(0)
-_53:
- if _j >= int32(_nColumn) {
- goto _56
- }
-
- _14_bOnce = uint8(i32(1))
func() {
- if _j < int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) && ((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))) == nil) != (_j < int32(_pLoop.X11)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(133988), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(111536)))
+ if _pParse == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(110889)))
crt.X__builtin_abort(tls)
}
}()
- if _j >= int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) || _j < int32(_pLoop.X11) {
- goto _61
- }
-
- _15_eOp = (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))).X4
- if (int32(_15_eOp) & int32(_eqOpMask)) == i32(0) {
- goto _62
- }
-
- if (int32(_15_eOp) & i32(256)) == 0 {
- goto _63
- }
-
- _isOrderDistinct = uint8(i32(0))
-_63:
- goto _54
-
-_62:
- if func() int32 {
- if (int32(_15_eOp) & i32(1)) != 0 {
- return i32(1)
+ func() {
+ if (_p.X5) != uint32(i32(381479589)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73363), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(37642)))
+ crt.X__builtin_abort(tls)
}
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134008), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ }()
+ func() {
+ if _pParse != (*XParse)(_p.X3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73364), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(110899)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _67
- }
-
- _18_pX = (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))).X0)
- _i = _j + i32(1)
-_68:
- if _i >= int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) {
- goto _71
- }
-
- if (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_i)))).X0) != _18_pX {
- goto _72
- }
-
+ }
+ }()
+ _db = (*Xsqlite3)(_p.X0)
func() {
- if (int32((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_i)))).X4) & i32(1)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134016), unsafe.Pointer((*int8)(unsafe.Pointer(&_wherePathSatisfiesOrderByØ00__func__Ø000))), unsafe.Pointer(str(111604)))
+ if int32(_db.X17) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73366), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(1244)))
crt.X__builtin_abort(tls)
}
}()
- _14_bOnce = uint8(i32(0))
- goto _71
-
-_72:
- _i += 1
- goto _68
-
-_71:
-_67:
-_61:
- if _pIndex == nil {
- goto _75
- }
-
- _iColumn = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_j))))
- _revIdx = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X7)) + 1*uintptr(_j)))
- if _iColumn != int32((*XTable)(_pIndex.X3).X10) {
- goto _76
- }
-
- _iColumn = i32(-1)
-_76:
- goto _77
-
-_75:
- _iColumn = i32(-1)
- _revIdx = uint8(i32(0))
-_77:
- if _isOrderDistinct == 0 || _iColumn < i32(0) || _j < int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) || int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIndex.X3).X1)+16*uintptr(_iColumn))).X3) != i32(0) {
- goto _81
- }
-
- _isOrderDistinct = uint8(i32(0))
-_81:
- _isMatch = uint8(i32(0))
- _i = i32(0)
-_82:
- if _14_bOnce == 0 || _i >= int32(_nOrderBy) {
- goto _86
- }
-
- if ((u64(1) << uint(_i)) & _obSat) == 0 {
- goto _87
+ _nVar = int32(_pParse.X52)
+ _nMem = _pParse.X18
+ _nCursor = _pParse.X17
+ _nArg = _pParse.X33
+ {
+ p := &_nMem
+ *p = (*p) + _nCursor
+ sink1 = *p
}
-
- goto _83
-
-_87:
- _pOBExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if (int32(_wctrlFlags) & i32(192)) != i32(0) {
- goto _88
+ if (_nCursor == i32(0)) && (_nMem > i32(0)) {
+ _nMem += 1
}
-
- _14_bOnce = uint8(i32(0))
-_88:
- if _iColumn < i32(-1) {
- goto _89
+ _n = int32(((u32(24) * uint32(_p.X27)) + uint32(i32(7))) & uint32(i32(-8)))
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(0 /* X0 */))) = (*uint8)(unsafe.Pointer(uintptr(_p.X17) + 1*uintptr(_n)))
+ func() {
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_x.X0))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73386), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(110917)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(4 /* X1 */))) = ((_pParse.X20) - _n) & i32(-8)
+ func() {
+ if (_x.X1) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73388), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(110948)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_x.X0))+1*uintptr(_x.X1)))))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73389), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(110959)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _resolveP2Values(tls, _p, &_nArg)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(uint8(bool2int(((_pParse.X8) != 0) && ((_pParse.X9) != 0)))), 64, 6)
+ if ((_pParse.X54) != 0) && (_nMem < i32(10)) {
+ _nMem = i32(10)
}
-
- if int32(_pOBExpr.X0) == i32(152) {
- goto _90
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 1, 0)
+_23:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(8 /* X2 */))) = i32(0)
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(88 /* X18 */))))) = (*XMem)(_allocSpace(tls, &_x, _p.X18, int32(uint32(_nMem)*u32(48))))
+ *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(112 /* X24 */))))) = (*XMem)(_allocSpace(tls, &_x, _p.X24, int32(uint32(_nVar)*u32(48))))
+ *(***XMem)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(92 /* X19 */))))) = (**XMem)(_allocSpace(tls, &_x, (unsafe.Pointer)(_p.X19), int32(uint32(_nArg)*u32(4))))
+ *(***XVdbeCursor)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(108 /* X23 */))))) = (**XVdbeCursor)(_allocSpace(tls, &_x, (unsafe.Pointer)(_p.X23), int32(uint32(_nCursor)*u32(4))))
+ if (_x.X2) == i32(0) {
+ goto _25
}
-
- goto _83
-
-_90:
- if (_pOBExpr.X8) == _iCur {
- goto _91
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(0 /* X0 */))) = (*uint8)(store11((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(176 /* X37 */))), _sqlite3DbMallocRawNN(tls, _db, uint64(_x.X2))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(4 /* X1 */))) = _x.X2
+ if (_db.X17) == 0 {
+ goto _23
}
-
- goto _83
-
-_91:
- if int32(_pOBExpr.X9) == _iColumn {
- goto _92
+_25:
+ *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(116 /* X25 */))) = _pParse.X60
+ *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(432 /* X60 */))) = nil
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(_pParse.X54), 12, 2)
+ if (_db.X17) != 0 {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = int16(i32(0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = i32(0)
+ goto _27
}
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = _nCursor
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = int16(_nVar)
+ _initMemArray(tls, (*XMem)(_p.X24), _nVar, _db, uint16(i32(1)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = _nMem
+ _initMemArray(tls, (*XMem)(_p.X18), _nMem, _db, uint16(i32(128)))
+ crt.Xmemset(tls, (unsafe.Pointer)(_p.X23), i32(0), uint32(_nCursor)*u32(4))
+_27:
+ _sqlite3VdbeRewind(tls, _p)
+ _ = _x
+}
- goto _83
-
-_92:
- goto _93
-
-_89:
- if _sqlite3ExprCompare(tls, _pOBExpr, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIndex.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), _iCur) == 0 {
- goto _94
+var _sqlite3VdbeMakeReadyØ00__func__Ø000 [21]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VdbeMakeReadyØ00__func__Ø000[0], str(111000), 21)
+}
+
+// This routine is called after all opcodes have been inserted. It loops
+// through all the opcodes and fixes up some details.
+//
+// (1) For each jump instruction with a negative P2 value (a label)
+// resolve the P2 value to an actual address.
+//
+// (2) Compute the maximum number of arguments used by any SQL function
+// and store that value in *pMaxFuncArgs.
+//
+// (3) Update the Vdbe.readOnly and Vdbe.bIsReader flags to accurately
+// indicate what the prepared statement actually does.
+//
+// (4) Initialize the p4.xAdvance pointer on opcodes that use it.
+//
+// (5) Reclaim the memory allocated for storing labels.
+//
+// This routine will only function correctly if the mkopcodeh.tcl generator
+// script numbers the opcodes correctly. Changes to this routine must be
+// coordinated with changes to mkopcodeh.tcl.
+func _resolveP2Values(tls *crt.TLS, _p *TVdbe, _pMaxFuncArgs *int32) {
+ var _nMaxArgs, _8_n int32
+ var _aLabel *int32
+ var _pParse *XParse
+ var _pOp *XVdbeOp
+ _nMaxArgs = *_pMaxFuncArgs
+ _pParse = (*XParse)(_p.X3)
+ _aLabel = _pParse.X26
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 128, 7)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 256, 8)
+ _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr((_p.X27)-i32(1))))
+_0:
+ if int32(_pOp.X0) > i32(83) {
+ goto _2
}
-
- goto _83
-
-_94:
-_93:
- if _iColumn < i32(0) {
- goto _95
+ switch int32(_pOp.X0) {
+ case i32(0):
+ goto _6
+ case i32(1):
+ goto _5
+ case i32(2):
+ goto _4
+ case i32(3):
+ goto _14
+ case i32(4):
+ goto _16
+ case i32(5):
+ goto _13
+ case i32(6):
+ goto _15
+ case i32(7):
+ goto _12
+ case i32(8):
+ goto _7
+ case i32(9):
+ goto _9
+ case i32(10):
+ goto _8
+ case i32(11):
+ goto _11
+ case i32(12):
+ goto _10
+ default:
+ goto _17
}
- _pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWInfo.X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
- if _pColl != nil {
- goto _96
+_4:
+ if (_pOp.X4) != i32(0) {
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 128, 7)
}
-
- _pColl = (*XCollSeq)(_db.X2)
-_96:
- if _sqlite3StrICmp(tls, _pColl.X0, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_j)))) == i32(0) {
- goto _97
+_5:
+_6:
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 256, 8)
+ goto _17
+_7:
+_8:
+_9:
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 128, 7)
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 256, 8)
+ goto _17
+_10:
+ if (_pOp.X4) > _nMaxArgs {
+ _nMaxArgs = _pOp.X4
}
-
- goto _83
-
-_97:
-_95:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(6 /* X3 */))) = uint16(_j + i32(1))
- _isMatch = uint8(i32(1))
- goto _86
-
-_83:
- _i += 1
- goto _82
-
-_86:
- if _isMatch == 0 || (int32(_wctrlFlags)&i32(64)) != i32(0) {
- goto _99
+ goto _17
+_11:
+ func() {
+ if int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer((*XVdbeOp)(_p.X17))))/24) < i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72021), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(111021)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X0) != i32(56) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72022), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(111041)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _8_n = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(-1)))).X3
+ if _8_n > _nMaxArgs {
+ _nMaxArgs = _8_n
}
-
- if _revSet == 0 {
- goto _100
+ goto _17
+_12:
+_13:
+_14:
+ *(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _sqlite3BtreeNext
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-14))
+ goto _17
+_15:
+_16:
+ *(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _sqlite3BtreePrevious
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-14))
+ goto _17
+_17:
+ if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeProperty)) + 1*uintptr(_pOp.X0)))) & i32(1)) != i32(0)) && ((_pOp.X4) < i32(0)) {
+ func() {
+ if (i32(-1) - (_pOp.X4)) >= (_pParse.X25) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72043), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(111068)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(8 /* X4 */))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLabel)) + 4*uintptr(i32(-1)-(_pOp.X4))))
}
-
- if (int32(_rev) ^ int32(_revIdx)) == int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3) {
- goto _101
+_2:
+ if _pOp == (*XVdbeOp)(_p.X17) {
+ goto _1
}
+ *(*uintptr)(unsafe.Pointer(&_pOp)) += uintptr(4294967272)
+ goto _0
+_1:
+ _sqlite3DbFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_pParse.X26))
+ *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(76 /* X26 */))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(72 /* X25 */))) = i32(0)
+ *_pMaxFuncArgs = _nMaxArgs
+ func() {
+ if int32((uint32((_p.X32)>>uint(i32(8)))<>uint(i32(31))) == i32(0) && (_p.X33) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72054), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(111097)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+}
- _isMatch = uint8(i32(0))
-_101:
- goto _102
+var _resolveP2ValuesØ00__func__Ø000 [16]int8
-_100:
- _rev = uint8(int32(_revIdx) ^ int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X3))
- if _rev == 0 {
- goto _103
- }
+func init() {
+ crt.Xstrncpy(nil, &_resolveP2ValuesØ00__func__Ø000[0], str(111144), 16)
+}
- {
- p := _pRevMask
- *p = (*p) | (u64(1) << uint(_iLoop))
- sink15 = *p
- }
-_103:
- _revSet = uint8(i32(1))
-_102:
-_99:
- if _isMatch == 0 {
- goto _104
+// Try to allocate nByte bytes of 8-byte aligned bulk memory for pBuf
+// from the ReusableSpace object. Return a pointer to the allocated
+// memory on success. If insufficient memory is available in the
+// ReusableSpace object, increase the ReusableSpace.nNeeded
+// value by the amount needed and return NULL.
+//
+// If pBuf is not initially NULL, that means that the memory has already
+// been allocated by a prior call to this routine, so just return a copy
+// of pBuf and leave ReusableSpace unchanged.
+//
+// This allocator is employed to repurpose unused slots at the end of the
+// opcode array of prepared state for other memory needs of the prepared
+// statement.
+func _allocSpace(tls *crt.TLS, _p *TReusableSpace, _pBuf unsafe.Pointer, _nByte int32) (r0 unsafe.Pointer) {
+ func() {
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p.X0))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73277), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocSpaceØ00__func__Ø000))), unsafe.Pointer(str(111160)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _pBuf != nil {
+ goto _2
}
-
- if _iColumn != i32(-1) {
- goto _105
+ _nByte = (_nByte + i32(7)) & i32(-8)
+ if _nByte <= (_p.X1) {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */)))
+ *p = (*p) - _nByte
+ sink1 = *p
+ }
+ _pBuf = (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X0)) + 1*uintptr(_p.X1))))
+ goto _4
}
-
- _distinctColumns = uint8(i32(1))
-_105:
{
- p := &_obSat
- *p = (*p) | (u64(1) << uint(_i))
- sink15 = *p
- }
- goto _106
-
-_104:
- if _j != i32(0) && _j >= int32(_nKeyCol) {
- goto _108
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */)))
+ *p = (*p) + _nByte
+ sink1 = *p
}
+_4:
+_2:
+ func() {
+ if (int32((uintptr(unsafe.Pointer((*int8)(_pBuf)))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(73287), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocSpaceØ00__func__Ø000))), unsafe.Pointer(str(111192)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _pBuf
+}
- _isOrderDistinct = uint8(i32(0))
-_108:
- goto _56
+var _allocSpaceØ00__func__Ø000 [11]int8
-_106:
-_54:
- _j += 1
- goto _53
+func init() {
+ crt.Xstrncpy(nil, &_allocSpaceØ00__func__Ø000[0], str(111219), 11)
+}
-_56:
- if _distinctColumns == 0 {
- goto _109
+// Generate VDBE code for a BEGIN statement.
+func _sqlite3BeginTransaction(tls *crt.TLS, _pParse *XParse, _type int32) {
+ var _i int32
+ var _db *Xsqlite3
+ var _v *TVdbe
+ func() {
+ if _pParse == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BeginTransactionØ00__func__Ø000))), unsafe.Pointer(str(110889)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _db = (*Xsqlite3)(_pParse.X0)
+ func() {
+ if _db == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103645), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BeginTransactionØ00__func__Ø000))), unsafe.Pointer(str(1201)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3AuthCheck(tls, _pParse, i32(22), str(24983), nil, nil) != 0 {
+ return
}
-
- _isOrderDistinct = uint8(i32(1))
-_109:
-_41:
- if _isOrderDistinct == 0 {
- goto _110
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v == nil {
+ return
}
-
- {
- p := &_orderDistinctMask
- *p = (*p) | (_pLoop.X1)
- sink15 = *p
+ if _type == i32(7) {
+ goto _6
}
_i = i32(0)
-_111:
- if _i >= int32(_nOrderBy) {
- goto _114
- }
-
- if ((u64(1) << uint(_i)) & _obSat) == 0 {
- goto _115
- }
-
- goto _112
-
-_115:
- _38_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOrderBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- _38_mTerm = _sqlite3WhereExprUsage(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _38_p)
- if _38_mTerm != uint64(i32(0)) || _sqlite3ExprIsConstant(tls, _38_p) != 0 {
- goto _117
- }
-
- goto _112
-
-_117:
- if (_38_mTerm & (^_orderDistinctMask)) != uint64(i32(0)) {
- goto _118
- }
-
- {
- p := &_obSat
- *p = (*p) | (u64(1) << uint(_i))
- sink15 = *p
- }
-_118:
-_112:
- _i += 1
- goto _111
-
-_114:
-_110:
_7:
- _iLoop += 1
- goto _6
-
-_11:
- if _obSat != _obDone {
- goto _119
- }
- return int8(_nOrderBy)
-
-_119:
- if _isOrderDistinct != 0 {
- goto _120
- }
-
- _i = int32(_nOrderBy) - i32(1)
-_121:
- if _i <= i32(0) {
- goto _124
- }
-
- _41_m = (u64(1) << uint(_i)) - uint64(i32(1))
- if (_obSat & _41_m) != _41_m {
- goto _125
+ if _i >= (_db.X5) {
+ goto _10
}
- return int8(_i)
-
-_125:
- _i -= 1
- goto _121
-
-_124:
- return int8(i32(0))
-
-_120:
- return int8(i32(-1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(2), _i, bool2int(_type == i32(9))+i32(1))
+ _sqlite3VdbeUsesBtree(tls, _v, _i)
+ _i += 1
+ goto _7
+_10:
+_6:
+ _sqlite3VdbeAddOp0(tls, _v, i32(1))
}
-var _wherePathSatisfiesOrderByØ00__func__Ø000 [26]int8 // -
+var _sqlite3BeginTransactionØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_wherePathSatisfiesOrderByØ00__func__Ø000[0], str(111644), 26)
+ crt.Xstrncpy(nil, &_sqlite3BeginTransactionØ00__func__Ø000[0], str(111230), 24)
}
-func _whereSortingCost(tls *crt.TLS, _pWInfo *XWhereInfo, _nRow int16, _nOrderBy int32, _nSorted int32) (r0 int16) { // sqlite3.c:134181:1
- var _rScale int16 // sqlite3.c:134200:10
- _ = _rScale
- var _rSortCost int16 // sqlite3.c:134200:18
- _ = _rSortCost
+// Generate VDBE code for a COMMIT statement.
+func _sqlite3CommitTransaction(tls *crt.TLS, _pParse *XParse) {
+ var _v *TVdbe
func() {
- if _nOrderBy <= i32(0) || i32(66) != int32(_sqlite3LogEst(tls, uint64(i32(100)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134201), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereSortingCostØ00__func__Ø000))), unsafe.Pointer(str(111672)))
+ if _pParse == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CommitTransactionØ00__func__Ø000))), unsafe.Pointer(str(110889)))
crt.X__builtin_abort(tls)
}
}()
- _rScale = int16(int32(_sqlite3LogEst(tls, uint64(((_nOrderBy-_nSorted)*i32(100))/_nOrderBy))) - i32(66))
- _rSortCost = int16((int32(_nRow) + int32(_rScale)) + i32(16))
- if (int32(_pWInfo.X10)&i32(16384)) == i32(0) || int32(_pWInfo.X5) >= int32(_nRow) {
- goto _4
+ func() {
+ if (*Xsqlite3)(_pParse.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CommitTransactionØ00__func__Ø000))), unsafe.Pointer(str(111254)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3AuthCheck(tls, _pParse, i32(22), str(25030), nil, nil) != 0 {
+ return
}
-
- _nRow = _pWInfo.X5
-_4:
- {
- p := &_rSortCost
- *p = int16(int32(*p) + int32(_estLog(tls, _nRow)))
- sink16 = *p
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v != nil {
+ _sqlite3VdbeAddOp1(tls, _v, i32(1), i32(1))
}
- return _rSortCost
}
-var _whereSortingCostØ00__func__Ø000 [17]int8 // -
+var _sqlite3CommitTransactionØ00__func__Ø000 [25]int8
func init() {
- crt.Xstrncpy(nil, &_whereSortingCostØ00__func__Ø000[0], str(111712), 17)
+ crt.Xstrncpy(nil, &_sqlite3CommitTransactionØ00__func__Ø000[0], str(111268), 25)
}
-func _constructAutomaticIndex(tls *crt.TLS, _pParse *XParse, _pWC *XWhereClause, _pSrc *TSrcList_item, _notReady uint64, _pLevel *XWhereLevel) { // sqlite3.c:131016:1
- var _nKeyCol int32 // sqlite3.c:131023:7
- _ = _nKeyCol
- var _pTerm *XWhereTerm // sqlite3.c:131024:13
- _ = _pTerm
- var _pWCEnd *XWhereTerm // sqlite3.c:131025:13
- _ = _pWCEnd
- var _pIdx *XIndex // sqlite3.c:131026:9
- _ = _pIdx
- var _v *TVdbe // sqlite3.c:131027:8
- _ = _v
- var _addrInit int32 // sqlite3.c:131028:7
- _ = _addrInit
- var _pTable *XTable // sqlite3.c:131029:9
- _ = _pTable
- var _addrTop int32 // sqlite3.c:131030:7
- _ = _addrTop
- var _regRecord int32 // sqlite3.c:131031:7
- _ = _regRecord
- var _n int32 // sqlite3.c:131032:7
- _ = _n
- var _i int32 // sqlite3.c:131033:7
- _ = _i
- var _mxBitCol int32 // sqlite3.c:131034:7
- _ = _mxBitCol
- var _pColl *XCollSeq // sqlite3.c:131035:11
- _ = _pColl
- var _pLoop *XWhereLoop // sqlite3.c:131036:13
- _ = _pLoop
- var _zNotUsed *int8 // sqlite3.c:131037:8
- _ = _zNotUsed
- var _idxCols uint64 // sqlite3.c:131038:11
- _ = _idxCols
- var _extraCols uint64 // sqlite3.c:131039:11
- _ = _extraCols
- var _sentWarning uint8 // sqlite3.c:131040:6
- _ = _sentWarning
- var _pPartial *XExpr // sqlite3.c:131041:8
- _ = _pPartial
- var _iContinue int32 // sqlite3.c:131042:7
- _ = _iContinue
- var _pTabItem *TSrcList_item // sqlite3.c:131043:23
- _ = _pTabItem
- var _addrCounter int32 // sqlite3.c:131044:7
- _ = _addrCounter
- var _regBase int32 // sqlite3.c:131045:7
- _ = _regBase
- var _1_pExpr *XExpr // sqlite3.c:131061:10
- _ = _1_pExpr
- var _3_iCol int32 // sqlite3.c:131073:11
- _ = _3_iCol
- var _3_cMask uint64 // sqlite3.c:131074:15
- _ = _3_cMask
- var _10_iCol int32 // sqlite3.c:131126:11
- _ = _10_iCol
- var _10_cMask uint64 // sqlite3.c:131127:15
- _ = _10_cMask
- var _11_pX *XExpr // sqlite3.c:131131:14
- _ = _11_pX
- var _16_regYield int32 // sqlite3.c:131173:9
- _ = _16_regYield
- _sentWarning = u8(0)
- _pPartial = nil
- _iContinue = i32(0)
- _addrCounter = i32(0)
- _v = (*TVdbe)(_pParse.X2)
+// Generate VDBE code for a ROLLBACK statement.
+func _sqlite3RollbackTransaction(tls *crt.TLS, _pParse *XParse) {
+ var _v *TVdbe
func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131050), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(43120)))
+ if _pParse == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RollbackTransactionØ00__func__Ø000))), unsafe.Pointer(str(110889)))
crt.X__builtin_abort(tls)
}
}()
- _addrInit = _sqlite3VdbeAddOp0(tls, _v, i32(20))
- _nKeyCol = i32(0)
- _pTable = (*XTable)(_pSrc.X4)
- _pWCEnd = (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_pWC.X3)))
- _pLoop = (*XWhereLoop)(_pLevel.X18)
- _idxCols = uint64(i32(0))
- _pTerm = (*XWhereTerm)(_pWC.X5)
-_2:
- if uintptr(unsafe.Pointer(_pTerm)) >= uintptr(unsafe.Pointer(_pWCEnd)) {
- goto _5
- }
-
- _1_pExpr = (*XExpr)(_pTerm.X0)
func() {
- if ((_1_pExpr.X2)&uint32(i32(1))) != uint32(i32(0)) && int32(_1_pExpr.X11) == (_pSrc.X11) && (_pLoop.X0) == uint64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131062), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(111732)))
+ if (*Xsqlite3)(_pParse.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103684), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RollbackTransactionØ00__func__Ø000))), unsafe.Pointer(str(111254)))
crt.X__builtin_abort(tls)
}
}()
- if (_pLoop.X0) != uint64(i32(0)) || (int32(_pTerm.X3)&i32(2)) != i32(0) || ((_1_pExpr.X2)&uint32(i32(1))) != uint32(i32(0)) || _sqlite3ExprIsTableConstant(tls, _1_pExpr, _pSrc.X11) == 0 {
- goto _13
+ if _sqlite3AuthCheck(tls, _pParse, i32(22), str(25041), nil, nil) != 0 {
+ return
}
-
- _pPartial = _sqlite3ExprAnd(tls, (*Xsqlite3)(_pParse.X0), _pPartial, _sqlite3ExprDup(tls, (*Xsqlite3)(_pParse.X0), _1_pExpr, i32(0)))
-_13:
- if _termCanDriveIndex(tls, _pTerm, _pSrc, _notReady) == 0 {
- goto _14
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v != nil {
+ _sqlite3VdbeAddOp2(tls, _v, i32(1), i32(1), i32(1))
}
+}
- _3_iCol = *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))
- _3_cMask = func() uint64 {
- if _3_iCol >= i32(64) {
- return u64(9223372036854775808)
- }
- return (u64(1) << uint(_3_iCol))
- }()
- if _sentWarning != 0 {
- goto _17
- }
+var _sqlite3RollbackTransactionØ00__func__Ø000 [27]int8
- Xsqlite3_log(tls, i32(284), str(111832), unsafe.Pointer(_pTable.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTable.X1)+16*uintptr(_3_iCol))).X0))
- _sentWarning = uint8(i32(1))
-_17:
- if (_idxCols & _3_cMask) != uint64(i32(0)) {
- goto _18
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3RollbackTransactionØ00__func__Ø000[0], str(111293), 27)
+}
- if _whereLoopResize(tls, (*Xsqlite3)(_pParse.X0), _pLoop, _nKeyCol+i32(1)) == 0 {
- goto _19
+// This function is called by the parser when it parses a command to create,
+// release or rollback an SQL savepoint.
+func _sqlite3Savepoint(tls *crt.TLS, _pParse *XParse, _op int32, _pName *XToken) {
+ var _zName *int8
+ var _1_v *TVdbe
+ _zName = _sqlite3NameFromToken(tls, (*Xsqlite3)(_pParse.X0), _pName)
+ if _zName == nil {
+ goto _0
+ }
+ _1_v = _sqlite3GetVdbe(tls, _pParse)
+ i32(0)
+ if (_1_v == nil) || _sqlite3AuthCheck(tls, _pParse, i32(32), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3SavepointØ00azØ001)) + 4*uintptr(_op))), _zName, nil) != 0 {
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_zName))
+ return
}
+ _sqlite3VdbeAddOp4(tls, _1_v, i32(0), _op, i32(0), i32(0), _zName, i32(-1))
+_0:
+}
- goto _end_auto_index_create
+var _sqlite3SavepointØ00azØ001 [3]*int8
-_19:
- *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_nKeyCol, int32(1))))) = _pTerm
- {
- p := &_idxCols
- *p = (*p) | _3_cMask
- sink15 = *p
- }
-_18:
-_14:
- *(*uintptr)(unsafe.Pointer(&_pTerm)) += uintptr(48)
- goto _2
+func init() {
+ _sqlite3SavepointØ00azØ001 = [3]*int8{str(24983), str(25060), str(25041)}
+}
-_5:
- func() {
- if _nKeyCol <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131092), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(111860)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(0 /* X0 */))) = store12((*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(44 /* X10 */))), uint16(_nKeyCol))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */))) = uint32(i32(16961))
- _extraCols = (_pSrc.X14) & ((^_idxCols) | u64(9223372036854775808))
- _mxBitCol = func() int32 {
- if i32(63) < int32(_pTable.X11) {
- return i32(63)
+// Begin constructing a new table representation in memory. This is
+// the first of several action routines that get called in response
+// to a CREATE TABLE statement. In particular, this routine is called
+// after seeing tokens "CREATE" and "TABLE" and the table name. The isTemp
+// flag is true if the table should be stored in the auxiliary database
+// file instead of in the main database file. This is normally the case
+// when the "TEMP" or "TEMPORARY" keyword occurs in between
+// CREATE and TABLE.
+//
+// The new table record is initialized and put in pParse->pNewTable.
+// As more of the CREATE TABLE statement is parsed, additional action
+// routines will be called to add more information to this record.
+// At the end of the CREATE TABLE statement, the sqlite3EndTable() routine
+// is called to complete the construction of the new table record.
+func _sqlite3StartTable(tls *crt.TLS, _pParse *XParse, _pName1 *XToken, _pName2 *XToken, _isTemp int32, _isView int32, _isVirtual int32, _noErr int32) {
+ var _iDb, _16_addr1, _16_fileFormat, _16_reg1, _16_reg2, _16_reg3 int32
+ var _zName, _5_zDb, _8_zDb *int8
+ var _db *Xsqlite3
+ var _pTable *XTable
+ var _v *TVdbe
+ var _pName *XToken
+ _zName = nil
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0) && (((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X0) == i32(1)) {
+ _iDb = int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X1)
+ _zName = _sqlite3DbStrDup(tls, _db, func() *int8 {
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ return str(50007)
+ }
+ return str(50026)
+ }())
+ _pName = _pName1
+ goto _5
+ }
+ _iDb = _sqlite3TwoPartName(tls, _pParse, _pName1, _pName2, &_pName)
+ if _iDb < i32(0) {
+ return
+ }
+ if ((i32(1) != 0 && _isTemp != 0) && ((_pName2.X1) > uint32(i32(0)))) && (_iDb != i32(1)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(111320))
+ return
+ }
+ if i32(1) != 0 && _isTemp != 0 {
+ _iDb = i32(1)
+ }
+ _zName = _sqlite3NameFromToken(tls, _db, _pName)
+_5:
+ *(*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(392 /* X50 */))) = *_pName
+ if _zName == nil {
+ return
+ }
+ if i32(0) != _sqlite3CheckObjectName(tls, _pParse, _zName) {
+ goto _begin_table_error
+ }
+ if int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X1) == i32(1) {
+ _isTemp = i32(1)
+ }
+ func() {
+ if _isTemp != i32(0) && _isTemp != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100579), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(111361)))
+ crt.X__builtin_abort(tls)
}
- return int32(_pTable.X11)
}()
- _i = i32(0)
-_24:
- if _i >= _mxBitCol {
- goto _27
+ func() {
+ if _isView != i32(0) && _isView != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100580), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(111384)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _5_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ if _sqlite3AuthCheck(tls, _pParse, i32(18), func() *int8 {
+ if i32(1) != 0 && (_isTemp == i32(1)) {
+ return str(50007)
+ }
+ return str(50026)
+ }(), nil, _5_zDb) != 0 {
+ goto _begin_table_error
}
-
- if (_extraCols & (u64(1) << uint(_i))) == 0 {
- goto _28
+ if (_isVirtual == 0) && _sqlite3AuthCheck(tls, _pParse, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3StartTableØ00aCodeØ001)) + 1*uintptr(_isTemp+(i32(2)*_isView))))), _zName, nil, _5_zDb) != 0 {
+ goto _begin_table_error
}
-
- _nKeyCol += 1
-_28:
- _i += 1
- goto _24
-
-_27:
- if ((_pSrc.X14) & u64(9223372036854775808)) == 0 {
- goto _29
+ if (_pParse.X55) != 0 {
+ goto _28
}
-
- {
- p := &_nKeyCol
- *p = (*p) + ((int32(_pTable.X11) - i32(64)) + i32(1))
- sink1 = *p
+ _8_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ if i32(0) != _sqlite3ReadSchema(tls, _pParse) {
+ goto _begin_table_error
}
-_29:
- _pIdx = _sqlite3AllocateIndexObject(tls, (*Xsqlite3)(_pParse.X0), int16(_nKeyCol+i32(1)), i32(0), &_zNotUsed)
- if _pIdx != nil {
+ _pTable = _sqlite3FindTable(tls, _db, _zName, _8_zDb)
+ if _pTable == nil {
goto _30
}
-
- goto _end_auto_index_create
-
-_30:
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(8 /* X4 */))))) = _pIdx
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(0 /* X0 */))) = str(111872)
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(12 /* X3 */))))) = _pTable
- _n = i32(0)
- _idxCols = uint64(i32(0))
- _pTerm = (*XWhereTerm)(_pWC.X5)
-_31:
- if uintptr(unsafe.Pointer(_pTerm)) >= uintptr(unsafe.Pointer(_pWCEnd)) {
- goto _34
- }
-
- if _termCanDriveIndex(tls, _pTerm, _pSrc, _notReady) == 0 {
- goto _35
+ if _noErr == 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(111407), unsafe.Pointer(_pName))
+ goto _32
}
-
- _10_iCol = *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))
- _10_cMask = func() uint64 {
- if _10_iCol >= i32(64) {
- return u64(9223372036854775808)
+ func() {
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 && (_sqlite3Config.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(111431)))
+ crt.X__builtin_abort(tls)
}
- return (u64(1) << uint(_10_iCol))
}()
- if (_idxCols & _10_cMask) != uint64(i32(0)) {
- goto _38
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
+_32:
+ goto _begin_table_error
+_30:
+ if _sqlite3FindIndex(tls, _db, _zName, _8_zDb) != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(111460), unsafe.Pointer(_zName))
+ goto _begin_table_error
}
-
- _11_pX = (*XExpr)(_pTerm.X0)
- {
- p := &_idxCols
- *p = (*p) | _10_cMask
- sink15 = *p
+_28:
+ _pTable = (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80))))
+ if _pTable == nil {
+ func() {
+ if (_db.X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100629), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(47848)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _sqlite3NomemError(tls, i32(100630))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(36 /* X16 */))) += 1
+ goto _begin_table_error
}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(*(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))))
- _pColl = _sqlite3BinaryCompareCollSeq(tls, _pParse, (*XExpr)(_11_pX.X4), (*XExpr)(_11_pX.X5))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = func() *int8 {
- if _pColl != nil {
- return (_pColl.X0)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(0 /* X0 */))) = _zName
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(40 /* X10 */))) = int16(i32(-1))
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(72 /* X20 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(32 /* X8 */))) = uint32(i32(1))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(44 /* X12 */))) = int16(i32(200))
+ func() {
+ if i32(200) != int32(_sqlite3LogEst(tls, uint64(i32(1048576)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(48127)))
+ crt.X__builtin_abort(tls)
}
- return (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
}()
- _n += 1
-_38:
-_35:
- *(*uintptr)(unsafe.Pointer(&_pTerm)) += uintptr(48)
- goto _31
-
-_34:
func() {
- if uint32(_n) != uint32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131140), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(111884)))
+ if (*XTable)(_pParse.X63) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(24634)))
crt.X__builtin_abort(tls)
}
}()
- _i = i32(0)
-_43:
- if _i >= _mxBitCol {
- goto _46
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(444 /* X63 */))))) = _pTable
+ if ((_pParse.X6) == 0) && (crt.Xstrcmp(tls, _zName, str(111495)) == i32(0)) {
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100648), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pTable.X20) + uintptr(72 /* X6 */))))) = _pTable
}
-
- if (_extraCols & (u64(1) << uint(_i))) == 0 {
- goto _47
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 || store38(&_v, _sqlite3GetVdbe(tls, _pParse)) == nil {
+ goto _49
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(_i)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
- _n += 1
-_47:
- _i += 1
- goto _43
-
-_46:
- if ((_pSrc.X14) & u64(9223372036854775808)) == 0 {
- goto _48
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
+ if _isVirtual != 0 {
+ _sqlite3VdbeAddOp0(tls, _v, i32(155))
}
-
- _i = i32(63)
-_49:
- if _i >= int32(_pTable.X11) {
- goto _52
+ _16_reg1 = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(100 /* X31 */))), preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
+ _16_reg2 = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(104 /* X32 */))), preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
+ _16_reg3 = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(103), _iDb, _16_reg3, i32(2))
+ _sqlite3VdbeUsesBtree(tls, _v, _iDb)
+ _16_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(21), _16_reg3)
+ _16_fileFormat = func() int32 {
+ if ((_db.X6) & i32(32768)) != i32(0) {
+ return i32(1)
+ }
+ return i32(4)
+ }()
+ _sqlite3VdbeAddOp3(tls, _v, i32(104), _iDb, i32(2), _16_fileFormat)
+ _sqlite3VdbeAddOp3(tls, _v, i32(104), _iDb, i32(5), int32(_db.X14))
+ _sqlite3VdbeJumpHere(tls, _v, _16_addr1)
+ if _isView != 0 || _isVirtual != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _16_reg2)
+ goto _55
}
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(140 /* X41 */))) = _sqlite3VdbeAddOp2(tls, _v, i32(137), _iDb, _16_reg2)
+_55:
+ _sqlite3OpenMasterTable(tls, _pParse, _iDb)
+ _sqlite3VdbeAddOp2(tls, _v, i32(117), i32(0), _16_reg1)
+ _sqlite3VdbeAddOp4(tls, _v, i32(61), i32(6), _16_reg3, i32(0), (*int8)(unsafe.Pointer(&_sqlite3StartTableØ00nullRowØ002)), i32(-2))
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), i32(0), _16_reg3, _16_reg1)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
+ _sqlite3VdbeAddOp0(tls, _v, i32(114))
+_49:
+ return
+_begin_table_error:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName))
+}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(_i)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
- _n += 1
- _i += 1
- goto _49
-
-_52:
-_48:
+// The table or view or trigger name is passed to this routine via tokens
+// pName1 and pName2. If the table name was fully qualified, for example:
+//
+// CREATE TABLE xxx.yyy (...);
+//
+// Then pName1 is set to "xxx" and pName2 "yyy". On the other hand if
+// the table name is not fully qualified, i.e.:
+//
+// CREATE TABLE yyy(...);
+//
+// Then pName1 is set to "yyy" and pName2 is "".
+//
+// This routine sets the *ppUnqual pointer to point at the token (pName1 or
+// pName2) that stores the unqualified table name. The index of the
+// database "xxx" is returned.
+func _sqlite3TwoPartName(tls *crt.TLS, _pParse *XParse, _pName1 *XToken, _pName2 *XToken, _pUnqual **XToken) (r0 int32) {
+ var _iDb int32
+ var _db *Xsqlite3
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if _n != _nKeyCol {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131158), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(111912)))
+ if _pName2 == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100464), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TwoPartNameØ00__func__Ø000))), unsafe.Pointer(str(111511)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_n))) = int16(i32(-1))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_n))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+ if (_pName2.X1) <= uint32(i32(0)) {
+ goto _2
+ }
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(111521))
+ return i32(-1)
+ }
+ *_pUnqual = _pName2
+ _iDb = _sqlite3FindDb(tls, _db, _pName1)
+ if _iDb < i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(111538), unsafe.Pointer(_pName1))
+ return i32(-1)
+ }
+ goto _5
+_2:
func() {
- if (_pLevel.X2) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(131163), unsafe.Pointer((*int8)(unsafe.Pointer(&_constructAutomaticIndexØ00__func__Ø000))), unsafe.Pointer(str(111924)))
+ if int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X1) != i32(0) && ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == 0 && ((_db.X6)&i32(268435456)) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100477), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TwoPartNameØ00__func__Ø000))), unsafe.Pointer(str(111558)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(8 /* X2 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _sqlite3VdbeAddOp2(tls, _v, i32(109), _pLevel.X2, _nKeyCol+i32(1))
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pIdx)
- _sqlite3VdbeComment(tls, _v, str(111944), unsafe.Pointer(_pTable.X0))
- _sqlite3ExprCachePush(tls, _pParse)
- _pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((*XWhereInfo)(_pWC.X0).X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _57
- }
+ _iDb = int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X1)
+ *_pUnqual = _pName1
+_5:
+ return _iDb
+}
- _16_regYield = _pTabItem.X7
- _addrCounter = _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), i32(0))
- _sqlite3VdbeAddOp3(tls, _v, i32(15), _16_regYield, i32(0), _pTabItem.X6)
- _addrTop = _sqlite3VdbeAddOp1(tls, _v, i32(16), _16_regYield)
- _sqlite3VdbeComment(tls, _v, str(111952), unsafe.Pointer((*XTable)(_pTabItem.X4).X0))
- goto _58
+var _sqlite3TwoPartNameØ00__func__Ø000 [19]int8
-_57:
- _addrTop = _sqlite3VdbeAddOp1(tls, _v, i32(37), _pLevel.X1)
-_58:
- if _pPartial == nil {
- goto _59
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3TwoPartNameØ00__func__Ø000[0], str(111625), 19)
+}
- _iContinue = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3ExprIfFalse(tls, _pParse, _pPartial, _iContinue, i32(16))
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(131072))
- sink5 = *p
- }
-_59:
- _regRecord = _sqlite3GetTempReg(tls, _pParse)
- _regBase = _sqlite3GenerateIndexKey(tls, _pParse, _pIdx, _pLevel.X1, _regRecord, i32(0), nil, nil, i32(0))
- _sqlite3VdbeAddOp2(tls, _v, i32(128), _pLevel.X2, _regRecord)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
- if _pPartial == nil {
- goto _60
- }
+// The token *pName contains the name of a database (either "main" or
+// "temp" or the name of an attached db). This routine returns the
+// index of the named database in db->aDb[], or -1 if the named db
+// does not exist.
+func _sqlite3FindDb(tls *crt.TLS, _db *Xsqlite3, _pName *XToken) (r0 int32) {
+ var _i int32
+ var _zName *int8
+ _zName = _sqlite3NameFromToken(tls, _db, _pName)
+ _i = _sqlite3FindDbName(tls, _db, _zName)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName))
+ return _i
+}
- _sqlite3VdbeResolveLabel(tls, _v, _iContinue)
-_60:
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _61
+// This routine is used to check if the UTF-8 string zName is a legal
+// unqualified name for a new schema object (table, index, view or
+// trigger). All names are legal except those that begin with the string
+// "sqlite_" (in upper, lower or mixed case). This portion of the namespace
+// is reserved for internal use.
+func _sqlite3CheckObjectName(tls *crt.TLS, _pParse *XParse, _zName *int8) (r0 int32) {
+ if (((((*t21)(unsafe.Pointer(uintptr(_pParse.X0) + uintptr(144 /* X33 */))).X2) == 0) && (int32(_pParse.X6) == i32(0))) && ((((*Xsqlite3)(_pParse.X0).X6) & i32(2048)) == i32(0))) && (i32(0) == Xsqlite3_strnicmp(tls, _zName, str(111644), i32(7))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(111652), unsafe.Pointer(_zName))
+ return i32(1)
}
+ return i32(0)
+}
- _sqlite3VdbeChangeP2(tls, _v, uint32(_addrCounter), _regBase+_n)
- _translateColumnToCopy(tls, _pParse, _addrTop, _pLevel.X1, _pTabItem.X8, i32(1))
- _sqlite3VdbeGoto(tls, _v, _addrTop)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(0)), 16, 4)
- goto _62
+var _sqlite3StartTableØ00__func__Ø000 [18]int8
-_61:
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _pLevel.X1, _addrTop+i32(1))
-_62:
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(3)))
- _sqlite3VdbeJumpHere(tls, _v, _addrTop)
- _sqlite3ReleaseTempReg(tls, _pParse, _regRecord)
- _sqlite3ExprCachePop(tls, _pParse)
- _sqlite3VdbeJumpHere(tls, _v, _addrInit)
-_end_auto_index_create:
- _sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), _pPartial)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3StartTableØ00__func__Ø000[0], str(111694), 18)
}
-var _constructAutomaticIndexØ00__func__Ø000 [24]int8 // -
+var _sqlite3StartTableØ00aCodeØ001 [4]uint8
func init() {
- crt.Xstrncpy(nil, &_constructAutomaticIndexØ00__func__Ø000[0], str(111972), 24)
+ _sqlite3StartTableØ00aCodeØ001 = [4]uint8{2, 4, 8, 6}
}
-func _sqlite3AllocateIndexObject(tls *crt.TLS, _db *Xsqlite3, _nCol int16, _nExtra int32, _ppExtra **int8) (r0 *XIndex) { // sqlite3.c:102549:1
- var _p *XIndex // sqlite3.c:102555:9
- _ = _p
- var _nByte int32 // sqlite3.c:102556:7
- _ = _nByte
- var _1_pExtra *int8 // sqlite3.c:102565:10
- _ = _1_pExtra
- _nByte = int32((u32(56) + (((u32(4) * uint32(_nCol)) + uint32(i32(7))) & uint32(i32(-8)))) + (((((u32(2) * uint32(int32(_nCol)+i32(1))) + (u32(2) * uint32(_nCol))) + (u32(1) * uint32(_nCol))) + uint32(i32(7))) & uint32(i32(-8))))
- _p = (*XIndex)(_sqlite3DbMallocZero(tls, _db, uint64(_nByte+_nExtra)))
- if _p == nil {
- goto _0
- }
-
- _1_pExtra = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p)))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(56))))))))
- *(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(32 /* X8 */))) = (**int8)(unsafe.Pointer(_1_pExtra))
- {
- p := &_1_pExtra
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(((u32(4)*uint32(_nCol))+uint32(i32(7)))&uint32(i32(-8)))))
- sink0 = *p
- }
- *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */))) = (*int16)(unsafe.Pointer(_1_pExtra))
+// Generate VDBE code that prepares for doing an operation that
+// might change the database.
+//
+// This routine starts a new transaction if we are not already within
+// a transaction. If we are already within a transaction, then a checkpoint
+// is set if the setStatement parameter is true. A checkpoint should
+// be set for operations that might fail (due to a constraint) part of
+// the way through and which will need to undo some writes without having to
+// rollback the whole transaction. For operations where all constraints
+// can be checked before any changes are made to the database, it is never
+// necessary to undo a write and the checkpoint should not be set.
+func _sqlite3BeginWriteOperation(tls *crt.TLS, _pParse *XParse, _setStatement int32, _iDb int32) {
+ var _pToplevel *XParse
+ _pToplevel = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }()
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
{
- p := &_1_pExtra
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(2)*uint32(int32(_nCol)+i32(1)))))
- sink0 = *p
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(92 /* X29 */)))
+ *p = (*p) | (u32(1) << uint(_iDb))
+ sink5 = *p
}
- *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))) = (*int16)(unsafe.Pointer(_1_pExtra))
{
- p := &_1_pExtra
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(2)*uint32(_nCol))))
- sink0 = *p
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(20 /* X8 */)))
+ *p = uint8(int32(*p) | _setStatement)
+ sink2 = *p
}
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = (*uint8)(unsafe.Pointer(_1_pExtra))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X14 */))) = uint16(_nCol)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(50 /* X13 */))) = uint16(int32(_nCol) - i32(1))
- *_ppExtra = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p)))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_nByte)))))))
-_0:
- return _p
}
-func _sqlite3GenerateIndexKey(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex, _iDataCur int32, _regOut int32, _prefixOnly int32, _piPartIdxLabel *int32, _pPrior *XIndex, _regPrior int32) (r0 int32) { // sqlite3.c:105470:1
- var _v *TVdbe // sqlite3.c:105480:8
- _ = _v
- var _j int32 // sqlite3.c:105481:7
- _ = _j
- var _regBase int32 // sqlite3.c:105482:7
- _ = _regBase
- var _nCol int32 // sqlite3.c:105483:7
- _ = _nCol
- var _7_zAff *int8 // sqlite3.c:105519:18
- _ = _7_zAff
- _v = (*TVdbe)(_pParse.X2)
- if _piPartIdxLabel == nil {
- goto _0
- }
-
- if (*XExpr)(_pIdx.X9) == nil {
- goto _1
- }
-
- *_piPartIdxLabel = _sqlite3VdbeMakeLabel(tls, _v)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(60 /* X22 */))) = _iDataCur
- _sqlite3ExprCachePush(tls, _pParse)
- _sqlite3ExprIfFalseDup(tls, _pParse, (*XExpr)(_pIdx.X9), *_piPartIdxLabel, i32(16))
- goto _2
-
-_1:
- *_piPartIdxLabel = i32(0)
-_2:
-_0:
- _nCol = int32(func() uint16 {
- if _prefixOnly != 0 && (((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0) {
- return (_pIdx.X13)
- }
- return (_pIdx.X14)
- }())
- _regBase = _sqlite3GetTempRange(tls, _pParse, _nCol)
- if _pPrior == nil || _regBase == _regPrior && (*XExpr)(_pPrior.X9) == nil {
- goto _8
- }
-
- _pPrior = nil
-_8:
- _j = i32(0)
-_9:
- if _j >= _nCol {
- goto _12
- }
-
- if _pPrior == nil || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior.X1)) + 2*uintptr(_j)))) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j)))) || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrior.X1)) + 2*uintptr(_j)))) == i32(-2) {
- goto _15
- }
-
- goto _10
-
-_15:
- _sqlite3ExprCodeLoadIndexColumn(tls, _pParse, _pIdx, _iDataCur, _j, _regBase+_j)
- _sqlite3VdbeDeletePriorOpcode(tls, _v, uint8(i32(74)))
-_10:
- _j += 1
- goto _9
-
-_12:
- if _regOut == 0 {
- goto _16
+// Open the sqlite_master table stored in database number iDb for
+// writing. The table is opened using cursor 0.
+func _sqlite3OpenMasterTable(tls *crt.TLS, _p *XParse, _iDb int32) {
+ var _v *TVdbe
+ _v = _sqlite3GetVdbe(tls, _p)
+ _sqlite3TableLock(tls, _p, _iDb, i32(1), uint8(i32(1)), str(50026))
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(107), i32(0), i32(1), _iDb, i32(5))
+ if (_p.X17) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X17 */))) = i32(1)
}
+}
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regBase, _nCol, _regOut)
- if (*XSelect)((*XTable)(_pIdx.X3).X3) == nil {
- goto _17
- }
+var _sqlite3StartTableØ00nullRowØ002 [6]int8
- _7_zAff = _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pIdx)
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), _7_zAff, i32(0))
-_17:
-_16:
- _sqlite3ReleaseTempRange(tls, _pParse, _regBase, _nCol)
- return _regBase
+func init() {
+ _sqlite3StartTableØ00nullRowØ002 = [6]int8{6, 0, 0, 0, 0, 0}
}
-func _sqlite3ExprIfFalseDup(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _dest int32, _jumpIfNull int32) { // sqlite3.c:95546:1
- var _db *Xsqlite3 // sqlite3.c:95547:11
- _ = _db
- var _pCopy *XExpr // sqlite3.c:95548:8
- _ = _pCopy
- _db = (*Xsqlite3)(_pParse.X0)
- _pCopy = _sqlite3ExprDup(tls, _db, _pExpr, i32(0))
- if int32(_db.X17) != i32(0) {
- goto _0
- }
-
- _sqlite3ExprIfFalse(tls, _pParse, _pCopy, _dest, _jumpIfNull)
-_0:
- _sqlite3ExprDelete(tls, _db, _pCopy)
+// Disable lookaside memory allocation for objects that might be
+// shared across database connections.
+func _disableLookaside(tls *crt.TLS, _pParse *XParse) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(24 /* X12 */))) += 1
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) += 1
}
-func _sqlite3ExprCodeLoadIndexColumn(tls *crt.TLS, _pParse *XParse, _pIdx *XIndex, _iTabCur int32, _iIdxCol int32, _regOut int32) { // sqlite3.c:94121:1
- var _iTabCol int16 // sqlite3.c:94128:7
- _ = _iTabCol
- _iTabCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iIdxCol)))
- if int32(_iTabCol) != i32(-2) {
- goto _0
+// This routine is called to report the final ")" that terminates
+// a CREATE TABLE statement.
+//
+// The table structure that other action routines have been building
+// is added to the internal hash tables, assuming no errors have
+// occurred.
+//
+// An entry for the table is made in the master table on disk, unless
+// this is a temporary table or db->init.busy==1. When db->init.busy==1
+// it means we are reading the sqlite_master table because we just
+// connected to the database or because the sqlite_master table has
+// recently changed, so the entry for this table already exists in
+// the sqlite_master table. We do not want to create it again.
+//
+// If the pSelect argument is not NULL, it means that this routine
+// was called to create a table generated from a
+// "CREATE TABLE ... AS SELECT ..." statement. The column names of
+// the new table will match the result set of the SELECT.
+func _sqlite3EndTable(tls *crt.TLS, _pParse *XParse, _pCons *XToken, _pEnd *XToken, _tabOpts uint8, _pSelect *XSelect) {
+ var _iDb, _9_n, _12_regYield, _12_addrTop, _12_regRec, _12_regRowid, _12_addrInsLoop, _19_nName int32
+ var _9_zType, _9_zType2, _9_zStmt, _19_zName *int8
+ var _db *Xsqlite3
+ var _15_pDb *XDb
+ var _17_pSchema *XSchema
+ var _p, _12_pSelTab, _17_pOld *XTable
+ var _9_v *TVdbe
+ var _14_pEnd2 *XToken
+ var _pIdx *XIndex
+ var _12_dest XSelectDest
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_pEnd == nil) && (_pSelect == nil) {
+ return
}
-
func() {
- if (*XExprList)(_pIdx.X10) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94130), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000))), unsafe.Pointer(str(111996)))
+ if (_db.X17) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101544), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(23869)))
crt.X__builtin_abort(tls)
}
}()
+ _p = (*XTable)(_pParse.X63)
+ if _p == nil {
+ return
+ }
func() {
- if ((*XExprList)(_pIdx.X10).X0) <= _iIdxCol {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(94131), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000))), unsafe.Pointer(str(112012)))
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 && _pSelect != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101548), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(111712)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(60 /* X22 */))) = _iTabCur
- _sqlite3ExprCodeCopy(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_iIdxCol))).X0), _regOut)
- goto _5
-
-_0:
- _sqlite3ExprCodeGetColumnOfTable(tls, (*TVdbe)(_pParse.X2), (*XTable)(_pIdx.X3), _iTabCur, int32(_iTabCol), _regOut)
-_5:
-}
-
-var _sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000 [31]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeLoadIndexColumnØ00__func__Ø000[0], str(112044), 31)
-}
-
-func _sqlite3ExprCodeCopy(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) { // sqlite3.c:95077:1
- var _db *Xsqlite3 // sqlite3.c:95078:11
- _ = _db
- _db = (*Xsqlite3)(_pParse.X0)
- _pExpr = _sqlite3ExprDup(tls, _db, _pExpr, i32(0))
- if (_db.X17) != 0 {
- goto _0
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
+ goto _8
}
-
- _sqlite3ExprCode(tls, _pParse, _pExpr, _target)
-_0:
- _sqlite3ExprDelete(tls, _db, _pExpr)
-}
-
-func _sqlite3VdbeDeletePriorOpcode(tls *crt.TLS, _p *TVdbe, _op uint8) (r0 int32) { // sqlite3.c:72341:1
- if (_p.X27) <= i32(0) || int32((*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17)+24*uintptr((_p.X27)-i32(1)))).X0) != int32(_op) {
- goto _1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = (*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X0
+ if (_p.X7) == i32(1) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(1))
+ sink5 = *p
+ }
}
- return _sqlite3VdbeChangeToNoop(tls, _p, (_p.X27)-i32(1))
-
-_1:
- return i32(0)
-}
-
-func _sqlite3IndexAffinityStr(tls *crt.TLS, _db *Xsqlite3, _pIdx *XIndex) (r0 *int8) { // sqlite3.c:108907:1
- var _1_n int32 // sqlite3.c:108917:9
- _ = _1_n
- var _1_pTab *XTable // sqlite3.c:108918:11
- _ = _1_pTab
- var _3_x int16 // sqlite3.c:108925:11
- _ = _3_x
- var _6_aff int8 // sqlite3.c:108931:14
- _ = _6_aff
- if (_pIdx.X4) != nil {
- goto _0
+_8:
+ if (int32(_tabOpts) & i32(32)) == 0 {
+ goto _10
}
-
- _1_pTab = (*XTable)(_pIdx.X3)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(16 /* X4 */))) = (*int8)(_sqlite3DbMallocRaw(tls, nil, uint64(int32(_pIdx.X14)+i32(1))))
- if (_pIdx.X4) != nil {
- goto _1
+ if ((_p.X9) & uint32(i32(8))) != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(111739))
+ return
}
-
- _sqlite3OomFault(tls, _db)
- return nil
-
-_1:
- _1_n = i32(0)
-_2:
- if _1_n >= int32(_pIdx.X14) {
- goto _5
+ if ((_p.X9) & uint32(i32(4))) == uint32(i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(111789), unsafe.Pointer(_p.X0))
+ goto _13
}
-
- _3_x = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_n)))
- if int32(_3_x) < i32(0) {
- goto _6
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(96))
+ sink5 = *p
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = (*XColumn)(unsafe.Pointer(uintptr(_1_pTab.X1) + 16*uintptr(_3_x))).X4
- goto _7
-
-_6:
- if int32(_3_x) != i32(-1) {
- goto _8
+ _convertToWithoutRowidTable(tls, _pParse, _p)
+_13:
+_10:
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_p.X20))
+ if (*XExprList)(_p.X6) != nil {
+ _sqlite3ResolveSelfReference(tls, _pParse, _p, i32(4), nil, (*XExprList)(_p.X6))
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = int8(i32(68))
- goto _9
-
-_8:
+ _estimateTableWidth(tls, _p)
+ _pIdx = (*XIndex)(_p.X2)
+_15:
+ if _pIdx == nil {
+ goto _18
+ }
+ _estimateIndexWidth(tls, _pIdx)
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _15
+_18:
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
+ goto _19
+ }
+ _9_v = _sqlite3GetVdbe(tls, _pParse)
+ if func() int32 {
+ if _9_v == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return
+ }
+ _sqlite3VdbeAddOp1(tls, _9_v, i32(114), i32(0))
+ if (*XSelect)(_p.X3) == nil {
+ _9_zType = str(61730)
+ _9_zType2 = str(25071)
+ goto _24
+ }
+ _9_zType = str(111821)
+ _9_zType2 = str(25358)
+_24:
+ if _pSelect == nil {
+ goto _25
+ }
+ _12_regYield = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _12_regRec = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _12_regRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
func() {
- if int32(_3_x) != i32(-2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108932), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IndexAffinityStrØ00__func__Ø000))), unsafe.Pointer(str(112076)))
+ if (_pParse.X17) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(111826)))
crt.X__builtin_abort(tls)
}
}()
+ _sqlite3MayAbort(tls, _pParse)
+ _sqlite3VdbeAddOp3(tls, _9_v, i32(107), i32(1), _pParse.X32, _iDb)
+ _sqlite3VdbeChangeP5(tls, _9_v, uint16(i32(16)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = i32(2)
+ _12_addrTop = _sqlite3VdbeCurrentAddr(tls, _9_v) + i32(1)
+ _sqlite3VdbeAddOp3(tls, _9_v, i32(15), _12_regYield, i32(0), _12_addrTop)
+ _sqlite3SelectDestInit(tls, &_12_dest, i32(13), _12_regYield)
+ _sqlite3Select(tls, _pParse, _pSelect, &_12_dest)
+ _sqlite3VdbeEndCoroutine(tls, _9_v, _12_regYield)
+ _sqlite3VdbeJumpHere(tls, _9_v, _12_addrTop-i32(1))
+ if (_pParse.X16) != 0 {
+ return
+ }
+ _12_pSelTab = _sqlite3ResultSetOfSelect(tls, _pParse, _pSelect)
+ if _12_pSelTab == nil {
+ return
+ }
func() {
- if (*XExprList)(_pIdx.X10) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108933), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3IndexAffinityStrØ00__func__Ø000))), unsafe.Pointer(str(112088)))
+ if (*XColumn)(_p.X1) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(111842)))
crt.X__builtin_abort(tls)
}
}()
- _6_aff = _sqlite3ExprAffinity(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_1_n))).X0))
- if int32(_6_aff) != i32(0) {
- goto _14
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X11 */))) = _12_pSelTab.X11
+ *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = (*XColumn)(_12_pSelTab.X1)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pSelTab)) + uintptr(42 /* X11 */))) = int16(i32(0))
+ *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pSelTab)) + uintptr(4 /* X1 */))))) = nil
+ _sqlite3DeleteTable(tls, _db, _12_pSelTab)
+ _12_addrInsLoop = _sqlite3VdbeAddOp1(tls, _9_v, i32(16), _12_dest.X2)
+ _sqlite3VdbeAddOp3(tls, _9_v, i32(101), _12_dest.X3, _12_dest.X4, _12_regRec)
+ _sqlite3TableAffinity(tls, _9_v, _p, i32(0))
+ _sqlite3VdbeAddOp2(tls, _9_v, i32(117), i32(1), _12_regRowid)
+ _sqlite3VdbeAddOp3(tls, _9_v, i32(118), i32(1), _12_regRec, _12_regRowid)
+ _sqlite3VdbeGoto(tls, _9_v, _12_addrInsLoop)
+ _sqlite3VdbeJumpHere(tls, _9_v, _12_addrInsLoop)
+ _sqlite3VdbeAddOp1(tls, _9_v, i32(114), i32(1))
+_25:
+ if _pSelect != nil {
+ _9_zStmt = _createTableStmt(tls, _db, _p)
+ goto _33
}
-
- _6_aff = int8(i32(65))
-_14:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = _6_aff
-_9:
-_7:
- _1_n += 1
- goto _2
-
-_5:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X4)) + 1*uintptr(_1_n))) = int8(i32(0))
-_0:
- return _pIdx.X4
-}
-
-var _sqlite3IndexAffinityStrØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3IndexAffinityStrØ00__func__Ø000[0], str(112108), 24)
+ _14_pEnd2 = func() *XToken {
+ if _tabOpts != 0 {
+ return (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(400 /* X51 */)))
+ }
+ return _pEnd
+ }()
+ _9_n = int32((uintptr(unsafe.Pointer(_14_pEnd2.X0)) - uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(392 /* X50 */))).X0))) / 1)
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pEnd2.X0)) + 1*uintptr(i32(0))))) != i32(59) {
+ {
+ p := &_9_n
+ *p = int32(uint32(*p) + (_14_pEnd2.X1))
+ sink1 = *p
+ }
+ }
+ _9_zStmt = _sqlite3MPrintf(tls, _db, str(111853), unsafe.Pointer(_9_zType2), _9_n, unsafe.Pointer((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(392 /* X50 */))).X0))
+_33:
+ _sqlite3NestedParse(tls, _pParse, str(111868), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(50026)), unsafe.Pointer(_9_zType), unsafe.Pointer(_p.X0), unsafe.Pointer(_p.X0), _pParse.X32, unsafe.Pointer(_9_zStmt), _pParse.X31)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_9_zStmt))
+ _sqlite3ChangeCookie(tls, _pParse, _iDb)
+ if ((_p.X9) & uint32(i32(8))) == uint32(i32(0)) {
+ goto _37
+ }
+ _15_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101721), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (*XTable)((*XSchema)(_15_pDb.X4).X6) == nil {
+ _sqlite3NestedParse(tls, _pParse, str(111955), unsafe.Pointer(_15_pDb.X0))
+ }
+_37:
+ _sqlite3VdbeAddParseSchemaOp(tls, _9_v, _iDb, _sqlite3MPrintf(tls, _db, str(111997), unsafe.Pointer(_p.X0)))
+_19:
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
+ goto _41
+ }
+ _17_pSchema = (*XSchema)(_p.X20)
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101742), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _17_pOld = (*XTable)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pSchema))+uintptr(8 /* X2 */))), _p.X0, (unsafe.Pointer)(_p)))
+ if _17_pOld != nil {
+ func() {
+ if _p != _17_pOld {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101745), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(112031)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3OomFault(tls, _db)
+ return
+ }
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(444 /* X63 */))))) = nil
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(2)
+ sink1 = *p
+ }
+ if (*XSelect)(_p.X3) != nil {
+ goto _47
+ }
+ _19_zName = (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(392 /* X50 */))).X0
+ func() {
+ if _pSelect != nil || _pCons == nil || _pEnd == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(112039)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pCons.X0) == nil {
+ _pCons = _pEnd
+ }
+ _19_nName = int32((uintptr(unsafe.Pointer(_pCons.X0)) - uintptr(unsafe.Pointer(_19_zName))) / 1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X15 */))) = i32(13) + _sqlite3Utf8CharLen(tls, _19_zName, _19_nName)
+_47:
+_41:
+ _ = _12_dest
}
-func _translateColumnToCopy(tls *crt.TLS, _pParse *XParse, _iStart int32, _iTabCur int32, _iRegister int32, _bIncrRowid int32) { // sqlite3.c:130908:1
- var _v *TVdbe // sqlite3.c:130915:8
- _ = _v
- var _pOp *XVdbeOp // sqlite3.c:130916:10
- _ = _pOp
- var _iEnd int32 // sqlite3.c:130917:7
- _ = _iEnd
+var _sqlite3EndTableØ00__func__Ø000 [16]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3EndTableØ00__func__Ø000[0], str(112065), 16)
+}
+
+// This routine runs at the end of parsing a CREATE TABLE statement that
+// has a WITHOUT ROWID clause. The job of this routine is to convert both
+// internal schema data structures and the generated VDBE code so that they
+// are appropriate for a WITHOUT ROWID table instead of a rowid table.
+// Changes include:
+//
+// (1) Set all columns of the PRIMARY KEY schema object to be NOT NULL.
+// (2) Convert the OP_CreateTable into an OP_CreateIndex. There is
+// no rowid btree for a WITHOUT ROWID. Instead, the canonical
+// data storage is a covering index btree.
+// (3) Bypass the creation of the sqlite_master table entry
+// for the PRIMARY KEY as the primary key index is now
+// identified by the sqlite_master table entry of the table itself.
+// (4) Set the Index.tnum of the PRIMARY KEY Index object in the
+// schema to the rootpage from the main table.
+// (5) Add all table columns to the PRIMARY KEY Index object
+// so that the PRIMARY KEY is a covering index. The surplus
+// columns are part of KeyInfo.nXField and are not used for
+// sorting or lookup or uniqueness checks.
+// (6) Replace the rowid tail on all automatically generated UNIQUE
+// indices with the PRIMARY KEY columns.
+//
+// For virtual tables, only (1) is performed.
+func _convertToWithoutRowidTable(tls *crt.TLS, _pParse *XParse, _pTab *XTable) {
+ var _nPk, _i, _j, _11_n int32
+ var _5_ipkToken XToken
+ var _db *Xsqlite3
+ var _v *TVdbe
+ var _5_pList *XExprList
+ var _pIdx, _pPk *XIndex
+ _db = (*Xsqlite3)(_pParse.X0)
_v = (*TVdbe)(_pParse.X2)
- _pOp = _sqlite3VdbeGetOp(tls, _v, _iStart)
- _iEnd = _sqlite3VdbeCurrentAddr(tls, _v)
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X4) != 0 {
goto _0
}
- return
-
-_0:
+ _i = i32(0)
_1:
- if _iStart >= _iEnd {
+ if _i >= int32(_pTab.X11) {
goto _4
}
-
- if (_pOp.X3) == _iTabCur {
- goto _5
- }
-
- goto _2
-
-_5:
- if int32(_pOp.X0) != i32(99) {
- goto _6
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(64))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = (_pOp.X4) + _iRegister
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(8 /* X4 */))) = _pOp.X5
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(12 /* X5 */))) = i32(0)
- goto _7
-
-_6:
- if int32(_pOp.X0) != i32(125) {
- goto _8
- }
-
- if _bIncrRowid == 0 {
- goto _9
+ if (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X6) & i32(1)) != i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))))) + uintptr(12 /* X3 */))) = uint8(i32(2))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(73))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = _pOp.X4
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(8 /* X4 */))) = i32(1)
- goto _10
-
-_9:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(59))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(4 /* X3 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(12 /* X5 */))) = i32(0)
-_10:
-_8:
-_7:
-_2:
- *(*uintptr)(unsafe.Pointer(func() **XVdbeOp { _iStart += 1; return &_pOp }())) += uintptr(24)
+ _i += 1
goto _1
-
_4:
-}
-
-func _sqlite3WhereExplainOneScan(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pLevel *XWhereLevel, _iLevel int32, _iFrom int32, _wctrlFlags uint16) (r0 int32) { // sqlite3.c:126912:1
- var _ret int32 // sqlite3.c:126920:7
- _ = _ret
- var _1_pItem *TSrcList_item // sqlite3.c:126925:25
- _ = _1_pItem
- var _1_v *TVdbe // sqlite3.c:126926:10
- _ = _1_v
- var _1_db *Xsqlite3 // sqlite3.c:126927:13
- _ = _1_db
- var _1_iId int32 // sqlite3.c:126928:9
- _ = _1_iId
- var _1_isSearch int32 // sqlite3.c:126929:9
- _ = _1_isSearch
- var _1_pLoop *XWhereLoop // sqlite3.c:126930:15
- _ = _1_pLoop
- var _1_flags uint32 // sqlite3.c:126931:9
- _ = _1_flags
- var _1_zMsg *int8 // sqlite3.c:126932:10
- _ = _1_zMsg
- var _1_str XStrAccum // sqlite3.c:126933:14
- _ = _1_str
- var _1_zBuf [100]int8 // sqlite3.c:126934:10
- _ = _1_zBuf
- var _5_zFmt *int8 // sqlite3.c:126956:18
- _ = _5_zFmt
- var _5_pIdx *XIndex // sqlite3.c:126957:13
- _ = _5_pIdx
- var _13_zRangeOp *int8 // sqlite3.c:126981:18
- _ = _13_zRangeOp
- _ret = i32(0)
- _1_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
- _1_v = (*TVdbe)(_pParse.X2)
- _1_db = (*Xsqlite3)(_pParse.X0)
- _1_iId = _pParse.X58
- _1_pLoop = (*XWhereLoop)(_pLevel.X18)
- _1_flags = _1_pLoop.X9
- if (_1_flags&uint32(i32(8192))) == 0 && (int32(_wctrlFlags)&i32(32)) == 0 {
- goto _1
- }
- return i32(0)
-
-_1:
- _1_isSearch = bool2int((((_1_flags & uint32(i32(48))) != uint32(i32(0))) || (((_1_flags & uint32(i32(1024))) == uint32(i32(0))) && (int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X0) > i32(0)))) || (int32(_wctrlFlags)&i32(3)) != 0)
- _sqlite3StrAccumInit(tls, &_1_str, _1_db, (*int8)(unsafe.Pointer(&_1_zBuf)), int32(u32(100)), i32(1000000000))
- _sqlite3StrAccumAppendAll(tls, &_1_str, func() *int8 {
- if _1_isSearch != 0 {
- return str(112132)
- }
- return str(112140)
- }())
- if (*XSelect)(_1_pItem.X5) == nil {
- goto _7
+_0:
+ if (_pParse.X55) != 0 {
+ return
}
-
- _sqlite3XPrintf(tls, &_1_str, str(112148), int32(_1_pItem.X10))
- goto _8
-
-_7:
- _sqlite3XPrintf(tls, &_1_str, str(112164), unsafe.Pointer(_1_pItem.X2))
-_8:
- if (_1_pItem.X3) == nil {
- goto _9
+ if (_pParse.X41) != 0 {
+ func() {
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101409), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(41861)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeChangeOpcode(tls, _v, uint32(_pParse.X41), uint8(i32(136)))
}
-
- _sqlite3XPrintf(tls, &_1_str, str(112176), unsafe.Pointer(_1_pItem.X3))
-_9:
- if (_1_flags & uint32(i32(1280))) != uint32(i32(0)) {
+ if int32(_pTab.X10) < i32(0) {
goto _10
}
-
- _5_zFmt = nil
- func() {
- if (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X4) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126959), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExplainOneScanØ00__func__Ø000))), unsafe.Pointer(str(112184)))
- crt.X__builtin_abort(tls)
- }
- }()
- _5_pIdx = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop)) + uintptr(28 /* X8 */))))).X4)
+ _sqlite3TokenInit(tls, &_5_ipkToken, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_pTab.X10))).X0)
+ _5_pList = _sqlite3ExprListAppend(tls, _pParse, nil, _sqlite3ExprAlloc(tls, _db, i32(27), &_5_ipkToken, i32(0)))
+ if _5_pList == nil {
+ return
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))))) + uintptr(12 /* X3 */))) = _pParse.X53
func() {
- if (_1_flags&uint32(i32(16384))) != 0 && (_1_flags&uint32(i32(64))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126961), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExplainOneScanØ00__func__Ø000))), unsafe.Pointer(str(112212)))
+ if (*XTable)(_pParse.X63) != _pTab {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101424), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(112081)))
crt.X__builtin_abort(tls)
}
}()
- if (((*XTable)(_1_pItem.X4).X9)&uint32(i32(32))) == uint32(i32(0)) || int32((uint32(_5_pIdx.X16)<>uint(i32(30))) != i32(2) {
- goto _17
- }
-
- if _1_isSearch == 0 {
- goto _18
+ _sqlite3CreateIndex(tls, _pParse, nil, nil, nil, _5_pList, int32(_pTab.X14), nil, nil, i32(0), i32(0), uint8(i32(2)))
+ if (_db.X17) != 0 {
+ return
}
-
- _5_zFmt = str(112264)
-_18:
- goto _19
-
-_17:
- if (_1_flags & uint32(i32(131072))) == 0 {
- goto _20
+ _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
+ goto _15
+_10:
+ _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
+ if _v != nil {
+ func() {
+ if int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101438), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(49896)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeChangeOpcode(tls, _v, uint32(_pPk.X11), uint8(i32(13)))
}
-
- _5_zFmt = str(112276)
- goto _21
-
-_20:
- if (_1_flags & uint32(i32(16384))) == 0 {
+ _i = store1(&_j, i32(1))
+_19:
+ if _i >= int32(_pPk.X13) {
goto _22
}
-
- _5_zFmt = str(112312)
- goto _23
-
-_22:
- if (_1_flags & uint32(i32(64))) == 0 {
+ if _hasColumn(tls, _pPk.X1, _j, int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))) != 0 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(52 /* X14 */))) -= 1
goto _24
}
-
- _5_zFmt = str(112340)
- goto _25
-
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(postInc1(&_j, int32(1))))) = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))
_24:
- _5_zFmt = str(112360)
-_25:
-_23:
-_21:
-_19:
- if _5_zFmt == nil {
- goto _26
+ _i += 1
+ goto _19
+_22:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(50 /* X13 */))) = uint16(_j)
+_15:
+ func() {
+ if _pPk == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101456), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(41994)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk))+uintptr(55 /* X16 */))), int8(i32(1)), 32, 5)
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X4) == 0 {
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk))+uintptr(55 /* X16 */))), int8(i32(1)), 8, 3)
}
-
- _sqlite3StrAccumAppend(tls, &_1_str, str(112372), i32(7))
- _sqlite3XPrintf(tls, &_1_str, _5_zFmt, unsafe.Pointer(_5_pIdx.X0))
- _explainIndexRange(tls, &_1_str, _1_pLoop)
-_26:
- goto _27
-
-_10:
- if (_1_flags&uint32(i32(256))) == uint32(i32(0)) || (_1_flags&uint32(i32(15))) == uint32(i32(0)) {
+ _nPk = int32(_pPk.X13)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(44 /* X11 */))) = _pTab.X7
+ _pIdx = (*XIndex)(_pTab.X2)
+_28:
+ if _pIdx == nil {
+ goto _31
+ }
+ if int32((uint32(_pIdx.X16)<>uint(i32(30))) == i32(2) {
goto _29
}
-
- if (_1_flags & uint32(i32(5))) == 0 {
- goto _30
+ _i = store1(&_11_n, i32(0))
+_33:
+ if _i >= _nPk {
+ goto _36
}
-
- _13_zRangeOp = str(112380)
- goto _31
-
-_30:
- if (_1_flags & uint32(i32(48))) != uint32(i32(48)) {
- goto _32
+ if _hasColumn(tls, _pIdx.X1, int32(_pIdx.X13), int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))) == 0 {
+ _11_n += 1
}
-
- _13_zRangeOp = str(112384)
+ _i += 1
goto _33
-
-_32:
- if (_1_flags & uint32(i32(32))) == 0 {
- goto _34
+_36:
+ if _11_n == i32(0) {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(52 /* X14 */))) = _pIdx.X13
+ goto _29
}
-
- _13_zRangeOp = str(112400)
- goto _35
-
-_34:
+ if _resizeIndexObject(tls, _db, _pIdx, int32(_pIdx.X13)+_11_n) != 0 {
+ return
+ }
+ *func() *int32 { _i = i32(0); return &_j }() = int32(_pIdx.X13)
+_40:
+ if _i >= _nPk {
+ goto _43
+ }
+ if _hasColumn(tls, _pIdx.X1, int32(_pIdx.X13), int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))) == 0 {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j))) = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_j))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_i)))
+ _j += 1
+ }
+ _i += 1
+ goto _40
+_43:
func() {
- if (_1_flags & uint32(i32(16))) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126989), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereExplainOneScanØ00__func__Ø000))), unsafe.Pointer(str(112404)))
+ if int32(_pIdx.X14) < (int32(_pIdx.X13) + _11_n) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101486), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(112105)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pIdx.X14) < _j {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101487), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(112136)))
crt.X__builtin_abort(tls)
}
}()
- _13_zRangeOp = str(112428)
-_35:
-_33:
-_31:
- _sqlite3XPrintf(tls, &_1_str, str(112432), unsafe.Pointer(_13_zRangeOp))
- goto _38
-
_29:
- if (_1_flags & uint32(i32(1024))) == uint32(i32(0)) {
- goto _39
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _28
+_31:
+ if _nPk >= int32(_pTab.X11) {
+ goto _49
}
-
- _sqlite3XPrintf(tls, &_1_str, str(112472), (*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X0, unsafe.Pointer((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop))+uintptr(28 /* X8 */))))).X4))
-_39:
-_38:
-_27:
- _1_zMsg = _sqlite3StrAccumFinish(tls, &_1_str)
- _ret = _sqlite3VdbeAddOp4(tls, _1_v, i32(165), _1_iId, _iLevel, _iFrom, _1_zMsg, i32(-1))
- return _ret
-}
-
-var _sqlite3WhereExplainOneScanØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereExplainOneScanØ00__func__Ø000[0], str(112500), 27)
-}
-
-func _explainIndexRange(tls *crt.TLS, _pStr *XStrAccum, _pLoop *XWhereLoop) { // sqlite3.c:126878:1
- var _pIndex *XIndex // sqlite3.c:126879:9
- _ = _pIndex
- var _nEq uint16 // sqlite3.c:126880:7
- _ = _nEq
- var _nSkip uint16 // sqlite3.c:126881:7
- _ = _nSkip
- var _i int32 // sqlite3.c:126882:7
- _ = _i
- var _j int32 // sqlite3.c:126882:10
- _ = _j
- var _1_z *int8 // sqlite3.c:126887:16
- _ = _1_z
- _pIndex = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
- _nEq = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X0
- _nSkip = _pLoop.X11
- if int32(_nEq) != i32(0) || ((_pLoop.X9)&uint32(i32(48))) != uint32(i32(0)) {
- goto _1
+ if _resizeIndexObject(tls, _db, _pPk, int32(_pTab.X11)) != 0 {
+ return
}
- return
-
-_1:
- _sqlite3StrAccumAppend(tls, _pStr, str(112528), i32(2))
- _i = i32(0)
-_2:
- if _i >= int32(_nEq) {
- goto _5
+ *func() *int32 { _i = i32(0); return &_j }() = _nPk
+_51:
+ if _i >= int32(_pTab.X11) {
+ goto _54
}
-
- _1_z = _explainIndexColumnName(tls, _pIndex, _i)
- if _i == 0 {
- goto _6
+ if _hasColumn(tls, _pPk.X1, _j, _i) == 0 {
+ func() {
+ if _j >= int32(_pPk.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101496), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(112153)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_j))) = int16(_i)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_j))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+ _j += 1
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(112532), i32(5))
-_6:
- _sqlite3XPrintf(tls, _pStr, func() *int8 {
- if _i >= int32(_nSkip) {
- return str(112540)
- }
- return str(112548)
- }(), unsafe.Pointer(_1_z))
_i += 1
- goto _2
+ goto _51
+_54:
+ func() {
+ if int32(_pPk.X14) != _j {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101502), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(112168)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_pTab.X11) != _j {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101503), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(112184)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _62
+_49:
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(52 /* X14 */))) = uint16(_pTab.X11)
+_62:
+ _ = _5_ipkToken
+}
-_5:
- _j = _i
- if ((_pLoop.X9) & uint32(i32(32))) == 0 {
- goto _9
+var _convertToWithoutRowidTableØ00__func__Ø000 [27]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_convertToWithoutRowidTableØ00__func__Ø000[0], str(112198), 27)
+}
+
+// Create a new index for an SQL table. pName1.pName2 is the name of the index
+// and pTblList is the name of the table that is to be indexed. Both will
+// be NULL for a primary key or an index that is created to satisfy a
+// UNIQUE constraint. If pTable and pIndex are NULL, use pParse->pNewTable
+// as the table to be indexed. pParse->pNewTable is a table that is
+// currently being constructed by a CREATE TABLE statement.
+//
+// pList is a list of columns to be indexed. pList will be NULL if this
+// is a primary key or unique-constraint on the most recent column added
+// to the table currently under construction.
+func _sqlite3CreateIndex(tls *crt.TLS, _pParse *XParse, _pName1 *XToken, _pName2 *XToken, _pTblName *XSrcList, _pList *XExprList, _onError int32, _pStart *XToken, _pPIWhere *XExpr, _sortOrder int32, _ifNotExist int32, _idxType uint8) {
+ var _nName, _i, _j, _sortOrderMask, _iDb, _nExtra, _nExtraCol, _20_n, _34_requestedSortOrder, _42_nColl, _46_x, _53_k, _62_iMem, _63_n int32
+ var _zName, _zExtra, _23_zDb, _34_zColl, _54_z1, _54_z2, _62_zStmt *int8
+ var _26_prevCol XToken
+ var _db *Xsqlite3
+ var _pDb *XDb
+ var _pTab *XTable
+ var _62_v *TVdbe
+ var _pName *XToken
+ var _37_pCopy *XExprList
+ var _pListItem *TExprList_item
+ var _28_pExpr, _34_pCExpr *XExpr
+ var _pIndex, _pPk, _20_pLoop, _52_pIdx, _59_p, _68_pOther *XIndex
+ var _sFix XDbFixer
+ _pTab = nil
+ _pIndex = nil
+ _zName = nil
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pName = nil
+ _nExtra = i32(0)
+ _zExtra = nil
+ _pPk = nil
+ if ((_db.X17) != 0) || ((_pParse.X16) > i32(0)) {
+ goto _exit_create_index
}
-
- _explainAppendTerm(tls, _pStr, _pIndex, int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X1), _j, _i, str(112400))
- _i = i32(1)
-_9:
- if ((_pLoop.X9) & uint32(i32(16))) == 0 {
- goto _10
+ if ((_pParse.X55) != 0) && (int32(_idxType) != i32(2)) {
+ goto _exit_create_index
}
-
- _explainAppendTerm(tls, _pStr, _pIndex, int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X2), _j, _i, str(112428))
-_10:
- _sqlite3StrAccumAppend(tls, _pStr, str(38624), i32(1))
-}
-
-func _explainIndexColumnName(tls *crt.TLS, _pIdx *XIndex, _i int32) (r0 *int8) { // sqlite3.c:126819:1
- _i = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i))))
- if _i != i32(-2) {
- goto _0
+ if i32(0) != _sqlite3ReadSchema(tls, _pParse) {
+ goto _exit_create_index
}
- return str(112556)
-
-_0:
- if _i != i32(-1) {
- goto _1
+ if _pTblName == nil {
+ goto _5
}
- return str(27392)
-
-_1:
- return (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1) + 16*uintptr(_i))).X0
-}
-
-func _explainAppendTerm(tls *crt.TLS, _pStr *XStrAccum, _pIdx *XIndex, _nTerm int32, _iTerm int32, _bAnd int32, _zOp *int8) { // sqlite3.c:126834:1
- var _i int32 // sqlite3.c:126842:7
- _ = _i
func() {
- if _nTerm < i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126844), unsafe.Pointer((*int8)(unsafe.Pointer(&_explainAppendTermØ00__func__Ø000))), unsafe.Pointer(str(112564)))
+ if _pName1 == nil || _pName2 == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112225)))
crt.X__builtin_abort(tls)
}
}()
- if _bAnd == 0 {
- goto _2
+ _iDb = _sqlite3TwoPartName(tls, _pParse, _pName1, _pName2, &_pName)
+ if _iDb < i32(0) {
+ goto _exit_create_index
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(112532), i32(5))
-_2:
- if _nTerm <= i32(1) {
- goto _3
+ func() {
+ if _pName == nil || (_pName.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102641), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112242)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
+ goto _13
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(112576), i32(1))
-_3:
- _i = i32(0)
-_4:
- if _i >= _nTerm {
- goto _7
+ _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTblName)
+ if (((_pName2.X1) == uint32(i32(0))) && (_pTab != nil)) && ((*XSchema)(_pTab.X20) == (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4)) {
+ _iDb = i32(1)
}
-
- if _i == 0 {
- goto _8
+_13:
+ _sqlite3FixInit(tls, &_sFix, _pParse, _iDb, str(112260), _pName)
+ if _sqlite3FixSrcList(tls, &_sFix, _pTblName) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102660), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(112580), i32(1))
-_8:
- _sqlite3StrAccumAppendAll(tls, _pStr, _explainIndexColumnName(tls, _pIdx, _iTerm+_i))
- _i += 1
- goto _4
-
-_7:
- if _nTerm <= i32(1) {
- goto _9
+ _pTab = _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTblName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))
+ func() {
+ if int32(_db.X17) != i32(0) && _pTab != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102663), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112266)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _pTab == nil {
+ goto _exit_create_index
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(38624), i32(1))
-_9:
- _sqlite3StrAccumAppend(tls, _pStr, _zOp, i32(1))
- if _nTerm <= i32(1) {
- goto _10
+ if (_iDb == i32(1)) && ((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) != (*XSchema)(_pTab.X20)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(112297), unsafe.Pointer(_pTab.X0))
+ goto _exit_create_index
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(112576), i32(1))
-_10:
- _i = i32(0)
-_11:
- if _i >= _nTerm {
- goto _14
+ if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
}
-
- if _i == 0 {
- goto _15
+ goto _25
+_5:
+ func() {
+ if _pName != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102673), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112347)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _pStart != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112356)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pTab = (*XTable)(_pParse.X63)
+ if _pTab == nil {
+ goto _exit_create_index
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(112580), i32(1))
-_15:
- _sqlite3StrAccumAppend(tls, _pStr, str(52028), i32(1))
- _i += 1
- goto _11
-
-_14:
- if _nTerm <= i32(1) {
- goto _16
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
+_25:
+ _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
+ func() {
+ if _pTab == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102681), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(43594)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pParse.X16) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112366)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((Xsqlite3_strnicmp(tls, _pTab.X0, str(111644), i32(7)) == i32(0)) && (int32((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == i32(0))) && (Xsqlite3_strnicmp(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X0))+1*uintptr(i32(7)))), str(112382), i32(9)) != i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(112392), unsafe.Pointer(_pTab.X0))
+ goto _exit_create_index
}
-
- _sqlite3StrAccumAppend(tls, _pStr, str(38624), i32(1))
-_16:
-}
-
-var _explainAppendTermØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_explainAppendTermØ00__func__Ø000[0], str(112584), 18)
-}
-
-func _sqlite3WhereCodeOneLoopStart(tls *crt.TLS, _pWInfo *XWhereInfo, _iLevel int32, _notReady uint64) (r0 uint64) { // sqlite3.c:127900:1
- var _j int32 // sqlite3.c:127905:7
- _ = _j
- var _k int32 // sqlite3.c:127905:10
- _ = _k
- var _iCur int32 // sqlite3.c:127906:7
- _ = _iCur
- var _addrNxt int32 // sqlite3.c:127907:7
- _ = _addrNxt
- var _omitTable int32 // sqlite3.c:127908:7
- _ = _omitTable
- var _bRev int32 // sqlite3.c:127909:7
- _ = _bRev
- var _pLevel *XWhereLevel // sqlite3.c:127910:14
- _ = _pLevel
- var _pLoop *XWhereLoop // sqlite3.c:127911:13
- _ = _pLoop
- var _pWC *XWhereClause // sqlite3.c:127912:15
- _ = _pWC
- var _pTerm *XWhereTerm // sqlite3.c:127913:13
- _ = _pTerm
- var _pParse *XParse // sqlite3.c:127914:9
- _ = _pParse
- var _db *Xsqlite3 // sqlite3.c:127915:11
- _ = _db
- var _v *TVdbe // sqlite3.c:127916:8
- _ = _v
- var _pTabItem *TSrcList_item // sqlite3.c:127917:23
- _ = _pTabItem
- var _addrBrk int32 // sqlite3.c:127918:7
- _ = _addrBrk
- var _addrHalt int32 // sqlite3.c:127919:7
- _ = _addrHalt
- var _addrCont int32 // sqlite3.c:127920:7
- _ = _addrCont
- var _iRowidReg int32 // sqlite3.c:127921:7
- _ = _iRowidReg
- var _iReleaseReg int32 // sqlite3.c:127922:7
- _ = _iReleaseReg
- var _pIdx *XIndex // sqlite3.c:127923:9
- _ = _pIdx
- var _loopAgain int32 // sqlite3.c:127924:7
- _ = _loopAgain
- var _3_regYield int32 // sqlite3.c:127970:9
- _ = _3_regYield
- var _4_iReg int32 // sqlite3.c:127983:9
- _ = _4_iReg
- var _4_addrNotFound int32 // sqlite3.c:127984:9
- _ = _4_addrNotFound
- var _4_nConstraint int32 // sqlite3.c:127985:9
- _ = _4_nConstraint
- var _4_iIn int32 // sqlite3.c:127986:9
- _ = _4_iIn
- var _5_iTarget int32 // sqlite3.c:127992:11
- _ = _5_iTarget
- var _7_pRight *XExpr // sqlite3.c:127999:14
- _ = _7_pRight
- var _10_pCompare *XExpr // sqlite3.c:128019:14
- _ = _10_pCompare
- var _10_pRight *XExpr // sqlite3.c:128020:14
- _ = _10_pRight
- var _10_pOp *XVdbeOp // sqlite3.c:128021:16
- _ = _10_pOp
- var _15_testOp int32 // sqlite3.c:128094:9
- _ = _15_testOp
- var _15_start int32 // sqlite3.c:128095:9
- _ = _15_start
- var _15_memEndValue int32 // sqlite3.c:128096:9
- _ = _15_memEndValue
- var _15_pStart *XWhereTerm // sqlite3.c:128097:15
- _ = _15_pStart
- var _15_pEnd *XWhereTerm // sqlite3.c:128097:24
- _ = _15_pEnd
- var _17_pX *XExpr // sqlite3.c:128112:12
- _ = _17_pX
- var _17_r1 int32 // sqlite3.c:128113:11
- _ = _17_r1
- var _17_rTemp int32 // sqlite3.c:128113:15
- _ = _17_rTemp
- var _17_op int32 // sqlite3.c:128114:11
- _ = _17_op
- var _17_aMoveOp [4]uint8 // sqlite3.c:128119:16
- _ = _17_aMoveOp
- var _21_pX *XExpr // sqlite3.c:128157:12
- _ = _21_pX
- var _26_nEq uint16 // sqlite3.c:128240:9
- _ = _26_nEq
- var _26_nBtm uint16 // sqlite3.c:128241:9
- _ = _26_nBtm
- var _26_nTop uint16 // sqlite3.c:128242:9
- _ = _26_nTop
- var _26_regBase int32 // sqlite3.c:128243:9
- _ = _26_regBase
- var _26_pRangeStart *XWhereTerm // sqlite3.c:128244:15
- _ = _26_pRangeStart
- var _26_pRangeEnd *XWhereTerm // sqlite3.c:128245:15
- _ = _26_pRangeEnd
- var _26_startEq int32 // sqlite3.c:128246:9
- _ = _26_startEq
- var _26_endEq int32 // sqlite3.c:128247:9
- _ = _26_endEq
- var _26_start_constraints int32 // sqlite3.c:128248:9
- _ = _26_start_constraints
- var _26_nConstraint int32 // sqlite3.c:128249:9
- _ = _26_nConstraint
- var _26_iIdxCur int32 // sqlite3.c:128250:9
- _ = _26_iIdxCur
- var _26_nExtraReg int32 // sqlite3.c:128251:9
- _ = _26_nExtraReg
- var _26_op int32 // sqlite3.c:128252:9
- _ = _26_op
- var _26_zStartAff *int8 // sqlite3.c:128253:10
- _ = _26_zStartAff
- var _26_zEndAff *int8 // sqlite3.c:128254:10
- _ = _26_zEndAff
- var _26_bSeekPastNull uint8 // sqlite3.c:128255:8
- _ = _26_bSeekPastNull
- var _26_bStopAtNull uint8 // sqlite3.c:128256:8
- _ = _26_bStopAtNull
- var _34_t *XWhereTerm // sqlite3.c:128329:22
- _ = _34_t
- var _35_t uint8 // sqlite3.c:128330:7
- _ = _35_t
- var _36_t uint8 // sqlite3.c:128331:7
- _ = _36_t
- var _38_pRight *XExpr // sqlite3.c:128357:12
- _ = _38_pRight
- var _46_pRight *XExpr // sqlite3.c:128406:12
- _ = _46_pRight
- var _58_pPk *XIndex // sqlite3.c:128468:13
- _ = _58_pPk
- var _65_pOrWc *XWhereClause // sqlite3.c:128548:17
- _ = _65_pOrWc
- var _65_pOrTab *XSrcList // sqlite3.c:128549:13
- _ = _65_pOrTab
- var _65_pCov *XIndex // sqlite3.c:128550:11
- _ = _65_pCov
- var _65_iCovCur int32 // sqlite3.c:128551:9
- _ = _65_iCovCur
- var _65_regReturn int32 // sqlite3.c:128553:9
- _ = _65_regReturn
- var _65_regRowset int32 // sqlite3.c:128554:9
- _ = _65_regRowset
- var _65_regRowid int32 // sqlite3.c:128555:9
- _ = _65_regRowid
- var _65_iLoopBody int32 // sqlite3.c:128556:9
- _ = _65_iLoopBody
- var _65_iRetInit int32 // sqlite3.c:128557:9
- _ = _65_iRetInit
- var _65_untestedTerms int32 // sqlite3.c:128558:9
- _ = _65_untestedTerms
- var _65_ii int32 // sqlite3.c:128559:9
- _ = _65_ii
- var _65_wctrlFlags uint16 // sqlite3.c:128560:9
- _ = _65_wctrlFlags
- var _65_pAndExpr *XExpr // sqlite3.c:128561:10
- _ = _65_pAndExpr
- var _65_pTab *XTable // sqlite3.c:128562:11
- _ = _65_pTab
- var _66_nNotReady int32 // sqlite3.c:128577:11
- _ = _66_nNotReady
- var _66_origSrc *TSrcList_item // sqlite3.c:128578:27
- _ = _66_origSrc
- var _71_pPk *XIndex // sqlite3.c:128611:15
- _ = _71_pPk
- var _72_iTerm int32 // sqlite3.c:128635:11
- _ = _72_iTerm
- var _73_pExpr *XExpr // sqlite3.c:128637:14
- _ = _73_pExpr
- var _75_pOrTerm *XWhereTerm // sqlite3.c:128659:17
- _ = _75_pOrTerm
- var _76_pSubWInfo *XWhereInfo // sqlite3.c:128661:19
- _ = _76_pSubWInfo
- var _76_pOrExpr *XExpr // sqlite3.c:128662:14
- _ = _76_pOrExpr
- var _76_jmp1 int32 // sqlite3.c:128663:13
- _ = _76_jmp1
- var _78_pSubLoop *XWhereLoop // sqlite3.c:128674:21
- _ = _78_pSubLoop
- var _78_addrExplain int32 // sqlite3.c:128675:15
- _ = _78_addrExplain
- var _79_r int32 // sqlite3.c:128686:17
- _ = _79_r
- var _79_iSet int32 // sqlite3.c:128687:17
- _ = _79_iSet
- var _81_pPk *XIndex // sqlite3.c:128694:21
- _ = _81_pPk
- var _81_nPk int32 // sqlite3.c:128695:19
- _ = _81_nPk
- var _81_iPk int32 // sqlite3.c:128696:19
- _ = _81_iPk
- var _82_iCol int32 // sqlite3.c:128701:21
- _ = _82_iCol
- var _92_pE *XExpr // sqlite3.c:128827:12
- _ = _92_pE
- var _92_skipLikeAddr int32 // sqlite3.c:128828:11
- _ = _92_skipLikeAddr
- var _96_x uint32 // sqlite3.c:128856:13
- _ = _96_x
- var _97_pE *XExpr // sqlite3.c:128878:10
- _ = _97_pE
- var _97_sEAlt XExpr // sqlite3.c:128878:15
- _ = _97_sEAlt
- var _97_pAlt *XWhereTerm // sqlite3.c:128879:15
- _ = _97_pAlt
- _iRowidReg = i32(0)
- _iReleaseReg = i32(0)
- _pIdx = nil
- _pParse = (*XParse)(_pWInfo.X0)
- _v = (*TVdbe)(_pParse.X2)
- _pWC = (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(76 /* X22 */)))
- _db = (*Xsqlite3)(_pParse.X0)
- _pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_iLevel)))
- _pLoop = (*XWhereLoop)(_pLevel.X18)
- _pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1)+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
- _iCur = _pTabItem.X11
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(68 /* X19 */))) = _notReady & (^_sqlite3WhereGetMask(tls, (*XWhereMaskSet)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(484 /* X23 */))), _iCur))
- _bRev = int32(((_pWInfo.X20) >> uint(_iLevel)) & uint64(i32(1)))
- _omitTable = bool2int((((_pLoop.X9) & uint32(i32(64))) != uint32(i32(0))) && ((int32(_pWInfo.X10) & i32(32)) == i32(0)))
- _addrBrk = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(12 /* X3 */))), store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(16 /* X4 */))), _sqlite3VdbeMakeLabel(tls, _v)))
- _addrCont = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(24 /* X6 */))), _sqlite3VdbeMakeLabel(tls, _v))
- if int32(_pLevel.X11) <= i32(0) || (int32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+68*uintptr(i32(0))))))+uintptr(36 /* X9 */))).X0)&i32(8)) == i32(0) {
- goto _2
+ if (*XSelect)(_pTab.X3) != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(112420))
+ goto _exit_create_index
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(0 /* X0 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _pLevel.X0)
- _sqlite3VdbeComment(tls, _v, str(112604))
-_2:
- _j = _iLevel
-_3:
- if _j <= i32(0) || ((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(_j))).X0) != i32(0) {
- goto _7
+ if (_pTab.X16) != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(112445))
+ goto _exit_create_index
}
-
- _j -= 1
- goto _3
-
-_7:
- _addrHalt = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_j))).X3
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _8
+ if _pName == nil {
+ goto _40
}
-
- _3_regYield = _pTabItem.X7
- _sqlite3VdbeAddOp3(tls, _v, i32(15), _3_regYield, i32(0), _pTabItem.X6)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _sqlite3VdbeAddOp2(tls, _v, i32(16), _3_regYield, _addrBrk)
- _sqlite3VdbeComment(tls, _v, str(111952), unsafe.Pointer((*XTable)(_pTabItem.X4).X0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(13))
- goto _9
-
-_8:
- if ((_pLoop.X9) & uint32(i32(1024))) == uint32(i32(0)) {
- goto _10
+ _zName = _sqlite3NameFromToken(tls, _db, _pName)
+ if _zName == nil {
+ goto _exit_create_index
}
-
- _4_nConstraint = int32(_pLoop.X10)
- _sqlite3ExprCachePush(tls, _pParse)
- _4_iReg = _sqlite3GetTempRange(tls, _pParse, _4_nConstraint+i32(2))
- _4_addrNotFound = _pLevel.X3
- _j = i32(0)
-_11:
- if _j >= _4_nConstraint {
- goto _14
+ func() {
+ if (_pName.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102721), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112479)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if i32(0) != _sqlite3CheckObjectName(tls, _pParse, _zName) {
+ goto _exit_create_index
}
-
- _5_iTarget = (_4_iReg + _j) + i32(2)
- _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
- if func() int32 {
- if _pTerm == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127994), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
- return i32(0)
- }() == 0 {
- goto _17
- }
-
- goto _12
-
-_17:
- if (int32(_pTerm.X4) & i32(1)) == 0 {
- goto _18
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
+ goto _45
}
-
- _codeEqualityTerm(tls, _pParse, _pTerm, _pLevel, _j, _bRev, _5_iTarget)
- _4_addrNotFound = _pLevel.X4
- goto _19
-
-_18:
- _7_pRight = (*XExpr)((*XExpr)(_pTerm.X0).X5)
- _codeExprOrVector(tls, _pParse, _7_pRight, _5_iTarget, i32(1))
-_19:
-_12:
- _j += 1
- goto _11
-
-_14:
- _sqlite3VdbeAddOp2(tls, _v, i32(56), (*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0, _4_iReg)
- _sqlite3VdbeAddOp2(tls, _v, i32(56), _4_nConstraint, _4_iReg+i32(1))
- _sqlite3VdbeAddOp4(tls, _v, i32(11), _iCur, _4_addrNotFound, _4_iReg, (*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4, func() int32 {
- if ((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X1) != 0 {
- return i32(-1)
- }
- return i32(-2)
- }())
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))))) + uintptr(4 /* X1 */))) = uint8(i32(0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _iCur
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(func() int32 {
- if (_pWInfo.X14) != 0 {
- return i32(164)
- }
- return i32(50)
- }())
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
- _4_iIn = (*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0
- _j = _4_nConstraint - i32(1)
-_24:
- if _j < i32(0) {
- goto _27
+ if _sqlite3FindTable(tls, _db, _zName, nil) != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(112491), unsafe.Pointer(_zName))
+ goto _exit_create_index
}
-
- _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
- if _j >= i32(16) || ((int32((*t64)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X3)>>uint(_j))&i32(1)) == 0 {
- goto _29
+_45:
+ if _sqlite3FindIndex(tls, _db, _zName, _pDb.X0) == nil {
+ goto _47
}
-
- _disableTerm(tls, _pLevel, _pTerm)
- goto _30
-
-_29:
- if (int32(_pTerm.X4) & i32(1)) == i32(0) {
- goto _31
+ if _ifNotExist == 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(112525), unsafe.Pointer(_zName))
+ goto _49
}
-
func() {
- if (*TInLoop)((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1) == nil && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128027), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112636)))
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102735), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112549)))
crt.X__builtin_abort(tls)
}
}()
- if (_db.X17) != 0 {
- goto _35
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
+_49:
+ goto _exit_create_index
+_47:
+ goto _52
+_40:
+ *func() *int32 { _20_pLoop = (*XIndex)(_pTab.X2); return &_20_n }() = i32(1)
+_53:
+ if _20_pLoop == nil {
+ goto _56
}
-
- func() {
- if _4_iIn <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128029), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112680)))
- crt.X__builtin_abort(tls)
- }
- }()
- _10_pOp = _sqlite3VdbeGetOp(tls, _v, (*TInLoop)(unsafe.Pointer(uintptr((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1)+12*uintptr(preInc1(&_4_iIn, -1)))).X1)
- func() {
- if int32(_10_pOp.X0) != i32(99) && int32(_10_pOp.X0) != i32(125) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128031), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112688)))
- crt.X__builtin_abort(tls)
+ *func() *int32 { _20_pLoop = (*XIndex)(_20_pLoop.X5); return &_20_n }() += 1
+ goto _53
+_56:
+ _zName = _sqlite3MPrintf(tls, _db, str(112564), unsafe.Pointer(_pTab.X0), _20_n)
+ if _zName == nil {
+ goto _exit_create_index
+ }
+ if (_pParse.X55) != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zName)) + 1*uintptr(i32(7)))) += 1
+ }
+_52:
+ _23_zDb = _pDb.X0
+ if _sqlite3AuthCheck(tls, _pParse, i32(18), func() *int8 {
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ return str(50007)
}
- }()
+ return str(50026)
+ }(), nil, _23_zDb) != 0 {
+ goto _exit_create_index
+ }
+ _i = i32(1)
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ _i = i32(3)
+ }
+ if _sqlite3AuthCheck(tls, _pParse, _i, _zName, _pTab.X0, _23_zDb) != 0 {
+ goto _exit_create_index
+ }
+ if _pList != nil {
+ goto _66
+ }
+ _sqlite3TokenInit(tls, &_26_prevCol, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(int32(_pTab.X11)-i32(1)))).X0)
+ _pList = _sqlite3ExprListAppend(tls, _pParse, nil, _sqlite3ExprAlloc(tls, _db, i32(27), &_26_prevCol, i32(0)))
+ if _pList == nil {
+ goto _exit_create_index
+ }
func() {
- if int32(_10_pOp.X0) == i32(99) && (_10_pOp.X5) != ((_4_iReg+_j)+i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128032), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112736)))
+ if (_pList.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102783), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112587)))
crt.X__builtin_abort(tls)
}
}()
+ _sqlite3ExprListSetSortOrder(tls, _pList, _sortOrder)
+ goto _70
+_66:
+ _sqlite3ExprListCheckLength(tls, _pParse, _pList, str(112260))
+_70:
+ _i = i32(0)
+_71:
+ if _i >= (_pList.X0) {
+ goto _74
+ }
+ _28_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
func() {
- if int32(_10_pOp.X0) == i32(125) && (_10_pOp.X4) != ((_4_iReg+_j)+i32(2)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128033), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112780)))
+ if _28_pExpr == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102794), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(43636)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp3(tls, _v, int32(_10_pOp.X0), _10_pOp.X3, _10_pOp.X4, _10_pOp.X5)
-_35:
- _10_pCompare = _sqlite3PExpr(tls, _pParse, i32(78), nil, nil)
- func() {
- if _10_pCompare == nil && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128041), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112824)))
- crt.X__builtin_abort(tls)
+ if int32(_28_pExpr.X0) == i32(94) {
+ {
+ p := &_nExtra
+ *p = (*p) + (i32(1) + _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pExpr)) + uintptr(8 /* X3 */)))))))
+ sink1 = *p
}
- }()
- if _10_pCompare == nil {
- goto _50
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pCompare)) + uintptr(12 /* X4 */))))) = (*XExpr)((*XExpr)(_pTerm.X0).X4)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pCompare)) + uintptr(16 /* X5 */))))) = store34(&_10_pRight, _sqlite3Expr(tls, _db, i32(157), nil))
- if _10_pRight == nil {
- goto _51
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pRight)) + uintptr(28 /* X8 */))) = (_4_iReg + _j) + i32(2)
- _sqlite3ExprIfFalse(tls, _pParse, _10_pCompare, _pLevel.X6, i32(0))
-_51:
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_10_pCompare)) + uintptr(12 /* X4 */))))) = nil
- _sqlite3ExprDelete(tls, _db, _10_pCompare)
-_50:
-_31:
-_30:
- _j -= 1
- goto _24
-
-_27:
- _sqlite3ExprCachePop(tls, _pParse)
- goto _52
-
-_10:
- if ((_pLoop.X9)&uint32(i32(256))) == uint32(i32(0)) || ((_pLoop.X9)&uint32(i32(5))) == uint32(i32(0)) {
- goto _54
- }
-
- func() {
- if int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128073), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112856)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(i32(0))))
- func() {
- if _pTerm == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128075), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112880)))
- crt.X__builtin_abort(tls)
+ _i += 1
+ goto _71
+_74:
+ _nName = _sqlite3Strlen30(tls, _zName)
+ _nExtraCol = func() int32 {
+ if _pPk != nil {
+ return int32(_pPk.X13)
}
+ return i32(1)
}()
+ _pIndex = _sqlite3AllocateIndexObject(tls, _db, int16((_pList.X0)+_nExtraCol), (_nName+_nExtra)+i32(1), &_zExtra)
+ if (_db.X17) != 0 {
+ goto _exit_create_index
+ }
func() {
- if (*XExpr)(_pTerm.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128076), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112892)))
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pIndex.X2))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102810), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112603)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _omitTable != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128077), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112908)))
+ if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pIndex.X8))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102811), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112645)))
crt.X__builtin_abort(tls)
}
}()
- _iReleaseReg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _iRowidReg = _codeEqualityTerm(tls, _pParse, _pTerm, _pLevel, i32(0), _bRev, _iReleaseReg)
- if _iRowidReg == _iReleaseReg {
- goto _63
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(0 /* X0 */))) = _zExtra
+ {
+ p := &_zExtra
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_nName+i32(1))))
+ sink0 = *p
}
-
- _sqlite3ReleaseTempReg(tls, _pParse, _iReleaseReg)
-_63:
- _addrNxt = _pLevel.X4
- _sqlite3VdbeAddOp3(tls, _v, i32(31), _iCur, _addrNxt, _iRowidReg)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _iRowidReg, i32(1))
- _sqlite3ExprCacheStore(tls, _pParse, _iCur, i32(-1), _iRowidReg)
- _sqlite3VdbeComment(tls, _v, str(97684))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(164))
- goto _64
-
-_54:
- if ((_pLoop.X9)&uint32(i32(256))) == uint32(i32(0)) || ((_pLoop.X9)&uint32(i32(2))) == uint32(i32(0)) {
- goto _66
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_pIndex.X0), (unsafe.Pointer)(_zName), uint32(_nName+i32(1)))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(12 /* X3 */))))) = _pTab
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(54 /* X15 */))) = uint8(_onError)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(bool2int(_onError != i32(0))), 8, 3)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(_idxType), 3, 0)
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(24 /* X6 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(50 /* X13 */))) = uint16(_pList.X0)
+ if _pPIWhere != nil {
+ _sqlite3ResolveSelfReference(tls, _pParse, _pTab, i32(2), _pPIWhere, nil)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(36 /* X9 */))))) = _pPIWhere
+ _pPIWhere = nil
}
-
- _15_testOp = i32(164)
- _15_memEndValue = i32(0)
func() {
- if _omitTable != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128099), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112908)))
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102826), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
- _j = i32(0)
- _15_pStart = store63(&_15_pEnd, nil)
- if ((_pLoop.X9) & uint32(i32(32))) == 0 {
- goto _69
+ if int32((*XSchema)(_pDb.X4).X7) >= i32(4) {
+ _sortOrderMask = i32(-1)
+ goto _89
}
-
- _15_pStart = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
-_69:
- if ((_pLoop.X9) & uint32(i32(16))) == 0 {
- goto _70
+ _sortOrderMask = i32(0)
+_89:
+ *func() **TExprList_item { _i = i32(0); return &_pListItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
+_90:
+ if _i >= (_pList.X0) {
+ goto _93
}
-
- _15_pEnd = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
-_70:
+ _sqlite3StringToId(tls, (*XExpr)(_pListItem.X0))
+ _sqlite3ResolveSelfReference(tls, _pParse, _pTab, i32(32), (*XExpr)(_pListItem.X0), nil)
+ if (_pParse.X16) != 0 {
+ goto _exit_create_index
+ }
+ _34_pCExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pListItem.X0))
+ if int32(_34_pCExpr.X0) == i32(152) {
+ goto _95
+ }
+ if _pTab == (*XTable)(_pParse.X63) {
+ _sqlite3ErrorMsg(tls, _pParse, str(112682))
+ goto _exit_create_index
+ }
+ if (*XExprList)(_pIndex.X10) != nil {
+ goto _97
+ }
+ _37_pCopy = _sqlite3ExprListDup(tls, _db, _pList, i32(0))
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(40 /* X10 */))))) = _37_pCopy
+ if (_db.X17) == 0 {
+ func() {
+ if _37_pCopy == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112743)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pListItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_37_pCopy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i)))
+ }
+_97:
+ _j = i32(-2)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(i32(-2))
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 8, 3)
+ goto _101
+_95:
+ _j = int32(_34_pCExpr.X9)
func() {
- if _15_pStart == nil && _15_pEnd == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128104), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112924)))
+ if _j > i32(32767) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102873), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112752)))
crt.X__builtin_abort(tls)
}
}()
- if _bRev == 0 {
- goto _74
+ if _j < i32(0) {
+ _j = int32(_pTab.X10)
+ goto _105
}
-
- _pTerm = _15_pStart
- _15_pStart = _15_pEnd
- _15_pEnd = _pTerm
-_74:
- if _15_pStart == nil {
- goto _75
+ if int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X3) == i32(0) {
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 8, 3)
}
-
- _17_aMoveOp = [4]uint8{u8(27), u8(25), u8(24), u8(26)}
- i32(0)
- i32(0)
- i32(0)
- func() {
- if (int32(_15_pStart.X3) & i32(0)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128129), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112948)))
- crt.X__builtin_abort(tls)
+_105:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(_j)
+_101:
+ _34_zColl = nil
+ if int32((*XExpr)(_pListItem.X0).X0) == i32(94) {
+ _34_zColl = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_pListItem.X0) + uintptr(8 /* X3 */)))))
+ _42_nColl = _sqlite3Strlen30(tls, _34_zColl) + i32(1)
+ func() {
+ if _nExtra < _42_nColl {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112762)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_34_zColl), uint32(_42_nColl))
+ _34_zColl = _zExtra
+ {
+ p := &_zExtra
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_42_nColl)))
+ sink0 = *p
}
- }()
- _17_pX = (*XExpr)(_15_pStart.X0)
- func() {
- if _17_pX == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(68168)))
- crt.X__builtin_abort(tls)
+ {
+ p := &_nExtra
+ *p = (*p) - _42_nColl
+ sink1 = *p
}
- }()
- if _sqlite3ExprIsVector(tls, (*XExpr)(_17_pX.X5)) == 0 {
- goto _80
+ goto _110
}
-
- _17_r1 = store1(&_17_rTemp, _sqlite3GetTempReg(tls, _pParse))
- _codeExprOrVector(tls, _pParse, (*XExpr)(_17_pX.X5), _17_r1, i32(1))
- _17_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_17_aMoveOp)) + 1*uintptr((int32(_17_pX.X0)-i32(79))|i32(1)))))
- goto _81
-
-_80:
- _17_r1 = _sqlite3ExprCodeTemp(tls, _pParse, (*XExpr)(_17_pX.X5), &_17_rTemp)
- _disableTerm(tls, _pLevel, _15_pStart)
- _17_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_17_aMoveOp)) + 1*uintptr(int32(_17_pX.X0)-i32(79)))))
-_81:
- _sqlite3VdbeAddOp3(tls, _v, _17_op, _iCur, _addrBrk, _17_r1)
- _sqlite3VdbeComment(tls, _v, str(97684))
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _17_r1, i32(1))
- _sqlite3ReleaseTempReg(tls, _pParse, _17_rTemp)
- goto _82
-
-_75:
- _sqlite3VdbeAddOp2(tls, _v, func() int32 {
- if _bRev != 0 {
- return i32(33)
- }
- return i32(37)
- }(), _iCur, _addrHalt)
-_82:
- if _15_pEnd == nil {
- goto _85
+ if _j >= i32(0) {
+ _34_zColl = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_j))).X2
}
-
- _21_pX = (*XExpr)(_15_pEnd.X0)
+_110:
+ if _34_zColl == nil {
+ _34_zColl = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+ }
+ if (((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0) && (_sqlite3LocateCollSeq(tls, _pParse, _34_zColl) == nil) {
+ goto _exit_create_index
+ }
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_i))) = _34_zColl
+ _34_requestedSortOrder = int32(_pListItem.X3) & _sortOrderMask
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X7)) + 1*uintptr(_i))) = uint8(_34_requestedSortOrder)
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pListItem }())) += uintptr(20)
+ goto _90
+_93:
+ if _pPk == nil {
+ goto _115
+ }
+ _j = i32(0)
+_116:
+ if _j >= int32(_pPk.X13) {
+ goto _119
+ }
+ _46_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_j))))
func() {
- if _21_pX == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(68168)))
+ if _46_x < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102910), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(109743)))
crt.X__builtin_abort(tls)
}
}()
+ if _hasColumn(tls, _pIndex.X1, int32(_pIndex.X13), _46_x) != 0 {
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(52 /* X14 */))) -= 1
+ goto _123
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(_46_x)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_i))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_j)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X7)) + 1*uintptr(_i))) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X7)) + 1*uintptr(_j)))
+ _i += 1
+_123:
+ _j += 1
+ goto _116
+_119:
func() {
- if (int32(_15_pEnd.X3) & i32(0)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112984)))
+ if _i != int32(_pIndex.X14) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102920), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112776)))
crt.X__builtin_abort(tls)
}
}()
- _15_memEndValue = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _codeExprOrVector(tls, _pParse, (*XExpr)(_21_pX.X5), _15_memEndValue, i32(1))
- if i32(0) != _sqlite3ExprIsVector(tls, (*XExpr)(_21_pX.X5)) || int32(_21_pX.X0) != i32(81) && int32(_21_pX.X0) != i32(79) {
- goto _92
- }
-
- _15_testOp = func() int32 {
- if _bRev != 0 {
- return i32(80)
- }
- return i32(82)
- }()
- goto _95
-
-_92:
- _15_testOp = func() int32 {
- if _bRev != 0 {
- return i32(81)
- }
- return i32(79)
- }()
-_95:
- if i32(0) != _sqlite3ExprIsVector(tls, (*XExpr)(_21_pX.X5)) {
- goto _98
+ goto _126
+_115:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(i32(-1))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_i))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+_126:
+ _sqlite3DefaultRowEst(tls, _pIndex)
+ if (*XTable)(_pParse.X63) == nil {
+ _estimateIndexWidth(tls, _pIndex)
}
-
- _disableTerm(tls, _pLevel, _15_pEnd)
-_98:
-_85:
- _15_start = _sqlite3VdbeCurrentAddr(tls, _v)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(func() int32 {
- if _bRev != 0 {
- return i32(6)
- }
- return i32(7)
- }())
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _iCur
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _15_start
func() {
- if int32(_pLevel.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128180), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113016)))
+ if ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) && int32(_pTab.X10) >= i32(0) && int32(_sqlite3ColumnOfIndex(tls, _pIndex, _pTab.X10)) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112795)))
crt.X__builtin_abort(tls)
}
}()
- if _15_testOp == i32(164) {
- goto _103
+ if _pTblName == nil || int32(_pIndex.X14) < int32(_pTab.X11) {
+ goto _133
}
-
- _iRowidReg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(125), _iCur, _iRowidReg)
- _sqlite3ExprCacheStore(tls, _pParse, _iCur, i32(-1), _iRowidReg)
- _sqlite3VdbeAddOp3(tls, _v, _15_testOp, _15_memEndValue, _addrBrk, _iRowidReg)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(83)))
-_103:
- goto _104
-
-_66:
- if ((_pLoop.X9) & uint32(i32(512))) == 0 {
- goto _105
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 32, 5)
+ _j = i32(0)
+_134:
+ if _j >= int32(_pTab.X11) {
+ goto _137
+ }
+ if _j == int32(_pTab.X10) {
+ goto _135
+ }
+ if int32(_sqlite3ColumnOfIndex(tls, _pIndex, int16(_j))) >= i32(0) {
+ goto _135
+ }
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 32, 5)
+ goto _137
+_135:
+ _j += 1
+ goto _134
+_137:
+_133:
+ if _pTab != (*XTable)(_pParse.X63) {
+ goto _140
+ }
+ _52_pIdx = (*XIndex)(_pTab.X2)
+_141:
+ if _52_pIdx == nil {
+ goto _144
}
-
- _26_nEq = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X0
- _26_nBtm = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X1
- _26_nTop = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X2
- _26_pRangeStart = nil
- _26_pRangeEnd = nil
- _26_nExtraReg = i32(0)
- _26_zEndAff = nil
- _26_bSeekPastNull = u8(0)
- _26_bStopAtNull = u8(0)
- _pIdx = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
- _26_iIdxCur = _pLevel.X2
func() {
- if int32(_26_nEq) < int32(_pLoop.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128260), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113032)))
+ if int32(_52_pIdx.X15) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102967), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112875)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*XExprList)(_pWInfo.X2) != nil && ((*XExprList)(_pWInfo.X2).X0) != i32(1) && (int32(_pWInfo.X10)&i32(1)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113052)))
+ if int32((uint32(_52_pIdx.X16)<>uint(i32(30))) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112895)))
crt.X__builtin_abort(tls)
}
}()
- if (int32(_pWInfo.X10)&i32(1)) == i32(0) || int32(_pWInfo.X12) <= i32(0) || int32(_pIdx.X13) <= int32(_26_nEq) {
- goto _114
- }
-
func() {
- if int32(_pLoop.X11) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128277), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113148)))
+ if int32(_pIndex.X15) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102969), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112932)))
crt.X__builtin_abort(tls)
}
}()
- _26_bSeekPastNull = uint8(i32(1))
- _26_nExtraReg = i32(1)
-_114:
- _j = int32(_26_nEq)
- if ((_pLoop.X9) & uint32(i32(32))) == 0 {
- goto _117
+ if int32(_52_pIdx.X13) != int32(_pIndex.X13) {
+ goto _142
+ }
+ _53_k = i32(0)
+_152:
+ if _53_k >= int32(_52_pIdx.X13) {
+ goto _155
}
-
- _26_pRangeStart = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
- _26_nExtraReg = func() int32 {
- if _26_nExtraReg > int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X1) {
- return _26_nExtraReg
- }
- return int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X1)
- }()
func() {
- if (int32(_26_pRangeStart.X3)&i32(256)) != i32(0) && ((_pLoop.X9)&uint32(i32(16))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128290), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113164)))
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx.X1)) + 2*uintptr(_53_k)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112954)))
crt.X__builtin_abort(tls)
}
}()
-_117:
- if ((_pLoop.X9) & uint32(i32(16))) == 0 {
- goto _123
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx.X1)) + 2*uintptr(_53_k)))) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_53_k)))) {
+ goto _155
}
-
- _26_pRangeEnd = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(postInc1(&_j, int32(1)))))
- _26_nExtraReg = func() int32 {
- if _26_nExtraReg > int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X2) {
- return _26_nExtraReg
- }
- return int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X2)
- }()
- if (int32(_26_pRangeEnd.X3) & i32(256)) == i32(0) {
- goto _126
+ _54_z1 = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx.X8)) + 4*uintptr(_53_k)))
+ _54_z2 = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_53_k)))
+ if _sqlite3StrICmp(tls, _54_z1, _54_z2) != 0 {
+ goto _155
}
-
+ _53_k += 1
+ goto _152
+_155:
+ if _53_k != int32(_52_pIdx.X13) {
+ goto _160
+ }
+ if int32(_52_pIdx.X15) == int32(_pIndex.X15) {
+ goto _161
+ }
+ if int32(_52_pIdx.X15) != i32(10) && int32(_pIndex.X15) != i32(10) {
+ _sqlite3ErrorMsg(tls, _pParse, str(112975), i32(0))
+ }
+ if int32(_52_pIdx.X15) == i32(10) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx)) + uintptr(54 /* X15 */))) = _pIndex.X15
+ }
+_161:
+ if int32(_idxType) == i32(2) {
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx))+uintptr(55 /* X16 */))), int8(_idxType), 3, 0)
+ }
+ goto _exit_create_index
+_160:
+_142:
+ _52_pIdx = (*XIndex)(_52_pIdx.X5)
+ goto _141
+_144:
+_140:
func() {
- if _26_pRangeStart == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128298), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113248)))
+ if (_pParse.X16) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103007), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(112366)))
crt.X__builtin_abort(tls)
}
}()
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
+ goto _168
+ }
func() {
- if (int32(_26_pRangeStart.X3) & i32(256)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128299), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113264)))
+ if (_pParse.X55) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103010), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(113017)))
crt.X__builtin_abort(tls)
}
}()
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(36 /* X9 */))) = uint32(preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), int32(_pLevel.X9))
- _sqlite3VdbeComment(tls, _v, str(113300))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(40 /* X10 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
func() {
- if (_bRev & i32(-2)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128308), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113320)))
+ if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pIndex.X6)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(113034)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(36 /* X9 */)))
- *p = (*p) << uint(i32(1))
- sink5 = *p
+ _59_p = (*XIndex)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_pIndex.X6)+uintptr(24 /* X3 */))), _pIndex.X0, (unsafe.Pointer)(_pIndex)))
+ if _59_p != nil {
+ func() {
+ if _59_p != _pIndex {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103015), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(113081)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3OomFault(tls, _db)
+ goto _exit_create_index
}
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(_bRev^bool2int(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_26_nEq)))) == i32(1)))
- sink5 = *p
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(2)
+ sink1 = *p
}
-_126:
- if _26_pRangeStart != nil {
- goto _133
+ if _pTblName != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(44 /* X11 */))) = (*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X0
}
-
- _j = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_26_nEq))))
- if (_j < i32(0) || int32((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pIdx.X3).X1)+16*uintptr(_j))).X3) != i32(0)) && _j != i32(-2) {
- goto _136
+ goto _177
+_168:
+ if ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) && _pTblName == nil {
+ goto _179
}
-
- _26_bSeekPastNull = uint8(i32(1))
-_136:
-_133:
-_123:
- func() {
- if _26_pRangeEnd != nil && (int32(_26_pRangeEnd.X3)&i32(0)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128320), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113336)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (int32(_26_nEq) >= int32(_pIdx.X13) || _bRev != bool2int(int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X7)) + 1*uintptr(_26_nEq)))) == i32(0))) && (_bRev == 0 || int32(_pIdx.X13) != int32(_26_nEq)) {
- goto _143
+ _62_iMem = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _62_v = _sqlite3GetVdbe(tls, _pParse)
+ if _62_v == nil {
+ goto _exit_create_index
}
-
- _34_t = _26_pRangeEnd
- _26_pRangeEnd = _26_pRangeStart
- _26_pRangeStart = _34_t
- _35_t = _26_bSeekPastNull
- _26_bSeekPastNull = _26_bStopAtNull
- _26_bStopAtNull = _35_t
- _36_t = uint8(_26_nBtm)
- _26_nBtm = _26_nTop
- _26_nTop = uint16(_36_t)
-_143:
- _26_regBase = _codeAllEqualityTerms(tls, _pParse, _pLevel, _bRev, _26_nExtraReg, &_26_zStartAff)
- func() {
- if _26_zStartAff != nil && _sqlite3Strlen30(tls, _26_zStartAff) < int32(_26_nEq) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128340), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113392)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _26_zStartAff == nil || _26_nTop == 0 {
- goto _148
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(44 /* X11 */))) = _sqlite3VdbeAddOp0(tls, _62_v, i32(164))
+ _sqlite3VdbeAddOp2(tls, _62_v, i32(136), _iDb, _62_iMem)
+ if _pStart == nil {
+ goto _181
}
-
- _26_zEndAff = _sqlite3DbStrDup(tls, _db, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_zStartAff))+1*uintptr(_26_nEq))))
-_148:
- _addrNxt = _pLevel.X4
- _26_startEq = bool2int((_26_pRangeStart == nil) || (int32(_26_pRangeStart.X4)&i32(40)) != 0)
- _26_endEq = bool2int((_26_pRangeEnd == nil) || (int32(_26_pRangeEnd.X4)&i32(40)) != 0)
- _26_start_constraints = bool2int((_26_pRangeStart != nil) || (int32(_26_nEq) > i32(0)))
- _26_nConstraint = int32(_26_nEq)
- if _26_pRangeStart == nil {
- goto _152
+ _63_n = int32(uint32(int32((uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(400 /* X51 */))).X0))-uintptr(unsafe.Pointer(_pName.X0)))/1)) + ((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(400 /* X51 */))).X1))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName.X0)) + 1*uintptr(_63_n-i32(1))))) == i32(59) {
+ _63_n -= 1
}
-
- _38_pRight = (*XExpr)((*XExpr)(_26_pRangeStart.X0).X5)
- _codeExprOrVector(tls, _pParse, _38_pRight, _26_regBase+int32(_26_nEq), int32(_26_nBtm))
- _whereLikeOptimizationStringFixup(tls, _v, _pLevel, _26_pRangeStart)
- if (int32(_26_pRangeStart.X3)&i32(0)) != i32(0) || _sqlite3ExprCanBeNull(tls, _38_pRight) == 0 {
- goto _154
+ _62_zStmt = _sqlite3MPrintf(tls, _db, str(113091), unsafe.Pointer(func() *int8 {
+ if _onError == i32(0) {
+ return str(0)
+ }
+ return str(113111)
+ }()), _63_n, unsafe.Pointer(_pName.X0))
+ goto _185
+_181:
+ _62_zStmt = nil
+_185:
+ _sqlite3NestedParse(tls, _pParse, str(113119), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(50026)), unsafe.Pointer(_pIndex.X0), unsafe.Pointer(_pTab.X0), _62_iMem, unsafe.Pointer(_62_zStmt))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_62_zStmt))
+ if _pTblName != nil {
+ _sqlite3RefillIndex(tls, _pParse, _pIndex, _62_iMem)
+ _sqlite3ChangeCookie(tls, _pParse, _iDb)
+ _sqlite3VdbeAddParseSchemaOp(tls, _62_v, _iDb, _sqlite3MPrintf(tls, _db, str(113167), unsafe.Pointer(_pIndex.X0)))
+ _sqlite3VdbeAddOp0(tls, _62_v, i32(153))
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(75), _26_regBase+int32(_26_nEq), _addrNxt)
-_154:
- if _26_zStartAff == nil {
- goto _155
+ _sqlite3VdbeJumpHere(tls, _62_v, _pIndex.X11)
+_179:
+_177:
+ if ((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == 0 && _pTblName != nil {
+ goto _188
}
-
- _updateRangeAffinityStr(tls, _38_pRight, int32(_26_nBtm), (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_26_zStartAff))+1*uintptr(_26_nEq))))
-_155:
- {
- p := &_26_nConstraint
- *p = (*p) + int32(_26_nBtm)
- sink1 = *p
+ if ((_onError != i32(5)) || ((*XIndex)(_pTab.X2) == nil)) || (int32((*XIndex)(_pTab.X2).X15) == i32(5)) {
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(20 /* X5 */))))) = (*XIndex)(_pTab.X2)
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(8 /* X2 */))))) = _pIndex
+ goto _192
}
- if _sqlite3ExprIsVector(tls, _38_pRight) != i32(0) {
- goto _156
+ _68_pOther = (*XIndex)(_pTab.X2)
+_193:
+ if ((*XIndex)(_68_pOther.X5) != nil) && (int32((*XIndex)(_68_pOther.X5).X15) != i32(5)) {
+ _68_pOther = (*XIndex)(_68_pOther.X5)
+ goto _193
}
-
- _disableTerm(tls, _pLevel, _26_pRangeStart)
- goto _157
-
-_156:
- _26_startEq = i32(1)
-_157:
- _26_bSeekPastNull = uint8(i32(0))
- goto _158
-
-_152:
- if _26_bSeekPastNull == 0 {
- goto _159
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(20 /* X5 */))))) = (*XIndex)(_68_pOther.X5)
+ *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_68_pOther)) + uintptr(20 /* X5 */))))) = _pIndex
+_192:
+ _pIndex = nil
+_188:
+_exit_create_index:
+ if _pIndex != nil {
+ _freeIndex(tls, _db, _pIndex)
}
+ _sqlite3ExprDelete(tls, _db, _pPIWhere)
+ _sqlite3ExprListDelete(tls, _db, _pList)
+ _sqlite3SrcListDelete(tls, _db, _pTblName)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName))
+ _ = _sFix
+ _ = _26_prevCol
+}
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _26_regBase+int32(_26_nEq))
- _26_nConstraint += 1
- _26_startEq = i32(0)
- _26_start_constraints = i32(1)
-_159:
-_158:
- _codeApplyAffinity(tls, _pParse, _26_regBase, _26_nConstraint-int32(_26_bSeekPastNull), _26_zStartAff)
- if int32(_pLoop.X11) <= i32(0) || _26_nConstraint != int32(_pLoop.X11) {
- goto _161
- }
+var _sqlite3CreateIndexØ00__func__Ø000 [19]int8
- goto _162
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3CreateIndexØ00__func__Ø000[0], str(113194), 19)
+}
-_161:
- _26_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aStartOpØ001)) + 1*uintptr(((_26_start_constraints<a[0].pTab Pointer to the Table object
+// pSrc->a[0].pIndex Pointer to the INDEXED BY index, if there is one
+//
+func _sqlite3SrcListLookup(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList) (r0 *XTable) {
+ var _pTab *XTable
+ var _pItem *TSrcList_item
+ _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc)) + uintptr(8 /* X2 */)))))
func() {
- if _26_op == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128390), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113440)))
+ if _pItem == nil || (_pSrc.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListLookupØ00__func__Ø000))), unsafe.Pointer(str(113213)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp4Int(tls, _v, _26_op, _26_iIdxCur, _addrNxt, _26_regBase, _26_nConstraint)
-_162:
- _26_nConstraint = int32(_26_nEq)
- if _26_pRangeEnd == nil {
- goto _165
+ _pTab = _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), _pItem)
+ _sqlite3DeleteTable(tls, (*Xsqlite3)(_pParse.X0), (*XTable)(_pItem.X4))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(16 /* X4 */))))) = _pTab
+ if _pTab != nil {
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(32 /* X8 */))) += 1
}
-
- _46_pRight = (*XExpr)((*XExpr)(_26_pRangeEnd.X0).X5)
- _sqlite3ExprCacheRemove(tls, _pParse, _26_regBase+int32(_26_nEq), i32(1))
- _codeExprOrVector(tls, _pParse, _46_pRight, _26_regBase+int32(_26_nEq), int32(_26_nTop))
- _whereLikeOptimizationStringFixup(tls, _v, _pLevel, _26_pRangeEnd)
- if (int32(_26_pRangeEnd.X3)&i32(0)) != i32(0) || _sqlite3ExprCanBeNull(tls, _46_pRight) == 0 {
- goto _167
+ if _sqlite3IndexedByLookup(tls, _pParse, _pItem) != 0 {
+ _pTab = nil
}
+ return _pTab
+}
- _sqlite3VdbeAddOp2(tls, _v, i32(75), _26_regBase+int32(_26_nEq), _addrNxt)
-_167:
- if _26_zEndAff == nil {
- goto _168
- }
+var _sqlite3SrcListLookupØ00__func__Ø000 [21]int8
- _updateRangeAffinityStr(tls, _46_pRight, int32(_26_nTop), _26_zEndAff)
- _codeApplyAffinity(tls, _pParse, _26_regBase+int32(_26_nEq), int32(_26_nTop), _26_zEndAff)
- goto _169
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3SrcListLookupØ00__func__Ø000[0], str(113236), 21)
+}
-_168:
+// Initialize a DbFixer structure. This routine must be called prior
+// to passing the structure to one of the sqliteFixAAAA() routines below.
+func _sqlite3FixInit(tls *crt.TLS, _pFix *XDbFixer, _pParse *XParse, _iDb int32, _zType *int8, _pName *XToken) {
+ var _db *Xsqlite3
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128420), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(43572)))
+ if (_db.X5) <= _iDb {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FixInitØ00__func__Ø000))), unsafe.Pointer(str(113257)))
crt.X__builtin_abort(tls)
}
}()
-_169:
- {
- p := &_26_nConstraint
- *p = (*p) + int32(_26_nTop)
- sink1 = *p
- }
- if _sqlite3ExprIsVector(tls, _46_pRight) != i32(0) {
- goto _172
- }
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(12 /* X3 */))) = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(4 /* X1 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(16 /* X4 */))) = _zType
+ *(**XToken)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(20 /* X5 */))))) = _pName
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(8 /* X2 */))) = bool2int(_iDb == i32(1))
+}
- _disableTerm(tls, _pLevel, _26_pRangeEnd)
- goto _173
+var _sqlite3FixInitØ00__func__Ø000 [15]int8
-_172:
- _26_endEq = i32(1)
-_173:
- goto _174
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FixInitØ00__func__Ø000[0], str(113269), 15)
+}
-_165:
- if _26_bStopAtNull == 0 {
- goto _175
+// The following set of routines walk through the parse tree and assign
+// a specific database to all table references where the database name
+// was left unspecified in the original SQL statement. The pFix structure
+// must have been initialized by a prior call to sqlite3FixInit().
+//
+// These routines are used to make sure that an index, trigger, or
+// view in one database does not refer to objects in a different database.
+// (Exception: indices, triggers, and views in the TEMP database are
+// allowed to refer to anything.) If a reference is explicitly made
+// to an object in a different database, an error message is added to
+// pParse->zErrMsg and these routines return non-zero. If everything
+// checks out, these routines return 0.
+func _sqlite3FixSrcList(tls *crt.TLS, _pFix *XDbFixer, _pList *XSrcList) (r0 int32) {
+ var _i int32
+ var _zDb *int8
+ var _pItem *TSrcList_item
+ if func() int32 {
+ if _pList == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99301), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FixSrcListØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ return i32(0)
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _26_regBase+int32(_26_nEq))
- _26_endEq = i32(0)
- _26_nConstraint += 1
-_175:
-_174:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_26_zStartAff))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_26_zEndAff))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
- if _26_nConstraint == 0 {
- goto _176
+ _zDb = _pFix.X3
+ *func() **TSrcList_item { _i = i32(0); return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
+_3:
+ if _i >= (_pList.X0) {
+ goto _6
}
-
- _26_op = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aEndOpØ002)) + 1*uintptr((_bRev*i32(2))+_26_endEq))))
- _sqlite3VdbeAddOp4Int(tls, _v, _26_op, _26_iIdxCur, _addrNxt, _26_regBase, _26_nConstraint)
-_176:
- if _omitTable == 0 {
- goto _177
+ if (_pFix.X2) != i32(0) {
+ goto _7
}
-
- goto _178
-
-_177:
- if (((*XTable)(_pIdx.X3).X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _179
+ if ((_pItem.X1) != nil) && _sqlite3StrICmp(tls, _pItem.X1, _zDb) != 0 {
+ _sqlite3ErrorMsg(tls, (*XParse)(_pFix.X0), str(113284), unsafe.Pointer(_pFix.X4), unsafe.Pointer((*XToken)(_pFix.X5)), unsafe.Pointer(_pItem.X1))
+ return i32(1)
}
-
- if (int32(_pWInfo.X10)&i32(1024)) == 0 && ((int32(_pWInfo.X10)&i32(4096)) == 0 || int32(_pWInfo.X14) != i32(1)) {
- goto _182
+ _sqlite3DbFree(tls, (*Xsqlite3)((*XParse)(_pFix.X0).X0), (unsafe.Pointer)(_pItem.X1))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(4 /* X1 */))) = nil
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(0 /* X0 */))))) = (*XSchema)(_pFix.X1)
+_7:
+ if _sqlite3FixSelect(tls, _pFix, (*XSelect)(_pItem.X5)) != 0 {
+ return i32(1)
}
-
- _iRowidReg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(131), _26_iIdxCur, _iRowidReg)
- _sqlite3ExprCacheStore(tls, _pParse, _iCur, i32(-1), _iRowidReg)
- _sqlite3VdbeAddOp3(tls, _v, i32(32), _iCur, i32(0), _iRowidReg)
- goto _183
-
-_182:
- _codeDeferredSeek(tls, _pWInfo, _pIdx, _iCur, _26_iIdxCur)
-_183:
- goto _184
-
-_179:
- if _iCur == _26_iIdxCur {
- goto _185
+ if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pItem.X12)) != 0 {
+ return i32(1)
}
+ *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pItem }())) += uintptr(68)
+ goto _3
+_6:
+ return i32(0)
+}
- _58_pPk = _sqlite3PrimaryKeyIndex(tls, (*XTable)(_pIdx.X3))
- _iRowidReg = _sqlite3GetTempRange(tls, _pParse, int32(_58_pPk.X13))
- _j = i32(0)
-_186:
- if _j >= int32(_58_pPk.X13) {
- goto _189
- }
+var _sqlite3FixSrcListØ00__func__Ø000 [18]int8
- _k = int32(_sqlite3ColumnOfIndex(tls, _pIdx, *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_58_pPk.X1)) + 2*uintptr(_j)))))
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _26_iIdxCur, _k, _iRowidReg+_j)
- _j += 1
- goto _186
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FixSrcListØ00__func__Ø000[0], str(113330), 18)
+}
-_189:
- _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iCur, _addrCont, _iRowidReg, int32(_58_pPk.X13))
-_185:
-_184:
-_178:
- _whereIndexExprTrans(tls, _pIdx, _iCur, _26_iIdxCur, _pWInfo)
- if ((_pLoop.X9) & uint32(i32(4096))) == 0 {
- goto _190
+func _sqlite3FixSelect(tls *crt.TLS, _pFix *XDbFixer, _pSelect *XSelect) (r0 int32) {
+_0:
+ if _pSelect == nil {
+ goto _1
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(164))
- goto _191
-
-_190:
- if _bRev == 0 {
- goto _192
+ if _sqlite3FixExprList(tls, _pFix, (*XExprList)(_pSelect.X0)) != 0 {
+ return i32(1)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(6))
- goto _193
-
-_192:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(7))
-_193:
-_191:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _26_iIdxCur
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(46 /* X13 */))) = uint8(func() int32 {
- if ((_pLoop.X9) & uint32(i32(65536))) != uint32(i32(0)) {
- return i32(1)
- }
- return i32(0)
- }())
- if ((_pLoop.X9) & uint32(i32(15))) != uint32(i32(0)) {
- goto _196
+ if _sqlite3FixSrcList(tls, _pFix, (*XSrcList)(_pSelect.X8)) != 0 {
+ return i32(1)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(47 /* X14 */))) = uint8(i32(1))
- goto _197
-
-_196:
- func() {
- if int32(_pLevel.X14) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128498), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113016)))
- crt.X__builtin_abort(tls)
- }
- }()
-_197:
- if _omitTable == 0 {
- goto _200
+ if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X9)) != 0 {
+ return i32(1)
}
-
- _pIdx = nil
-_200:
- goto _201
-
-_105:
- if ((_pLoop.X9) & uint32(i32(8192))) == 0 {
- goto _202
+ if _sqlite3FixExprList(tls, _pFix, (*XExprList)(_pSelect.X10)) != 0 {
+ return i32(1)
}
-
- _65_pCov = nil
- _65_iCovCur = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _65_regReturn = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _65_regRowset = i32(0)
- _65_regRowid = i32(0)
- _65_iLoopBody = _sqlite3VdbeMakeLabel(tls, _v)
- _65_untestedTerms = i32(0)
- _65_pAndExpr = nil
- _65_pTab = (*XTable)(_pTabItem.X4)
- _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(i32(0))))
- func() {
- if _pTerm == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128565), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(112880)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32(_pTerm.X4) & i32(512)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128566), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113448)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (int32(_pTerm.X3) & i32(16)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128567), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113476)))
- crt.X__builtin_abort(tls)
- }
- }()
- _65_pOrWc = (*XWhereClause)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */)))))) + uintptr(0 /* X0 */)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(52))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _65_regReturn
- if int32(_pWInfo.X11) <= i32(1) {
- goto _209
+ if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X11)) != 0 {
+ return i32(1)
}
-
- _66_nNotReady = (int32(_pWInfo.X11) - _iLevel) - i32(1)
- _65_pOrTab = (*XSrcList)(_sqlite3DbMallocRaw(tls, _db, uint64(u32(76)+(uint32(_66_nNotReady)*u32(68)))))
- if _65_pOrTab != nil {
- goto _210
+ if _sqlite3FixExprList(tls, _pFix, (*XExprList)(_pSelect.X12)) != 0 {
+ return i32(1)
}
- return _notReady
-
-_210:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab)) + uintptr(4 /* X1 */))) = uint32(uint8(_66_nNotReady + i32(1)))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab)) + uintptr(0 /* X0 */))) = int32(_65_pOrTab.X1)
- crt.Xmemcpy(tls, (unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab))+uintptr(8 /* X2 */)))), (unsafe.Pointer)(_pTabItem), u32(68))
- _66_origSrc = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pWInfo.X1) + uintptr(8 /* X2 */)))))
- _k = i32(1)
-_211:
- if _k > _66_nNotReady {
- goto _214
+ if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X15)) != 0 {
+ return i32(1)
}
-
- crt.Xmemcpy(tls, (unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pOrTab))+uintptr(8 /* X2 */)))))+68*uintptr(_k)))), (unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_66_origSrc))+68*uintptr((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+76*uintptr(_k))).X11)))), u32(68))
- _k += 1
- goto _211
-
-_214:
- goto _215
-
-_209:
- _65_pOrTab = (*XSrcList)(_pWInfo.X1)
-_215:
- if (int32(_pWInfo.X10) & i32(16)) != i32(0) {
- goto _216
+ if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X16)) != 0 {
+ return i32(1)
}
+ _pSelect = (*XSelect)(_pSelect.X13)
+ goto _0
+_1:
+ return i32(0)
+}
- if ((_65_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _217
+func _sqlite3FixExprList(tls *crt.TLS, _pFix *XDbFixer, _pList *XExprList) (r0 int32) {
+ var _i int32
+ var _pItem *TExprList_item
+ if _pList == nil {
+ return i32(0)
}
-
- _65_regRowset = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _65_regRowset)
- goto _218
-
-_217:
- _71_pPk = _sqlite3PrimaryKeyIndex(tls, _65_pTab)
- _65_regRowset = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _sqlite3VdbeAddOp2(tls, _v, i32(110), _65_regRowset, int32(_71_pPk.X13))
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _71_pPk)
-_218:
- _65_regRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
-_216:
- _65_iRetInit = _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _65_regReturn)
- if (_pWC.X3) <= i32(1) {
- goto _219
+ *func() **TExprList_item { _i = i32(0); return &_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
+_1:
+ if _i >= (_pList.X0) {
+ goto _4
}
-
- _72_iTerm = i32(0)
-_220:
- if _72_iTerm >= (_pWC.X3) {
- goto _223
+ if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pItem.X0)) != 0 {
+ return i32(1)
}
+ *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
+ goto _1
+_4:
+ return i32(0)
+}
- _73_pExpr = (*XExpr)((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5) + 48*uintptr(_72_iTerm))).X0)
- if (*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_72_iTerm))) != _pTerm {
- goto _224
+func _sqlite3FixExpr(tls *crt.TLS, _pFix *XDbFixer, _pExpr *XExpr) (r0 int32) {
+_0:
+ if _pExpr == nil {
+ goto _1
}
-
- goto _221
-
-_224:
- if ((_73_pExpr.X2) & uint32(i32(1))) == uint32(i32(0)) {
- goto _225
+ if int32(_pExpr.X0) != i32(135) {
+ goto _2
}
-
- goto _221
-
-_225:
- if (int32((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_72_iTerm))).X3) & i32(6)) == i32(0) {
- goto _226
+ if ((*t21)(unsafe.Pointer(uintptr((*XParse)(_pFix.X0).X0) + uintptr(144 /* X33 */))).X2) != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
+ goto _4
}
+ _sqlite3ErrorMsg(tls, (*XParse)(_pFix.X0), str(113348), unsafe.Pointer(_pFix.X4))
+ return i32(1)
- goto _221
-
-_226:
- if (int32((*XWhereTerm)(unsafe.Pointer(uintptr(_pWC.X5)+48*uintptr(_72_iTerm))).X4) & i32(8191)) != i32(0) {
- goto _227
+_4:
+_2:
+ if ((_pExpr.X2) & uint32(i32(8404992))) != uint32(i32(0)) {
+ goto _1
}
-
- goto _221
-
-_227:
- _73_pExpr = _sqlite3ExprDup(tls, _db, _73_pExpr, i32(0))
- _65_pAndExpr = _sqlite3ExprAnd(tls, _db, _65_pAndExpr, _73_pExpr)
-_221:
- _72_iTerm += 1
- goto _220
-
-_223:
- if _65_pAndExpr == nil {
- goto _228
+ if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
+ goto _6
}
-
- _65_pAndExpr = _sqlite3PExpr(tls, _pParse, i32(327), nil, _65_pAndExpr)
-_228:
-_219:
- _65_wctrlFlags = uint16(i32(32) | (int32(_pWInfo.X10) & i32(1024)))
- _65_ii = i32(0)
-_229:
- if _65_ii >= (_65_pOrWc.X3) {
- goto _232
+ if _sqlite3FixSelect(tls, _pFix, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) != 0 {
+ return i32(1)
}
-
- _75_pOrTerm = (*XWhereTerm)(unsafe.Pointer(uintptr(_65_pOrWc.X5) + 48*uintptr(_65_ii)))
- if (_75_pOrTerm.X8) != _iCur && (int32(_75_pOrTerm.X4)&i32(1024)) == i32(0) {
- goto _234
+ goto _8
+_6:
+ if _sqlite3FixExprList(tls, _pFix, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) != 0 {
+ return i32(1)
}
-
- _76_pOrExpr = (*XExpr)(_75_pOrTerm.X0)
- _76_jmp1 = i32(0)
- if _65_pAndExpr == nil || ((_76_pOrExpr.X2)&uint32(i32(1))) != uint32(i32(0)) {
- goto _236
+_8:
+ if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pExpr.X5)) != 0 {
+ return i32(1)
}
+ _pExpr = (*XExpr)(_pExpr.X4)
+ goto _0
+_1:
+ return i32(0)
+}
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pAndExpr)) + uintptr(12 /* X4 */))))) = _76_pOrExpr
- _76_pOrExpr = _65_pAndExpr
-_236:
- _76_pSubWInfo = _sqlite3WhereBegin(tls, _pParse, _65_pOrTab, _76_pOrExpr, nil, nil, _65_wctrlFlags, _65_iCovCur)
+// Set the sort order for the last element on the given ExprList.
+func _sqlite3ExprListSetSortOrder(tls *crt.TLS, _p *XExprList, _iSortOrder int32) {
+ if _p == nil {
+ return
+ }
+ i32(0)
func() {
- if _76_pSubWInfo == nil && (_pParse.X16) == 0 && (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128672), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113512)))
+ if (_p.X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92474), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSortOrderØ00__func__Ø000))), unsafe.Pointer(str(113372)))
crt.X__builtin_abort(tls)
}
}()
- if _76_pSubWInfo == nil {
- goto _241
+ if _iSortOrder < i32(0) {
+ func() {
+ if int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr((_p.X0)-i32(1)))).X3) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92476), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSortOrderØ00__func__Ø000))), unsafe.Pointer(str(113383)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return
}
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr((_p.X0)-i32(1)))))) + uintptr(12 /* X3 */))) = uint8(_iSortOrder)
+}
- _78_addrExplain = _sqlite3WhereExplainOneScan(tls, _pParse, _65_pOrTab, (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_76_pSubWInfo))+uintptr(744 /* X24 */)))))+76*uintptr(i32(0)))), _iLevel, int32(_pLevel.X11), uint16(i32(0)))
+var _sqlite3ExprListSetSortOrderØ00__func__Ø000 [28]int8
- if (int32(_pWInfo.X10) & i32(16)) != i32(0) {
- goto _242
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprListSetSortOrderØ00__func__Ø000[0], str(113425), 28)
+}
+
+// If the expression list pEList contains more than iLimit elements,
+// leave an error message in pParse.
+func _sqlite3ExprListCheckLength(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _zObject *int8) {
+ var _mx int32
+ _mx = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))
+ if (_pEList != nil) && ((_pEList.X0) > _mx) {
+ _sqlite3ErrorMsg(tls, _pParse, str(113453), unsafe.Pointer(_zObject))
}
+}
- _79_iSet = func() int32 {
- if _65_ii == ((_65_pOrWc.X3) - i32(1)) {
- return i32(-1)
+// Resolve names in expressions that can only reference a single table:
+//
+// * CHECK constraints
+// * WHERE clauses on partial indices
+//
+// The Expr.iTable value for Expr.op==TK_COLUMN nodes of the expression
+// is set to -1 and the Expr.iColumn value is set to the column number.
+//
+// Any errors cause an error message to be set in pParse.
+func _sqlite3ResolveSelfReference(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _type int32, _pExpr *XExpr, _pList *XExprList) {
+ var _sSrc XSrcList
+ var _sNC XNameContext
+ func() {
+ if _type != i32(4) && _type != i32(2) && _type != i32(32) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(90883), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResolveSelfReferenceØ00__func__Ø000))), unsafe.Pointer(str(113476)))
+ crt.X__builtin_abort(tls)
}
- return _65_ii
}()
- if ((_65_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _245
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sSrc), i32(0), u32(76))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc)) + uintptr(0 /* X0 */))) = i32(1)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(8 /* X2 */))) = _pTab.X0
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(16 /* X4 */))))) = _pTab
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(40 /* X11 */))) = i32(-1)
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = &_sSrc
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */))) = uint16(_type)
+ if _sqlite3ResolveExprNames(tls, &_sNC, _pExpr) != 0 {
+ return
}
-
- _79_r = _sqlite3ExprCodeGetColumn(tls, _pParse, _65_pTab, i32(-1), _iCur, _65_regRowid, uint8(i32(0)))
- _76_jmp1 = _sqlite3VdbeAddOp4Int(tls, _v, i32(43), _65_regRowset, i32(0), _79_r, _79_iSet)
- goto _246
-
-_245:
- _81_pPk = _sqlite3PrimaryKeyIndex(tls, _65_pTab)
- _81_nPk = int32(_81_pPk.X13)
- _79_r = _sqlite3GetTempRange(tls, _pParse, _81_nPk)
- _81_iPk = i32(0)
-_247:
- if _81_iPk >= _81_nPk {
- goto _250
+ if _pList != nil {
+ _sqlite3ResolveExprListNames(tls, &_sNC, _pList)
}
+ _ = _sSrc
+ _ = _sNC
+}
- _82_iCol = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_81_pPk.X1)) + 2*uintptr(_81_iPk))))
- _sqlite3ExprCodeGetColumnToReg(tls, _pParse, _65_pTab, _82_iCol, _iCur, _79_r+_81_iPk)
- _81_iPk += 1
- goto _247
+var _sqlite3ResolveSelfReferenceØ00__func__Ø000 [28]int8
-_250:
- if _79_iSet == 0 {
- goto _251
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ResolveSelfReferenceØ00__func__Ø000[0], str(113533), 28)
+}
- _76_jmp1 = _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _65_regRowset, i32(0), _79_r, _81_nPk)
-_251:
- if _79_iSet < i32(0) {
- goto _252
+// Backwards Compatibility Hack:
+//
+// Historical versions of SQLite accepted strings as column names in
+// indexes and PRIMARY KEY constraints and in UNIQUE constraints. Example:
+//
+// CREATE TABLE xyz(a,b,c,d,e,PRIMARY KEY('a'),UNIQUE('b','c' COLLATE trim)
+// CREATE INDEX abc ON xyz('c','d' DESC,'e' COLLATE nocase DESC);
+//
+// This is goofy. But to preserve backwards compatibility we continue to
+// accept it. This routine does the necessary conversion. It converts
+// the expression given in its argument from a TK_STRING into a TK_ID
+// if the expression is just a TK_STRING with an optional COLLATE clause.
+// If the epxression is anything other than TK_STRING, the expression is
+// unchanged.
+func _sqlite3StringToId(tls *crt.TLS, _p *XExpr) {
+ if int32(_p.X0) == i32(97) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(i32(27))
+ goto _1
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _79_r, _81_nPk, _65_regRowid)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _65_regRowset, _65_regRowid, _79_r, _81_nPk)
- if _79_iSet == 0 {
- goto _253
+ if (int32(_p.X0) == i32(94)) && (int32((*XExpr)(_p.X4).X0) == i32(97)) {
+ *(*uint8)(unsafe.Pointer(uintptr(_p.X4) + uintptr(0 /* X0 */))) = uint8(i32(27))
}
+_1:
+}
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
-_253:
-_252:
- _sqlite3ReleaseTempRange(tls, _pParse, _79_r, _81_nPk)
-_246:
-_242:
- _sqlite3VdbeAddOp2(tls, _v, i32(14), _65_regReturn, _65_iLoopBody)
- if _76_jmp1 == 0 {
- goto _254
+// Return true if value x is found any of the first nCol entries of aiCol[]
+func _hasColumn(tls *crt.TLS, _aiCol *int16, _nCol int32, _x int32) (r0 int32) {
+_0:
+ if postInc1(&_nCol, int32(-1)) <= i32(0) {
+ goto _1
}
-
- _sqlite3VdbeJumpHere(tls, _v, _76_jmp1)
-_254:
- if (_76_pSubWInfo.X15) == 0 {
- goto _255
+ if _x == int32(*postInc72(&_aiCol, 2)) {
+ return i32(1)
}
+ goto _0
+_1:
+ return i32(0)
+}
- _65_untestedTerms = i32(1)
-_255:
- _78_pSubLoop = (*XWhereLoop)((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_76_pSubWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(i32(0)))).X18)
+// Estimate the average size of a row for an index.
+func _estimateIndexWidth(tls *crt.TLS, _pIdx *XIndex) {
+ var _1_x int16
+ var _i int32
+ var _wIndex uint32
+ var _aCol *XColumn
+ _wIndex = u32(0)
+ _aCol = (*XColumn)((*XTable)(_pIdx.X3).X1)
+ _i = i32(0)
+_0:
+ if _i >= int32(_pIdx.X14) {
+ goto _3
+ }
+ _1_x = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))
func() {
- if ((_78_pSubLoop.X9) & uint32(i32(16384))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128759), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113560)))
+ if int32(_1_x) >= int32((*XTable)(_pIdx.X3).X11) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101344), unsafe.Pointer((*int8)(unsafe.Pointer(&_estimateIndexWidthØ00__func__Ø000))), unsafe.Pointer(str(113561)))
crt.X__builtin_abort(tls)
}
}()
- if ((_78_pSubLoop.X9)&uint32(i32(512))) == uint32(i32(0)) || _65_ii != i32(0) && (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_78_pSubLoop))+uintptr(28 /* X8 */))))).X4) != _65_pCov || ((_65_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) && int32((uint32((*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_78_pSubLoop))+uintptr(28 /* X8 */))))).X4).X16)<>uint(i32(30))) == i32(2) {
- goto _262
+ {
+ p := &_wIndex
+ *p = (*p) + uint32(func() int32 {
+ if int32(_1_x) < i32(0) {
+ return i32(1)
+ }
+ return int32((*XColumn)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCol)) + 16*uintptr(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))))).X5)
+ }())
+ sink5 = *p
}
+ _i += 1
+ goto _0
+_3:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(48 /* X12 */))) = _sqlite3LogEst(tls, uint64(_wIndex*uint32(i32(4))))
+}
+
+var _estimateIndexWidthØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_estimateIndexWidthØ00__func__Ø000[0], str(113582), 19)
+}
+// Run the parser and code generator recursively in order to generate
+// code for the SQL statement given onto the end of the pParse context
+// currently under construction. When the parser is run recursively
+// this way, the final OP_Halt is not appended and other initialization
+// and finalization steps are omitted because those are handling by the
+// outermost parser.
+//
+// Not everything is nestable. This facility is designed to permit
+// INSERT, UPDATE, and DELETE operations against SQLITE_MASTER. Use
+// care if you decide to try to use this routine for some other purposes.
+func _sqlite3NestedParse(tls *crt.TLS, _pParse *XParse, _zFormat *int8, args ...interface{}) {
+ var _zSql, _zErrMsg *int8
+ var _ap []interface{}
+ var _db *Xsqlite3
+ var _saveBuf [84]int8
+ _zErrMsg = nil
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_pParse.X16) != 0 {
+ return
+ }
func() {
- if ((*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_76_pSubWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(i32(0)))).X2) != _65_iCovCur {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128764), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113604)))
+ if int32(_pParse.X6) >= i32(10) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99955), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3NestedParseØ00__func__Ø000))), unsafe.Pointer(str(113601)))
crt.X__builtin_abort(tls)
}
}()
- _65_pCov = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_78_pSubLoop)) + uintptr(28 /* X8 */))))).X4)
- goto _265
+ _ap = args
+ _zSql = _sqlite3VMPrintf(tls, _db, _zFormat, _ap)
+ _ap = nil
+ if _zSql == nil {
+ return
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(18 /* X6 */))) += 1
+ crt.Xmemcpy(tls, (unsafe.Pointer)(&_saveBuf), (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pParse))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(400))))))))), u32(84))
+ crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pParse))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(400))))))))), i32(0), u32(84))
+ _sqlite3RunParser(tls, _pParse, _zSql, &_zErrMsg)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zErrMsg))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zSql))
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pParse))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(400))))))))), (unsafe.Pointer)(&_saveBuf), u32(84))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(18 /* X6 */))) -= 1
+ _ = _saveBuf
+}
-_262:
- _65_pCov = nil
-_265:
- _sqlite3WhereEnd(tls, _76_pSubWInfo)
-_241:
-_234:
- _65_ii += 1
- goto _229
+var _sqlite3NestedParseØ00__func__Ø000 [19]int8
-_232:
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))))) = _65_pCov
- if _65_pCov == nil {
- goto _266
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3NestedParseØ00__func__Ø000[0], str(113619), 19)
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(8 /* X2 */))) = _65_iCovCur
-_266:
- if _65_pAndExpr == nil {
- goto _267
+// Generate code that will erase and refill index *pIdx. This is
+// used to initialize a newly created index or to recompute the
+// content of an index in response to a REINDEX command.
+//
+// if memRootPage is not negative, it means that the index is newly
+// created. The register specified by memRootPage contains the
+// root page number of the index. If memRootPage is negative, then
+// the index already exists and must be cleared before being refilled and
+// the root page number of the index is taken from pIndex->tnum.
+func _sqlite3RefillIndex(tls *crt.TLS, _pParse *XParse, _pIndex *XIndex, _memRootPage int32) {
+ var _iTab, _iIdx, _iSorter, _addr1, _addr2, _tnum, _iPartIdxLabel, _regRecord, _iDb, _4_j2 int32
+ var _db *Xsqlite3
+ var _pTab *XTable
+ var _v *TVdbe
+ var _pKey *XKeyInfo
+ _pTab = (*XTable)(_pIndex.X3)
+ _iTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _iIdx = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _db = (*Xsqlite3)(_pParse.X0)
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pIndex.X6))
+ if _sqlite3AuthCheck(tls, _pParse, i32(27), _pIndex.X0, nil, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0) != 0 {
+ return
}
-
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_65_pAndExpr)) + uintptr(12 /* X4 */))))) = nil
- _sqlite3ExprDelete(tls, _db, _65_pAndExpr)
-_267:
- _sqlite3VdbeChangeP1(tls, _v, uint32(_65_iRetInit), _sqlite3VdbeCurrentAddr(tls, _v))
- _sqlite3VdbeGoto(tls, _v, _pLevel.X3)
- _sqlite3VdbeResolveLabel(tls, _v, _65_iLoopBody)
- if int32(_pWInfo.X11) <= i32(1) {
- goto _268
+ _sqlite3TableLock(tls, _pParse, _iDb, _pTab.X7, uint8(i32(1)), _pTab.X0)
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v == nil {
+ return
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_65_pOrTab))
-_268:
- if _65_untestedTerms != 0 {
- goto _269
+ if _memRootPage >= i32(0) {
+ _tnum = _memRootPage
+ goto _3
}
-
- _disableTerm(tls, _pLevel, _pTerm)
-_269:
- goto _270
-
-_202:
+ _tnum = _pIndex.X11
+_3:
+ _pKey = _sqlite3KeyInfoOfIndex(tls, _pParse, _pIndex)
func() {
- if _bRev != i32(0) && _bRev != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128796), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113640)))
+ if _pKey == nil && (_db.X17) == 0 && (_pParse.X16) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RefillIndexØ00__func__Ø000))), unsafe.Pointer(str(113638)))
crt.X__builtin_abort(tls)
}
}()
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(5))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _274
+ _iSorter = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _sqlite3VdbeAddOp4(tls, _v, i32(111), _iSorter, i32(0), int32(_pIndex.X13), (*int8)(unsafe.Pointer(_sqlite3KeyInfoRef(tls, _pKey))), i32(-5))
+ _sqlite3OpenTable(tls, _pParse, _iTab, _iDb, _pTab, i32(106))
+ _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iTab, i32(0))
+ _regRecord = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3GenerateIndexKey(tls, _pParse, _pIndex, _iTab, _regRecord, i32(0), &_iPartIdxLabel, nil, i32(0))
+ _sqlite3VdbeAddOp2(tls, _v, i32(127), _iSorter, _regRecord)
+ _sqlite3ResolvePartIdxLabel(tls, _pParse, _iPartIdxLabel)
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _iTab, _addr1+i32(1))
+ _sqlite3VdbeJumpHere(tls, _v, _addr1)
+ if _memRootPage < i32(0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(134), _tnum, _iDb)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = uint8(i32(164))
- goto _275
-
-_274:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(45 /* X12 */))) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aStepØ003)) + 1*uintptr(_bRev)))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(48 /* X15 */))) = _iCur
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(52 /* X16 */))) = i32(1) + _sqlite3VdbeAddOp2(tls, _v, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3WhereCodeOneLoopStartØ00aStartØ004)) + 1*uintptr(_bRev)))), _iCur, _addrHalt)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(47 /* X14 */))) = uint8(i32(1))
-_275:
-_270:
-_201:
-_104:
-_64:
-_52:
-_9:
-_276:
- _loopAgain = i32(0)
- *func() *int32 { _pTerm = (*XWhereTerm)(_pWC.X5); return &_j }() = _pWC.X3
-_277:
- if _j <= i32(0) {
- goto _280
+ _sqlite3VdbeAddOp4(tls, _v, i32(107), _iIdx, _tnum, _iDb, (*int8)(unsafe.Pointer(_pKey)), i32(-5))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)|func() int32 {
+ if _memRootPage >= i32(0) {
+ return i32(16)
+ }
+ return i32(0)
+ }()))
+ _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(35), _iSorter, i32(0))
+ if int32(_pIndex.X15) != i32(0) {
+ _4_j2 = _sqlite3VdbeCurrentAddr(tls, _v) + i32(3)
+ _sqlite3VdbeGoto(tls, _v, _4_j2)
+ _addr2 = _sqlite3VdbeCurrentAddr(tls, _v)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(122), _iSorter, _4_j2, _regRecord, int32(_pIndex.X13))
+ _sqlite3UniqueConstraint(tls, _pParse, i32(2), _pIndex)
+ goto _12
}
+ _addr2 = _sqlite3VdbeCurrentAddr(tls, _v)
+_12:
+ _sqlite3VdbeAddOp3(tls, _v, i32(123), _iSorter, _regRecord, _iIdx)
+ _sqlite3VdbeAddOp3(tls, _v, i32(33), _iIdx, i32(0), i32(-1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(128), _iIdx, _regRecord)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
+ _sqlite3ReleaseTempReg(tls, _pParse, _regRecord)
+ _sqlite3VdbeAddOp2(tls, _v, i32(3), _iSorter, _addr2)
+ _sqlite3VdbeJumpHere(tls, _v, _addr1)
+ _sqlite3VdbeAddOp1(tls, _v, i32(114), _iTab)
+ _sqlite3VdbeAddOp1(tls, _v, i32(114), _iIdx)
+ _sqlite3VdbeAddOp1(tls, _v, i32(114), _iSorter)
+}
- _92_skipLikeAddr = i32(0)
- if (int32(_pTerm.X3) & i32(6)) == 0 {
- goto _281
- }
+var _sqlite3RefillIndexØ00__func__Ø000 [19]int8
- goto _278
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3RefillIndexØ00__func__Ø000[0], str(113682), 19)
+}
-_281:
- if ((_pTerm.X12) & (_pLevel.X19)) == uint64(i32(0)) {
- goto _282
+// If a prior call to sqlite3GenerateIndexKey() generated a jump-over label
+// because it was a partial index, then this routine should be called to
+// resolve that label.
+func _sqlite3ResolvePartIdxLabel(tls *crt.TLS, _pParse *XParse, _iLabel int32) {
+ if _iLabel != 0 {
+ _sqlite3VdbeResolveLabel(tls, (*TVdbe)(_pParse.X2), _iLabel)
+ _sqlite3ExprCachePop(tls, _pParse)
}
+}
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(50 /* X15 */))) = uint8(i32(1))
- goto _278
-
-_282:
- _92_pE = (*XExpr)(_pTerm.X0)
+// Code an OP_Halt due to UNIQUE or PRIMARY KEY constraint violation.
+func _sqlite3UniqueConstraint(tls *crt.TLS, _pParse *XParse, _onError int32, _pIdx *XIndex) {
+ var _j int32
+ var _zErr, _3_zCol *int8
+ var _pTab *XTable
+ var _errMsg XStrAccum
+ _pTab = (*XTable)(_pIdx.X3)
+ _sqlite3StrAccumInit(tls, &_errMsg, (*Xsqlite3)(_pParse.X0), nil, i32(0), i32(200))
+ if (*XExprList)(_pIdx.X10) != nil {
+ _sqlite3XPrintf(tls, &_errMsg, str(113701), unsafe.Pointer(_pIdx.X0))
+ goto _1
+ }
+ _j = i32(0)
+_2:
+ if _j >= int32(_pIdx.X13) {
+ goto _5
+ }
func() {
- if _92_pE == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128839), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113660)))
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UniqueConstraintØ00__func__Ø000))), unsafe.Pointer(str(113712)))
crt.X__builtin_abort(tls)
}
}()
- if (_pLevel.X0) == 0 || ((_92_pE.X2)&uint32(i32(1))) != uint32(i32(0)) {
- goto _286
+ _3_zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j)))))).X0
+ if _j != 0 {
+ _sqlite3StrAccumAppend(tls, &_errMsg, str(113733), i32(2))
}
+ _sqlite3XPrintf(tls, &_errMsg, str(8018), unsafe.Pointer(_pTab.X0), unsafe.Pointer(_3_zCol))
+ _j += 1
+ goto _2
+_5:
+_1:
+ _zErr = _sqlite3StrAccumFinish(tls, &_errMsg)
+ _sqlite3HaltConstraint(tls, _pParse, func() int32 {
+ if int32((uint32(_pIdx.X16)<>uint(i32(30))) == i32(2) {
+ return i32(1555)
+ }
+ return i32(2067)
+ }(), _onError, _zErr, int8(i32(-1)), uint8(i32(2)))
+ _ = _errMsg
+}
- goto _278
+var _sqlite3UniqueConstraintØ00__func__Ø000 [24]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3UniqueConstraintØ00__func__Ø000[0], str(113736), 24)
+}
+
+// Generate code that will increment the schema cookie.
+//
+// The schema cookie is used to determine when the schema for the
+// database changes. After each schema change, the cookie value
+// changes. When a process first reads the schema it records the
+// cookie. Thereafter, whenever it goes to access the database,
+// it checks the cookie to make sure the schema has not changed
+// since it was last read.
+//
+// This plan is not completely bullet-proof. It is possible for
+// the schema to change multiple times and for the cookie to be
+// set back to prior value. But schema changes are infrequent
+// and the probability of hitting the same cookie value is only
+// 1 chance in 2^32. So we're safe enough.
+//
+// IMPLEMENTATION-OF: R-34230-56049 SQLite automatically increments
+// the schema-version whenever the schema changes.
+func _sqlite3ChangeCookie(tls *crt.TLS, _pParse *XParse, _iDb int32) {
+ var _db *Xsqlite3
+ var _v *TVdbe
+ _db = (*Xsqlite3)(_pParse.X0)
+ _v = (*TVdbe)(_pParse.X2)
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101170), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ChangeCookieØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp3(tls, _v, i32(104), _iDb, i32(1), ((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4).X0)+i32(1))
+}
-_286:
- if _pIdx == nil || _sqlite3ExprCoveredByIndex(tls, _92_pE, _pLevel.X1, _pIdx) != 0 {
- goto _288
- }
+var _sqlite3ChangeCookieØ00__func__Ø000 [20]int8
- _loopAgain = i32(1)
- goto _278
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ChangeCookieØ00__func__Ø000[0], str(113760), 20)
+}
-_288:
- if (int32(_pTerm.X3) & i32(512)) == 0 {
- goto _289
+// Add an OP_ParseSchema opcode. This routine is broken out from
+// sqlite3VdbeAddOp4() since it needs to also needs to mark all btrees
+// as having been used.
+//
+// The zWhere string must have been obtained from sqlite3_malloc().
+// This routine will take ownership of the allocated memory.
+func _sqlite3VdbeAddParseSchemaOp(tls *crt.TLS, _p *TVdbe, _iDb int32, _zWhere *int8) {
+ var _j int32
+ _sqlite3VdbeAddOp4(tls, _p, i32(139), _iDb, i32(0), i32(0), _zWhere, i32(-1))
+ _j = i32(0)
+_0:
+ if _j >= ((*Xsqlite3)(_p.X0).X5) {
+ goto _3
}
+ _sqlite3VdbeUsesBtree(tls, _p, _j)
+ _j += 1
+ goto _0
+_3:
+}
- _96_x = _pLevel.X9
+// Resize an Index object to hold N columns total. Return SQLITE_OK
+// on success and SQLITE_NOMEM on an OOM error.
+func _resizeIndexObject(tls *crt.TLS, _db *Xsqlite3, _pIdx *XIndex, _N int32) (r0 int32) {
+ var _nByte int32
+ var _zExtra *int8
+ if int32(_pIdx.X14) >= _N {
+ return i32(0)
+ }
func() {
- if _96_x <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128857), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113668)))
+ if int32((uint32((_pIdx.X16)>>uint(i32(4)))<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101304), unsafe.Pointer((*int8)(unsafe.Pointer(&_resizeIndexObjectØ00__func__Ø000))), unsafe.Pointer(str(113780)))
crt.X__builtin_abort(tls)
}
}()
- _92_skipLikeAddr = _sqlite3VdbeAddOp1(tls, _v, func() int32 {
- if (_96_x & uint32(i32(1))) != 0 {
- return i32(22)
- }
- return i32(21)
- }(), int32(_96_x>>uint(i32(1))))
-_289:
- _sqlite3ExprIfFalse(tls, _pParse, _92_pE, _addrCont, i32(16))
- if _92_skipLikeAddr == 0 {
- goto _294
+ _nByte = int32(u32(7) * uint32(_N))
+ _zExtra = (*int8)(_sqlite3DbMallocZero(tls, _db, uint64(_nByte)))
+ if _zExtra == nil {
+ return _sqlite3NomemError(tls, i32(101307))
}
-
- _sqlite3VdbeJumpHere(tls, _v, _92_skipLikeAddr)
-_294:
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_pIdx.X8), u32(4)*uint32(_pIdx.X14))
+ *(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(32 /* X8 */))) = (**int8)(unsafe.Pointer(_zExtra))
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(4))
- sink12 = *p
- }
-_278:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _j -= 1; return &_pTerm }())) += uintptr(48)
- goto _277
-
-_280:
- _pIdx = nil
- if _loopAgain != 0 {
- goto _276
+ p := &_zExtra
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(4)*uint32(_N))))
+ sink0 = *p
}
-
- *func() *int32 { _pTerm = (*XWhereTerm)(_pWC.X5); return &_j }() = _pWC.X3
-_295:
- if _j <= i32(0) {
- goto _298
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_pIdx.X1), u32(2)*uint32(_pIdx.X14))
+ *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(4 /* X1 */))) = (*int16)(unsafe.Pointer(_zExtra))
+ {
+ p := &_zExtra
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(2)*uint32(_N))))
+ sink0 = *p
}
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_pIdx.X7), uint32(_pIdx.X14))
+ *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(28 /* X7 */))) = (*uint8)(unsafe.Pointer(_zExtra))
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(52 /* X14 */))) = uint16(_N)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx))+uintptr(55 /* X16 */))), int8(i32(1)), 16, 4)
+ return i32(0)
+}
- if (int32(_pTerm.X3) & i32(6)) == 0 {
- goto _299
- }
+var _resizeIndexObjectØ00__func__Ø000 [18]int8
- goto _296
+func init() {
+ crt.Xstrncpy(nil, &_resizeIndexObjectØ00__func__Ø000[0], str(113799), 18)
+}
-_299:
- if (int32(_pTerm.X4) & i32(130)) != i32(0) {
- goto _300
+// Estimate the total row width for a table.
+func _estimateTableWidth(tls *crt.TLS, _pTab *XTable) {
+ var _i int32
+ var _wTable uint32
+ var _pTabCol *XColumn
+ _wTable = u32(0)
+ *func() **XColumn { _i = int32(_pTab.X11); return &_pTabCol }() = (*XColumn)(_pTab.X1)
+_0:
+ if _i <= i32(0) {
+ goto _3
}
-
- goto _296
-
-_300:
- if (int32(_pTerm.X4) & i32(2048)) != i32(0) {
- goto _301
+ {
+ p := &_wTable
+ *p = (*p) + uint32(_pTabCol.X5)
+ sink5 = *p
}
-
- goto _296
-
-_301:
- if (_pTerm.X8) == _iCur {
- goto _302
+ *(*uintptr)(unsafe.Pointer(func() **XColumn { _i -= 1; return &_pTabCol }())) += uintptr(16)
+ goto _0
+_3:
+ if int32(_pTab.X10) < i32(0) {
+ _wTable += 1
}
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(46 /* X13 */))) = _sqlite3LogEst(tls, uint64(_wTable*uint32(i32(4))))
+}
- goto _296
-
-_302:
- if (_pLevel.X0) == 0 {
- goto _303
+// Compute the affinity string for table pTab, if it has not already been
+// computed. As an optimization, omit trailing SQLITE_AFF_BLOB affinities.
+//
+// If the affinity exists (if it is no entirely SQLITE_AFF_BLOB values) and
+// if iReg>0 then code an OP_Affinity opcode that will set the affinities
+// for register iReg and following. Or if affinities exists and iReg==0,
+// then just set the P4 operand of the previous opcode (which should be
+// an OP_MakeRecord) to the affinity string.
+//
+// A column affinity string has one character per column:
+//
+// Character Column affinity
+// ------------------------------
+// 'A' BLOB
+// 'B' TEXT
+// 'C' NUMERIC
+// 'D' INTEGER
+// 'E' REAL
+func _sqlite3TableAffinity(tls *crt.TLS, _v *TVdbe, _pTab *XTable, _iReg int32) {
+ var _i int32
+ var _zColAff *int8
+ var _1_db *Xsqlite3
+ _zColAff = _pTab.X5
+ if _zColAff != nil {
+ goto _0
}
+ _1_db = _sqlite3VdbeDb(tls, _v)
+ _zColAff = (*int8)(_sqlite3DbMallocRaw(tls, nil, uint64(int32(_pTab.X11)+i32(1))))
+ if _zColAff == nil {
+ _sqlite3OomFault(tls, _1_db)
+ return
+ }
+ _i = i32(0)
+_2:
+ if _i >= int32(_pTab.X11) {
+ goto _5
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zColAff)) + 1*uintptr(_i))) = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_i))).X4
+ _i += 1
+ goto _2
+_5:
+_6:
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zColAff)) + 1*uintptr(postInc1(&_i, int32(-1))))) = int8(i32(0))
+ if (_i >= i32(0)) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zColAff)) + 1*uintptr(_i)))) == i32(65)) {
+ goto _6
+ }
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(20 /* X5 */))) = _zColAff
+_0:
+ _i = _sqlite3Strlen30(tls, _zColAff)
+ if _i == 0 {
+ goto _8
+ }
+ if _iReg != 0 {
+ _sqlite3VdbeAddOp4(tls, _v, i32(100), _iReg, _i, i32(0), _zColAff, _i)
+ goto _10
+ }
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), _zColAff, _i)
+_10:
+_8:
+}
- goto _296
-
-_303:
- _97_pE = (*XExpr)(_pTerm.X0)
+// Generate a CREATE TABLE statement appropriate for the given
+// table. Memory to hold the text of the statement is obtained
+// from sqliteMalloc() and must be freed by the calling function.
+func _createTableStmt(tls *crt.TLS, _db *Xsqlite3, _p *XTable) (r0 *int8) {
+ var _i, _k, _n, _5_len int32
+ var _zStmt, _zSep, _zSep2, _zEnd, _5_zType *int8
+ var _pCol *XColumn
+ _n = i32(0)
+ *func() *int32 { _pCol = (*XColumn)(_p.X1); return &_i }() = i32(0)
+_0:
+ if _i >= int32(_p.X11) {
+ goto _3
+ }
+ {
+ p := &_n
+ *p = (*p) + (_identLength(tls, _pCol.X0) + i32(5))
+ sink1 = *p
+ }
+ *(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
+ goto _0
+_3:
+ {
+ p := &_n
+ *p = (*p) + _identLength(tls, _p.X0)
+ sink1 = *p
+ }
+ if _n < i32(50) {
+ _zSep = str(0)
+ _zSep2 = str(107763)
+ _zEnd = str(37898)
+ goto _5
+ }
+ _zSep = str(113817)
+ _zSep2 = str(113821)
+ _zEnd = str(113826)
+_5:
+ {
+ p := &_n
+ *p = (*p) + (i32(35) + (i32(6) * int32(_p.X11)))
+ sink1 = *p
+ }
+ _zStmt = (*int8)(_sqlite3DbMallocRaw(tls, nil, uint64(_n)))
+ if _zStmt == nil {
+ _sqlite3OomFault(tls, _db)
+ return nil
+ }
+ Xsqlite3_snprintf(tls, _n, _zStmt, str(113829))
+ _k = _sqlite3Strlen30(tls, _zStmt)
+ _identPut(tls, _zStmt, &_k, _p.X0)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt)) + 1*uintptr(postInc1(&_k, int32(1))))) = int8(i32(40))
+ *func() *int32 { _pCol = (*XColumn)(_p.X1); return &_i }() = i32(0)
+_7:
+ if _i >= int32(_p.X11) {
+ goto _10
+ }
+ Xsqlite3_snprintf(tls, _n-_k, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k))), _zSep)
+ {
+ p := &_k
+ *p = (*p) + _sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k))))
+ sink1 = *p
+ }
+ _zSep = _zSep2
+ _identPut(tls, _zStmt, &_k, _pCol.X0)
func() {
- if ((_97_pE.X2) & uint32(i32(1))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113672)))
+ if (int32(_pCol.X4) - i32(65)) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101276), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(113843)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if ((_pTerm.X11) & (_pLevel.X19)) == uint64(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113708)))
+ if (int32(_pCol.X4) - i32(65)) >= i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101277), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(113879)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _5_zType = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_createTableStmtØ00azTypeØ001)) + 4*uintptr(int32(_pCol.X4)-i32(65))))
+ _5_len = _sqlite3Strlen30(tls, _5_zType)
+ func() {
+ if int32(_pCol.X4) != i32(65) && int32(_pCol.X4) != int32(_sqlite3AffinityType(tls, _5_zType, nil)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101286), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(113930)))
crt.X__builtin_abort(tls)
}
}()
- _97_pAlt = _sqlite3WhereFindTerm(tls, _pWC, _iCur, *(*int32)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(28 /* X10 */))))), _notReady, uint32(i32(131)), nil)
- if _97_pAlt != nil {
- goto _308
+ crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k)))), (unsafe.Pointer)(_5_zType), uint32(_5_len))
+ {
+ p := &_k
+ *p = (*p) + _5_len
+ sink1 = *p
}
+ func() {
+ if _k > _n {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101290), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(114011)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
+ goto _7
+_10:
+ Xsqlite3_snprintf(tls, _n-_k, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k))), str(24576), unsafe.Pointer(_zEnd))
+ return _zStmt
+}
- goto _296
-
-_308:
- if (int32(_97_pAlt.X3) & i32(4)) == 0 {
- goto _309
+// Measure the number of characters needed to output the given
+// identifier. The number returned includes any quotes used
+// but does not include the null terminator.
+//
+// The estimate is conservative. It might be larger that what is
+// really needed.
+func _identLength(tls *crt.TLS, _z *int8) (r0 int32) {
+ var _n int32
+ _n = i32(0)
+_0:
+ if (*_z) == 0 {
+ goto _3
}
-
- goto _296
-
-_309:
- _97_sEAlt = *(*XExpr)(_97_pAlt.X0)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_97_sEAlt)) + uintptr(12 /* X4 */))))) = (*XExpr)(_97_pE.X4)
- _sqlite3ExprIfFalse(tls, _pParse, &_97_sEAlt, _addrCont, i32(16))
-_296:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _j -= 1; return &_pTerm }())) += uintptr(48)
- goto _295
-
-_298:
- if (_pLevel.X0) == 0 {
- goto _310
+ if int32(*_z) == i32(34) {
+ _n += 1
}
+ *(*uintptr)(unsafe.Pointer(func() **int8 { _n += 1; return &_z }())) += uintptr(1)
+ goto _0
+_3:
+ return _n + i32(2)
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(28 /* X7 */))) = _sqlite3VdbeCurrentAddr(tls, _v)
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(1), _pLevel.X0)
- _sqlite3VdbeComment(tls, _v, str(113752))
- _sqlite3ExprCacheClear(tls, _pParse)
- *func() *int32 { _pTerm = (*XWhereTerm)(_pWC.X5); return &_j }() = i32(0)
-_311:
- if _j >= (_pWC.X3) {
- goto _314
+// The first parameter is a pointer to an output buffer. The second
+// parameter is a pointer to an integer that contains the offset at
+// which to write into the output buffer. This function copies the
+// nul-terminated string pointed to by the third parameter, zSignedIdent,
+// to the specified offset in the buffer and updates *pIdx to refer
+// to the first byte after the last byte written before returning.
+//
+// If the string zSignedIdent consists entirely of alpha-numeric
+// characters, does not begin with a digit and is not an SQL keyword,
+// then it is copied to the output buffer exactly as it is. Otherwise,
+// it is quoted using double-quotes.
+func _identPut(tls *crt.TLS, _z *int8, _pIdx *int32, _zSignedIdent *int8) {
+ var _i, _j, _needQuote int32
+ var _zIdent *uint8
+ _zIdent = (*uint8)(unsafe.Pointer(_zSignedIdent))
+ _i = *_pIdx
+ _j = i32(0)
+_0:
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) == 0 {
+ goto _3
}
-
- if (int32(_pTerm.X3) & i32(6)) == 0 {
- goto _315
+ if ((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j))))))) & i32(6)) == 0) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) != i32(95)) {
+ goto _3
}
-
- goto _312
-
-_315:
- if ((_pTerm.X12) & (_pLevel.X19)) == uint64(i32(0)) {
- goto _316
+ _j += 1
+ goto _0
+_3:
+ _needQuote = bool2int((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(i32(0))))))))&i32(4)) != 0 || (_sqlite3KeywordCode(tls, _zIdent, _j) != i32(27))) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) != i32(0))) || (_j == i32(0)))
+ if _needQuote != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(i32(34))
+ }
+ _j = i32(0)
+_10:
+ if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) == 0 {
+ goto _13
+ }
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j))))
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) == i32(34) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(i32(34))
+ }
+ _j += 1
+ goto _10
+_13:
+ if _needQuote != 0 {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(i32(34))
}
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))) = int8(i32(0))
+ *_pIdx = _i
+}
- func() {
- if (_pWInfo.X15) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113776)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _312
+func _sqlite3KeywordCode(tls *crt.TLS, _z *uint8, _n int32) (r0 int32) {
+ var _id int32
+ _id = i32(27)
+ _keywordCode(tls, (*int8)(unsafe.Pointer(_z)), _n, &_id)
+ return _id
+}
-_316:
- func() {
- if (*XExpr)(_pTerm.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(128917), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereCodeOneLoopStartØ00__func__Ø000))), unsafe.Pointer(str(113800)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprIfFalse(tls, _pParse, (*XExpr)(_pTerm.X0), _addrCont, i32(16))
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(4))
- sink12 = *p
- }
-_312:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _j += 1; return &_pTerm }())) += uintptr(48)
- goto _311
+var _createTableStmtØ00__func__Ø000 [16]int8
-_314:
-_310:
- r0 = _pLevel.X19
- return
+func init() {
+ crt.Xstrncpy(nil, &_createTableStmtØ00__func__Ø000[0], str(114016), 16)
}
-var _sqlite3WhereCodeOneLoopStartØ00__func__Ø000 [29]int8 // -
+var _createTableStmtØ00azTypeØ001 [5]*int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereCodeOneLoopStartØ00__func__Ø000[0], str(113816), 29)
+ _createTableStmtØ00azTypeØ001 = [5]*int8{str(0), str(114032), str(114038), str(114043), str(114048)}
}
-func _codeEqualityTerm(tls *crt.TLS, _pParse *XParse, _pTerm *XWhereTerm, _pLevel *XWhereLevel, _iEq int32, _bRev int32, _iTarget int32) (r0 int32) { // sqlite3.c:127185:1
- var _pX *XExpr // sqlite3.c:127193:8
- _ = _pX
- var _v *TVdbe // sqlite3.c:127194:8
- _ = _v
- var _iReg int32 // sqlite3.c:127195:7
- _ = _iReg
- var _3_eType int32 // sqlite3.c:127206:9
- _ = _3_eType
- var _3_iTab int32 // sqlite3.c:127207:9
- _ = _3_iTab
- var _3_pIn *TInLoop // sqlite3.c:127208:19
- _ = _3_pIn
- var _3_pLoop *XWhereLoop // sqlite3.c:127209:15
- _ = _3_pLoop
- var _3_i int32 // sqlite3.c:127210:9
- _ = _3_i
- var _3_nEq int32 // sqlite3.c:127211:9
- _ = _3_nEq
- var _3_aiMap *int32 // sqlite3.c:127212:9
- _ = _3_aiMap
- var _9_pSelect *XSelect // sqlite3.c:127238:14
- _ = _9_pSelect
- var _9_db *Xsqlite3 // sqlite3.c:127239:15
- _ = _9_db
- var _9_savedDbOptFlags uint16 // sqlite3.c:127240:11
- _ = _9_savedDbOptFlags
- var _9_pOrigRhs *XExprList // sqlite3.c:127241:16
- _ = _9_pOrigRhs
- var _9_pOrigLhs *XExprList // sqlite3.c:127242:16
- _ = _9_pOrigLhs
- var _9_pRhs *XExprList // sqlite3.c:127243:16
- _ = _9_pRhs
- var _9_pLhs *XExprList // sqlite3.c:127244:16
- _ = _9_pLhs
- var _11_iField int32 // sqlite3.c:127248:15
- _ = _11_iField
- var _11_pNewRhs *XExpr // sqlite3.c:127249:16
- _ = _11_pNewRhs
- var _11_pNewLhs *XExpr // sqlite3.c:127250:16
- _ = _11_pNewLhs
- var _12_pLeft *XExpr // sqlite3.c:127257:14
- _ = _12_pLeft
- var _13_pOrderBy *XExprList // sqlite3.c:127267:20
- _ = _13_pOrderBy
- var _19_iMap int32 // sqlite3.c:127318:11
- _ = _19_iMap
- var _21_iOut int32 // sqlite3.c:127322:15
- _ = _21_iOut
- var _23_iCol int32 // sqlite3.c:127327:17
- _ = _23_iCol
- _pX = (*XExpr)(_pTerm.X0)
- _v = (*TVdbe)(_pParse.X2)
+// pZ is a UTF-8 encoded unicode string. If nByte is less than zero,
+// return the number of unicode characters in pZ up to (but not including)
+// the first 0x00 byte. If nByte is not less than zero, return the
+// number of unicode characters in the first nByte of pZ (or up to
+// the first 0x00, whichever comes first).
+func _sqlite3Utf8CharLen(tls *crt.TLS, _zIn *int8, _nByte int32) (r0 int32) {
+ var _r int32
+ var _z, _zTerm *uint8
+ _r = i32(0)
+ _z = (*uint8)(unsafe.Pointer(_zIn))
+ if _nByte >= i32(0) {
+ _zTerm = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_nByte)))
+ goto _1
+ }
+ _zTerm = (*uint8)(unsafe.Pointer(uintptr(u32(4294967295))))
+_1:
func() {
- if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XWhereLoop)(_pLevel.X18).X13)) + 4*uintptr(_iEq)))) != _pTerm {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127197), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(113848)))
+ if uintptr(unsafe.Pointer(_z)) > uintptr(unsafe.Pointer(_zTerm)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(27515), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf8CharLenØ00__func__Ø000))), unsafe.Pointer(str(114054)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if _iTarget <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127198), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(113884)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_pX.X0) != i32(78) && int32(_pX.X0) != i32(72) {
+_4:
+ if int32(*_z) == i32(0) || uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zTerm)) {
goto _5
}
-
- _iReg = _sqlite3ExprCodeTarget(tls, _pParse, (*XExpr)(_pX.X5), _iTarget)
- goto _6
-
-_5:
- if int32(_pX.X0) != i32(75) {
+ if int32(*postInc13(&_z, 1)) < i32(192) {
goto _7
}
-
- _iReg = _iTarget
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _iReg)
- goto _8
-
-_7:
- _3_eType = i32(5)
- _3_pLoop = (*XWhereLoop)(_pLevel.X18)
- _3_nEq = i32(0)
- _3_aiMap = nil
- if ((_3_pLoop.X9)&uint32(i32(1024))) != uint32(i32(0)) || (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop))+uintptr(28 /* X8 */))))).X4) == nil || (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop))+uintptr(28 /* X8 */))))).X4).X7)) + 1*uintptr(_iEq)))) == 0 {
- goto _11
- }
-
- _bRev = bool2int(_bRev == 0)
-_11:
- func() {
- if int32(_pX.X0) != i32(74) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127222), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(106472)))
- crt.X__builtin_abort(tls)
- }
- }()
- _iReg = _iTarget
- _3_i = i32(0)
-_14:
- if _3_i >= _iEq {
- goto _17
- }
-
- if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))) == nil || (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) != _pX {
- goto _19
+_8:
+ if (int32(*_z) & i32(192)) == i32(128) {
+ *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
+ goto _8
}
+_7:
+ _r += 1
+ goto _4
+_5:
+ return _r
+}
- _disableTerm(tls, _pLevel, _pTerm)
- return _iTarget
+var _sqlite3Utf8CharLenØ00__func__Ø000 [19]int8
-_19:
- _3_i += 1
- goto _14
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3Utf8CharLenØ00__func__Ø000[0], str(114063), 19)
+}
-_17:
- _3_i = _iEq
-_20:
- if _3_i >= int32(_3_pLoop.X10) {
- goto _23
+// Add a new column to the table currently being constructed.
+//
+// The parser calls this routine once for each column declaration
+// in a CREATE TABLE statement. sqlite3StartTable() gets called
+// first to get things going. Then this routine is called for each
+// column.
+func _sqlite3AddColumn(tls *crt.TLS, _pParse *XParse, _pName *XToken, _pType *XToken) {
+ var _i int32
+ var _z, _zType *int8
+ var _db *Xsqlite3
+ var _p *XTable
+ var _pCol, _4_aNew *XColumn
+ _db = (*Xsqlite3)(_pParse.X0)
+ if store44(&_p, (*XTable)(_pParse.X63)) == nil {
+ return
}
-
- if func() int32 {
- if (*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))) != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127232), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 || (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) != _pX {
- goto _27
+ if (int32(_p.X11) + i32(1)) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114082), unsafe.Pointer(_p.X0))
+ return
}
-
- _3_nEq += 1
-_27:
- _3_i += 1
- goto _20
-
-_23:
- if ((_pX.X2)&uint32(i32(2048))) != uint32(i32(0)) && ((*XExprList)((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */)))))).X0).X0) != i32(1) {
- goto _29
+ _z = (*int8)(_sqlite3DbMallocRaw(tls, _db, uint64(((_pName.X1)+(_pType.X1))+uint32(i32(2)))))
+ if _z == nil {
+ return
}
-
- _3_eType = _sqlite3FindInIndex(tls, _pParse, _pX, uint32(i32(4)), nil, nil)
- goto _30
-
-_29:
- _9_pSelect = (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(20 /* X6 */))))))
- _9_db = (*Xsqlite3)(_pParse.X0)
- _9_savedDbOptFlags = _9_db.X13
- _9_pOrigRhs = (*XExprList)(_9_pSelect.X0)
- _9_pOrigLhs = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr(_pX.X4) + uintptr(20 /* X6 */))))))
- _9_pRhs = nil
- _9_pLhs = nil
- _3_i = _iEq
-_31:
- if _3_i >= int32(_3_pLoop.X10) {
- goto _34
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_z), (unsafe.Pointer)(_pName.X0), _pName.X1)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_pName.X1))) = int8(i32(0))
+ _sqlite3Dequote(tls, _z)
+ _i = i32(0)
+_3:
+ if _i >= int32(_p.X11) {
+ goto _6
}
-
- if (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) != _pX {
- goto _35
+ if Xsqlite3_stricmp(tls, _z, (*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_i))).X0) == i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114105), unsafe.Pointer(_z))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_z))
+ return
}
-
- _11_iField = ((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X9) - i32(1)
- _11_pNewRhs = _sqlite3ExprDup(tls, _9_db, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pOrigRhs))+uintptr(8 /* X2 */)))))+20*uintptr(_11_iField))).X0), i32(0))
- _11_pNewLhs = _sqlite3ExprDup(tls, _9_db, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pOrigLhs))+uintptr(8 /* X2 */)))))+20*uintptr(_11_iField))).X0), i32(0))
- _9_pRhs = _sqlite3ExprListAppend(tls, _pParse, _9_pRhs, _11_pNewRhs)
- _9_pLhs = _sqlite3ExprListAppend(tls, _pParse, _9_pLhs, _11_pNewLhs)
-_35:
- _3_i += 1
- goto _31
-
-_34:
- if (_9_db.X17) != 0 {
- goto _36
+ _i += 1
+ goto _3
+_6:
+ if (int32(_p.X11) & i32(7)) != i32(0) {
+ goto _8
}
-
- _12_pLeft = (*XExpr)(_pX.X4)
- if (*XExprList)(_9_pSelect.X12) == nil {
- goto _37
+ _4_aNew = (*XColumn)(_sqlite3DbRealloc(tls, _db, _p.X1, uint64(uint32(int32(_p.X11)+i32(8))*u32(16))))
+ if _4_aNew == nil {
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_z))
+ return
}
-
- _13_pOrderBy = (*XExprList)(_9_pSelect.X12)
- _3_i = i32(0)
-_38:
- if _3_i >= (_13_pOrderBy.X0) {
- goto _41
+ *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = _4_aNew
+_8:
+ _pCol = (*XColumn)(unsafe.Pointer(uintptr(_p.X1) + 16*uintptr(_p.X11)))
+ crt.Xmemset(tls, (unsafe.Pointer)(_pCol), i32(0), u32(16))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(0 /* X0 */))) = _z
+ if (_pType.X1) == uint32(i32(0)) {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = int8(i32(65))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(14 /* X5 */))) = uint8(i32(1))
+ goto _11
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pOrderBy))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i)))))+uintptr(16 /* X5 */))))))) + uintptr(0 /* X0 */))) = uint16(i32(0))
- _3_i += 1
- goto _38
-
-_41:
-_37:
- if (_9_pLhs.X0) != i32(1) {
- goto _42
+ _zType = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_sqlite3Strlen30(tls, _z)))))))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1))))))))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_zType), (unsafe.Pointer)(_pType.X0), _pType.X1)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zType)) + 1*uintptr(_pType.X1))) = int8(i32(0))
+ _sqlite3Dequote(tls, _zType)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = _sqlite3AffinityType(tls, _zType, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol))+uintptr(14 /* X5 */))))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
+ *p = uint8(int32(*p) | i32(4))
+ sink2 = *p
}
+_11:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X11 */))) += 1
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(84 /* X28 */))))) + uintptr(4 /* X1 */))) = uint32(i32(0))
+}
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(12 /* X4 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pLhs))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
- goto _43
-
-_42:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pLeft)) + uintptr(20 /* X6 */))))))) = _9_pLhs
- _3_aiMap = (*int32)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(4)*uint32(_3_nEq))))
-_43:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pSelect)) + uintptr(0 /* X0 */))))) = _9_pRhs
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_db)) + uintptr(60 /* X13 */)))
- *p = uint16(int32(*p) | i32(1))
- sink12 = *p
+// The expression is the default value for the most recently added column
+// of the table currently under construction.
+//
+// Default value expressions must be constant. Raise an exception if this
+// is not the case.
+//
+// This routine is called by the parser while in the middle of
+// parsing a CREATE TABLE statement.
+func _sqlite3AddDefaultValue(tls *crt.TLS, _pParse *XParse, _pSpan *XExprSpan) {
+ var _db *Xsqlite3
+ var _p *XTable
+ var _3_x XExpr
+ var _pCol *XColumn
+ _db = (*Xsqlite3)(_pParse.X0)
+ _p = (*XTable)(_pParse.X63)
+ if _p == nil {
+ goto _0
}
- _3_eType = _sqlite3FindInIndex(tls, _pParse, _pX, uint32(i32(4)), nil, _3_aiMap)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_db)) + uintptr(60 /* X13 */))) = _9_savedDbOptFlags
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pSelect)) + uintptr(0 /* X0 */))))) = _9_pOrigRhs
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pLeft)) + uintptr(20 /* X6 */))))))) = _9_pOrigLhs
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pX)) + uintptr(12 /* X4 */))))) = _12_pLeft
-_36:
- _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _9_pLhs)
- _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _9_pRhs)
-_30:
- if _3_eType != i32(4) {
- goto _44
+ _pCol = (*XColumn)(unsafe.Pointer(uintptr(_p.X1) + 16*uintptr(int32(_p.X11)-i32(1))))
+ if _sqlite3ExprIsConstantOrFunction(tls, (*XExpr)(_pSpan.X0), (*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(114131), unsafe.Pointer(_pCol.X0))
+ goto _2
}
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_pCol.X1))
+ crt.Xmemset(tls, (unsafe.Pointer)(&_3_x), i32(0), u32(48))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(0 /* X0 */))) = uint8(i32(162))
+ *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(8 /* X3 */))))) = _sqlite3DbStrNDup(tls, _db, _pSpan.X1, uint64(int32((uintptr(unsafe.Pointer(_pSpan.X2))-uintptr(unsafe.Pointer(_pSpan.X1)))/1)))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(12 /* X4 */))))) = (*XExpr)(_pSpan.X0)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(4 /* X2 */))) = uint32(i32(4096))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(4 /* X1 */))))) = _sqlite3ExprDup(tls, _db, &_3_x, i32(1))
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(8 /* X3 */)))))))
+_2:
+_0:
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_pSpan.X0))
+ _ = _3_x
+}
- _bRev = bool2int(_bRev == 0)
-_44:
- _3_iTab = _pX.X8
- _sqlite3VdbeAddOp2(tls, _v, func() int32 {
- if _bRev != 0 {
- return i32(33)
- }
- return i32(37)
- }(), _3_iTab, i32(0))
+// Walk an expression tree. Return non-zero if the expression is constant
+// or a function call with constant arguments. Return and 0 if there
+// are any variables.
+//
+// For the purposes of this function, a double-quoted string (ex: "abc")
+// is considered a variable but a single-quoted string (ex: 'abc') is
+// a constant.
+func _sqlite3ExprIsConstantOrFunction(tls *crt.TLS, _p *XExpr, _isInit uint8) (r0 int32) {
func() {
- if ((_3_pLoop.X9) & uint32(i32(8192))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127304), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeEqualityTermØ00__func__Ø000))), unsafe.Pointer(str(113896)))
+ if int32(_isInit) != i32(0) && int32(_isInit) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92783), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIsConstantOrFunctionØ00__func__Ø000))), unsafe.Pointer(str(114176)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop)) + uintptr(40 /* X9 */)))
- *p = (*p) | uint32(i32(2048))
- sink5 = *p
- }
- if ((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0) != i32(0) {
- goto _49
- }
+ return _exprIsConst(tls, _p, i32(4)+int32(_isInit), i32(0))
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(16 /* X4 */))) = _sqlite3VdbeMakeLabel(tls, _v)
-_49:
- _3_i = (*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))))) + uintptr(0 /* X0 */)))
- *p = (*p) + _3_nEq
- sink1 = *p
- }
- *(**TInLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))))) + uintptr(4 /* X1 */))))) = (*TInLoop)(_sqlite3DbReallocOrFree(tls, (*Xsqlite3)(_pParse.X0), (*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1, uint64(u32(12)*uint32((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X0))))
- _3_pIn = (*TInLoop)((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X1)
- if _3_pIn == nil {
- goto _50
- }
+var _sqlite3ExprIsConstantOrFunctionØ00__func__Ø000 [32]int8
- _19_iMap = i32(0)
- {
- p := &_3_pIn
- *p = (*TInLoop)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 12*uintptr(_3_i)))
- sink69 = *p
- }
- _3_i = _iEq
-_51:
- if _3_i >= int32(_3_pLoop.X10) {
- goto _54
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprIsConstantOrFunctionØ00__func__Ø000[0], str(114199), 32)
+}
- if (*XExpr)((*(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pLoop.X13)) + 4*uintptr(_3_i)))).X0) != _pX {
- goto _55
+func _spanExpr(tls *crt.TLS, _pOut *XExprSpan, _pParse *XParse, _op int32, _t XToken) {
+ var _p *XExpr
+ _p = (*XExpr)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64((u32(48)+(_t.X1))+uint32(i32(1)))))
+ if _p == nil {
+ goto _0
}
-
- _21_iOut = (_iReg + _3_i) - _iEq
- if _3_eType != i32(1) {
- goto _56
+ crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(_op)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */))) = uint32(i32(8388608))
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(34 /* X10 */))) = int16(i32(-1))
+ *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))) = (*int8)(unsafe.Pointer((*XExpr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 48*uintptr(i32(1))))))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))), (unsafe.Pointer)(_t.X0), _t.X1)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_t.X1))) = int8(i32(0))
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))))))) & i32(128)) == 0 {
+ goto _1
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(4 /* X1 */))) = _sqlite3VdbeAddOp2(tls, _v, i32(125), _3_iTab, _21_iOut)
- goto _57
-
-_56:
- _23_iCol = func() int32 {
- if _3_aiMap != nil {
- return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_aiMap)) + 4*uintptr(postInc1(&_19_iMap, int32(1))))))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) == i32(34) {
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(64))
+ sink5 = *p
}
- return i32(0)
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(4 /* X1 */))) = _sqlite3VdbeAddOp3(tls, _v, i32(99), _3_iTab, _23_iCol, _21_iOut)
-_57:
- _sqlite3VdbeAddOp1(tls, _v, i32(75), _21_iOut)
- if _3_i != _iEq {
- goto _60
}
+ _sqlite3Dequote(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))
+_1:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(1)
+_0:
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _p
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(4 /* X1 */))) = _t.X0
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_t.X0)) + 1*uintptr(_t.X1)))
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(0 /* X0 */))) = _3_iTab
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(8 /* X2 */))) = uint8(func() int32 {
- if _bRev != 0 {
- return i32(4)
+// This routine is called by the parser while in the middle of
+// parsing a CREATE TABLE statement. A "NOT NULL" constraint has
+// been seen on a column. This routine sets the notNull flag on
+// the column currently under construction.
+func _sqlite3AddNotNull(tls *crt.TLS, _pParse *XParse, _onError int32) {
+ var _p *XTable
+ _p = (*XTable)(_pParse.X63)
+ if (_p == nil) || func() int32 {
+ if int32(_p.X11) < i32(1) {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(100812), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddNotNullØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
}
- return i32(5)
- }())
- goto _63
-
-_60:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIn)) + uintptr(8 /* X2 */))) = uint8(i32(164))
-_63:
- *(*uintptr)(unsafe.Pointer(&_3_pIn)) += uintptr(12)
-_55:
- _3_i += 1
- goto _51
-
-_54:
- goto _64
-
-_50:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))))) + uintptr(0 /* X0 */))) = i32(0)
-_64:
- _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_3_aiMap))
-_8:
-_6:
- _disableTerm(tls, _pLevel, _pTerm)
- return _iReg
+ return i32(0)
+ }() != 0 {
+ return
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(int32(_p.X11)-i32(1)))))) + uintptr(12 /* X3 */))) = uint8(_onError)
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(512))
+ sink5 = *p
+ }
}
-var _codeEqualityTermØ00__func__Ø000 [17]int8 // -
+var _sqlite3AddNotNullØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_codeEqualityTermØ00__func__Ø000[0], str(113936), 17)
+ crt.Xstrncpy(nil, &_sqlite3AddNotNullØ00__func__Ø000[0], str(114231), 18)
}
-func _disableTerm(tls *crt.TLS, _pLevel *XWhereLevel, _pTerm *XWhereTerm) { // sqlite3.c:127086:1
- var _nLoop int32 // sqlite3.c:127087:7
- _ = _nLoop
- _nLoop = i32(0)
-_0:
- if func() int32 {
- if _pTerm != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127088), unsafe.Pointer((*int8)(unsafe.Pointer(&_disableTermØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 || (int32(_pTerm.X3)&i32(4)) != i32(0) || (_pLevel.X0) != i32(0) && (((*XExpr)(_pTerm.X0).X2)&uint32(i32(1))) == uint32(i32(0)) || ((_pLevel.X19)&(_pTerm.X12)) != uint64(i32(0)) {
- goto _1
- }
-
- if _nLoop == 0 || (int32(_pTerm.X3)&i32(1024)) == i32(0) {
- goto _9
+// Designate the PRIMARY KEY for the table. pList is a list of names
+// of columns that form the primary key. If pList is NULL, then the
+// most recently added column of the table is the primary key.
+//
+// A table can have at most one primary key. If the table already has
+// a primary key (and this is the second primary key) then create an
+// error.
+//
+// If the PRIMARY KEY is on a single column whose datatype is INTEGER,
+// then we will try to use that column as the rowid. Set the Table.iPKey
+// field of the table under construction to be the index of the
+// INTEGER PRIMARY KEY column. Table.iPKey is set to -1 if there is
+// no INTEGER PRIMARY KEY.
+//
+// If the key is not an INTEGER PRIMARY KEY, then create a unique
+// index for the key. No index is created for INTEGER PRIMARY KEYs.
+func _sqlite3AddPrimaryKey(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _onError int32, _autoInc int32, _sortOrder int32) {
+ var _iCol, _i, _nTerm int32
+ var _5_zCName *int8
+ var _pTab *XTable
+ var _4_pCExpr *XExpr
+ var _pCol *XColumn
+ _pTab = (*XTable)(_pParse.X63)
+ _pCol = nil
+ _iCol = i32(-1)
+ if _pTab == nil {
+ goto _primary_key_exit
}
-
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(512))
- sink12 = *p
+ if ((_pTab.X9) & uint32(i32(4))) != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(114249), unsafe.Pointer(_pTab.X0))
+ goto _primary_key_exit
}
- goto _10
-
-_9:
{
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(10 /* X3 */)))
- *p = uint16(int32(*p) | i32(4))
- sink12 = *p
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(i32(4))
+ sink5 = *p
}
-_10:
- if (_pTerm.X7) >= i32(0) {
- goto _11
+ if _pList == nil {
+ _iCol = int32(_pTab.X11) - i32(1)
+ _pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol)))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
+ *p = uint8(int32(*p) | i32(1))
+ sink2 = *p
+ }
+ _nTerm = i32(1)
+ goto _3
}
-
- goto _1
-
-_11:
- _pTerm = (*XWhereTerm)(unsafe.Pointer(uintptr((*XWhereClause)(_pTerm.X1).X5) + 48*uintptr(_pTerm.X7)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTerm)) + uintptr(14 /* X5 */))) -= 1
- if int32(_pTerm.X5) == i32(0) {
- goto _12
+ _nTerm = _pList.X0
+ _i = i32(0)
+_4:
+ if _i >= _nTerm {
+ goto _7
}
-
- goto _1
-
-_12:
- _nLoop += 1
- goto _0
-
-_1:
-}
-
-var _disableTermØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_disableTermØ00__func__Ø000[0], str(113956), 12)
-}
-
-func _codeExprOrVector(tls *crt.TLS, _pParse *XParse, _p *XExpr, _iReg int32, _nReg int32) { // sqlite3.c:127809:1
- var _2_v *TVdbe // sqlite3.c:127814:12
- _ = _2_v
- var _2_iSelect int32 // sqlite3.c:127815:11
- _ = _2_iSelect
- var _3_i int32 // sqlite3.c:127820:11
- _ = _3_i
- var _3_pList *XExprList // sqlite3.c:127821:16
- _ = _3_pList
+ _4_pCExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
func() {
- if _nReg <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127810), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeExprOrVectorØ00__func__Ø000))), unsafe.Pointer(str(113968)))
+ if _4_pCExpr == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101013), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddPrimaryKeyØ00__func__Ø000))), unsafe.Pointer(str(114290)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3ExprIsVector(tls, _p) == 0 {
- goto _2
+ _sqlite3StringToId(tls, _4_pCExpr)
+ if int32(_4_pCExpr.X0) != i32(27) {
+ goto _10
}
-
- if ((_p.X2) & uint32(i32(2048))) == 0 {
- goto _3
+ _5_zCName = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCExpr)) + uintptr(8 /* X3 */)))))
+ _iCol = i32(0)
+_11:
+ if _iCol >= int32(_pTab.X11) {
+ goto _14
}
-
- _2_v = (*TVdbe)(_pParse.X2)
- _2_iSelect = _sqlite3CodeSubselect(tls, _pParse, _p, i32(0), i32(0))
- _sqlite3VdbeAddOp3(tls, _2_v, i32(64), _2_iSelect, _iReg, _nReg-i32(1))
+ if _sqlite3StrICmp(tls, _5_zCName, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_iCol))).X0) == i32(0) {
+ _pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol)))
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
+ *p = uint8(int32(*p) | i32(1))
+ sink2 = *p
+ }
+ goto _14
+ }
+ _iCol += 1
+ goto _11
+_14:
+_10:
+ _i += 1
goto _4
-
+_7:
_3:
- _3_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(20 /* X6 */))))))
+ if _nTerm != i32(1) || _pCol == nil || _sqlite3StrICmp(tls, _sqlite3ColumnType(tls, _pCol, str(0)), str(25792)) != i32(0) || _sortOrder == i32(1) {
+ goto _19
+ }
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(_iCol)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(48 /* X14 */))) = uint8(_onError)
func() {
- if _nReg > (_3_pList.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127822), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeExprOrVectorØ00__func__Ø000))), unsafe.Pointer(str(113976)))
+ if _autoInc != i32(0) && _autoInc != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101034), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddPrimaryKeyØ00__func__Ø000))), unsafe.Pointer(str(114300)))
crt.X__builtin_abort(tls)
}
}()
- _3_i = i32(0)
-_7:
- if _3_i >= _nReg {
- goto _10
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
+ *p = (*p) | uint32(_autoInc*i32(8))
+ sink5 = *p
+ }
+ if _pList != nil {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(410 /* X53 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X3
+ }
+ goto _24
+_19:
+ if _autoInc != 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(114325))
+ goto _26
}
+ _sqlite3CreateIndex(tls, _pParse, nil, nil, nil, _pList, _onError, nil, nil, _sortOrder, i32(0), uint8(i32(2)))
+ _pList = nil
+_26:
+_24:
+_primary_key_exit:
+ _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _pList)
+}
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_3_i))).X0), _iReg+_3_i)
- _3_i += 1
- goto _7
+var _sqlite3AddPrimaryKeyØ00__func__Ø000 [21]int8
-_10:
-_4:
- goto _11
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3AddPrimaryKeyØ00__func__Ø000[0], str(114381), 21)
+}
+// Add a new CHECK constraint to the table currently under construction.
+func _sqlite3AddCheckConstraint(tls *crt.TLS, _pParse *XParse, _pCheckExpr *XExpr) {
+ var _db *Xsqlite3
+ var _pTab *XTable
+ _pTab = (*XTable)(_pParse.X63)
+ _db = (*Xsqlite3)(_pParse.X0)
+ if _pTab == nil || (_pParse.X55) != 0 || _sqlite3BtreeIsReadonly(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr((*t21)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X1))).X1)) != 0 {
+ goto _2
+ }
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(24 /* X6 */))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(_pTab.X6), _pCheckExpr)
+ if ((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(84 /* X28 */))).X1) != 0 {
+ _sqlite3ExprListSetName(tls, _pParse, (*XExprList)(_pTab.X6), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(84 /* X28 */))), i32(1))
+ }
+ goto _4
_2:
- func() {
- if _nReg != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127828), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeExprOrVectorØ00__func__Ø000))), unsafe.Pointer(str(113996)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprCode(tls, _pParse, _p, _iReg)
-_11:
+ _sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), _pCheckExpr)
+_4:
}
-var _codeExprOrVectorØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_codeExprOrVectorØ00__func__Ø000[0], str(114004), 17)
+// Return true if the given Btree is read-only.
+func _sqlite3BtreeIsReadonly(tls *crt.TLS, _p *XBtree) (r0 int32) {
+ return bool2int((int32((*XBtShared)(_p.X1).X10) & i32(1)) != i32(0))
}
-func _codeAllEqualityTerms(tls *crt.TLS, _pParse *XParse, _pLevel *XWhereLevel, _bRev int32, _nExtraReg int32, _pzAff **int8) (r0 int32) { // sqlite3.c:127395:1
- var _nEq uint16 // sqlite3.c:127402:7
- _ = _nEq
- var _nSkip uint16 // sqlite3.c:127403:7
- _ = _nSkip
- var _v *TVdbe // sqlite3.c:127404:8
- _ = _v
- var _pIdx *XIndex // sqlite3.c:127405:9
- _ = _pIdx
- var _pTerm *XWhereTerm // sqlite3.c:127406:13
- _ = _pTerm
- var _pLoop *XWhereLoop // sqlite3.c:127407:13
- _ = _pLoop
- var _j int32 // sqlite3.c:127408:7
- _ = _j
- var _regBase int32 // sqlite3.c:127409:7
- _ = _regBase
- var _nReg int32 // sqlite3.c:127410:7
- _ = _nReg
- var _zAff *int8 // sqlite3.c:127411:8
- _ = _zAff
- var _1_iIdxCur int32 // sqlite3.c:127431:9
- _ = _1_iIdxCur
- var _3_r1 int32 // sqlite3.c:127453:9
- _ = _3_r1
- var _9_pRight *XExpr // sqlite3.c:127478:12
- _ = _9_pRight
- _v = (*TVdbe)(_pParse.X2)
- _pLoop = (*XWhereLoop)(_pLevel.X18)
- func() {
- if ((_pLoop.X9) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127415), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(114024)))
- crt.X__builtin_abort(tls)
- }
- }()
- _nEq = (*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X0
- _nSkip = _pLoop.X11
- _pIdx = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
+// This routine is called to create a new foreign key on the table
+// currently under construction. pFromCol determines which columns
+// in the current table point to the foreign key. If pFromCol==0 then
+// connect the key to the last column inserted. pTo is the name of
+// the table referred to (a.k.a the "parent" table). pToCol is a list
+// of tables in the parent pTo table. flags contains all
+// information about the conflict resolution algorithms specified
+// in the ON DELETE, ON UPDATE and ON INSERT clauses.
+//
+// An FKey structure is created and added to the table currently
+// under construction in the pParse->pNewTable field.
+//
+// The foreign key is set for IMMEDIATE processing. A subsequent call
+// to sqlite3DeferForeignKey() might change this to DEFERRED.
+func _sqlite3CreateForeignKey(tls *crt.TLS, _pParse *XParse, _pFromCol *XExprList, _pTo *XToken, _pToCol *XExprList, _flags int32) {
+ var _nByte, _i, _nCol, _1_iCol, _10_j, _15_n int32
+ var _z *int8
+ var _db *Xsqlite3
+ var _p *XTable
+ var _pFKey, _pNextTo *XFKey
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pFKey = nil
+ _p = (*XTable)(_pParse.X63)
func() {
- if _pIdx == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127419), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(43128)))
+ if _pTo == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(114402)))
crt.X__builtin_abort(tls)
}
}()
- _regBase = (_pParse.X18) + i32(1)
- _nReg = int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X0) + _nExtraReg
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nReg
- sink1 = *p
+ if (_p == nil) || ((_pParse.X55) != 0) {
+ goto _fk_end
}
- _zAff = _sqlite3DbStrDup(tls, (*Xsqlite3)(_pParse.X0), _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pIdx))
- func() {
- if _zAff == nil && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127428), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(114068)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _nSkip == 0 {
- goto _7
+ if _pFromCol != nil {
+ goto _4
}
-
- _1_iIdxCur = _pLevel.X2
- _sqlite3VdbeAddOp1(tls, _v, func() int32 {
- if _bRev != 0 {
- return i32(33)
- }
- return i32(37)
- }(), _1_iIdxCur)
- _sqlite3VdbeComment(tls, _v, str(114104), unsafe.Pointer(_pIdx.X0))
- _j = _sqlite3VdbeAddOp0(tls, _v, i32(13))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(20 /* X5 */))) = _sqlite3VdbeAddOp4Int(tls, _v, func() int32 {
- if _bRev != 0 {
- return i32(24)
+ _1_iCol = int32(_p.X11) - i32(1)
+ if func() int32 {
+ if _1_iCol < i32(0) {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102341), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
}
- return i32(27)
- }(), _1_iIdxCur, i32(0), _regBase, int32(_nSkip))
- _sqlite3VdbeJumpHere(tls, _v, _j)
- _j = i32(0)
-_12:
- if _j >= int32(_nSkip) {
- goto _15
+ return i32(0)
+ }() != 0 {
+ goto _fk_end
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _1_iIdxCur, _j, _regBase+_j)
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(_explainIndexColumnName(tls, _pIdx, _j)))
- _j += 1
- goto _12
-
-_15:
-_7:
- func() {
- if _zAff != nil && int32(crt.Xstrlen(tls, _zAff)) < int32(_nEq) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127451), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(114128)))
- crt.X__builtin_abort(tls)
- }
- }()
- _j = int32(_nSkip)
-_19:
- if _j >= int32(_nEq) {
- goto _22
+ if (_pToCol != nil) && ((_pToCol.X0) != i32(1)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114409), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_1_iCol))).X0), unsafe.Pointer(_pTo))
+ goto _fk_end
}
-
- _pTerm = *(**XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop.X13)) + 4*uintptr(_j)))
- func() {
- if _pTerm == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127455), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeAllEqualityTermsØ00__func__Ø000))), unsafe.Pointer(str(112880)))
- crt.X__builtin_abort(tls)
- }
- }()
- _3_r1 = _codeEqualityTerm(tls, _pParse, _pTerm, _pLevel, _j, _bRev, _regBase+_j)
- if _3_r1 == (_regBase + _j) {
- goto _25
+ _nCol = i32(1)
+ goto _10
+_4:
+ if (_pToCol != nil) && ((_pToCol.X0) != (_pFromCol.X0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114472))
+ goto _fk_end
}
-
- if _nReg != i32(1) {
- goto _26
+ _nCol = _pFromCol.X0
+_10:
+ _nByte = int32(((u32(44) + (uint32(_nCol-i32(1)) * u32(8))) + (_pTo.X1)) + uint32(i32(1)))
+ if _pToCol == nil {
+ goto _14
}
-
- _sqlite3ReleaseTempReg(tls, _pParse, _regBase)
- _regBase = _3_r1
- goto _27
-
-_26:
- _sqlite3VdbeAddOp2(tls, _v, i32(65), _3_r1, _regBase+_j)
-_27:
-_25:
- if (int32(_pTerm.X4) & i32(1)) == 0 {
- goto _28
+ _i = i32(0)
+_15:
+ if _i >= (_pToCol.X0) {
+ goto _18
}
-
- if (((*XExpr)(_pTerm.X0).X2) & uint32(i32(2048))) == 0 {
+ {
+ p := &_nByte
+ *p = (*p) + (_sqlite3Strlen30(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) + i32(1))
+ sink1 = *p
+ }
+ _i += 1
+ goto _15
+_18:
+_14:
+ _pFKey = (*XFKey)(_sqlite3DbMallocZero(tls, _db, uint64(_nByte)))
+ if _pFKey == nil {
+ goto _fk_end
+ }
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(0 /* X0 */))))) = _p
+ *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(4 /* X1 */))))) = (*XFKey)(_p.X4)
+ _z = (*int8)(unsafe.Pointer((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_nCol)))))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(8 /* X2 */))) = _z
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_z), (unsafe.Pointer)(_pTo.X0), _pTo.X1)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_pTo.X1))) = int8(i32(0))
+ _sqlite3Dequote(tls, _z)
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr((_pTo.X1)+uint32(i32(1)))))
+ sink0 = *p
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(20 /* X5 */))) = _nCol
+ if _pFromCol == nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(i32(0)))))) + uintptr(0 /* X0 */))) = int32(_p.X11) - i32(1)
+ goto _21
+ }
+ _i = i32(0)
+_22:
+ if _i >= _nCol {
+ goto _25
+ }
+ _10_j = i32(0)
+_26:
+ if _10_j >= int32(_p.X11) {
goto _29
}
-
- if _zAff == nil {
- goto _30
+ if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_10_j))).X0, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFromCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) == i32(0) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(_i))))) + uintptr(0 /* X0 */))) = _10_j
+ goto _29
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))) = int8(i32(65))
-_30:
+ _10_j += 1
+ goto _26
_29:
- goto _31
-
-_28:
- if (int32(_pTerm.X4) & i32(256)) != i32(0) {
- goto _32
- }
-
- _9_pRight = (*XExpr)((*XExpr)(_pTerm.X0).X5)
- if (int32(_pTerm.X3)&i32(2048)) != i32(0) || _sqlite3ExprCanBeNull(tls, _9_pRight) == 0 {
- goto _34
+ if _10_j >= int32(_p.X11) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114566), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFromCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1))
+ goto _fk_end
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(75), _regBase+_j, _pLevel.X3)
-_34:
- if _zAff == nil {
- goto _35
+ _i += 1
+ goto _22
+_25:
+_21:
+ if _pToCol == nil {
+ goto _32
}
-
- if int32(_sqlite3CompareAffinity(tls, _9_pRight, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))))) != i32(65) {
+ _i = i32(0)
+_33:
+ if _i >= _nCol {
goto _36
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))) = int8(i32(65))
-_36:
- if _sqlite3ExprNeedsNoAffinityChange(tls, _9_pRight, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j)))) == 0 {
- goto _37
+ _15_n = _sqlite3Strlen30(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = _z
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_z), (unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1), uint32(_15_n))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_15_n))) = int8(i32(0))
+ {
+ p := &_z
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_15_n+i32(1))))
+ sink0 = *p
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_j))) = int8(i32(65))
-_37:
-_35:
+ _i += 1
+ goto _33
+_36:
_32:
-_31:
- _j += 1
- goto _19
-
-_22:
- *_pzAff = _zAff
- return _regBase
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(24 /* X6 */))) = uint8(i32(0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(0)))) = uint8(_flags & i32(255))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(1)))) = uint8((_flags >> uint(i32(8))) & i32(255))
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_p.X20)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102408), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(114612)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pNextTo = (*XFKey)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_p.X20)+uintptr(56 /* X5 */))), _pFKey.X2, (unsafe.Pointer)(_pFKey)))
+ if _pNextTo == _pFKey {
+ _sqlite3OomFault(tls, _db)
+ goto _fk_end
+ }
+ if _pNextTo != nil {
+ func() {
+ if (*XFKey)(_pNextTo.X4) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(114654)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(12 /* X3 */))))) = _pNextTo
+ *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNextTo)) + uintptr(16 /* X4 */))))) = _pFKey
+ }
+ *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = _pFKey
+ _pFKey = nil
+_fk_end:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pFKey))
+ _sqlite3ExprListDelete(tls, _db, _pFromCol)
+ _sqlite3ExprListDelete(tls, _db, _pToCol)
}
-var _codeAllEqualityTermsØ00__func__Ø000 [21]int8 // -
+var _sqlite3CreateForeignKeyØ00__func__Ø000 [24]int8
func init() {
- crt.Xstrncpy(nil, &_codeAllEqualityTermsØ00__func__Ø000[0], str(114164), 21)
+ crt.Xstrncpy(nil, &_sqlite3CreateForeignKeyØ00__func__Ø000[0], str(114674), 24)
}
-func _sqlite3ExprNeedsNoAffinityChange(tls *crt.TLS, _p *XExpr, _aff int8) (r0 int32) { // sqlite3.c:92885:1
- var _op uint8 // sqlite3.c:92886:6
- _ = _op
- if int32(_aff) != i32(65) {
- goto _0
+// This routine is called when an INITIALLY IMMEDIATE or INITIALLY DEFERRED
+// clause is seen as part of a foreign key definition. The isDeferred
+// parameter is 1 for INITIALLY DEFERRED and 0 for INITIALLY IMMEDIATE.
+// The behavior of the most recently created foreign key is adjusted
+// accordingly.
+func _sqlite3DeferForeignKey(tls *crt.TLS, _pParse *XParse, _isDeferred int32) {
+ var _pTab *XTable
+ var _pFKey *XFKey
+ if (store44(&_pTab, (*XTable)(_pParse.X63)) == nil) || (store74(&_pFKey, (*XFKey)(_pTab.X4)) == nil) {
+ return
}
- return i32(1)
+ func() {
+ if _isDeferred != i32(0) && _isDeferred != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeferForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(114698)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(24 /* X6 */))) = uint8(_isDeferred)
+}
-_0:
-_1:
- if int32(_p.X0) != i32(156) && int32(_p.X0) != i32(155) {
- goto _2
- }
+var _sqlite3DeferForeignKeyØ00__func__Ø000 [23]int8
- _p = (*XExpr)(_p.X4)
- goto _1
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3DeferForeignKeyØ00__func__Ø000[0], str(114729), 23)
+}
-_2:
- _op = _p.X0
- if int32(_op) != i32(157) {
- goto _4
+// Set the collation function of the most recently parsed table column
+// to the CollSeq given.
+func _sqlite3AddCollateType(tls *crt.TLS, _pParse *XParse, _pToken *XToken) {
+ var _i int32
+ var _zColl *int8
+ var _db *Xsqlite3
+ var _p *XTable
+ var _1_pIdx *XIndex
+ if store44(&_p, (*XTable)(_pParse.X63)) == nil {
+ return
}
-
- _op = _p.X12
-_4:
- switch int32(_op) {
- case i32(97):
- goto _8
- case i32(132):
- goto _7
- case i32(133):
- goto _9
- case i32(134):
+ _i = int32(_p.X11) - i32(1)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _zColl = _sqlite3NameFromToken(tls, _db, _pToken)
+ if _zColl == nil {
+ return
+ }
+ if _sqlite3LocateCollSeq(tls, _pParse, _zColl) == nil {
+ goto _2
+ }
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_i))).X2))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_i))))) + uintptr(8 /* X2 */))) = _zColl
+ _1_pIdx = (*XIndex)(_p.X2)
+_3:
+ if _1_pIdx == nil {
goto _6
- case i32(152):
- goto _10
- default:
- goto _11
}
-
-_6:
- return bool2int((int32(_aff) == i32(68)) || (int32(_aff) == i32(67)))
-
-_7:
- return bool2int((int32(_aff) == i32(69)) || (int32(_aff) == i32(67)))
-
-_8:
- return bool2int(int32(_aff) == i32(66))
-
-_9:
- return i32(1)
-
-_10:
func() {
- if (_p.X8) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92905), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprNeedsNoAffinityChangeØ00__func__Ø000))), unsafe.Pointer(str(114188)))
+ if int32(_1_pIdx.X13) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101103), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddCollateTypeØ00__func__Ø000))), unsafe.Pointer(str(114752)))
crt.X__builtin_abort(tls)
}
}()
- return bool2int((int32(_p.X9) < i32(0)) && ((int32(_aff) == i32(68)) || (int32(_aff) == i32(67))))
-
-_11:
- return i32(0)
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X1)) + 2*uintptr(i32(0))))) == _i {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X8)) + 4*uintptr(i32(0)))) = (*XColumn)(unsafe.Pointer(uintptr(_p.X1) + 16*uintptr(_i))).X2
+ }
+ _1_pIdx = (*XIndex)(_1_pIdx.X5)
+ goto _3
+_6:
+ goto _10
+_2:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zColl))
+_10:
}
-var _sqlite3ExprNeedsNoAffinityChangeØ00__func__Ø000 [33]int8 // -
+var _sqlite3AddCollateTypeØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprNeedsNoAffinityChangeØ00__func__Ø000[0], str(114204), 33)
+ crt.Xstrncpy(nil, &_sqlite3AddCollateTypeØ00__func__Ø000[0], str(114769), 22)
}
-func _whereLikeOptimizationStringFixup(tls *crt.TLS, _v *TVdbe, _pLevel *XWhereLevel, _pTerm *XWhereTerm) { // sqlite3.c:127515:1
- var _1_pOp *XVdbeOp // sqlite3.c:127521:12
- _ = _1_pOp
- if (int32(_pTerm.X3) & i32(256)) == 0 {
- goto _0
+// This routine is called to do the work of a DROP TABLE statement.
+// pName is the name of the table to be dropped.
+func _sqlite3DropTable(tls *crt.TLS, _pParse *XParse, _pName *XSrcList, _isView int32, _noErr int32) {
+ var _iDb, _4_code int32
+ var _4_zTab, _4_zDb, _4_zArg2 *int8
+ var _db *Xsqlite3
+ var _pTab *XTable
+ var _v *TVdbe
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_db.X17) != 0 {
+ goto _exit_drop_table
}
-
func() {
- if (_pLevel.X9) <= uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127522), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLikeOptimizationStringFixupØ00__func__Ø000))), unsafe.Pointer(str(114240)))
+ if (_pParse.X16) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102213), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(112366)))
crt.X__builtin_abort(tls)
}
}()
- _1_pOp = _sqlite3VdbeGetOp(tls, _v, i32(-1))
func() {
- if _1_pOp == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127524), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLikeOptimizationStringFixupØ00__func__Ø000))), unsafe.Pointer(str(114264)))
+ if (_pName.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102214), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(114791)))
crt.X__builtin_abort(tls)
}
}()
+ if _sqlite3ReadSchema(tls, _pParse) != 0 {
+ goto _exit_drop_table
+ }
+ if _noErr != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) += 1
+ }
func() {
- if int32(_1_pOp.X0) != i32(97) && ((*Xsqlite3)((*XParse)((*XWhereInfo)((*XWhereClause)(_pTerm.X1).X0).X0).X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127525), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereLikeOptimizationStringFixupØ00__func__Ø000))), unsafe.Pointer(str(114272)))
+ if _isView != i32(0) && _isView != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102217), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(114806)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(12 /* X5 */))) = int32((_pLevel.X9) >> uint(i32(1)))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(2 /* X2 */))) = uint16(uint8((_pLevel.X9) & uint32(i32(1))))
-_0:
+ _pTab = _sqlite3LocateTableItem(tls, _pParse, uint32(_isView), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))
+ if _noErr != 0 {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) -= 1
+ }
+ if _pTab != nil {
+ goto _11
+ }
+ if _noErr != 0 {
+ _sqlite3CodeVerifyNamedSchema(tls, _pParse, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X1)
+ }
+ goto _exit_drop_table
+_11:
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
+ func() {
+ if _iDb < i32(0) || _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102226), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(21738)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pTab.X16) != 0 && _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) != 0 {
+ goto _exit_drop_table
+ }
+ _4_zTab = func() *int8 {
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ return str(50007)
+ }
+ return str(50026)
+ }()
+ _4_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ _4_zArg2 = nil
+ if _sqlite3AuthCheck(tls, _pParse, i32(9), _4_zTab, nil, _4_zDb) != 0 {
+ goto _exit_drop_table
+ }
+ if _isView == 0 {
+ goto _22
+ }
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ _4_code = i32(15)
+ goto _25
+ }
+ _4_code = i32(17)
+_25:
+ goto _26
+_22:
+ if (_pTab.X16) != 0 {
+ _4_code = i32(30)
+ _4_zArg2 = (*XModule)(_sqlite3GetVTable(tls, _db, _pTab).X1).X1
+ goto _28
+ }
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ _4_code = i32(13)
+ goto _31
+ }
+ _4_code = i32(11)
+_31:
+_28:
+_26:
+ if _sqlite3AuthCheck(tls, _pParse, _4_code, _pTab.X0, _4_zArg2, _4_zDb) != 0 {
+ goto _exit_drop_table
+ }
+ if _sqlite3AuthCheck(tls, _pParse, i32(9), _pTab.X0, nil, _4_zDb) != 0 {
+ goto _exit_drop_table
+ }
+ if (Xsqlite3_strnicmp(tls, _pTab.X0, str(111644), i32(7)) == i32(0)) && (Xsqlite3_strnicmp(tls, _pTab.X0, str(114839), i32(11)) != i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114851), unsafe.Pointer(_pTab.X0))
+ goto _exit_drop_table
+ }
+ if _isView != 0 && ((*XSelect)(_pTab.X3) == nil) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114879), unsafe.Pointer(_pTab.X0))
+ goto _exit_drop_table
+ }
+ if (_isView == 0) && ((*XSelect)(_pTab.X3) != nil) {
+ _sqlite3ErrorMsg(tls, _pParse, str(114913), unsafe.Pointer(_pTab.X0))
+ goto _exit_drop_table
+ }
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v != nil {
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
+ _sqlite3ClearStatTables(tls, _pParse, _iDb, str(61653), _pTab.X0)
+ _sqlite3FkDropTable(tls, _pParse, _pName, _pTab)
+ _sqlite3CodeDropTable(tls, _pParse, _pTab, _iDb, _isView)
+ }
+_exit_drop_table:
+ _sqlite3SrcListDelete(tls, _db, _pName)
}
-var _whereLikeOptimizationStringFixupØ00__func__Ø000 [33]int8 // -
+var _sqlite3DropTableØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_whereLikeOptimizationStringFixupØ00__func__Ø000[0], str(114344), 33)
+ crt.Xstrncpy(nil, &_sqlite3DropTableØ00__func__Ø000[0], str(114945), 17)
}
-func _updateRangeAffinityStr(tls *crt.TLS, _pRight *XExpr, _n int32, _zAff *int8) { // sqlite3.c:127154:1
- var _i int32 // sqlite3.c:127159:7
- _ = _i
- var _1_p *XExpr // sqlite3.c:127161:10
- _ = _1_p
+// If argument zDb is NULL, then call sqlite3CodeVerifySchema() for each
+// attached database. Otherwise, invoke it for the database named zDb only.
+func _sqlite3CodeVerifyNamedSchema(tls *crt.TLS, _pParse *XParse, _zDb *int8) {
+ var _i int32
+ var _db *Xsqlite3
+ var _1_pDb *XDb
+ _db = (*Xsqlite3)(_pParse.X0)
_i = i32(0)
_0:
- if _i >= _n {
+ if _i >= (_db.X5) {
goto _3
}
-
- _1_p = _sqlite3VectorFieldSubexpr(tls, _pRight, _i)
- if int32(_sqlite3CompareAffinity(tls, _1_p, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_i))))) != i32(65) && _sqlite3ExprNeedsNoAffinityChange(tls, _1_p, *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_i)))) == 0 {
- goto _5
+ _1_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
+ if ((*XBtree)(_1_pDb.X1) != nil) && ((_zDb == nil) || (i32(0) == _sqlite3StrICmp(tls, _zDb, _1_pDb.X0))) {
+ _sqlite3CodeVerifySchema(tls, _pParse, _i)
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_i))) = int8(i32(65))
-_5:
_i += 1
goto _0
-
_3:
}
-func _codeApplyAffinity(tls *crt.TLS, _pParse *XParse, _base int32, _n int32, _zAff *int8) { // sqlite3.c:127117:1
- var _v *TVdbe // sqlite3.c:127118:8
- _ = _v
- _v = (*TVdbe)(_pParse.X2)
- if _zAff != nil {
- goto _0
+// Remove entries from the sqlite_statN tables (for N in (1,2,3))
+// after a DROP INDEX or DROP TABLE command.
+func _sqlite3ClearStatTables(tls *crt.TLS, _pParse *XParse, _iDb int32, _zType *int8, _zName *int8) {
+ var _i int32
+ var _zDbName *int8
+ var _1_zTab [24]int8
+ _zDbName = (*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4) + 16*uintptr(_iDb))).X0
+ _i = i32(1)
+_0:
+ if _i > i32(4) {
+ goto _3
}
+ Xsqlite3_snprintf(tls, int32(u32(24)), (*int8)(unsafe.Pointer(&_1_zTab)), str(114962), _i)
+ if _sqlite3FindTable(tls, (*Xsqlite3)(_pParse.X0), (*int8)(unsafe.Pointer(&_1_zTab)), _zDbName) != nil {
+ _sqlite3NestedParse(tls, _pParse, str(114976), unsafe.Pointer(_zDbName), unsafe.Pointer((*int8)(unsafe.Pointer(&_1_zTab))), unsafe.Pointer(_zType), unsafe.Pointer(_zName))
+ }
+ _i += 1
+ goto _0
+_3:
+ _ = _1_zTab
+}
+// This function is called to generate code that runs when table pTab is
+// being dropped from the database. The SrcList passed as the second argument
+// to this function contains a single entry guaranteed to resolve to
+// table pTab.
+//
+// Normally, no code is required. However, if either
+//
+// (a) The table is the parent table of a FK constraint, or
+// (b) The table is the child table of a deferred FK constraint and it is
+// determined at runtime that there are outstanding deferred FK
+// constraint violations in the database,
+//
+// then the equivalent of "DELETE FROM " is executed before dropping
+// the table from the database. Triggers are disabled while running this
+// DELETE, but foreign key actions are not.
+func _sqlite3FkDropTable(tls *crt.TLS, _pParse *XParse, _pName *XSrcList, _pTab *XTable) {
+ var _1_iSkip int32
+ var _db *Xsqlite3
+ var _1_v *TVdbe
+ var _2_p *XFKey
+ _db = (*Xsqlite3)(_pParse.X0)
+ if ((_db.X6)&i32(524288)) == 0 || (_pTab.X16) != 0 || (*XSelect)(_pTab.X3) != nil {
+ goto _2
+ }
+ _1_iSkip = i32(0)
+ _1_v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127120), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeApplyAffinityØ00__func__Ø000))), unsafe.Pointer(str(43572)))
- crt.X__builtin_abort(tls)
- }
- }()
- return
-
-_0:
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127123), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeApplyAffinityØ00__func__Ø000))), unsafe.Pointer(str(43120)))
+ if _1_v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkDropTableØ00__func__Ø000))), unsafe.Pointer(str(41861)))
crt.X__builtin_abort(tls)
}
}()
-_5:
- if _n <= i32(0) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(i32(0))))) != i32(65) {
- goto _6
+ if _sqlite3FkReferences(tls, _pTab) != nil {
+ goto _5
}
-
- _n -= 1
- _base += 1
- *(*uintptr)(unsafe.Pointer(&_zAff)) += uintptr(1)
- goto _5
-
+ _2_p = (*XFKey)(_pTab.X4)
_6:
-_8:
- if _n <= i32(1) || int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zAff)) + 1*uintptr(_n-i32(1))))) != i32(65) {
+ if _2_p == nil {
goto _9
}
-
- _n -= 1
- goto _8
-
+ if ((_2_p.X6) != 0) || ((_db.X6)&i32(33554432)) != 0 {
+ goto _9
+ }
+ _2_p = (*XFKey)(_2_p.X1)
+ goto _6
_9:
- if _n <= i32(0) {
- goto _11
+ if _2_p == nil {
+ return
}
-
- _sqlite3VdbeAddOp4(tls, _v, i32(100), _base, _n, i32(0), _zAff, _n)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _base, _n)
-_11:
-}
-
-var _codeApplyAffinityØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_codeApplyAffinityØ00__func__Ø000[0], str(114380), 18)
+ _1_iSkip = _sqlite3VdbeMakeLabel(tls, _1_v)
+ _sqlite3VdbeAddOp2(tls, _1_v, i32(45), i32(1), _1_iSkip)
+_5:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(158 /* X47 */))) = uint8(i32(1))
+ _sqlite3DeleteFrom(tls, _pParse, _sqlite3SrcListDup(tls, _db, _pName, i32(0)), nil)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(158 /* X47 */))) = uint8(i32(0))
+ if ((_db.X6) & i32(33554432)) == i32(0) {
+ _sqlite3VdbeAddOp2(tls, _1_v, i32(45), i32(0), _sqlite3VdbeCurrentAddr(tls, _1_v)+i32(2))
+ _sqlite3HaltConstraint(tls, _pParse, i32(787), i32(2), nil, int8(i32(-2)), uint8(i32(4)))
+ }
+ if _1_iSkip != 0 {
+ _sqlite3VdbeResolveLabel(tls, _1_v, _1_iSkip)
+ }
+_2:
}
-var _sqlite3WhereCodeOneLoopStartØ00aStartOpØ001 [8]uint8 // sqlite3.c:128224:21
+var _sqlite3FkDropTableØ00__func__Ø000 [19]int8
func init() {
- _sqlite3WhereCodeOneLoopStartØ00aStartOpØ001 = [8]uint8{0, 0, 37, 33, 27, 24, 26, 25}
+ crt.Xstrncpy(nil, &_sqlite3FkDropTableØ00__func__Ø000[0], str(115006), 19)
}
-var _sqlite3WhereCodeOneLoopStartØ00aEndOpØ002 [4]uint8 // sqlite3.c:128234:21
-
-func init() {
- _sqlite3WhereCodeOneLoopStartØ00aEndOpØ002 = [4]uint8{41, 39, 38, 40}
+// This function returns a linked list of FKey objects (connected by
+// FKey.pNextTo) holding all children of table pTab. For example,
+// given the following schema:
+//
+// CREATE TABLE t1(a PRIMARY KEY);
+// CREATE TABLE t2(b REFERENCES t1(a);
+//
+// Calling this function with table "t1" as an argument returns a pointer
+// to the FKey structure representing the foreign key constraint on table
+// "t2". Calling this function with "t2" as the argument would return a
+// NULL pointer (as there are no FK constraints for which t2 is the parent
+// table).
+func _sqlite3FkReferences(tls *crt.TLS, _pTab *XTable) (r0 *XFKey) {
+ /* X5 */
+ return (*XFKey)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr(_pTab.X20)+uintptr(56))), _pTab.X0))
}
-func _codeDeferredSeek(tls *crt.TLS, _pWInfo *XWhereInfo, _pIdx *XIndex, _iCur int32, _iIdxCur int32) { // sqlite3.c:127770:1
- var _pParse *XParse // sqlite3.c:127776:9
- _ = _pParse
- var _v *TVdbe // sqlite3.c:127777:8
- _ = _v
- var _1_i int32 // sqlite3.c:127786:9
- _ = _1_i
- var _1_pTab *XTable // sqlite3.c:127787:11
- _ = _1_pTab
- var _1_ai *int32 // sqlite3.c:127788:9
- _ = _1_ai
- _pParse = (*XParse)(_pWInfo.X0)
- _v = (*TVdbe)(_pParse.X2)
+// Generate code for a DELETE FROM statement.
+//
+// DELETE FROM table_wxyz WHERE a<5 AND b NOT NULL;
+// \________/ \________________/
+// pTabList pWhere
+func _sqlite3DeleteFrom(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pWhere *XExpr) {
+ var _nPk, _nKey int16
+ var _i, _iTabCur, _iDataCur, _iIdxCur, _nIdx, _iDb, _memCnt, _rcauth, _eOnePass, _iPk, _iKey, _iEphCur, _iRowSet, _addrBypass, _addrLoop, _addrEphOpen, _bComplex, _isView, _28_iAddrOnce, _36_count int32
+ var _34_pVTab *int8
+ var _14_wcf uint16
+ var _aToOpen *uint8
+ var _db *Xsqlite3
+ var _pTrigger *XTrigger
+ var _pTab *XTable
+ var _v *TVdbe
+ var _aiCurOnePass [2]int32
+ var _pIdx, _pPk *XIndex
+ var _sNC XNameContext
+ var _sContext XAuthContext
+ var _pWInfo *XWhereInfo
+ _iDataCur = i32(0)
+ _iIdxCur = i32(0)
+ _memCnt = i32(-1)
+ _aToOpen = nil
+ _iPk = i32(0)
+ _nPk = i16(1)
+ _iEphCur = i32(0)
+ _iRowSet = i32(0)
+ _addrBypass = i32(0)
+ _addrLoop = i32(0)
+ _addrEphOpen = i32(0)
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sContext), i32(0), u32(8))
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ goto _delete_from_cleanup
+ }
func() {
- if _iIdxCur <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127779), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeDeferredSeekØ00__func__Ø000))), unsafe.Pointer(str(114400)))
+ if (_pTabList.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115025)))
crt.X__builtin_abort(tls)
}
}()
+ _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTabList)
+ if _pTab == nil {
+ goto _delete_from_cleanup
+ }
+ _pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil)
+ _isView = bool2int((*XSelect)(_pTab.X3) != nil)
+ _bComplex = bool2int((_pTrigger != nil) || _sqlite3FkRequired(tls, _pParse, _pTab, nil, i32(0)) != 0)
+ if _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) != 0 {
+ goto _delete_from_cleanup
+ }
+ if _sqlite3IsReadOnly(tls, _pParse, _pTab, func() int32 {
+ if _pTrigger != nil {
+ return i32(1)
+ }
+ return i32(0)
+ }()) != 0 {
+ goto _delete_from_cleanup
+ }
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(int32(_pIdx.X14)-i32(1))))) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127780), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeDeferredSeekØ00__func__Ø000))), unsafe.Pointer(str(114412)))
+ if _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(54328)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp3(tls, _v, i32(130), _iIdxCur, i32(0), _iCur)
- if (int32(_pWInfo.X10)&i32(32)) == 0 || (func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
+ _rcauth = _sqlite3AuthCheck(tls, _pParse, i32(9), _pTab.X0, nil, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
+ func() {
+ if _rcauth != i32(0) && _rcauth != i32(1) && _rcauth != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115043)))
+ crt.X__builtin_abort(tls)
}
- return _pParse
- }().X29) != uint32(i32(0)) {
- goto _7
- }
-
- _1_pTab = (*XTable)(_pIdx.X3)
- _1_ai = (*int32)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(4)*uint32(int32(_1_pTab.X11)+i32(1)))))
- if _1_ai == nil {
- goto _8
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ai)) + 4*uintptr(i32(0)))) = int32(_1_pTab.X11)
- _1_i = i32(0)
-_9:
- if _1_i >= (int32(_pIdx.X14) - i32(1)) {
- goto _12
+ }()
+ if _rcauth == i32(1) {
+ goto _delete_from_cleanup
}
-
func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_i)))) >= int32(_1_pTab.X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127792), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeDeferredSeekØ00__func__Ø000))), unsafe.Pointer(str(114448)))
+ if _isView != 0 && _pTrigger == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115109)))
crt.X__builtin_abort(tls)
}
}()
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_i)))) < i32(0) {
- goto _15
+ func() {
+ if (_pTabList.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104934), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115025)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _iTabCur = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0))))))+uintptr(40 /* X11 */))), postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1)))
+ *func() **XIndex { _nIdx = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_22:
+ if _pIdx == nil {
+ goto _25
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_ai)) + 4*uintptr(int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_1_i))))+i32(1)))) = _1_i + i32(1)
-_15:
- _1_i += 1
- goto _9
-
-_12:
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), (*int8)(unsafe.Pointer(_1_ai)), i32(-12))
-_8:
-_7:
-}
-
-var _codeDeferredSeekØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_codeDeferredSeekØ00__func__Ø000[0], str(114480), 17)
-}
-
-func _whereIndexExprTrans(tls *crt.TLS, _pIdx *XIndex, _iTabCur int32, _iIdxCur int32, _pWInfo *XWhereInfo) { // sqlite3.c:127868:1
- var _iIdxCol int32 // sqlite3.c:127874:7
- _ = _iIdxCol
- var _aColExpr *XExprList // sqlite3.c:127875:12
- _ = _aColExpr
- var _w XWalker // sqlite3.c:127876:10
- _ = _w
- var _x XIdxExprTrans // sqlite3.c:127877:16
- _ = _x
- _aColExpr = (*XExprList)(_pIdx.X10)
- if _aColExpr != nil {
- goto _0
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) += 1
+ *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_nIdx }() += 1
+ goto _22
+_25:
+ if _isView != 0 {
+ _sqlite3AuthContextPush(tls, _pParse, &_sContext, _pTab.X0)
}
- return
-
-_0:
- crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _whereIndexExprTransNode
- *(**XIdxExprTrans)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = &_x
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(4 /* X1 */))) = _iTabCur
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(8 /* X2 */))) = _iIdxCur
- _iIdxCol = i32(0)
-_1:
- if _iIdxCol >= (_aColExpr.X0) {
- goto _4
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v == nil {
+ goto _delete_from_cleanup
}
-
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_iIdxCol)))) == i32(-2) {
- goto _5
+ if int32(_pParse.X6) == i32(0) {
+ _sqlite3VdbeCountChanges(tls, _v)
+ }
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
+ if _isView != 0 {
+ _sqlite3MaterializeView(tls, _pParse, _pTab, _pWhere, _iTabCur)
+ _iDataCur = store1(&_iIdxCur, _iTabCur)
+ }
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = _pTabList
+ if _sqlite3ResolveExprNames(tls, &_sNC, _pWhere) != 0 {
+ goto _delete_from_cleanup
+ }
+ if ((_db.X6) & i32(128)) != 0 {
+ _memCnt = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _memCnt)
+ }
+ if _rcauth != i32(0) || _pWhere != nil || _bComplex != 0 || (_pTab.X16) != 0 {
+ goto _35
}
-
- goto _2
-
-_5:
func() {
- if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aColExpr))+uintptr(8 /* X2 */)))))+20*uintptr(_iIdxCol))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(127887), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereIndexExprTransØ00__func__Ø000))), unsafe.Pointer(str(114500)))
+ if _isView != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105002), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115129)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(12 /* X3 */))) = _iIdxCol
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(0 /* X0 */))))) = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aColExpr))+uintptr(8 /* X2 */))))) + 20*uintptr(_iIdxCol))).X0)
- _sqlite3WalkExpr(tls, &_w, (*XExpr)(_pWInfo.X4))
- _sqlite3WalkExprList(tls, &_w, (*XExprList)(_pWInfo.X2))
- _sqlite3WalkExprList(tls, &_w, (*XExprList)(_pWInfo.X3))
-_2:
- _iIdxCol += 1
- goto _1
-
-_4:
-}
-
-func _whereIndexExprTransNode(tls *crt.TLS, _p *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:127850:1
- var _pX *XIdxExprTrans // sqlite3.c:127851:16
- _ = _pX
- _pX = (*XIdxExprTrans)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))))))
- if _sqlite3ExprCompare(tls, _pExpr, (*XExpr)(_pX.X0), _pX.X1) != i32(0) {
- goto _0
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(152))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _pX.X2
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = int16(_pX.X3)
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = nil
- return i32(1)
-
-_0:
- return i32(0)
-}
-
-var _whereIndexExprTransØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereIndexExprTransØ00__func__Ø000[0], str(114532), 20)
-}
-
-func _sqlite3ExprCodeGetColumnToReg(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iColumn int32, _iTable int32, _iReg int32) { // sqlite3.c:94209:1
- var _r1 int32 // sqlite3.c:94216:7
- _ = _r1
- _r1 = _sqlite3ExprCodeGetColumn(tls, _pParse, _pTab, _iColumn, _iTable, _iReg, uint8(i32(0)))
- if _r1 == _iReg {
- goto _0
+ _sqlite3TableLock(tls, _pParse, _iDb, _pTab.X7, uint8(i32(1)), _pTab.X0)
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _sqlite3VdbeAddOp4(tls, _v, i32(134), _pTab.X7, _iDb, _memCnt, _pTab.X0, i32(-2))
}
-
- _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(65), _r1, _iReg)
-_0:
-}
-
-func _sqlite3WhereEnd(tls *crt.TLS, _pWInfo *XWhereInfo) { // sqlite3.c:135225:1
- var _pParse *XParse // sqlite3.c:135226:9
- _ = _pParse
- var _v *TVdbe // sqlite3.c:135227:8
- _ = _v
- var _i int32 // sqlite3.c:135228:7
- _ = _i
- var _pLevel *XWhereLevel // sqlite3.c:135229:14
- _ = _pLevel
- var _pLoop *XWhereLoop // sqlite3.c:135230:13
- _ = _pLoop
- var _pTabList *XSrcList // sqlite3.c:135231:11
- _ = _pTabList
- var _db *Xsqlite3 // sqlite3.c:135232:11
- _ = _db
- var _1_addr int32 // sqlite3.c:135239:9
- _ = _1_addr
- var _2_addrSeek int32 // sqlite3.c:135244:11
- _ = _2_addrSeek
- var _2_pIdx *XIndex // sqlite3.c:135245:13
- _ = _2_pIdx
- var _2_n int32 // sqlite3.c:135246:11
- _ = _2_n
- var _3_r1 int32 // sqlite3.c:135253:13
- _ = _3_r1
- var _3_j int32 // sqlite3.c:135254:13
- _ = _3_j
- var _3_op int32 // sqlite3.c:135254:16
- _ = _3_op
- var _6_pIn *TInLoop // sqlite3.c:135281:21
- _ = _6_pIn
- var _6_j int32 // sqlite3.c:135282:11
- _ = _6_j
- var _11_ws int32 // sqlite3.c:135310:11
- _ = _11_ws
- var _16_k int32 // sqlite3.c:135339:9
- _ = _16_k
- var _16_last int32 // sqlite3.c:135339:12
- _ = _16_last
- var _16_pOp *XVdbeOp // sqlite3.c:135340:12
- _ = _16_pOp
- var _16_pIdx *XIndex // sqlite3.c:135341:11
- _ = _16_pIdx
- var _16_pTabItem *TSrcList_item // sqlite3.c:135342:25
- _ = _16_pTabItem
- var _16_pTab *XTable // sqlite3.c:135343:11
- _ = _16_pTab
- var _22_x int32 // sqlite3.c:135384:15
- _ = _22_x
- var _23_pPk *XIndex // sqlite3.c:135387:19
- _ = _23_pPk
- _pParse = (*XParse)(_pWInfo.X0)
- _v = (*TVdbe)(_pParse.X2)
- _pTabList = (*XSrcList)(_pWInfo.X1)
- _db = (*Xsqlite3)(_pParse.X0)
- _sqlite3ExprCacheClear(tls, _pParse)
- _i = int32(_pWInfo.X11) - i32(1)
-_0:
- if _i < i32(0) {
- goto _3
+ _pIdx = (*XIndex)(_pTab.X2)
+_39:
+ if _pIdx == nil {
+ goto _42
}
-
- _pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_i)))
- _pLoop = (*XWhereLoop)(_pLevel.X18)
- if int32(_pLevel.X12) == i32(164) {
- goto _4
+ func() {
+ if (*XSchema)(_pIdx.X6) != (*XSchema)(_pTab.X20) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105009), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115137)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp2(tls, _v, i32(134), _pIdx.X11, _iDb)
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _39
+_42:
+ goto _45
+_35:
+ _14_wcf = u16(1044)
+ if (int32(_sNC.X7) & i32(64)) != 0 {
+ _bComplex = i32(1)
}
-
- _2_addrSeek = i32(0)
- if int32(_pWInfo.X16) != i32(2) || ((_pLoop.X9)&uint32(i32(512))) == uint32(i32(0)) || ((uint32((store67(&_2_pIdx, (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4)).X16)>>uint(i32(7)))<>uint(i32(31))) == 0 || store1(&_2_n, int32((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X3)) <= i32(0) || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx.X2)) + 2*uintptr(_2_n)))) < i32(36) {
- goto _9
+ {
+ p := &_14_wcf
+ *p = uint16(int32(*p) | func() int32 {
+ if _bComplex != 0 {
+ return i32(0)
+ }
+ return i32(8)
+ }())
+ sink14 = *p
}
-
- _3_r1 = (_pParse.X18) + i32(1)
- _3_j = i32(0)
-_10:
- if _3_j >= _2_n {
- goto _13
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _pPk = nil
+ _nPk = int16(i32(1))
+ _iRowSet = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _iRowSet)
+ goto _50
}
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _pLevel.X2, _3_j, _3_r1+_3_j)
- _3_j += 1
- goto _10
-
-_13:
+ _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
+ func() {
+ if _pPk == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105028), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(41994)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nPk = int16(_pPk.X13)
+ _iPk = (_pParse.X18) + i32(1)
{
p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + (_2_n + i32(1))
+ *p = (*p) + int32(_nPk)
sink1 = *p
}
- _3_op = func() int32 {
- if int32(_pLevel.X12) == i32(6) {
- return i32(24)
+ _iEphCur = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _addrEphOpen = _sqlite3VdbeAddOp2(tls, _v, i32(110), _iEphCur, int32(_nPk))
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pPk)
+_50:
+ _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pTabList, _pWhere, nil, nil, _14_wcf, _iTabCur+i32(1))
+ if _pWInfo == nil {
+ goto _delete_from_cleanup
+ }
+ _eOnePass = _sqlite3WhereOkOnePass(tls, _pWInfo, (*int32)(unsafe.Pointer(&_aiCurOnePass)))
+ func() {
+ if (_pTab.X16) != i32(0) && _eOnePass == i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105048), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115166)))
+ crt.X__builtin_abort(tls)
}
- return i32(27)
}()
- _2_addrSeek = _sqlite3VdbeAddOp4Int(tls, _v, _3_op, _pLevel.X2, i32(0), _3_r1, _2_n)
- _sqlite3VdbeAddOp2(tls, _v, i32(13), i32(1), _pLevel.X16)
-_9:
- _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X6)
- _sqlite3VdbeAddOp3(tls, _v, int32(_pLevel.X12), _pLevel.X15, _pLevel.X16, int32(_pLevel.X13))
- _sqlite3VdbeChangeP5(tls, _v, uint16(_pLevel.X14))
- if _2_addrSeek == 0 {
- goto _16
+ func() {
+ if (_pTab.X16) == 0 && _bComplex == 0 && _eOnePass == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105049), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115212)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((_db.X6) & i32(128)) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(73), _memCnt, i32(1))
}
-
- _sqlite3VdbeJumpHere(tls, _v, _2_addrSeek)
-_16:
- goto _17
-
-_4:
- _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X6)
-_17:
- if ((_pLoop.X9)&uint32(i32(2048))) == 0 || ((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X0) <= i32(0) {
- goto _19
+ if _pPk == nil {
+ goto _62
}
-
- _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X4)
- *func() **TInLoop {
- _6_j = (*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))).X0
- return &_6_pIn
- }() = (*TInLoop)(unsafe.Pointer(uintptr((*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel))+uintptr(56 /* X17 */))))).X1) + 12*uintptr(_6_j-i32(1))))
-_20:
- if _6_j <= i32(0) {
- goto _23
+ _i = i32(0)
+_63:
+ if _i >= int32(_nPk) {
+ goto _66
}
-
- _sqlite3VdbeJumpHere(tls, _v, (_6_pIn.X1)+i32(1))
- if int32(_6_pIn.X2) == i32(164) {
- goto _24
+ func() {
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115265)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iTabCur, int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))), _iPk+_i)
+ _i += 1
+ goto _63
+_66:
+ _iKey = _iPk
+ goto _69
+_62:
+ _iKey = (_pParse.X18) + i32(1)
+ _iKey = _sqlite3ExprCodeGetColumn(tls, _pParse, _pTab, i32(-1), _iTabCur, _iKey, uint8(i32(0)))
+ if _iKey > (_pParse.X18) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = _iKey
}
-
- _sqlite3VdbeAddOp2(tls, _v, int32(_6_pIn.X2), _6_pIn.X0, _6_pIn.X1)
-_24:
- _sqlite3VdbeJumpHere(tls, _v, (_6_pIn.X1)-i32(1))
- *(*uintptr)(unsafe.Pointer(func() **TInLoop { _6_j -= 1; return &_6_pIn }())) += uintptr(4294967284)
- goto _20
-
-_23:
-_19:
- _sqlite3VdbeResolveLabel(tls, _v, _pLevel.X3)
- if (_pLevel.X5) == 0 {
- goto _25
+_69:
+ if _eOnePass == i32(0) {
+ goto _71
}
-
- _sqlite3VdbeGoto(tls, _v, _pLevel.X5)
- _sqlite3VdbeComment(tls, _v, str(114552), unsafe.Pointer((*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop))+uintptr(28 /* X8 */))))).X4).X0))
- _sqlite3VdbeJumpHere(tls, _v, _pLevel.X5)
- _sqlite3VdbeJumpHere(tls, _v, (_pLevel.X5)-i32(2))
-_25:
- if (_pLevel.X10) == 0 {
- goto _26
+ _nKey = _nPk
+ _aToOpen = (*uint8)(_sqlite3DbMallocRawNN(tls, _db, uint64(_nIdx+i32(2))))
+ if _aToOpen == nil {
+ _sqlite3WhereEnd(tls, _pWInfo)
+ goto _delete_from_cleanup
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(48), int32((_pLevel.X9)>>uint(i32(1))), _pLevel.X10)
-_26:
- if (_pLevel.X0) == 0 {
- goto _27
+ crt.Xmemset(tls, (unsafe.Pointer)(_aToOpen), i32(1), uint32(_nIdx+i32(1)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_nIdx+i32(1)))) = uint8(i32(0))
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0))))) >= i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0)))))-_iTabCur))) = uint8(i32(0))
}
-
- _11_ws = int32(_pLoop.X9)
- _1_addr = _sqlite3VdbeAddOp1(tls, _v, i32(46), _pLevel.X0)
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) >= i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1)))))-_iTabCur))) = uint8(i32(0))
+ }
+ if _addrEphOpen != 0 {
+ _sqlite3VdbeChangeToNoop(tls, _v, _addrEphOpen)
+ }
+ goto _76
+_71:
+ if _pPk != nil {
+ _iKey = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _nKey = int16(i32(0))
+ _sqlite3VdbeAddOp4(tls, _v, i32(101), _iPk, int32(_nPk), _iKey, _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pPk), int32(_nPk))
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iEphCur, _iKey, _iPk, int32(_nPk))
+ goto _78
+ }
+ _nKey = int16(i32(1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(145), _iRowSet, _iKey)
+_78:
+_76:
+ if _eOnePass != i32(0) {
+ _addrBypass = _sqlite3VdbeMakeLabel(tls, _v)
+ goto _80
+ }
+ _sqlite3WhereEnd(tls, _pWInfo)
+_80:
+ if _isView != 0 {
+ goto _81
+ }
+ _28_iAddrOnce = i32(0)
+ if _eOnePass == i32(2) {
+ _28_iAddrOnce = _sqlite3VdbeAddOp0(tls, _v, i32(20))
+ }
+ _sqlite3OpenTableAndIndices(tls, _pParse, _pTab, i32(107), uint8(i32(8)), _iTabCur, _aToOpen, &_iDataCur, &_iIdxCur)
func() {
- if (_11_ws&i32(64)) != i32(0) && (_11_ws&i32(512)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135312), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(114576)))
+ if _pPk == nil && (_pTab.X16) == 0 && _iDataCur != _iTabCur {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105121), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115285)))
crt.X__builtin_abort(tls)
}
}()
- if (_11_ws & i32(64)) != i32(0) {
- goto _31
+ func() {
+ if _pPk == nil && (_pTab.X16) == 0 && _iIdxCur != (_iDataCur+i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115329)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _eOnePass == i32(2) {
+ _sqlite3VdbeJumpHere(tls, _v, _28_iAddrOnce)
}
-
- _sqlite3VdbeAddOp1(tls, _v, i32(126), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(_i))).X11)
-_31:
- if (_11_ws&i32(512)) == 0 && ((_11_ws&i32(8192)) == 0 || (*XIndex)(*(*unsafe.Pointer)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */)))))) == nil) {
- goto _34
+_81:
+ if _eOnePass == i32(0) {
+ goto _92
}
-
- _sqlite3VdbeAddOp1(tls, _v, i32(126), _pLevel.X2)
-_34:
- if int32(_pLevel.X12) != i32(52) {
- goto _35
+ func() {
+ if int32(_nKey) != int32(_nPk) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105130), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115375)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((_pTab.X16) == 0) && ((*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_iDataCur-_iTabCur)))) != 0) {
+ func() {
+ if _pPk == nil && (*XSelect)(_pTab.X3) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115385)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, _addrBypass, _iKey, int32(_nKey))
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(14), _pLevel.X15, _pLevel.X7)
- goto _36
-
-_35:
- _sqlite3VdbeGoto(tls, _v, _pLevel.X7)
-_36:
- _sqlite3VdbeJumpHere(tls, _v, _1_addr)
-_27:
- _i -= 1
- goto _0
-
-_3:
- _sqlite3VdbeResolveLabel(tls, _v, _pWInfo.X8)
+ goto _100
+_92:
+ if _pPk != nil {
+ _addrLoop = _sqlite3VdbeAddOp1(tls, _v, i32(37), _iEphCur)
+ _sqlite3VdbeAddOp2(tls, _v, i32(124), _iEphCur, _iKey)
+ func() {
+ if int32(_nKey) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105139), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115412)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _104
+ }
+ _addrLoop = _sqlite3VdbeAddOp3(tls, _v, i32(42), _iRowSet, i32(0), _iKey)
func() {
- if int32(_pWInfo.X11) > (_pTabList.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(114628)))
+ if int32(_nKey) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115420)))
crt.X__builtin_abort(tls)
}
}()
- *func() **XWhereLevel { _i = i32(0); return &_pLevel }() = (*XWhereLevel)(unsafe.Pointer((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(744 /* X24 */)))))
-_39:
- if _i >= int32(_pWInfo.X11) {
- goto _42
+_104:
+_100:
+ if (_pTab.X16) == 0 {
+ goto _107
}
-
- _16_pIdx = nil
- _16_pTabItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(_pLevel.X11)))
- _16_pTab = (*XTable)(_16_pTabItem.X4)
+ _34_pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _pTab)))
+ _sqlite3VtabMakeWritable(tls, _pParse, _pTab)
+ _sqlite3VdbeAddOp4(tls, _v, i32(12), i32(0), i32(1), _iKey, _34_pVTab, i32(-8))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(2)))
func() {
- if _16_pTab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135344), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(44760)))
+ if _eOnePass != i32(0) && _eOnePass != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105153), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(115428)))
crt.X__builtin_abort(tls)
}
}()
- _pLoop = (*XWhereLoop)(_pLevel.X18)
- if ((uint32(((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pTabItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(4))) << uint(i32(31))) >> uint(i32(31))) == 0 {
- goto _45
+ _sqlite3MayAbort(tls, _pParse)
+ if (_eOnePass == i32(1)) && ((*XParse)(_pParse.X39) == nil) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(20 /* X8 */))) = uint8(i32(0))
}
-
- _translateColumnToCopy(tls, _pParse, _pLevel.X8, _pLevel.X1, _16_pTabItem.X8, i32(0))
- goto _40
-
-_45:
- if ((_pLoop.X9) & uint32(i32(576))) == 0 {
- goto _46
+ goto _113
+_107:
+ _36_count = bool2int(int32(_pParse.X6) == i32(0))
+ _sqlite3GenerateRowDelete(tls, _pParse, _pTab, _pTrigger, _iDataCur, _iIdxCur, _iKey, _nKey, uint8(_36_count), uint8(i32(10)), uint8(_eOnePass), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1)))))
+_113:
+ if _eOnePass != i32(0) {
+ _sqlite3VdbeResolveLabel(tls, _v, _addrBypass)
+ _sqlite3WhereEnd(tls, _pWInfo)
+ goto _115
}
-
- _16_pIdx = (*XIndex)((*t59)(unsafe.Pointer((*t60)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLoop)) + uintptr(28 /* X8 */))))).X4)
- goto _47
-
-_46:
- if ((_pLoop.X9) & uint32(i32(8192))) == 0 {
- goto _48
+ if _pPk != nil {
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _iEphCur, _addrLoop+i32(1))
+ _sqlite3VdbeJumpHere(tls, _v, _addrLoop)
+ goto _117
}
-
- _16_pIdx = (*XIndex)(*(*unsafe.Pointer)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLevel)) + uintptr(56 /* X17 */))))))
-_48:
-_47:
- if _16_pIdx == nil || int32(_pWInfo.X14) != i32(0) && (((*XTable)(_16_pIdx.X3).X9)&uint32(i32(32))) == uint32(i32(0)) || (_db.X17) != 0 {
- goto _52
+ _sqlite3VdbeGoto(tls, _v, _addrLoop)
+ _sqlite3VdbeJumpHere(tls, _v, _addrLoop)
+_117:
+_115:
+_45:
+ if (int32(_pParse.X6) == i32(0)) && ((*XTable)(_pParse.X40) == nil) {
+ _sqlite3AutoincrementEnd(tls, _pParse)
}
-
- _16_last = _sqlite3VdbeCurrentAddr(tls, _v)
- _16_k = _pLevel.X8
- _16_pOp = _sqlite3VdbeGetOp(tls, _v, _16_k)
-_53:
- if _16_k >= _16_last {
- goto _56
+ if (((_db.X6)&i32(128)) != 0 && ((_pParse.X6) == 0)) && ((*XTable)(_pParse.X40) == nil) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), _memCnt, i32(1))
+ _sqlite3VdbeSetNumCols(tls, _v, i32(1))
+ _sqlite3VdbeSetColName(tls, _v, i32(0), i32(0), str(115478), nil)
}
+_delete_from_cleanup:
+ _sqlite3AuthContextPop(tls, &_sContext)
+ _sqlite3SrcListDelete(tls, _db, _pTabList)
+ _sqlite3ExprDelete(tls, _db, _pWhere)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_aToOpen))
+ _ = _sContext
+ _ = _sNC
+ _ = _aiCurOnePass
+}
- if (_16_pOp.X3) == (_pLevel.X1) {
- goto _57
- }
+var _sqlite3DeleteFromØ00__func__Ø000 [18]int8
- goto _54
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3DeleteFromØ00__func__Ø000[0], str(115491), 18)
+}
-_57:
- if int32(_16_pOp.X0) != i32(99) {
- goto _58
+// Return a list of all triggers on table pTab if there exists at least
+// one trigger that must be fired when an operation of type 'op' is
+// performed on the table, and, if that operation is an UPDATE, if at
+// least one of the columns in pChanges is being modified.
+func _sqlite3TriggersExist(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _op int32, _pChanges *XExprList, _pMask *int32) (r0 *XTrigger) {
+ var _mask int32
+ var _pList, _p *XTrigger
+ _mask = i32(0)
+ _pList = nil
+ if (((*Xsqlite3)(_pParse.X0).X6) & i32(16777216)) != i32(0) {
+ _pList = _sqlite3TriggerList(tls, _pParse, _pTab)
}
-
- _22_x = _16_pOp.X4
func() {
- if (*XTable)(_16_pIdx.X3) != _16_pTab {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(114660)))
+ if _pList != nil && (_pTab.X16) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123273), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TriggersExistØ00__func__Ø000))), unsafe.Pointer(str(115509)))
crt.X__builtin_abort(tls)
}
}()
- if ((_16_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- goto _61
+ _p = _pList
+_4:
+ if _p == nil {
+ goto _7
}
-
- _23_pPk = _sqlite3PrimaryKeyIndex(tls, _16_pTab)
- _22_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_23_pPk.X1)) + 2*uintptr(_22_x))))
- func() {
- if _22_x < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135389), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(114680)))
- crt.X__builtin_abort(tls)
+ if (int32(_p.X2) == _op) && _checkColumnOverlap(tls, (*XIdList)(_p.X5), _pChanges) != 0 {
+ {
+ p := &_mask
+ *p = (*p) | int32(_p.X3)
+ sink1 = *p
}
- }()
-_61:
- _22_x = int32(_sqlite3ColumnOfIndex(tls, _16_pIdx, int16(_22_x)))
- if _22_x < i32(0) {
- goto _64
}
+ _p = (*XTrigger)(_p.X9)
+ goto _4
+_7:
+ if _pMask != nil {
+ *_pMask = _mask
+ }
+ return func() *XTrigger {
+ if _mask != 0 {
+ return _pList
+ }
+ return nil
+ }()
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(8 /* X4 */))) = _22_x
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(4 /* X3 */))) = _pLevel.X2
-_64:
+// Given table pTab, return a list of all the triggers attached to
+// the table. The list is connected by Trigger.pNext pointers.
+//
+// All of the triggers on pTab that are in the same database as pTab
+// are already attached to pTab->pTrigger. But there might be additional
+// triggers on pTab in the TEMP schema. This routine prepends all
+// TEMP triggers on pTab to the beginning of the pTab->pTrigger list
+// and returns the combined list.
+//
+// To state it another way: This routine returns a list of all triggers
+// that fire off of pTab. The list will include any TEMP triggers on
+// pTab as well as the triggers lised in pTab->pTrigger.
+func _sqlite3TriggerList(tls *crt.TLS, _pParse *XParse, _pTab *XTable) (r0 *XTrigger) {
+ var _pTmpSchema *XSchema
+ var _2_p *XHashElem
+ var _pList, _3_pTrig *XTrigger
+ _pTmpSchema = (*XSchema)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4) + 16*uintptr(i32(1)))).X4)
+ _pList = nil
+ if (_pParse.X47) != 0 {
+ return nil
+ }
+ if _pTmpSchema == (*XSchema)(_pTab.X20) {
+ goto _1
+ }
func() {
- if ((_pLoop.X9)&uint32(i32(64))) != uint32(i32(0)) && _22_x < i32(0) && (_pWInfo.X14) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(135396), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereEndØ00__func__Ø000))), unsafe.Pointer(str(114688)))
+ if _sqlite3SchemaMutexHeld(tls, (*Xsqlite3)(_pParse.X0), i32(0), _pTmpSchema) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(122701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TriggerListØ00__func__Ø000))), unsafe.Pointer(str(115540)))
crt.X__builtin_abort(tls)
}
}()
- goto _69
-
-_58:
- if int32(_16_pOp.X0) != i32(125) {
- goto _70
+ _2_p = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTmpSchema)) + uintptr(40 /* X4 */))).X2)
+_4:
+ if _2_p == nil {
+ goto _7
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(4 /* X3 */))) = _pLevel.X2
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(131))
- goto _71
-
-_70:
- if int32(_16_pOp.X0) != i32(23) {
- goto _72
+ _3_pTrig = (*XTrigger)(_2_p.X2)
+ if ((*XSchema)(_3_pTrig.X7) == (*XSchema)(_pTab.X20)) && (i32(0) == _sqlite3StrICmp(tls, _3_pTrig.X1, _pTab.X0)) {
+ *(**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTrig)) + uintptr(32 /* X9 */))))) = func() *XTrigger {
+ if _pList != nil {
+ return _pList
+ }
+ return (*XTrigger)(_pTab.X19)
+ }()
+ _pList = _3_pTrig
}
+ _2_p = (*XHashElem)(_2_p.X0)
+ goto _4
+_7:
+_1:
+ return func() *XTrigger {
+ if _pList != nil {
+ return _pList
+ }
+ return (*XTrigger)(_pTab.X19)
+ }()
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_16_pOp)) + uintptr(4 /* X3 */))) = _pLevel.X2
-_72:
-_71:
-_69:
-_54:
- *(*uintptr)(unsafe.Pointer(func() **XVdbeOp { _16_k += 1; return &_16_pOp }())) += uintptr(24)
- goto _53
-
-_56:
-_52:
-_40:
- *(*uintptr)(unsafe.Pointer(func() **XWhereLevel { _i += 1; return &_pLevel }())) += uintptr(76)
- goto _39
+var _sqlite3TriggerListØ00__func__Ø000 [19]int8
-_42:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(144 /* X42 */))) = uint32(_pWInfo.X9)
- _whereInfoFree(tls, _db, _pWInfo)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3TriggerListØ00__func__Ø000[0], str(115590), 19)
}
-var _sqlite3WhereEndØ00__func__Ø000 [16]int8 // -
+var _sqlite3TriggersExistØ00__func__Ø000 [21]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereEndØ00__func__Ø000[0], str(114756), 16)
+ crt.Xstrncpy(nil, &_sqlite3TriggersExistØ00__func__Ø000[0], str(115609), 21)
}
-func _whereInfoFree(tls *crt.TLS, _db *Xsqlite3, _pWInfo *XWhereInfo) { // sqlite3.c:132239:1
- var _1_i int32 // sqlite3.c:132241:9
- _ = _1_i
- var _2_pLevel *XWhereLevel // sqlite3.c:132243:18
- _ = _2_pLevel
- var _4_p *XWhereLoop // sqlite3.c:132250:17
- _ = _4_p
- if func() int32 {
- if _pWInfo != nil {
- return i32(1)
+// pEList is the SET clause of an UPDATE statement. Each entry
+// in pEList is of the format =. If any of the entries
+// in pEList have an which matches an identifier in pIdList,
+// then return TRUE. If pIdList==NULL, then it is considered a
+// wildcard that matches anything. Likewise if pEList==NULL then
+// it matches anything so always return true. Return false only
+// if there is no match.
+func _checkColumnOverlap(tls *crt.TLS, _pIdList *XIdList, _pEList *XExprList) (r0 int32) {
+ var _e int32
+ if (_pIdList == nil) || func() int32 {
+ if _pEList == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123246), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkColumnOverlapØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
}
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(132240), unsafe.Pointer((*int8)(unsafe.Pointer(&_whereInfoFreeØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _2
- }
-
- _1_i = i32(0)
-_3:
- if _1_i >= int32(_pWInfo.X11) {
- goto _6
+ return i32(0)
+ }() != 0 {
+ return i32(1)
}
-
- _2_pLevel = (*XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]XWhereLevel)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(744 /* X24 */))))) + 76*uintptr(_1_i)))
- if (*XWhereLoop)(_2_pLevel.X18) == nil || (((*XWhereLoop)(_2_pLevel.X18).X9)&uint32(i32(2048))) == 0 {
- goto _8
+ _e = i32(0)
+_4:
+ if _e >= (_pEList.X0) {
+ goto _7
}
-
- _sqlite3DbFree(tls, _db, (*T_ht)(unsafe.Pointer((*t68)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pLevel))+uintptr(56 /* X17 */))))).X1)
-_8:
- _1_i += 1
- goto _3
-
-_6:
- _sqlite3WhereClauseClear(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(76 /* X22 */))))
-_9:
- if (*XWhereLoop)(_pWInfo.X19) == nil {
- goto _10
+ if _sqlite3IdListIndex(tls, _pIdList, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_e))).X1) >= i32(0) {
+ return i32(1)
}
-
- _4_p = (*XWhereLoop)(_pWInfo.X19)
- *(**XWhereLoop)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo)) + uintptr(60 /* X19 */))))) = (*XWhereLoop)(_4_p.X14)
- _whereLoopDelete(tls, _db, _4_p)
- goto _9
-
-_10:
- _sqlite3DbFreeNN(tls, _db, (unsafe.Pointer)(_pWInfo))
-_2:
-}
-
-var _whereInfoFreeØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_whereInfoFreeØ00__func__Ø000[0], str(114772), 14)
+ _e += 1
+ goto _4
+_7:
+ return i32(0)
}
-func _sqlite3WhereClauseClear(tls *crt.TLS, _pWC *XWhereClause) { // sqlite3.c:130276:1
- var _i int32 // sqlite3.c:130277:7
- _ = _i
- var _a *XWhereTerm // sqlite3.c:130278:13
- _ = _a
- var _db *Xsqlite3 // sqlite3.c:130279:11
- _ = _db
- _db = (*Xsqlite3)((*XParse)((*XWhereInfo)(_pWC.X0).X0).X0)
- *func() **XWhereTerm { _i = (_pWC.X3) - i32(1); return &_a }() = (*XWhereTerm)(_pWC.X5)
-_0:
- if _i < i32(0) {
- goto _3
+var _checkColumnOverlapØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_checkColumnOverlapØ00__func__Ø000[0], str(115630), 19)
+}
+
+// This function is called before generating code to update or delete a
+// row contained in table pTab. If the operation is a DELETE, then
+// parameter aChange is passed a NULL value. For an UPDATE, aChange points
+// to an array of size N, where N is the number of columns in table pTab.
+// If the i'th column is not modified by the UPDATE, then the corresponding
+// entry in the aChange[] array is set to -1. If the column is modified,
+// the value is 0 or greater. Parameter chngRowid is set to true if the
+// UPDATE statement modifies the rowid fields of the table.
+//
+// If any foreign key processing will be required, this function returns
+// non-zero. If there is no foreign key related processing, this function
+// returns zero.
+//
+// For an UPDATE, this function returns 2 if:
+//
+// * There are any FKs for which pTab is the child and the parent table, or
+// * the UPDATE modifies one or more parent keys for which the action is
+// not "NO ACTION" (i.e. is CASCADE, SET DEFAULT or SET NULL).
+//
+// Or, assuming some other foreign key processing is required, 1.
+func _sqlite3FkRequired(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _aChange *int32, _chngRowid int32) (r0 int32) {
+ var _eRet int32
+ var _3_p *XFKey
+ _eRet = i32(0)
+ if (((*Xsqlite3)(_pParse.X0).X6) & i32(524288)) == 0 {
+ goto _0
}
-
- if (int32(_a.X3) & i32(1)) == 0 {
- goto _4
+ if _aChange == nil {
+ _eRet = bool2int((_sqlite3FkReferences(tls, _pTab) != nil) || ((*XFKey)(_pTab.X4) != nil))
+ goto _3
}
-
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_a.X0))
+ _3_p = (*XFKey)(_pTab.X4)
_4:
- if (int32(_a.X3) & i32(16)) == 0 {
- goto _5
- }
-
- _whereOrInfoDelete(tls, _db, (*XWhereOrInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + uintptr(28 /* X10 */)))))))
- goto _6
-
-_5:
- if (int32(_a.X3) & i32(32)) == 0 {
+ if _3_p == nil {
goto _7
}
-
- _whereAndInfoDelete(tls, _db, (*XWhereAndInfo)(*(*unsafe.Pointer)(unsafe.Pointer((*t61)(unsafe.Pointer(uintptr((unsafe.Pointer)(_a)) + uintptr(28 /* X10 */)))))))
+ if i32(0) == Xsqlite3_stricmp(tls, _pTab.X0, _3_p.X2) {
+ return i32(2)
+ }
+ if _fkChildIsModified(tls, _pTab, _3_p, _aChange, _chngRowid) != 0 {
+ _eRet = i32(1)
+ }
+ _3_p = (*XFKey)(_3_p.X1)
+ goto _4
_7:
-_6:
- *(*uintptr)(unsafe.Pointer(func() **XWhereTerm { _i -= 1; return &_a }())) += uintptr(48)
- goto _0
-
-_3:
- if (*XWhereTerm)(_pWC.X5) == (*XWhereTerm)(unsafe.Pointer((*[8]XWhereTerm)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWC))+uintptr(24 /* X6 */))))) {
- goto _8
+ _3_p = _sqlite3FkReferences(tls, _pTab)
+_10:
+ if _3_p == nil {
+ goto _13
}
+ if _fkParentIsModified(tls, _pTab, _3_p, _aChange, _chngRowid) == 0 {
+ goto _14
+ }
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_p))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(1))))) != i32(0) {
+ return i32(2)
+ }
+ _eRet = i32(1)
+_14:
+ _3_p = (*XFKey)(_3_p.X3)
+ goto _10
+_13:
+_3:
+_0:
+ return _eRet
+}
+
+// The second argument points to an FKey object representing a foreign key
+// for which pTab is the child table. An UPDATE statement against pTab
+// is currently being processed. For each column of the table that is
+// actually updated, the corresponding element in the aChange[] array
+// is zero or greater (if a column is unmodified the corresponding element
+// is set to -1). If the rowid column is modified by the UPDATE statement
+// the bChngRowid argument is non-zero.
+//
+// This function returns true if any of the columns that are part of the
+// child key for FK constraint *p are modified.
+func _fkChildIsModified(tls *crt.TLS, _pTab *XTable, _p *XFKey, _aChange *int32, _bChngRowid int32) (r0 int32) {
+ var _i, _1_iChildKey int32
+ _i = i32(0)
+_0:
+ if _i >= (_p.X5) {
+ goto _3
+ }
+ _1_iChildKey = (*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(36 /* X9 */))))) + 8*uintptr(_i))).X0
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aChange)) + 4*uintptr(_1_iChildKey)))) >= i32(0) {
+ return i32(1)
+ }
+ if (_1_iChildKey == int32(_pTab.X10)) && _bChngRowid != 0 {
+ return i32(1)
+ }
+ _i += 1
+ goto _0
+_3:
+ return i32(0)
+}
- _sqlite3DbFree(tls, _db, _pWC.X5)
-_8:
-}
-
-func _whereOrInfoDelete(tls *crt.TLS, _db *Xsqlite3, _p *XWhereOrInfo) { // sqlite3.c:128955:1
- _sqlite3WhereClauseClear(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p))
-}
-
-func _whereAndInfoDelete(tls *crt.TLS, _db *Xsqlite3, _p *XWhereAndInfo) { // sqlite3.c:128963:1
- _sqlite3WhereClauseClear(tls, (*XWhereClause)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(0 /* X0 */))))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_p))
+// The second argument points to an FKey object representing a foreign key
+// for which pTab is the parent table. An UPDATE statement against pTab
+// is currently being processed. For each column of the table that is
+// actually updated, the corresponding element in the aChange[] array
+// is zero or greater (if a column is unmodified the corresponding element
+// is set to -1). If the rowid column is modified by the UPDATE statement
+// the bChngRowid argument is non-zero.
+//
+// This function returns true if any of the columns that are part of the
+// parent key for FK constraint *p are modified.
+func _fkParentIsModified(tls *crt.TLS, _pTab *XTable, _p *XFKey, _aChange *int32, _bChngRowid int32) (r0 int32) {
+ var _i, _1_iKey int32
+ var _1_zKey *int8
+ var _3_pCol *XColumn
+ _i = i32(0)
+_0:
+ if _i >= (_p.X5) {
+ goto _3
+ }
+ _1_zKey = (*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(36 /* X9 */))))) + 8*uintptr(_i))).X1
+ _1_iKey = i32(0)
+_4:
+ if _1_iKey >= int32(_pTab.X11) {
+ goto _7
+ }
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aChange)) + 4*uintptr(_1_iKey)))) < i32(0) && (_1_iKey != int32(_pTab.X10) || _bChngRowid == 0) {
+ goto _10
+ }
+ _3_pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_1_iKey)))
+ if _1_zKey == nil {
+ goto _11
+ }
+ if i32(0) == _sqlite3StrICmp(tls, _3_pCol.X0, _1_zKey) {
+ return i32(1)
+ }
+ goto _13
+_11:
+ if (int32(_3_pCol.X6) & i32(1)) != 0 {
+ return i32(1)
+ }
+_13:
+_10:
+ _1_iKey += 1
+ goto _4
+_7:
+ _i += 1
+ goto _0
+_3:
+ return i32(0)
}
-var _sqlite3WhereCodeOneLoopStartØ00aStepØ003 [2]uint8 // sqlite3.c:128794:21
+// Check to make sure the given table is writable. If it is not
+// writable, generate an error message and return 1. If it is
+// writable return 0;
+func _sqlite3IsReadOnly(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _viewOk int32) (r0 int32) {
+ if ((_pTab.X16) != 0 && (*(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32
+ }{(*(*func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer, *int64) int32
+ }{((*Xsqlite3_module)((*XModule)(_sqlite3GetVTable(tls, (*Xsqlite3)(_pParse.X0), _pTab).X1).X0).X13)})))})) == *(*unsafe.Pointer)(unsafe.Pointer(&struct {
+ f func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32
+ }{nil})))) || (((((_pTab.X9) & uint32(i32(1))) != uint32(i32(0))) && ((((*Xsqlite3)(_pParse.X0).X6) & i32(2048)) == i32(0))) && (int32(_pParse.X6) == i32(0))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(115649), unsafe.Pointer(_pTab.X0))
+ return i32(1)
+ }
+ if (_viewOk == 0) && ((*XSelect)(_pTab.X3) != nil) {
+ _sqlite3ErrorMsg(tls, _pParse, str(115678), unsafe.Pointer(_pTab.X0))
+ return i32(1)
+ }
+ return i32(0)
+}
-func init() {
- _sqlite3WhereCodeOneLoopStartØ00aStepØ003 = [2]uint8{7, 6}
+// Push an authorization context. After this routine is called, the
+// zArg3 argument to authorization callbacks will be zContext until
+// popped. Or if pParse==0, this routine is a no-op.
+func _sqlite3AuthContextPush(tls *crt.TLS, _pParse *XParse, _pContext *XAuthContext, _zContext *int8) {
+ func() {
+ if _pParse == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(99676), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthContextPushØ00__func__Ø000))), unsafe.Pointer(str(115716)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pContext)) + uintptr(4 /* X1 */))))) = _pParse
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pContext)) + uintptr(0 /* X0 */))) = _pParse.X65
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _zContext
}
-var _sqlite3WhereCodeOneLoopStartØ00aStartØ004 [2]uint8 // sqlite3.c:128795:21
+var _sqlite3AuthContextPushØ00__func__Ø000 [23]int8
func init() {
- _sqlite3WhereCodeOneLoopStartØ00aStartØ004 = [2]uint8{37, 33}
+ crt.Xstrncpy(nil, &_sqlite3AuthContextPushØ00__func__Ø000[0], str(115723), 23)
}
-func _sqlite3WhereOutputRowCount(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int16) { // sqlite3.c:130423:1
- return _pWInfo.X21
+// Set a flag in the vdbe to update the change counter when it is finalised
+// or reset.
+func _sqlite3VdbeCountChanges(tls *crt.TLS, _v *TVdbe) {
+ storebits18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v))+uintptr(140 /* X32 */))), int16(i32(1)), 16, 4)
}
-func _sqlite3WhereIsDistinct(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) { // sqlite3.c:130431:1
- return int32(_pWInfo.X16)
+// Evaluate a view and store its result in an ephemeral table. The
+// pWhere argument is an optional WHERE clause that restricts the
+// set of rows in the view that are to be added to the ephemeral table.
+func _sqlite3MaterializeView(tls *crt.TLS, _pParse *XParse, _pView *XTable, _pWhere *XExpr, _iCur int32) {
+ var _iDb int32
+ var _db *Xsqlite3
+ var _pFrom *XSrcList
+ var _pSel *XSelect
+ var _dest XSelectDest
+ _db = (*Xsqlite3)(_pParse.X0)
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pView.X20))
+ _pWhere = _sqlite3ExprDup(tls, _db, _pWhere, i32(0))
+ _pFrom = _sqlite3SrcListAppend(tls, _db, nil, nil, nil)
+ if _pFrom != nil {
+ func() {
+ if (_pFrom.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104736), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MaterializeViewØ00__func__Ø000))), unsafe.Pointer(str(115746)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, _pView.X0)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(4 /* X1 */))) = _sqlite3DbStrDup(tls, _db, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
+ func() {
+ if (*XExpr)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X12) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MaterializeViewØ00__func__Ø000))), unsafe.Pointer(str(115761)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XIdList)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X13) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(104740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MaterializeViewØ00__func__Ø000))), unsafe.Pointer(str(115780)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ }
+ _pSel = _sqlite3SelectNew(tls, _pParse, nil, _pFrom, _pWhere, nil, nil, nil, uint32(i32(131072)), nil, nil)
+ _sqlite3SelectDestInit(tls, &_dest, i32(12), _iCur)
+ _sqlite3Select(tls, _pParse, _pSel, &_dest)
+ _sqlite3SelectDelete(tls, _db, _pSel)
+ _ = _dest
}
-func _sqlite3WhereIsOrdered(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) { // sqlite3.c:130439:1
- return int32(_pWInfo.X12)
-}
+var _sqlite3MaterializeViewØ00__func__Ø000 [23]int8
-func _sqlite3WhereOrderedInnerLoop(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) { // sqlite3.c:130451:1
- return int32(_pWInfo.X17)
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3MaterializeViewØ00__func__Ø000[0], str(115802), 23)
}
-func _sqlite3WhereContinueLabel(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) { // sqlite3.c:130459:1
+// Allocate a new Select structure and return a pointer to that
+// structure.
+func _sqlite3SelectNew(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _pSrc *XSrcList, _pWhere *XExpr, _pGroupBy *XExprList, _pHaving *XExpr, _pOrderBy *XExprList, _selFlags uint32, _pLimit *XExpr, _pOffset *XExpr) (r0 *XSelect) {
+ var _standin XSelect
+ var _pNew *XSelect
+ _pNew = (*XSelect)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(80))))
+ if _pNew == nil {
+ func() {
+ if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(42486)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pNew = &_standin
+ }
+ if _pEList == nil {
+ _pEList = _sqlite3ExprListAppend(tls, _pParse, nil, _sqlite3Expr(tls, (*Xsqlite3)(_pParse.X0), i32(161), nil))
+ }
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))))) = _pEList
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))) = uint8(i32(119))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))) = _selFlags
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))) = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(16 /* X5 */))) = i32(0)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(20 /* X6 */))))) + 1*uintptr(i32(0)))) = int8(i32(0))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = i32(-1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1)))) = i32(-1)
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(6 /* X2 */))) = int16(i32(0))
+ if _pSrc == nil {
+ _pSrc = (*XSrcList)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(76))))
+ }
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X8 */))))) = _pSrc
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X9 */))))) = _pWhere
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(48 /* X10 */))))) = _pGroupBy
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(52 /* X11 */))))) = _pHaving
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(56 /* X12 */))))) = _pOrderBy
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(60 /* X13 */))))) = nil
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(64 /* X14 */))))) = nil
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(68 /* X15 */))))) = _pLimit
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(72 /* X16 */))))) = _pOffset
+ *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(76 /* X17 */))))) = nil
func() {
- if (_pWInfo.X7) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(130460), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereContinueLabelØ00__func__Ø000))), unsafe.Pointer(str(114788)))
+ if _pOffset != nil && _pLimit == nil && (_pParse.X16) <= i32(0) && int32((*Xsqlite3)(_pParse.X0).X17) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(115825)))
crt.X__builtin_abort(tls)
}
}()
- return _pWInfo.X7
+ if ((*Xsqlite3)(_pParse.X0).X17) != 0 {
+ _clearSelect(tls, (*Xsqlite3)(_pParse.X0), _pNew, bool2int(_pNew != &_standin))
+ _pNew = nil
+ goto _11
+ }
+ func() {
+ if (*XSrcList)(_pNew.X8) == nil && (_pParse.X16) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116671), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(115898)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+_11:
+ func() {
+ if _pNew == &_standin {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116673), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(115930)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return _pNew
+
+ _ = _standin
+ panic(0)
}
-var _sqlite3WhereContinueLabelØ00__func__Ø000 [26]int8 // -
+var _sqlite3SelectNewØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereContinueLabelØ00__func__Ø000[0], str(114812), 26)
+ crt.Xstrncpy(nil, &_sqlite3SelectNewØ00__func__Ø000[0], str(115945), 17)
}
-func _sqlite3WhereBreakLabel(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) { // sqlite3.c:130468:1
- return _pWInfo.X8
-}
-
-func _sqlite3ExprAnalyzeAggList(tls *crt.TLS, _pNC *XNameContext, _pList *XExprList) { // sqlite3.c:96005:1
- var _pItem *TExprList_item // sqlite3.c:96006:24
- _ = _pItem
- var _i int32 // sqlite3.c:96007:7
- _ = _i
- if _pList == nil {
- goto _0
- }
-
- *func() *int32 {
- _pItem = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
- return &_i
- }() = i32(0)
-_1:
- if _i >= (_pList.X0) {
- goto _4
- }
-
- _sqlite3ExprAnalyzeAggregates(tls, _pNC, (*XExpr)(_pItem.X0))
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
- goto _1
-
-_4:
-_0:
+// Return ONEPASS_OFF (0) if an UPDATE or DELETE statement is unable to
+// operate directly on the rowis returned by a WHERE clause. Return
+// ONEPASS_SINGLE (1) if the statement can operation directly because only
+// a single row is to be changed. Return ONEPASS_MULTI (2) if the one-pass
+// optimization can be used on multiple
+//
+// If the ONEPASS optimization is used (if this routine returns true)
+// then also write the indices of open cursors used by ONEPASS
+// into aiCur[0] and aiCur[1]. iaCur[0] gets the cursor of the data
+// table and iaCur[1] gets the cursor used by an auxiliary index.
+// Either value may be -1, indicating that cursor is not used.
+// Any cursors returned will have been opened for writing.
+//
+// aiCur[0] and aiCur[1] both get -1 if the where-clause logic is
+// unable to use the ONEPASS optimization.
+func _sqlite3WhereOkOnePass(tls *crt.TLS, _pWInfo *XWhereInfo, _aiCur *int32) (r0 int32) {
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_aiCur), (unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */)))), u32(8))
+ return int32(_pWInfo.X14)
}
-func _sqlite3ExprAnalyzeAggregates(tls *crt.TLS, _pNC *XNameContext, _pExpr *XExpr) { // sqlite3.c:95989:1
- var _w XWalker // sqlite3.c:95990:10
- _ = _w
- crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _analyzeAggregate
- *(*func(*crt.TLS, *XWalker, *XSelect) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(8 /* X2 */))))) = _analyzeAggregatesInSelect
- *(**XNameContext)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pNC
+// Allocate cursors for the pTab table and all its indices and generate
+// code to open and initialized those cursors.
+//
+// The cursor for the object that contains the complete data (normally
+// the table itself, but the PRIMARY KEY index in the case of a WITHOUT
+// ROWID table) is returned in *piDataCur. The first index cursor is
+// returned in *piIdxCur. The number of indices is returned.
+//
+// Use iBase as the first cursor (either the *piDataCur for rowid tables
+// or the first index for WITHOUT ROWID tables) if it is non-negative.
+// If iBase is negative, then allocate the next available cursor.
+//
+// For a rowid table, *piDataCur will be exactly one less than *piIdxCur.
+// For a WITHOUT ROWID table, *piDataCur will be somewhere in the range
+// of *piIdxCurs, depending on where the PRIMARY KEY index appears on the
+// pTab->pIndex list.
+//
+// If pTab is a virtual table, then this routine is a no-op and the
+// *piDataCur and *piIdxCur values are left uninitialized.
+func _sqlite3OpenTableAndIndices(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _op int32, _p5 uint8, _iBase int32, _aToOpen *uint8, _piDataCur *int32, _piIdxCur *int32) (r0 int32) {
+ var _i, _iDb, _iDataCur, _4_iIdxCur int32
+ var _v *TVdbe
+ var _pIdx *XIndex
func() {
- if (*XSrcList)(_pNC.X1) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95995), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAnalyzeAggregatesØ00__func__Ø000))), unsafe.Pointer(str(98520)))
+ if _op != i32(106) && _op != i32(107) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110658), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(115962)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3WalkExpr(tls, &_w, _pExpr)
-}
-
-func _analyzeAggregate(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:95849:1
- var _i int32 // sqlite3.c:95850:7
- _ = _i
- var _pNC *XNameContext // sqlite3.c:95851:15
- _ = _pNC
- var _pParse *XParse // sqlite3.c:95852:9
- _ = _pParse
- var _pSrcList *XSrcList // sqlite3.c:95853:11
- _ = _pSrcList
- var _pAggInfo *XAggInfo // sqlite3.c:95854:11
- _ = _pAggInfo
- var _3_pItem *TSrcList_item // sqlite3.c:95864:29
- _ = _3_pItem
- var _4_pCol *TAggInfo_col // sqlite3.c:95866:30
- _ = _4_pCol
- var _5_k int32 // sqlite3.c:95875:17
- _ = _5_k
- var _9_j int32 // sqlite3.c:95894:21
- _ = _9_j
- var _9_n int32 // sqlite3.c:95894:24
- _ = _9_n
- var _9_pGB *XExprList // sqlite3.c:95895:26
- _ = _9_pGB
- var _9_pTerm *TExprList_item // sqlite3.c:95896:38
- _ = _9_pTerm
- var _10_pE *XExpr // sqlite3.c:95899:24
- _ = _10_pE
- var _14_pItem *TAggInfo_func // sqlite3.c:95933:29
- _ = _14_pItem
- var _17_enc uint8 // sqlite3.c:95942:14
- _ = _17_enc
- _pNC = (*XNameContext)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
- _pParse = (*XParse)(_pNC.X0)
- _pSrcList = (*XSrcList)(_pNC.X1)
- _pAggInfo = (*XAggInfo)(_pNC.X3)
- switch int32(_pExpr.X0) {
- case i32(152):
- goto _2
- case i32(153):
- goto _3
- case i32(154):
- goto _1
- default:
- goto _4
- }
-
-_1:
-_2:
- if func() int32 {
- if _pSrcList != nil {
- return i32(1)
+ func() {
+ if _op != i32(107) && int32(_p5) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110659), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(115998)))
+ crt.X__builtin_abort(tls)
}
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95863), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ }()
+ if (_pTab.X16) != 0 {
+ return i32(0)
+ }
+ _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTab.X20))
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ func() {
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110668), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _7
+ }
+ }()
+ if _iBase < i32(0) {
+ _iBase = _pParse.X17
}
-
- _3_pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrcList)) + uintptr(8 /* X2 */)))))
- _i = i32(0)
-_8:
- if _i >= (_pSrcList.X0) {
- goto _11
+ _iDataCur = postInc1(&_iBase, int32(1))
+ if _piDataCur != nil {
+ *_piDataCur = _iDataCur
}
-
+ if (((_pTab.X9) & uint32(i32(32))) == uint32(i32(0))) && ((_aToOpen == nil) || ((*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(i32(0))))) != 0)) {
+ _sqlite3OpenTable(tls, _pParse, _iDataCur, _iDb, _pTab, _op)
+ goto _14
+ }
+ _sqlite3TableLock(tls, _pParse, _iDb, _pTab.X7, uint8(bool2int(_op == i32(107))), _pTab.X0)
+_14:
+ if _piIdxCur != nil {
+ *_piIdxCur = _iBase
+ }
+ *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_16:
+ if _pIdx == nil {
+ goto _19
+ }
+ _4_iIdxCur = postInc1(&_iBase, int32(1))
func() {
- if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95867), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(100152)))
+ if (*XSchema)(_pIdx.X6) != (*XSchema)(_pTab.X20) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(115137)))
crt.X__builtin_abort(tls)
}
}()
- if (_pExpr.X8) != (_3_pItem.X11) {
- goto _14
+ if int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2) || ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) {
+ goto _23
}
-
- _4_pCol = (*TAggInfo_col)(_pAggInfo.X8)
- _5_k = i32(0)
-_15:
- if _5_k >= (_pAggInfo.X9) {
- goto _18
+ if _piDataCur != nil {
+ *_piDataCur = _4_iIdxCur
}
-
- if (_4_pCol.X1) != (_pExpr.X8) || (_4_pCol.X2) != int32(_pExpr.X9) {
- goto _20
+ _p5 = uint8(i32(0))
+_23:
+ if (_aToOpen == nil) || ((*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_i+i32(1))))) != 0) {
+ _sqlite3VdbeAddOp3(tls, _v, _op, _4_iIdxCur, _pIdx.X11, _iDb)
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pIdx)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_p5))
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(_pIdx.X0))
+ }
+ *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_i }() += 1
+ goto _16
+_19:
+ if _iBase > (_pParse.X17) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = _iBase
}
+ return _i
+}
- goto _18
+var _sqlite3OpenTableAndIndicesØ00__func__Ø000 [27]int8
-_20:
- *(*uintptr)(unsafe.Pointer(func() **TAggInfo_col { _5_k += 1; return &_4_pCol }())) += uintptr(24)
- goto _15
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3OpenTableAndIndicesØ00__func__Ø000[0], str(116024), 27)
+}
-_18:
- if _5_k < (_pAggInfo.X9) || store1(&_5_k, _addAggInfoColumn(tls, (*Xsqlite3)(_pParse.X0), _pAggInfo)) < i32(0) {
- goto _22
+// Make sure virtual table pTab is contained in the pParse->apVirtualLock[]
+// array so that an OP_VBegin will get generated for it. Add pTab to the
+// array if it is missing. If pTab is already in the array, this routine
+// is a no-op.
+func _sqlite3VtabMakeWritable(tls *crt.TLS, _pParse *XParse, _pTab *XTable) {
+ var _i, _n int32
+ var _pToplevel *XParse
+ var _apVtabLock **XTable
+ _pToplevel = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }()
+ func() {
+ if (_pTab.X16) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(126093), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabMakeWritableØ00__func__Ø000))), unsafe.Pointer(str(24529)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _i = i32(0)
+_4:
+ if _i >= (_pToplevel.X56) {
+ goto _7
}
-
- _4_pCol = (*TAggInfo_col)(unsafe.Pointer(uintptr(_pAggInfo.X8) + 24*uintptr(_5_k)))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(0 /* X0 */))))) = (*XTable)(_pExpr.X14)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(4 /* X1 */))) = _pExpr.X8
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(8 /* X2 */))) = int32(_pExpr.X9)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(16 /* X4 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(12 /* X3 */))) = i32(-1)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(20 /* X5 */))))) = _pExpr
- if (*XExprList)(_pAggInfo.X7) == nil {
- goto _23
+ if _pTab == (*(**XTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel.X67)) + 4*uintptr(_i)))) {
+ return
}
-
- _9_pGB = (*XExprList)(_pAggInfo.X7)
- _9_pTerm = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_9_pGB)) + uintptr(8 /* X2 */)))))
- _9_n = _9_pGB.X0
- _9_j = i32(0)
-_24:
- if _9_j >= _9_n {
- goto _27
+ _i += 1
+ goto _4
+_7:
+ _n = int32(uint32((_pToplevel.X56)+i32(1)) * u32(4))
+ _apVtabLock = (**XTable)(Xsqlite3_realloc64(tls, (unsafe.Pointer)(_pToplevel.X67), uint64(_n)))
+ if _apVtabLock != nil {
+ *(***XTable)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(464 /* X67 */))))) = _apVtabLock
+ *(**XTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel.X67)) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel))+uintptr(416 /* X56 */))), int32(1))))) = _pTab
+ goto _10
}
+ _sqlite3OomFault(tls, (*Xsqlite3)(_pToplevel.X0))
+_10:
+}
- _10_pE = (*XExpr)(_9_pTerm.X0)
- if int32(_10_pE.X0) != i32(152) || (_10_pE.X8) != (_pExpr.X8) || int32(_10_pE.X9) != int32(_pExpr.X9) {
- goto _30
+var _sqlite3VtabMakeWritableØ00__func__Ø000 [24]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VtabMakeWritableØ00__func__Ø000[0], str(116051), 24)
+}
+
+// This routine generates VDBE code that causes a single row of a
+// single table to be deleted. Both the original table entry and
+// all indices are removed.
+//
+// Preconditions:
+//
+// 1. iDataCur is an open cursor on the btree that is the canonical data
+// store for the table. (This will be either the table itself,
+// in the case of a rowid table, or the PRIMARY KEY index in the case
+// of a WITHOUT ROWID table.)
+//
+// 2. Read/write cursors for all indices of pTab must be open as
+// cursor number iIdxCur+i for the i-th index.
+//
+// 3. The primary key for the row to be deleted must be stored in a
+// sequence of nPk memory cells starting at iPk. If nPk==0 that means
+// that a search record formed from OP_MakeRecord is contained in the
+// single memory location iPk.
+//
+// eMode:
+// Parameter eMode may be passed either ONEPASS_OFF (0), ONEPASS_SINGLE, or
+// ONEPASS_MULTI. If eMode is not ONEPASS_OFF, then the cursor
+// iDataCur already points to the row to delete. If eMode is ONEPASS_OFF
+// then this function must seek iDataCur to the entry identified by iPk
+// and nPk before reading from it.
+//
+// If eMode is ONEPASS_MULTI, then this call is being made as part
+// of a ONEPASS delete that affects multiple rows. In this case, if
+// iIdxNoSeek is a valid cursor number (>=0) and is not the same as
+// iDataCur, then its position should be preserved following the delete
+// operation. Or, if iIdxNoSeek is not a valid cursor number, the
+// position of iDataCur should be preserved instead.
+//
+// iIdxNoSeek:
+// If iIdxNoSeek is a valid cursor number (>=0) not equal to iDataCur,
+// then it identifies an index cursor (from within array of cursors
+// starting at iIdxCur) that already points to the index entry to be deleted.
+// Except, this optimization is disabled if there are BEFORE triggers since
+// the trigger body might have moved the cursor.
+func _sqlite3GenerateRowDelete(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pTrigger *XTrigger, _iDataCur int32, _iIdxCur int32, _iPk int32, _nPk int16, _count uint8, _onconf uint8, _eMode uint8, _iIdxNoSeek int32) {
+ var _iOld, _iLabel, _2_iCol, _2_addrStart int32
+ var _2_mask uint32
+ var _opSeek, _6_p5 uint8
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
+ _iOld = i32(0)
+ func() {
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105274), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateRowDeleteØ00__func__Ø000))), unsafe.Pointer(str(41861)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _iLabel = _sqlite3VdbeMakeLabel(tls, _v)
+ _opSeek = uint8(func() int32 {
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ return i32(32)
+ }
+ return i32(29)
+ }())
+ if int32(_eMode) == i32(0) {
+ _sqlite3VdbeAddOp4Int(tls, _v, int32(_opSeek), _iDataCur, _iLabel, _iPk, int32(_nPk))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(12 /* X3 */))) = _9_j
- goto _27
-
-_30:
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _9_j += 1; return &_9_pTerm }())) += uintptr(20)
- goto _24
-
-_27:
-_23:
- if (_4_pCol.X3) >= i32(0) {
- goto _31
+ if _sqlite3FkRequired(tls, _pParse, _pTab, nil, i32(0)) == 0 && _pTrigger == nil {
+ goto _6
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCol)) + uintptr(12 /* X3 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pAggInfo))+uintptr(12 /* X4 */))), int32(1))
-_31:
-_22:
+ _2_mask = _sqlite3TriggerColmask(tls, _pParse, _pTrigger, nil, i32(0), i32(3), _pTab, int32(_onconf))
{
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(131072))
+ p := &_2_mask
+ *p = (*p) | _sqlite3FkOldmask(tls, _pParse, _pTab)
sink5 = *p
}
- *(**XAggInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(40 /* X13 */))))) = _pAggInfo
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(154))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(34 /* X10 */))) = int16(_5_k)
- goto _11
-
-_14:
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_3_pItem }())) += uintptr(68)
- goto _8
-
-_11:
+ _iOld = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + (i32(1) + int32(_pTab.X11))
+ sink1 = *p
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(64), _iPk, _iOld)
+ _2_iCol = i32(0)
_7:
- r0 = i32(1)
- return
-
-_3:
- if (int32(_pNC.X7)&i32(8)) != i32(0) || (_pWalker.X4) != int32(_pExpr.X12) {
- goto _33
+ if _2_iCol >= int32(_pTab.X11) {
+ goto _10
}
-
- _14_pItem = (*TAggInfo_func)(_pAggInfo.X11)
- _i = i32(0)
-_34:
- if _i >= (_pAggInfo.X12) {
- goto _37
+ if (_2_mask == u32(4294967295)) || ((_2_iCol <= i32(31)) && ((_2_mask & (u32(1) << uint(_2_iCol))) != uint32(i32(0)))) {
+ _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iDataCur, _2_iCol, (_iOld+_2_iCol)+i32(1))
}
-
- if _sqlite3ExprCompare(tls, (*XExpr)(_14_pItem.X0), _pExpr, i32(-1)) != i32(0) {
- goto _38
+ _2_iCol += 1
+ goto _7
+_10:
+ _2_addrStart = _sqlite3VdbeCurrentAddr(tls, _v)
+ _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(109), nil, i32(1), _pTab, _iOld, int32(_onconf), _iLabel)
+ if _2_addrStart < _sqlite3VdbeCurrentAddr(tls, _v) {
+ _sqlite3VdbeAddOp4Int(tls, _v, int32(_opSeek), _iDataCur, _iLabel, _iPk, int32(_nPk))
+ _iIdxNoSeek = i32(-1)
}
-
- goto _37
-
-_38:
- *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_14_pItem }())) += uintptr(16)
- goto _34
-
-_37:
- if _i < (_pAggInfo.X12) {
- goto _39
+ _sqlite3FkCheck(tls, _pParse, _pTab, _iOld, i32(0), nil, i32(0))
+_6:
+ if (*XSelect)(_pTab.X3) != nil {
+ goto _15
}
-
- _17_enc = (*Xsqlite3)(_pParse.X0).X14
- _i = _addAggInfoFunc(tls, (*Xsqlite3)(_pParse.X0), _pAggInfo)
- if _i < i32(0) {
- goto _40
+ _6_p5 = u8(0)
+ _sqlite3GenerateRowIndexDelete(tls, _pParse, _pTab, _iDataCur, _iIdxCur, nil, _iIdxNoSeek)
+ _sqlite3VdbeAddOp2(tls, _v, i32(120), _iDataCur, func() int32 {
+ if _count != 0 {
+ return i32(1)
+ }
+ return i32(0)
+ }())
+ if int32(_pParse.X6) == i32(0) {
+ _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_pTab), i32(-15))
+ }
+ if int32(_eMode) != i32(0) {
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(4)))
+ }
+ if (_iIdxNoSeek >= i32(0)) && (_iIdxNoSeek != _iDataCur) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(120), _iIdxNoSeek)
+ }
+ if int32(_eMode) == i32(2) {
+ {
+ p := &_6_p5
+ *p = uint8(int32(*p) | i32(2))
+ sink2 = *p
+ }
}
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_6_p5))
+_15:
+ _sqlite3FkActions(tls, _pParse, _pTab, nil, _iOld, nil, i32(0))
+ _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(109), nil, i32(2), _pTab, _iOld, int32(_onconf), _iLabel)
+ _sqlite3VdbeResolveLabel(tls, _v, _iLabel)
+}
- func() {
- if ((_pExpr.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95945), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(43888)))
- crt.X__builtin_abort(tls)
+var _sqlite3GenerateRowDeleteØ00__func__Ø000 [25]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3GenerateRowDeleteØ00__func__Ø000[0], str(116075), 25)
+}
+
+// Triggers may access values stored in the old.* or new.* pseudo-table.
+// This function returns a 32-bit bitmask indicating which columns of the
+// old.* or new.* tables actually are used by triggers. This information
+// may be used by the caller, for example, to avoid having to load the entire
+// old.* record into memory when executing an UPDATE or DELETE command.
+//
+// Bit 0 of the returned mask is set if the left-most column of the
+// table may be accessed using an [old|new]. reference. Bit 1 is set if
+// the second leftmost column value is required, and so on. If there
+// are more than 32 columns in the table, and at least one of the columns
+// with an index greater than 32 may be accessed, 0xffffffff is returned.
+//
+// It is not possible to determine if the old.rowid or new.rowid column is
+// accessed by triggers. The caller must always assume that it is.
+//
+// Parameter isNew must be either 1 or 0. If it is 0, then the mask returned
+// applies to the old.* table. If 1, the new.* table.
+//
+// Parameter tr_tm must be a mask with one or both of the TRIGGER_BEFORE
+// and TRIGGER_AFTER bits set. Values accessed by BEFORE triggers are only
+// included in the returned mask if the TRIGGER_BEFORE bit is set in the
+// tr_tm parameter. Similarly, values accessed by AFTER triggers are only
+// included in the returned mask if the TRIGGER_AFTER bit is set in tr_tm.
+func _sqlite3TriggerColmask(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _pChanges *XExprList, _isNew int32, _tr_tm int32, _pTab *XTable, _orconf int32) (r0 uint32) {
+ var _op int32
+ var _mask uint32
+ var _p *XTrigger
+ var _2_pPrg *XTriggerPrg
+ _op = func() int32 {
+ if _pChanges != nil {
+ return i32(110)
}
+ return i32(109)
}()
- _14_pItem = (*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11) + 16*uintptr(_i)))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(0 /* X0 */))))) = _pExpr
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(8 /* X2 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _mask = u32(0)
func() {
- if ((_pExpr.X2) & uint32(i32(1024))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95949), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(43616)))
+ if _isNew != i32(1) && _isNew != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123727), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TriggerColmaskØ00__func__Ø000))), unsafe.Pointer(str(116100)))
crt.X__builtin_abort(tls)
}
}()
- *(**XFuncDef)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(4 /* X1 */))))) = _sqlite3FindFunction(tls, (*Xsqlite3)(_pParse.X0), *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */))))), func() int32 {
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))) != nil {
- return ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */)))))).X0)
+ _p = _pTrigger
+_5:
+ if _p == nil {
+ goto _8
+ }
+ if int32(_p.X2) != _op || (_tr_tm&int32(_p.X3)) == 0 || _checkColumnOverlap(tls, (*XIdList)(_p.X5), _pChanges) == 0 {
+ goto _11
+ }
+ _2_pPrg = _getRowTrigger(tls, _pParse, _p, _pTab, _orconf)
+ if _2_pPrg != nil {
+ {
+ p := &_mask
+ *p = (*p) | (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(_isNew))))
+ sink5 = *p
}
- return i32(0)
- }(), _17_enc, uint8(i32(0)))
- if ((_pExpr.X2) & uint32(i32(16))) == 0 {
- goto _47
}
+_11:
+ _p = (*XTrigger)(_p.X9)
+ goto _5
+_8:
+ return _mask
+}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(12 /* X3 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- goto _48
+var _sqlite3TriggerColmaskØ00__func__Ø000 [22]int8
-_47:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pItem)) + uintptr(12 /* X3 */))) = i32(-1)
-_48:
-_40:
-_39:
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3TriggerColmaskØ00__func__Ø000[0], str(116121), 22)
+}
+
+// Return a pointer to a TriggerPrg object containing the sub-program for
+// trigger pTrigger with default ON CONFLICT algorithm orconf. If no such
+// TriggerPrg object exists, a new object is allocated and populated before
+// being returned.
+func _getRowTrigger(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _pTab *XTable, _orconf int32) (r0 *XTriggerPrg) {
+ var _pRoot *XParse
+ var _pPrg *XTriggerPrg
+ _pRoot = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }()
func() {
- if ((_pExpr.X2) & uint32(i32(24576))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95962), unsafe.Pointer((*int8)(unsafe.Pointer(&_analyzeAggregateØ00__func__Ø000))), unsafe.Pointer(str(100152)))
+ if (_pTrigger.X0) != nil && _pTab != _tableOfTrigger(tls, _pTrigger) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123555), unsafe.Pointer((*int8)(unsafe.Pointer(&_getRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(116143)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(131072))
- sink5 = *p
+ _pPrg = (*XTriggerPrg)(_pRoot.X69)
+_5:
+ if _pPrg == nil || (*XTrigger)(_pPrg.X0) == _pTrigger && (_pPrg.X3) == _orconf {
+ goto _10
}
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(34 /* X10 */))) = int16(_i)
- *(**XAggInfo)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(40 /* X13 */))))) = _pAggInfo
- return i32(1)
-
-_33:
- return i32(0)
-
-_4:
- return i32(0)
+ _pPrg = (*XTriggerPrg)(_pPrg.X1)
+ goto _5
+_10:
+ if _pPrg == nil {
+ _pPrg = _codeRowTrigger(tls, _pParse, _pTrigger, _pTab, _orconf)
+ }
+ return _pPrg
}
-var _analyzeAggregateØ00__func__Ø000 [17]int8 // -
+var _getRowTriggerØ00__func__Ø000 [14]int8
func init() {
- crt.Xstrncpy(nil, &_analyzeAggregateØ00__func__Ø000[0], str(114840), 17)
+ crt.Xstrncpy(nil, &_getRowTriggerØ00__func__Ø000[0], str(116196), 14)
}
-func _addAggInfoColumn(tls *crt.TLS, _db *Xsqlite3, _pInfo *XAggInfo) (r0 int32) { // sqlite3.c:95816:1
- var _i int32 // sqlite3.c:95817:7
- _ = _i
- *(**TAggInfo_col)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(28 /* X8 */))))) = (*TAggInfo_col)(_sqlite3ArrayAllocate(tls, _db, _pInfo.X8, int32(u32(24)), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(32 /* X9 */))), &_i))
- return _i
-}
-
-func _sqlite3ArrayAllocate(tls *crt.TLS, _db *Xsqlite3, _pArray unsafe.Pointer, _szEntry int32, _pnEntry *int32, _pIdx *int32) (r0 unsafe.Pointer) { // sqlite3.c:103260:1
- var _z *int8 // sqlite3.c:103267:8
- _ = _z
- var _n int32 // sqlite3.c:103268:7
- _ = _n
- var _1_sz int32 // sqlite3.c:103270:9
- _ = _1_sz
- var _1_pNew unsafe.Pointer // sqlite3.c:103271:10
- _ = _1_pNew
- _n = *_pnEntry
- if (_n & (_n - i32(1))) != i32(0) {
- goto _0
- }
-
- _1_sz = func() int32 {
- if _n == i32(0) {
- return i32(1)
+// Create and populate a new TriggerPrg object with a sub-program
+// implementing trigger pTrigger with ON CONFLICT policy orconf.
+func _codeRowTrigger(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _pTab *XTable, _orconf int32) (r0 *XTriggerPrg) {
+ var _iEndTrigger int32
+ var _db *Xsqlite3
+ var _v *TVdbe
+ var _pWhen *XExpr
+ var _pTop, _pSubParse *XParse
+ var _pProgram *XSubProgram
+ var _sNC XNameContext
+ var _pPrg *XTriggerPrg
+ _pTop = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
}
- return (i32(2) * _n)
+ return _pParse
}()
- _1_pNew = _sqlite3DbRealloc(tls, _db, _pArray, uint64(_1_sz*_szEntry))
- if _1_pNew != nil {
- goto _3
- }
-
- *_pIdx = i32(-1)
- return _pArray
-
-_3:
- _pArray = _1_pNew
-_0:
- _z = (*int8)(_pArray)
- crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(_n*_szEntry)))), i32(0), uint32(_szEntry))
- *_pIdx = _n
- *_pnEntry += 1
- return _pArray
-}
-
-func _addAggInfoFunc(tls *crt.TLS, _db *Xsqlite3, _pInfo *XAggInfo) (r0 int32) { // sqlite3.c:95832:1
- var _i int32 // sqlite3.c:95833:7
- _ = _i
- *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo)) + uintptr(40 /* X11 */))))) = (*TAggInfo_func)(_sqlite3ArrayAllocate(tls, _db, _pInfo.X11, int32(u32(16)), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pInfo))+uintptr(44 /* X12 */))), &_i))
- return _i
-}
-
-func _analyzeAggregatesInSelect(tls *crt.TLS, _pWalker *XWalker, _pSelect *XSelect) (r0 int32) { // sqlite3.c:95974:1
- return i32(0)
-}
-
-var _sqlite3ExprAnalyzeAggregatesØ00__func__Ø000 [29]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprAnalyzeAggregatesØ00__func__Ø000[0], str(114860), 29)
-}
-
-func _havingToWhere(tls *crt.TLS, _pParse *XParse, _pGroupBy *XExprList, _pHaving *XExpr, _ppWhere **XExpr) { // sqlite3.c:121472:1
- var _sCtx THavingToWhereCtx // sqlite3.c:121478:27
- _ = _sCtx
- var _sWalker XWalker // sqlite3.c:121479:10
- _ = _sWalker
- *(***XExpr)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(0 /* X0 */))))) = _ppWhere
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sCtx)) + uintptr(4 /* X1 */))))) = _pGroupBy
- crt.Xmemset(tls, (unsafe.Pointer)(&_sWalker), i32(0), u32(28))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWalker)) + uintptr(0 /* X0 */))))) = _pParse
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWalker)) + uintptr(4 /* X1 */))))) = _havingToWhereExprCb
- *(**THavingToWhereCtx)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sWalker)) + uintptr(24 /* X6 */))))))) = &_sCtx
- _sqlite3WalkExpr(tls, &_sWalker, _pHaving)
-}
-
-func _havingToWhereExprCb(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:121439:1
- var _1_p *THavingToWhereCtx // sqlite3.c:121441:29
- _ = _1_p
- var _2_db *Xsqlite3 // sqlite3.c:121443:15
- _ = _2_db
- var _2_pNew *XExpr // sqlite3.c:121444:12
- _ = _2_pNew
- var _3_pWhere *XExpr // sqlite3.c:121446:14
- _ = _3_pWhere
- var _4_t XExpr // sqlite3.c:121447:9
- _ = _4_t
- if int32(_pExpr.X0) == i32(71) {
- goto _0
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pWhen = nil
+ _pProgram = nil
+ _iEndTrigger = i32(0)
+ func() {
+ if (_pTrigger.X0) != nil && _pTab != _tableOfTrigger(tls, _pTrigger) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123449), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(116143)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*TVdbe)(_pTop.X2) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123450), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(116210)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _pPrg = (*XTriggerPrg)(_sqlite3DbMallocZero(tls, _db, uint64(u32(24))))
+ if _pPrg == nil {
+ return nil
}
-
- _1_p = (*THavingToWhereCtx)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
- if _sqlite3ExprIsConstantOrGroupBy(tls, (*XParse)(_pWalker.X0), _pExpr, (*XExprList)(_1_p.X1)) == 0 {
- goto _1
+ *(**XTriggerPrg)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(4 /* X1 */))))) = (*XTriggerPrg)(_pTop.X69)
+ *(**XTriggerPrg)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTop)) + uintptr(472 /* X69 */))))) = _pPrg
+ *(**XSubProgram)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(8 /* X2 */))))) = store75(&_pProgram, (*XSubProgram)(_sqlite3DbMallocZero(tls, _db, uint64(u32(28)))))
+ if _pProgram == nil {
+ return nil
}
-
- _2_db = (*Xsqlite3)((*XParse)(_pWalker.X0).X0)
- _2_pNew = _sqlite3ExprAlloc(tls, _2_db, i32(134), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3IntTokens))+8*uintptr(i32(1)))), i32(0))
- if _2_pNew == nil {
- goto _2
+ _sqlite3VdbeLinkSubProgram(tls, (*TVdbe)(_pTop.X2), _pProgram)
+ *(**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(0 /* X0 */))))) = _pTrigger
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(12 /* X3 */))) = _orconf
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(0)))) = u32(4294967295)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(1)))) = u32(4294967295)
+ _pSubParse = (*XParse)(_sqlite3DbMallocZero(tls, _db, uint64(u32(484))))
+ if _pSubParse == nil {
+ return nil
}
-
- _3_pWhere = *(**XExpr)(unsafe.Pointer(_1_p.X0))
- _4_t = *_2_pNew
- *_2_pNew = *_pExpr
- *_pExpr = _4_t
- _2_pNew = _sqlite3ExprAnd(tls, _2_db, _3_pWhere, _2_pNew)
- *(**XExpr)(unsafe.Pointer(_1_p.X0)) = _2_pNew
-_2:
-_1:
- r0 = i32(1)
- return
-
-_0:
- return i32(0)
-}
-
-func _sqlite3ExprIsConstantOrGroupBy(tls *crt.TLS, _pParse *XParse, _p *XExpr, _pGroupBy *XExprList) (r0 int32) { // sqlite3.c:92762:1
- var _w XWalker // sqlite3.c:92763:10
- _ = _w
- crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */))) = uint8(i32(1))
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _exprNodeIsConstantOrGroupBy
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))))) = _pGroupBy
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(0 /* X0 */))))) = _pParse
- _sqlite3WalkExpr(tls, &_w, _p)
- return int32(_w.X5)
-}
-
-func _exprNodeIsConstantOrGroupBy(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:92718:1
- var _pGroupBy *XExprList // sqlite3.c:92719:12
- _ = _pGroupBy
- var _i int32 // sqlite3.c:92720:7
- _ = _i
- var _1_p *XExpr // sqlite3.c:92725:10
- _ = _1_p
- var _2_pColl *XCollSeq // sqlite3.c:92727:15
- _ = _2_pColl
- _pGroupBy = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))
- _i = i32(0)
-_0:
- if _i >= (_pGroupBy.X0) {
- goto _3
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pSubParse
+ *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(0 /* X0 */))))) = _db
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(136 /* X40 */))))) = _pTab
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(132 /* X39 */))))) = _pTop
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(452 /* X65 */))) = _pTrigger.X0
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(156 /* X45 */))) = _pTrigger.X2
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(144 /* X42 */))) = _pParse.X42
+ _v = _sqlite3GetVdbe(tls, _pSubParse)
+ if _v == nil {
+ goto _10
}
-
- _1_p = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pGroupBy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- if _sqlite3ExprCompare(tls, _pExpr, _1_p, i32(-1)) >= i32(2) {
- goto _4
+ _sqlite3VdbeComment(tls, _v, str(116222), unsafe.Pointer(_pTrigger.X0), unsafe.Pointer(_onErrorText(tls, _orconf)), unsafe.Pointer(func() *int8 {
+ if int32(_pTrigger.X3) == i32(1) {
+ return str(25167)
+ }
+ return str(25142)
+ }()), unsafe.Pointer(func() *int8 {
+ if int32(_pTrigger.X2) == i32(110) {
+ return str(25640)
+ }
+ return str(0)
+ }()), unsafe.Pointer(func() *int8 {
+ if int32(_pTrigger.X2) == i32(108) {
+ return str(25626)
+ }
+ return str(0)
+ }()), unsafe.Pointer(func() *int8 {
+ if int32(_pTrigger.X2) == i32(109) {
+ return str(25633)
+ }
+ return str(0)
+ }()), unsafe.Pointer(_pTab.X0))
+ _sqlite3VdbeChangeP4(tls, _v, i32(-1), _sqlite3MPrintf(tls, _db, str(116253), unsafe.Pointer(_pTrigger.X0)), i32(-1))
+ if (*XExpr)(_pTrigger.X4) == nil {
+ goto _19
}
-
- _2_pColl = _sqlite3ExprCollSeq(tls, (*XParse)(_pWalker.X0), _1_p)
- if _2_pColl != nil && Xsqlite3_stricmp(tls, str(38600), _2_pColl.X0) != i32(0) {
- goto _6
+ _pWhen = _sqlite3ExprDup(tls, _db, (*XExpr)(_pTrigger.X4), i32(0))
+ if (i32(0) == _sqlite3ResolveExprNames(tls, &_sNC, _pWhen)) && (int32(_db.X17) == i32(0)) {
+ _iEndTrigger = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3ExprIfFalse(tls, _pSubParse, _pWhen, _iEndTrigger, i32(16))
}
- return i32(1)
-
-_6:
-_4:
- _i += 1
- goto _0
-
-_3:
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _7
+ _sqlite3ExprDelete(tls, _db, _pWhen)
+_19:
+ _codeTriggerProgram(tls, _pSubParse, (*XTriggerStep)(_pTrigger.X8), _orconf)
+ if _iEndTrigger != 0 {
+ _sqlite3VdbeResolveLabel(tls, _v, _iEndTrigger)
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- return i32(2)
-
-_7:
- return _exprNodeIsConstant(tls, _pWalker, _pExpr)
-}
-
-func _explainTempTable(tls *crt.TLS, _pParse *XParse, _zUsage *int8) { // sqlite3.c:117669:1
- var _1_v *TVdbe // sqlite3.c:117671:10
- _ = _1_v
- var _1_zMsg *int8 // sqlite3.c:117672:10
- _ = _1_zMsg
- if int32(_pParse.X54) != i32(2) {
- goto _0
+ _sqlite3VdbeAddOp0(tls, _v, i32(55))
+ _sqlite3VdbeComment(tls, _v, str(116267), unsafe.Pointer(_pTrigger.X0), unsafe.Pointer(_onErrorText(tls, _orconf)))
+ _transferParseError(tls, _pParse, _pSubParse)
+ if int32(_db.X17) == i32(0) {
+ *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeTakeOpArray(tls, _v, (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram))+uintptr(4 /* X1 */))), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTop))+uintptr(108 /* X33 */))))
}
-
- _1_v = (*TVdbe)(_pParse.X2)
- _1_zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(114892), unsafe.Pointer(_zUsage))
- _sqlite3VdbeAddOp4(tls, _1_v, i32(165), _pParse.X58, i32(0), i32(0), _1_zMsg, i32(-1))
-_0:
-}
-
-func _sqlite3WhereIsSorted(tls *crt.TLS, _pWInfo *XWhereInfo) (r0 int32) { // sqlite3.c:134158:1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(8 /* X2 */))) = _pSubParse.X18
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(12 /* X3 */))) = _pSubParse.X17
+ *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(20 /* X5 */))) = (unsafe.Pointer)(_pTrigger)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(0)))) = _pSubParse.X43
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(1)))) = _pSubParse.X44
+ _sqlite3VdbeDelete(tls, _v)
+_10:
func() {
- if (int32(_pWInfo.X10) & i32(64)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134159), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereIsSortedØ00__func__Ø000))), unsafe.Pointer(str(114916)))
+ if (*TAggInfo_func)(_pSubParse.X38) != nil || (*XTable)(_pSubParse.X68) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123532), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(116278)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (int32(_pWInfo.X10) & i32(512)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(134160), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3WhereIsSortedØ00__func__Ø000))), unsafe.Pointer(str(114952)))
+ if (*XTriggerPrg)(_pSubParse.X69) != nil || (_pSubParse.X33) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123533), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(116322)))
crt.X__builtin_abort(tls)
}
}()
- return int32(_pWInfo.X13)
+ _sqlite3ParserReset(tls, _pSubParse)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubParse))
+ return _pPrg
+
+ _ = _sNC
+ panic(0)
}
-var _sqlite3WhereIsSortedØ00__func__Ø000 [21]int8 // -
+var _codeRowTriggerØ00__func__Ø000 [15]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3WhereIsSortedØ00__func__Ø000[0], str(114992), 21)
+ crt.Xstrncpy(nil, &_codeRowTriggerØ00__func__Ø000[0], str(116369), 15)
}
-func _updateAccumulator(tls *crt.TLS, _pParse *XParse, _pAggInfo *XAggInfo) { // sqlite3.c:121316:1
- var _v *TVdbe // sqlite3.c:121317:8
- _ = _v
- var _i int32 // sqlite3.c:121318:7
- _ = _i
- var _regHit int32 // sqlite3.c:121319:7
- _ = _regHit
- var _addrHitTest int32 // sqlite3.c:121320:7
- _ = _addrHitTest
- var _pF *TAggInfo_func // sqlite3.c:121321:23
- _ = _pF
- var _pC *TAggInfo_col // sqlite3.c:121322:22
- _ = _pC
- var _1_nArg int32 // sqlite3.c:121326:9
- _ = _1_nArg
- var _1_addrNext int32 // sqlite3.c:121327:9
- _ = _1_addrNext
- var _1_regAgg int32 // sqlite3.c:121328:9
- _ = _1_regAgg
- var _1_pList *XExprList // sqlite3.c:121329:14
- _ = _1_pList
- var _5_pColl *XCollSeq // sqlite3.c:121346:15
- _ = _5_pColl
- var _5_pItem *TExprList_item // sqlite3.c:121347:28
- _ = _5_pItem
- var _5_j int32 // sqlite3.c:121348:11
- _ = _5_j
- _v = (*TVdbe)(_pParse.X2)
- _regHit = i32(0)
- _addrHitTest = i32(0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pAggInfo)) + uintptr(0 /* X0 */))) = uint8(i32(1))
- *func() **TAggInfo_func { _i = i32(0); return &_pF }() = (*TAggInfo_func)(_pAggInfo.X11)
-_0:
- if _i >= (_pAggInfo.X12) {
- goto _3
- }
+// Link the SubProgram object passed as the second argument into the linked
+// list at Vdbe.pSubProgram. This list is used to delete all sub-program
+// objects when the VM is no longer required.
+func _sqlite3VdbeLinkSubProgram(tls *crt.TLS, _pVdbe *TVdbe, _p *XSubProgram) {
+ *(**XSubProgram)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))))) = (*XSubProgram)(_pVdbe.X42)
+ *(**XSubProgram)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVdbe)) + uintptr(196 /* X42 */))))) = _p
+}
- _1_addrNext = i32(0)
- _1_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr(_pF.X0) + uintptr(20 /* X6 */))))))
- func() {
- if (((*XExpr)(_pF.X0).X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121330), unsafe.Pointer((*int8)(unsafe.Pointer(&_updateAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(115016)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _1_pList == nil {
+// This function is used to add VdbeComment() annotations to a VDBE
+// program. It is not used in production code, only for debugging.
+func _onErrorText(tls *crt.TLS, _onError int32) (r0 *int8) {
+ switch _onError {
+ case i32(1):
+ goto _2
+ case i32(2):
+ goto _1
+ case i32(3):
+ goto _3
+ case i32(4):
+ goto _5
+ case i32(5):
+ goto _4
+ case i32(10):
goto _6
+ default:
+ goto _7
}
- _1_nArg = _1_pList.X0
- _1_regAgg = _sqlite3GetTempRange(tls, _pParse, _1_nArg)
- _sqlite3ExprCodeExprList(tls, _pParse, _1_pList, _1_regAgg, i32(0), uint8(i32(1)))
- goto _7
-
-_6:
- _1_nArg = i32(0)
- _1_regAgg = i32(0)
-_7:
- if (_pF.X3) < i32(0) {
- goto _8
- }
-
- _1_addrNext = _sqlite3VdbeMakeLabel(tls, _v)
- _codeDistinct(tls, _pParse, _pF.X3, _1_addrNext, i32(1), _1_regAgg)
-_8:
- if (int32((*XFuncDef)(_pF.X1).X1) & i32(32)) == 0 {
- goto _9
- }
-
- _5_pColl = nil
- func() {
- if _1_pList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121349), unsafe.Pointer((*int8)(unsafe.Pointer(&_updateAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(92252)))
- crt.X__builtin_abort(tls)
- }
- }()
- *func() **TExprList_item { _5_j = i32(0); return &_5_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pList)) + uintptr(8 /* X2 */)))))
-_12:
- if _5_pColl != nil || _5_j >= _1_nArg {
- goto _16
- }
-
- _5_pColl = _sqlite3ExprCollSeq(tls, _pParse, (*XExpr)(_5_pItem.X0))
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _5_j += 1; return &_5_pItem }())) += uintptr(20)
- goto _12
-
-_16:
- if _5_pColl != nil {
- goto _17
- }
-
- _5_pColl = (*XCollSeq)((*Xsqlite3)(_pParse.X0).X2)
-_17:
- if _regHit != i32(0) || (_pAggInfo.X10) == 0 {
- goto _19
- }
-
- _regHit = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
-_19:
- _sqlite3VdbeAddOp4(tls, _v, i32(68), _regHit, i32(0), i32(0), (*int8)(unsafe.Pointer(_5_pColl)), i32(-3))
-_9:
- _sqlite3VdbeAddOp3(tls, _v, i32(150), i32(0), _1_regAgg, _pF.X2)
- _sqlite3VdbeAppendP4(tls, _v, _pF.X1, i32(-4))
- _sqlite3VdbeChangeP5(tls, _v, uint16(uint8(_1_nArg)))
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _1_regAgg, _1_nArg)
- _sqlite3ReleaseTempRange(tls, _pParse, _1_regAgg, _1_nArg)
- if _1_addrNext == 0 {
- goto _20
- }
+_1:
+ return str(47531)
- _sqlite3VdbeResolveLabel(tls, _v, _1_addrNext)
- _sqlite3ExprCacheClear(tls, _pParse)
-_20:
- *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_pF }())) += uintptr(16)
- goto _0
+_2:
+ return str(47522)
_3:
- if _regHit == 0 {
- goto _21
- }
-
- _addrHitTest = _sqlite3VdbeAddOp1(tls, _v, i32(21), _regHit)
-_21:
- _sqlite3ExprCacheClear(tls, _pParse)
- *func() **TAggInfo_col { _i = i32(0); return &_pC }() = (*TAggInfo_col)(_pAggInfo.X8)
-_22:
- if _i >= (_pAggInfo.X10) {
- goto _25
- }
-
- _sqlite3ExprCode(tls, _pParse, (*XExpr)(_pC.X5), _pC.X4)
- *(*uintptr)(unsafe.Pointer(func() **TAggInfo_col { _i += 1; return &_pC }())) += uintptr(24)
- goto _22
+ return str(47537)
-_25:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pAggInfo)) + uintptr(0 /* X0 */))) = uint8(i32(0))
- _sqlite3ExprCacheClear(tls, _pParse)
- if _addrHitTest == 0 {
- goto _26
- }
+_4:
+ return str(7904)
- _sqlite3VdbeJumpHere(tls, _v, _addrHitTest)
-_26:
-}
+_5:
+ return str(47542)
-var _updateAccumulatorØ00__func__Ø000 [18]int8 // -
+_6:
+ return str(116384)
-func init() {
- crt.Xstrncpy(nil, &_updateAccumulatorØ00__func__Ø000[0], str(115060), 18)
+_7:
+ return str(116392)
}
-func _finalizeAggFunctions(tls *crt.TLS, _pParse *XParse, _pAggInfo *XAggInfo) { // sqlite3.c:121300:1
- var _v *TVdbe // sqlite3.c:121301:8
- _ = _v
- var _i int32 // sqlite3.c:121302:7
- _ = _i
- var _pF *TAggInfo_func // sqlite3.c:121303:23
- _ = _pF
- var _1_pList *XExprList // sqlite3.c:121305:14
- _ = _1_pList
+// Generate VDBE code for the statements inside the body of a single
+// trigger.
+func _codeTriggerProgram(tls *crt.TLS, _pParse *XParse, _pStepList *XTriggerStep, _orconf int32) (r0 int32) {
+ var _db *Xsqlite3
+ var _v *TVdbe
+ var _6_pSelect *XSelect
+ var _6_sDest XSelectDest
+ var _pStep *XTriggerStep
_v = (*TVdbe)(_pParse.X2)
- *func() **TAggInfo_func { _i = i32(0); return &_pF }() = (*TAggInfo_func)(_pAggInfo.X11)
-_0:
- if _i >= (_pAggInfo.X12) {
- goto _3
- }
-
- _1_pList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr(_pF.X0) + uintptr(20 /* X6 */))))))
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if (((*XExpr)(_pF.X0).X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121306), unsafe.Pointer((*int8)(unsafe.Pointer(&_finalizeAggFunctionsØ00__func__Ø000))), unsafe.Pointer(str(115016)))
+ if (*XTable)(_pParse.X40) == nil || (*XParse)(_pParse.X39) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123331), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(116396)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp2(tls, _v, i32(152), _pF.X2, func() int32 {
- if _1_pList != nil {
- return (_1_pList.X0)
- }
- return i32(0)
- }())
- _sqlite3VdbeAppendP4(tls, _v, _pF.X1, i32(-4))
- *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_pF }())) += uintptr(16)
- goto _0
-
-_3:
-}
-
-var _finalizeAggFunctionsØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_finalizeAggFunctionsØ00__func__Ø000[0], str(115080), 21)
-}
-
-func _resetAccumulator(tls *crt.TLS, _pParse *XParse, _pAggInfo *XAggInfo) { // sqlite3.c:121259:1
- var _v *TVdbe // sqlite3.c:121260:8
- _ = _v
- var _i int32 // sqlite3.c:121261:7
- _ = _i
- var _pFunc *TAggInfo_func // sqlite3.c:121262:23
- _ = _pFunc
- var _nReg int32 // sqlite3.c:121263:7
- _ = _nReg
- var _4_pE *XExpr // sqlite3.c:121281:12
- _ = _4_pE
- var _6_pKeyInfo *XKeyInfo // sqlite3.c:121288:17
- _ = _6_pKeyInfo
- _v = (*TVdbe)(_pParse.X2)
- _nReg = (_pAggInfo.X12) + (_pAggInfo.X9)
- if _nReg != i32(0) {
- goto _0
- }
- return
-
-_0:
func() {
- if _nReg != (((_pAggInfo.X6) - (_pAggInfo.X5)) + i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121268), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(115104)))
+ if _pStepList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123332), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(116437)))
crt.X__builtin_abort(tls)
}
}()
- _i = i32(0)
-_3:
- if _i >= (_pAggInfo.X9) {
- goto _6
- }
-
func() {
- if ((*TAggInfo_col)(unsafe.Pointer(uintptr(_pAggInfo.X8)+24*uintptr(_i))).X4) < (_pAggInfo.X5) || ((*TAggInfo_col)(unsafe.Pointer(uintptr(_pAggInfo.X8)+24*uintptr(_i))).X4) > (_pAggInfo.X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121270), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(115144)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123333), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- _i += 1
- goto _3
-
-_6:
- _i = i32(0)
-_10:
- if _i >= (_pAggInfo.X12) {
- goto _13
+ _pStep = _pStepList
+_7:
+ if _pStep == nil {
+ goto _10
}
-
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(157 /* X46 */))) = func() uint8 {
+ if _orconf == i32(10) {
+ return (_pStep.X1)
+ }
+ return uint8(_orconf)
+ }()
func() {
- if ((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11)+16*uintptr(_i))).X2) < (_pAggInfo.X5) || ((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11)+16*uintptr(_i))).X2) > (_pAggInfo.X6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121274), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(115228)))
+ if int32(_pParse.X11) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123349), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(116447)))
crt.X__builtin_abort(tls)
}
}()
- _i += 1
- goto _10
-
-_13:
- _sqlite3VdbeAddOp3(tls, _v, i32(59), i32(0), _pAggInfo.X5, _pAggInfo.X6)
- *func() *int32 { _pFunc = (*TAggInfo_func)(_pAggInfo.X11); return &_i }() = i32(0)
-_17:
- if _i >= (_pAggInfo.X12) {
- goto _20
- }
-
- if (_pFunc.X3) < i32(0) {
- goto _21
+ switch int32(_pStep.X0) {
+ case i32(108):
+ goto _17
+ case i32(109):
+ goto _18
+ case i32(110):
+ goto _16
+ default:
+ goto _19
}
- _4_pE = (*XExpr)(_pFunc.X0)
+_16:
+ _sqlite3Update(tls, _pParse, _targetSrcList(tls, _pParse, _pStep), _sqlite3ExprListDup(tls, _db, (*XExprList)(_pStep.X6), i32(0)), _sqlite3ExprDup(tls, _db, (*XExpr)(_pStep.X5), i32(0)), int32(_pParse.X46))
+ goto _20
+_17:
+ _sqlite3Insert(tls, _pParse, _targetSrcList(tls, _pParse, _pStep), _sqlite3SelectDup(tls, _db, (*XSelect)(_pStep.X3), i32(0)), _sqlite3IdListDup(tls, _db, (*XIdList)(_pStep.X7)), int32(_pParse.X46))
+ goto _20
+_18:
+ _sqlite3DeleteFrom(tls, _pParse, _targetSrcList(tls, _pParse, _pStep), _sqlite3ExprDup(tls, _db, (*XExpr)(_pStep.X5), i32(0)))
+ goto _20
+_19:
func() {
- if ((_4_pE.X2) & uint32(i32(2048))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(121282), unsafe.Pointer((*int8)(unsafe.Pointer(&_resetAccumulatorØ00__func__Ø000))), unsafe.Pointer(str(115316)))
+ if int32(_pStep.X0) != i32(119) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123377), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(116472)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pE)) + uintptr(20 /* X6 */)))))) != nil && ((*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pE)) + uintptr(20 /* X6 */)))))).X0) == i32(1) {
- goto _25
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(115352))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFunc)) + uintptr(12 /* X3 */))) = i32(-1)
- goto _26
-
-_25:
- _6_pKeyInfo = _keyInfoFromExprList(tls, _pParse, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pE)) + uintptr(20 /* X6 */)))))), i32(0), i32(0))
- _sqlite3VdbeAddOp4(tls, _v, i32(110), _pFunc.X3, i32(0), i32(0), (*int8)(unsafe.Pointer(_6_pKeyInfo)), i32(-5))
-_26:
-_21:
- *(*uintptr)(unsafe.Pointer(func() **TAggInfo_func { _i += 1; return &_pFunc }())) += uintptr(16)
- goto _17
-
+ _6_pSelect = _sqlite3SelectDup(tls, _db, (*XSelect)(_pStep.X3), i32(0))
+ _sqlite3SelectDestInit(tls, &_6_sDest, i32(4), i32(0))
+ _sqlite3Select(tls, _pParse, _6_pSelect, &_6_sDest)
+ _sqlite3SelectDelete(tls, _db, _6_pSelect)
+ goto _20
_20:
-}
-
-var _resetAccumulatorØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_resetAccumulatorØ00__func__Ø000[0], str(115404), 17)
-}
+ if int32(_pStep.X0) != i32(119) {
+ _sqlite3VdbeAddOp0(tls, _v, i32(121))
+ }
+ _pStep = (*XTriggerStep)(_pStep.X8)
+ goto _7
+_10:
+ return i32(0)
-func _isSimpleCount(tls *crt.TLS, _p *XSelect, _pAggInfo *XAggInfo) (r0 *XTable) { // sqlite3.c:120488:1
- var _pTab *XTable // sqlite3.c:120489:9
- _ = _pTab
- var _pExpr *XExpr // sqlite3.c:120490:8
- _ = _pExpr
+ _ = _6_sDest
+ panic(0)
+}
+
+var _codeTriggerProgramØ00__func__Ø000 [19]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_codeTriggerProgramØ00__func__Ø000[0], str(116493), 19)
+}
+
+// Process an UPDATE statement.
+//
+// UPDATE OR IGNORE table_wxyz SET a=b, c=d WHERE e<5 AND f NOT NULL;
+// \_______/ \________/ \______/ \________________/
+// * onError pTabList pChanges pWhere
+func _sqlite3Update(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pChanges *XExprList, _pWhere *XExpr, _onError int32) {
+ var _nPk, _21_iIdxCol int16
+ var _i, _j, _addrTop, _nIdx, _iBaseCur, _iDataCur, _iIdxCur, _iDb, _eOnePass, _hasFK, _labelBreak, _labelContinue, _flags, _isView, _tmask, _newmask, _iEph, _nKey, _addrOpen, _iPk, _bReplace, _regRowCount, _regOldRowid, _regNewRowid, _regNew, _regOld, _regRowSet, _regKey, _15_rc, _18_reg, _36_iCur, _45_addrOnce, _71_addr1 int32
+ var _55_oldmask uint32
+ var _aRegIdx, _aXRef *int32
+ var _chngPk, _chngRowid, _chngKey uint8
+ var _aToOpen *uint8
+ var _db *Xsqlite3
+ var _pTrigger *XTrigger
+ var _pTab *XTable
+ var _v *TVdbe
+ var _aiCurOnePass [2]int32
+ var _pRowidExpr *XExpr
+ var _pIdx, _pPk *XIndex
+ var _sNC XNameContext
+ var _sContext XAuthContext
+ var _pWInfo *XWhereInfo
+ _addrTop = i32(0)
+ _aRegIdx = nil
+ _aXRef = nil
+ _pRowidExpr = nil
+ _iEph = i32(0)
+ _nKey = i32(0)
+ _addrOpen = i32(0)
+ _iPk = i32(0)
+ _nPk = i16(0)
+ _bReplace = i32(0)
+ _regRowCount = i32(0)
+ _regOldRowid = i32(0)
+ _regNewRowid = i32(0)
+ _regNew = i32(0)
+ _regOld = i32(0)
+ _regRowSet = i32(0)
+ _regKey = i32(0)
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sContext), i32(0), u32(8))
+ _db = (*Xsqlite3)(_pParse.X0)
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ goto _update_cleanup
+ }
func() {
- if (*XExprList)(_p.X10) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120492), unsafe.Pointer((*int8)(unsafe.Pointer(&_isSimpleCountØ00__func__Ø000))), unsafe.Pointer(str(115424)))
+ if (_pTabList.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123900), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(115025)))
crt.X__builtin_abort(tls)
}
}()
- if (*XExpr)(_p.X9) == nil && ((*XExprList)(_p.X0).X0) == i32(1) && ((*XSrcList)(_p.X8).X0) == i32(1) && (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X5) == nil {
- goto _5
+ _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTabList)
+ if _pTab == nil {
+ goto _update_cleanup
}
- return nil
-
-_5:
- _pTab = (*XTable)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_p.X8)+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X4)
- _pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0)+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X0)
+ _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTab.X20))
+ _pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(110), _pChanges, &_tmask)
+ _isView = bool2int((*XSelect)(_pTab.X3) != nil)
func() {
- if _pTab == nil || (*XSelect)(_pTab.X3) != nil || _pExpr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120501), unsafe.Pointer((*int8)(unsafe.Pointer(&_isSimpleCountØ00__func__Ø000))), unsafe.Pointer(str(115440)))
+ if _pTrigger == nil && _tmask != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116512)))
crt.X__builtin_abort(tls)
}
}()
- if (_pTab.X16) == 0 {
- goto _10
+ if _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) != 0 {
+ goto _update_cleanup
}
- return nil
-
-_10:
- if int32(_pExpr.X0) == i32(153) {
- goto _11
+ if _sqlite3IsReadOnly(tls, _pParse, _pTab, _tmask) != 0 {
+ goto _update_cleanup
}
- return nil
-
-_11:
- if func() int32 {
- if (_pAggInfo.X12) == i32(0) {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120505), unsafe.Pointer((*int8)(unsafe.Pointer(&_isSimpleCountØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(40 /* X11 */))) = store1(&_iBaseCur, store1(&_iDataCur, postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))))
+ _iIdxCur = _iDataCur + i32(1)
+ _pPk = func() *XIndex {
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ return nil
}
- return i32(0)
- }() == 0 {
- goto _14
- }
- return nil
-
-_14:
- if (int32((*XFuncDef)((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11)+16*uintptr(i32(0)))).X1).X1) & i32(256)) != i32(0) {
+ return _sqlite3PrimaryKeyIndex(tls, _pTab)
+ }()
+ *func() **XIndex { _nIdx = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_12:
+ if _pIdx == nil {
goto _15
}
- return nil
-
-_15:
- if ((_pExpr.X2) & uint32(i32(16))) == 0 {
- goto _16
+ if (int32((uint32(_pIdx.X16)<>uint(i32(30))) == i32(2)) && (_pPk != nil) {
+ _iDataCur = _pParse.X17
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(40 /* X11 */))) = _iDataCur
}
- return nil
-
-_16:
- return _pTab
-}
-
-var _isSimpleCountØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_isSimpleCountØ00__func__Ø000[0], str(115472), 14)
-}
-
-func _explainSimpleCount(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pIdx *XIndex) { // sqlite3.c:121399:1
- var _1_bCover int32 // sqlite3.c:121405:9
- _ = _1_bCover
- var _1_zEqp *int8 // sqlite3.c:121406:10
- _ = _1_zEqp
- if int32(_pParse.X54) != i32(2) {
- goto _0
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) += 1
+ *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_nIdx }() += 1
+ goto _12
+_15:
+ _aXRef = (*int32)(_sqlite3DbMallocRawNN(tls, _db, uint64(((u32(4)*uint32(int32(_pTab.X11)+_nIdx))+uint32(_nIdx))+uint32(i32(2)))))
+ if _aXRef == nil {
+ goto _update_cleanup
}
-
- _1_bCover = bool2int((_pIdx != nil) && ((((_pTab.X9) & uint32(i32(32))) == uint32(i32(0))) || (int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2))))
- _1_zEqp = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(115488), unsafe.Pointer(_pTab.X0), unsafe.Pointer(func() *int8 {
- if _1_bCover != 0 {
- return str(115508)
- }
- return str(196)
- }()), unsafe.Pointer(func() *int8 {
- if _1_bCover != 0 {
- return (_pIdx.X0)
- }
- return str(196)
- }()))
- _sqlite3VdbeAddOp4(tls, (*TVdbe)(_pParse.X2), i32(165), _pParse.X58, i32(0), i32(0), _1_zEqp, i32(-1))
-_0:
-}
-
-func _minMaxQuery(tls *crt.TLS, _pAggInfo *XAggInfo, _ppMinMax **XExprList) (r0 uint8) { // sqlite3.c:120452:1
- var _eRet int32 // sqlite3.c:120453:7
- _ = _eRet
- var _1_pExpr *XExpr // sqlite3.c:120457:10
- _ = _1_pExpr
- var _1_pEList *XExprList // sqlite3.c:120458:14
- _ = _1_pEList
- var _2_zFunc *int8 // sqlite3.c:120462:18
- _ = _2_zFunc
- _eRet = i32(0)
- *_ppMinMax = nil
- if (_pAggInfo.X12) != i32(1) {
- goto _0
+ _aRegIdx = (*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(_aXRef)) + uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(_pTab.X11)))))*uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(4)))))))))))
+ _aToOpen = (*uint8)(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(_aRegIdx)) + uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(_nIdx)))))*uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(4)))))))))))))
+ crt.Xmemset(tls, (unsafe.Pointer)(_aToOpen), i32(1), uint32(_nIdx+i32(1)))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_nIdx+i32(1)))) = uint8(i32(0))
+ _i = i32(0)
+_19:
+ if _i >= int32(_pTab.X11) {
+ goto _22
}
-
- _1_pExpr = (*XExpr)((*TAggInfo_func)(unsafe.Pointer(uintptr(_pAggInfo.X11) + 16*uintptr(i32(0)))).X0)
- _1_pEList = (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pExpr)) + uintptr(20 /* X6 */))))))
- func() {
- if int32(_1_pExpr.X0) != i32(153) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120460), unsafe.Pointer((*int8)(unsafe.Pointer(&_minMaxQueryØ00__func__Ø000))), unsafe.Pointer(str(100976)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _1_pEList == nil || (_1_pEList.X0) != i32(1) || int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0).X0) != i32(154) {
- goto _5
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i))) = i32(-1)
+ _i += 1
+ goto _19
+_22:
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = _pTabList
+ _chngRowid = store2(&_chngPk, uint8(i32(0)))
+ _i = i32(0)
+_23:
+ if _i >= (_pChanges.X0) {
+ goto _26
}
-
- _2_zFunc = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pExpr)) + uintptr(8 /* X3 */)))))
- if _sqlite3StrICmp(tls, _2_zFunc, str(6248)) != i32(0) {
- goto _6
+ if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0)) != 0 {
+ goto _update_cleanup
}
-
- _eRet = i32(1)
- *_ppMinMax = _1_pEList
- goto _7
-
-_6:
- if _sqlite3StrICmp(tls, _2_zFunc, str(6252)) != i32(0) {
- goto _8
+ _j = i32(0)
+_28:
+ if _j >= int32(_pTab.X11) {
+ goto _31
}
-
- _eRet = i32(2)
- *_ppMinMax = _1_pEList
-_8:
-_7:
-_5:
-_0:
- func() {
- if (*_ppMinMax) != nil && ((*_ppMinMax).X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(120473), unsafe.Pointer((*int8)(unsafe.Pointer(&_minMaxQueryØ00__func__Ø000))), unsafe.Pointer(str(115532)))
- crt.X__builtin_abort(tls)
- }
- }()
- return uint8(_eRet)
-}
-
-var _minMaxQueryØ00__func__Ø000 [12]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_minMaxQueryØ00__func__Ø000[0], str(115572), 12)
-}
-
-func _generateSortTail(tls *crt.TLS, _pParse *XParse, _p *XSelect, _pSort *XSortCtx, _nColumn int32, _pDest *XSelectDest) { // sqlite3.c:117735:1
- var _v *TVdbe // sqlite3.c:117742:8
- _ = _v
- var _addrBreak int32 // sqlite3.c:117743:7
- _ = _addrBreak
- var _addrContinue int32 // sqlite3.c:117744:7
- _ = _addrContinue
- var _addr int32 // sqlite3.c:117745:7
- _ = _addr
- var _addrOnce int32 // sqlite3.c:117746:7
- _ = _addrOnce
- var _iTab int32 // sqlite3.c:117747:7
- _ = _iTab
- var _pOrderBy *XExprList // sqlite3.c:117748:12
- _ = _pOrderBy
- var _eDest int32 // sqlite3.c:117749:7
- _ = _eDest
- var _iParm int32 // sqlite3.c:117750:7
- _ = _iParm
- var _regRow int32 // sqlite3.c:117751:7
- _ = _regRow
- var _regRowid int32 // sqlite3.c:117752:7
- _ = _regRowid
- var _iCol int32 // sqlite3.c:117753:7
- _ = _iCol
- var _nKey int32 // sqlite3.c:117754:7
- _ = _nKey
- var _iSortTab int32 // sqlite3.c:117755:7
- _ = _iSortTab
- var _nSortData int32 // sqlite3.c:117756:7
- _ = _nSortData
- var _i int32 // sqlite3.c:117757:7
- _ = _i
- var _bSeq int32 // sqlite3.c:117758:7
- _ = _bSeq
- var _aOutEx *TExprList_item // sqlite3.c:117759:24
- _ = _aOutEx
- var _4_regSortOut int32 // sqlite3.c:117779:9
- _ = _4_regSortOut
- var _7_iRead int32 // sqlite3.c:117798:9
- _ = _7_iRead
- _v = (*TVdbe)(_pParse.X2)
- _addrBreak = _pSort.X6
- _addrContinue = _sqlite3VdbeMakeLabel(tls, _v)
- _addrOnce = i32(0)
- _pOrderBy = (*XExprList)(_pSort.X0)
- _eDest = int32(_pDest.X0)
- _iParm = _pDest.X2
- _aOutEx = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr(_p.X0) + uintptr(8 /* X2 */)))))
- func() {
- if _addrBreak >= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117761), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateSortTailØ00__func__Ø000))), unsafe.Pointer(str(115584)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (_pSort.X4) == 0 {
- goto _2
+ if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X0, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) != i32(0) {
+ goto _32
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(14), _pSort.X3, _pSort.X4)
- _sqlite3VdbeGoto(tls, _v, _addrBreak)
- _sqlite3VdbeResolveLabel(tls, _v, _pSort.X4)
-_2:
- _iTab = _pSort.X2
- if _eDest != i32(9) && _eDest != i32(13) && _eDest != i32(10) {
- goto _5
+ if _j == int32(_pTab.X10) {
+ _chngRowid = uint8(i32(1))
+ _pRowidExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ goto _34
}
-
- _regRowid = i32(0)
- _regRow = _pDest.X3
- _nSortData = _nColumn
- goto _6
-
-_5:
- _regRowid = _sqlite3GetTempReg(tls, _pParse)
- _regRow = _sqlite3GetTempRange(tls, _pParse, _nColumn)
- _nSortData = _nColumn
-_6:
- _nKey = (_pOrderBy.X0) - (_pSort.X1)
- if (int32(_pSort.X7) & i32(1)) == 0 {
- goto _7
+ if (_pPk != nil) && ((int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X6) & i32(1)) != i32(0)) {
+ _chngPk = uint8(i32(1))
}
-
- _4_regSortOut = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _iSortTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- if (_pSort.X4) == 0 {
- goto _8
+_34:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_j))) = _i
+ goto _31
+_32:
+ _j += 1
+ goto _28
+_31:
+ if _j < int32(_pTab.X11) {
+ goto _37
}
-
- _addrOnce = _sqlite3VdbeAddOp0(tls, _v, i32(20))
-_8:
- _sqlite3VdbeAddOp3(tls, _v, i32(113), _iSortTab, _4_regSortOut, (_nKey+i32(1))+_nSortData)
- if _addrOnce == 0 {
- goto _9
+ if (_pPk == nil) && _sqlite3IsRowid(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) != 0 {
+ _j = i32(-1)
+ _chngRowid = uint8(i32(1))
+ _pRowidExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ goto _40
}
-
- _sqlite3VdbeJumpHere(tls, _v, _addrOnce)
-_9:
- _addr = i32(1) + _sqlite3VdbeAddOp2(tls, _v, i32(35), _iTab, _addrBreak)
- _codeOffset(tls, _v, _p.X5, _addrContinue)
- _sqlite3VdbeAddOp3(tls, _v, i32(123), _iTab, _4_regSortOut, _iSortTab)
- _bSeq = i32(0)
- goto _10
-
-_7:
- _addr = i32(1) + _sqlite3VdbeAddOp2(tls, _v, i32(36), _iTab, _addrBreak)
- _codeOffset(tls, _v, _p.X5, _addrContinue)
- _iSortTab = _iTab
- _bSeq = i32(1)
-_10:
- *func() *int32 { _i = i32(0); return &_iCol }() = _nKey + _bSeq
-_11:
- if _i >= _nSortData {
- goto _14
+ _sqlite3ErrorMsg(tls, _pParse, str(116533), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
+ goto _update_cleanup
+_40:
+_37:
+ _15_rc = _sqlite3AuthCheck(tls, _pParse, i32(23), _pTab.X0, func() *int8 {
+ if _j < i32(0) {
+ return str(96456)
+ }
+ return ((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_j))).X0)
+ }(), (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
+ if _15_rc == i32(1) {
+ goto _update_cleanup
}
-
- if ((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx))+20*uintptr(_i))))) + uintptr(16 /* X5 */))))).X0) == 0 {
- goto _15
+ if _15_rc == i32(2) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_j))) = i32(-1)
}
-
- _7_iRead = int32((*t41)(unsafe.Pointer((*t35)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx))+20*uintptr(_i)))))+uintptr(16 /* X5 */))))).X0) - i32(1)
- goto _16
-
-_15:
- _7_iRead = postInc1(&_iCol, int32(1))
-_16:
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _iSortTab, _7_iRead, _regRow+_i)
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(func() *int8 {
- if ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx)) + 20*uintptr(_i))).X1) != nil {
- return ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx)) + 20*uintptr(_i))).X1)
- }
- return ((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aOutEx)) + 20*uintptr(_i))).X2)
- }()))
_i += 1
- goto _11
-
-_14:
- switch _eDest {
- case i32(10):
- goto _23
- case i32(11):
- goto _22
- case i32(12):
- goto _21
- case i32(14):
- goto _20
- default:
- goto _24
- }
-
-_20:
-_21:
- _sqlite3VdbeAddOp2(tls, _v, i32(117), _iParm, _regRowid)
- _sqlite3VdbeAddOp3(tls, _v, i32(118), _iParm, _regRow, _regRowid)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
- goto _25
-
-_22:
+ goto _23
+_26:
func() {
- if _nColumn != _sqlite3Strlen30(tls, _pDest.X1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117817), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateSortTailØ00__func__Ø000))), unsafe.Pointer(str(115596)))
+ if (int32(_chngRowid) & int32(_chngPk)) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116552)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp4(tls, _v, i32(101), _regRow, _nColumn, _regRowid, _pDest.X1, _nColumn)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _regRow, _nColumn)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iParm, _regRowid, _regRow, _nColumn)
- goto _25
-
-_23:
- goto _25
-
-_24:
func() {
- if _eDest != i32(9) && _eDest != i32(13) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(117830), unsafe.Pointer((*int8)(unsafe.Pointer(&_generateSortTailØ00__func__Ø000))), unsafe.Pointer(str(115640)))
+ if int32(_chngRowid) != i32(0) && int32(_chngRowid) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124013), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116576)))
crt.X__builtin_abort(tls)
}
}()
- if _eDest != i32(9) {
- goto _31
+ func() {
+ if int32(_chngPk) != i32(0) && int32(_chngPk) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124014), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116605)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _chngKey = uint8(int32(_chngRowid) + int32(_chngPk))
+ *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(52 /* X14 */))) = func() uint64 {
+ if (_pTab.X16) != 0 {
+ return u64(18446744073709551615)
+ }
+ return uint64(i32(0))
+ }()
+ _hasFK = _sqlite3FkRequired(tls, _pParse, _pTab, _aXRef, int32(_chngKey))
+ *func() **XIndex { _j = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_56:
+ if _pIdx == nil {
+ goto _59
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(67), _pDest.X3, _nColumn)
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _pDest.X3, _nColumn)
- goto _32
-
-_31:
- _sqlite3VdbeAddOp1(tls, _v, i32(16), _pDest.X2)
-_32:
- goto _25
-
-_25:
- if _regRowid == 0 {
- goto _33
+ if (((_chngKey != 0) || (_hasFK > i32(1))) || ((*XExpr)(_pIdx.X9) != nil)) || (_pIdx == _pPk) {
+ _18_reg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + int32(_pIdx.X14)
+ sink1 = *p
+ }
+ goto _64
}
-
- if _eDest != i32(11) {
- goto _34
+ _18_reg = i32(0)
+ _i = i32(0)
+_65:
+ if _i >= int32(_pIdx.X13) {
+ goto _68
}
-
- _sqlite3ReleaseTempRange(tls, _pParse, _regRow, _nColumn)
- goto _35
-
-_34:
- _sqlite3ReleaseTempReg(tls, _pParse, _regRow)
-_35:
- _sqlite3ReleaseTempReg(tls, _pParse, _regRowid)
-_33:
- _sqlite3VdbeResolveLabel(tls, _v, _addrContinue)
- if (int32(_pSort.X7) & i32(1)) == 0 {
- goto _36
+ _21_iIdxCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))
+ if int32(_21_iIdxCol) >= i32(0) && (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_21_iIdxCol)))) < i32(0) {
+ goto _70
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(3), _iTab, _addr)
- goto _37
-
-_36:
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _iTab, _addr)
-_37:
- if (_pSort.X3) == 0 {
- goto _38
+ _18_reg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + int32(_pIdx.X14)
+ sink1 = *p
}
-
- _sqlite3VdbeAddOp1(tls, _v, i32(52), _pSort.X3)
-_38:
- _sqlite3VdbeResolveLabel(tls, _v, _addrBreak)
-}
-
-var _generateSortTailØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_generateSortTailØ00__func__Ø000[0], str(115684), 17)
-}
-
-func _exprVectorRegister(tls *crt.TLS, _pParse *XParse, _pVector *XExpr, _iField int32, _regSelect int32, _ppExpr **XExpr, _pRegFree *int32) (r0 int32) { // sqlite3.c:91375:1
- var _op uint8 // sqlite3.c:91383:6
- _ = _op
- _op = _pVector.X0
- func() {
- if int32(_op) != i32(158) && int32(_op) != i32(157) && int32(_op) != i32(119) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(91384), unsafe.Pointer((*int8)(unsafe.Pointer(&_exprVectorRegisterØ00__func__Ø000))), unsafe.Pointer(str(115704)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_op) != i32(157) {
- goto _4
+ if (_onError == i32(5)) || ((_onError == i32(10)) && (int32(_pIdx.X15) == i32(5))) {
+ _bReplace = i32(1)
}
-
- *_ppExpr = _sqlite3VectorFieldSubexpr(tls, _pVector, _iField)
- return (_pVector.X8) + _iField
-
-_4:
- if int32(_op) != i32(119) {
- goto _5
+ goto _68
+_70:
+ _i += 1
+ goto _65
+_68:
+_64:
+ if _18_reg == i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_j+i32(1)))) = uint8(i32(0))
}
-
- *_ppExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20 /* X6 */)))))).X0)+uintptr(8 /* X2 */))))) + 20*uintptr(_iField))).X0)
- return _regSelect + _iField
-
-_5:
- *_ppExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVector)) + uintptr(20 /* X6 */))))))+uintptr(8 /* X2 */))))) + 20*uintptr(_iField))).X0)
- return _sqlite3ExprCodeTemp(tls, _pParse, *_ppExpr, _pRegFree)
-}
-
-var _exprVectorRegisterØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_exprVectorRegisterØ00__func__Ø000[0], str(115756), 19)
-}
-
-func _sqlite3VtabOverloadFunction(tls *crt.TLS, _db *Xsqlite3, _pDef *XFuncDef, _nArg int32, _pExpr *XExpr) (r0 *XFuncDef) { // sqlite3.c:126022:1
- var _pTab *XTable // sqlite3.c:126028:9
- _ = _pTab
- var _pVtab *Xsqlite3_vtab // sqlite3.c:126029:16
- _ = _pVtab
- var _pMod *Xsqlite3_module // sqlite3.c:126030:18
- _ = _pMod
- var _xSFunc func(*crt.TLS, *Xsqlite3_context, int32, **XMem) // sqlite3.c:126031:8
- _ = _xSFunc
- var _pArg unsafe.Pointer // sqlite3.c:126032:8
- _ = _pArg
- var _pNew *XFuncDef // sqlite3.c:126033:11
- _ = _pNew
- var _rc int32 // sqlite3.c:126034:7
- _ = _rc
- var _zLowerName *int8 // sqlite3.c:126035:8
- _ = _zLowerName
- var _z *uint8 // sqlite3.c:126036:17
- _ = _z
- _xSFunc = nil
- _pArg = nil
- _rc = i32(0)
- if func() int32 {
- if _pExpr == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126040), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabOverloadFunctionØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
- return i32(0)
- }() == 0 {
- goto _2
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_j))) = _18_reg
+ *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_j }() += 1
+ goto _56
+_59:
+ if _bReplace != 0 {
+ crt.Xmemset(tls, (unsafe.Pointer)(_aToOpen), i32(1), uint32(_nIdx+i32(1)))
}
- return _pDef
-
-_2:
- if int32(_pExpr.X0) == i32(152) {
- goto _3
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v == nil {
+ goto _update_cleanup
}
- return _pDef
-
-_3:
- _pTab = (*XTable)(_pExpr.X14)
- if _pTab != nil {
- goto _4
+ if int32(_pParse.X6) == i32(0) {
+ _sqlite3VdbeCountChanges(tls, _v)
}
- return _pDef
-
-_4:
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
if (_pTab.X16) != 0 {
- goto _5
+ goto _78
}
- return _pDef
-
-_5:
- _pVtab = (*Xsqlite3_vtab)(_sqlite3GetVTable(tls, _db, _pTab).X2)
- func() {
- if _pVtab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126046), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabOverloadFunctionØ00__func__Ø000))), unsafe.Pointer(str(115776)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*Xsqlite3_module)(_pVtab.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126047), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabOverloadFunctionØ00__func__Ø000))), unsafe.Pointer(str(115788)))
- crt.X__builtin_abort(tls)
+ _regRowSet = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _regOldRowid = store1(&_regNewRowid, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
+ if ((_chngPk != 0) || (_pTrigger != nil)) || _hasFK != 0 {
+ _regOld = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + int32(_pTab.X11)
+ sink1 = *p
}
- }()
- _pMod = (*Xsqlite3_module)(_pVtab.X0)
- if *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32
- }{(*(*func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32, *int8, *func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer), *unsafe.Pointer) int32
- }{(_pMod.X18)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32
- }{nil})) {
- goto _10
}
- return _pDef
-
-_10:
- _zLowerName = _sqlite3DbStrDup(tls, _db, _pDef.X6)
- if _zLowerName == nil {
- goto _11
+ if ((_chngKey != 0) || (_pTrigger != nil)) || _hasFK != 0 {
+ _regNewRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
}
-
- _z = (*uint8)(unsafe.Pointer(_zLowerName))
-_12:
- if (*_z) == 0 {
- goto _15
+ _regNew = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + int32(_pTab.X11)
+ sink1 = *p
}
-
- *_z = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(*_z)))
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
- goto _12
-
-_15:
- _rc = (*(*func(*crt.TLS, *Xsqlite3_vtab, int32, *int8, *func(*crt.TLS, *Xsqlite3_context, int32, **XMem), *unsafe.Pointer) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32, *int8, *func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer), *unsafe.Pointer) int32
- }{(_pMod.X18)})))(tls, _pVtab, _nArg, _zLowerName, &_xSFunc, &_pArg)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zLowerName))
-_11:
- if _rc != i32(0) {
- goto _16
+_78:
+ if _isView != 0 {
+ _sqlite3AuthContextPush(tls, _pParse, &_sContext, _pTab.X0)
}
- return _pDef
-
-_16:
- _pNew = (*XFuncDef)(_sqlite3DbMallocZero(tls, _db, uint64((u32(28)+uint32(_sqlite3Strlen30(tls, _pDef.X6)))+uint32(i32(1)))))
- if _pNew != nil {
- goto _17
+ if _isView != 0 {
+ _sqlite3MaterializeView(tls, _pParse, _pTab, _pWhere, _iDataCur)
}
- return _pDef
-
-_17:
- *_pNew = *_pDef
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X6 */))) = (*int8)(unsafe.Pointer((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + 28*uintptr(i32(1))))))
- crt.Xmemcpy(tls, (unsafe.Pointer)((*XFuncDef)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+28*uintptr(i32(1))))), (unsafe.Pointer)(_pDef.X6), uint32(_sqlite3Strlen30(tls, _pDef.X6)+i32(1)))
- *(*func(*crt.TLS, *Xsqlite3_context, int32, **XMem))(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer))(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))))) = _xSFunc
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X2 */))) = _pArg
- {
- p := (*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(2 /* X1 */)))
- *p = uint16(int32(*p) | i32(16))
- sink12 = *p
+ if _sqlite3ResolveExprNames(tls, &_sNC, _pWhere) != 0 {
+ goto _update_cleanup
+ }
+ if (_pTab.X16) != 0 {
+ _updateVirtualTable(tls, _pParse, _pTabList, _pTab, _pChanges, _pRowidExpr, _aXRef, _pWhere, _onError)
+ goto _update_cleanup
+ }
+ if ((_db.X6)&i32(128)) != 0 && ((*XTable)(_pParse.X40) == nil) {
+ _regRowCount = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _regRowCount)
+ }
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _sqlite3VdbeAddOp3(tls, _v, i32(59), i32(0), _regRowSet, _regOldRowid)
+ goto _92
}
- return _pNew
-}
-
-var _sqlite3VtabOverloadFunctionØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabOverloadFunctionØ00__func__Ø000[0], str(115808), 28)
-}
-
-func _sqlite3MayAbort(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:103831:1
- var _pToplevel *XParse // sqlite3.c:103832:9
- _ = _pToplevel
- _pToplevel = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(21 /* X9 */))) = uint8(i32(1))
-}
-
-func _sqlite3HaltConstraint(tls *crt.TLS, _pParse *XParse, _errCode int32, _onError int32, _p4 *int8, _p4type int8, _p5Errmsg uint8) { // sqlite3.c:103841:1
- var _v *TVdbe // sqlite3.c:103849:8
- _ = _v
- _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if (_errCode & i32(255)) != i32(19) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103850), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3HaltConstraintØ00__func__Ø000))), unsafe.Pointer(str(115836)))
+ if _pPk == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(41994)))
crt.X__builtin_abort(tls)
}
}()
- if _onError != i32(2) {
- goto _2
+ _nPk = int16(_pPk.X13)
+ _iPk = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + int32(_nPk)
+ sink1 = *p
}
-
- _sqlite3MayAbort(tls, _pParse)
-_2:
- _sqlite3VdbeAddOp4(tls, _v, i32(55), _errCode, _onError, i32(0), _p4, int32(_p4type))
- _sqlite3VdbeChangeP5(tls, _v, uint16(_p5Errmsg))
-}
-
-var _sqlite3HaltConstraintØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3HaltConstraintØ00__func__Ø000[0], str(115872), 22)
-}
-
-func _sqlite3VdbeMakeReady(tls *crt.TLS, _p *TVdbe, _pParse *XParse) { // sqlite3.c:73348:1
- var _db *Xsqlite3 // sqlite3.c:73352:11
- _ = _db
- var _nVar int32 // sqlite3.c:73353:7
- _ = _nVar
- var _nMem int32 // sqlite3.c:73354:7
- _ = _nMem
- var _nCursor int32 // sqlite3.c:73355:7
- _ = _nCursor
- var _nArg int32 // sqlite3.c:73356:7
- _ = _nArg
- var _n int32 // sqlite3.c:73357:7
- _ = _n
- var _x TReusableSpace // sqlite3.c:73358:24
- _ = _x
- func() {
- if _p == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73360), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(768)))
- crt.X__builtin_abort(tls)
+ _regKey = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _iEph = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _iPk)
+ _addrOpen = _sqlite3VdbeAddOp2(tls, _v, i32(110), _iEph, int32(_nPk))
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pPk)
+_92:
+ _flags = i32(4100)
+ if (((((_pParse.X6) == 0) && (_pTrigger == nil)) && (_hasFK == 0)) && (_chngKey == 0)) && (_bReplace == 0) {
+ {
+ p := &_flags
+ *p = (*p) | i32(8)
+ sink1 = *p
}
- }()
+ }
+ _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pTabList, _pWhere, nil, nil, uint16(_flags), _iIdxCur)
+ if _pWInfo == nil {
+ goto _update_cleanup
+ }
+ _eOnePass = _sqlite3WhereOkOnePass(tls, _pWInfo, (*int32)(unsafe.Pointer(&_aiCurOnePass)))
+ if _eOnePass != i32(2) {
+ goto _101
+ }
+ _36_iCur = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))
+ if ((_36_iCur >= i32(0)) && (_36_iCur != _iDataCur)) && ((*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_36_iCur-_iBaseCur)))) != 0) {
+ _eOnePass = i32(0)
+ }
func() {
- if (_p.X27) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73361), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(42744)))
+ if _36_iCur == _iDataCur && ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124164), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116628)))
crt.X__builtin_abort(tls)
}
}()
+_101:
+ if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ goto _108
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(125), _iDataCur, _regOldRowid)
+ if _eOnePass == i32(0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(145), _regRowSet, _regOldRowid)
+ }
+ goto _110
+_108:
+ _i = i32(0)
+_111:
+ if _i >= int32(_nPk) {
+ goto _114
+ }
func() {
- if _pParse == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73362), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(115896)))
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(115265)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if (_p.X5) != uint32(i32(381479589)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73363), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(38344)))
- crt.X__builtin_abort(tls)
+ _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iDataCur, int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))), _iPk+_i)
+ _i += 1
+ goto _111
+_114:
+ if _eOnePass != 0 {
+ _sqlite3VdbeChangeToNoop(tls, _v, _addrOpen)
+ _nKey = int32(_nPk)
+ _regKey = _iPk
+ goto _118
+ }
+ _sqlite3VdbeAddOp4(tls, _v, i32(101), _iPk, int32(_nPk), _regKey, _sqlite3IndexAffinityStr(tls, _db, _pPk), int32(_nPk))
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iEph, _regKey, _iPk, int32(_nPk))
+_118:
+_110:
+ if _eOnePass != i32(2) {
+ _sqlite3WhereEnd(tls, _pWInfo)
+ }
+ _labelBreak = _sqlite3VdbeMakeLabel(tls, _v)
+ if _isView != 0 {
+ goto _120
+ }
+ _45_addrOnce = i32(0)
+ if _eOnePass == i32(0) {
+ goto _121
+ }
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0))))) >= i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0)))))-_iBaseCur))) = uint8(i32(0))
+ }
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) >= i32(0) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1)))))-_iBaseCur))) = uint8(i32(0))
+ }
+_121:
+ if (_eOnePass == i32(2)) && ((_nIdx - bool2int((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) >= i32(0))) > i32(0)) {
+ _45_addrOnce = _sqlite3VdbeAddOp0(tls, _v, i32(20))
+ }
+ _sqlite3OpenTableAndIndices(tls, _pParse, _pTab, i32(107), uint8(i32(0)), _iBaseCur, _aToOpen, nil, nil)
+ if _45_addrOnce != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _45_addrOnce)
+ }
+_120:
+ if _eOnePass == i32(0) {
+ goto _127
+ }
+ if ((_isView == 0) && ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0))))) != _iDataCur)) && ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) != _iDataCur) {
+ func() {
+ if _pPk == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116662)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, _labelBreak, _regKey, _nKey)
+ }
+ if _eOnePass == i32(1) {
+ _labelContinue = _labelBreak
+ goto _134
+ }
+ _labelContinue = _sqlite3VdbeMakeLabel(tls, _v)
+_134:
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), func() int32 {
+ if _pPk != nil {
+ return _regKey
}
- }()
+ return _regOldRowid
+ }(), _labelBreak)
+ goto _137
+_127:
+ if _pPk != nil {
+ _labelContinue = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3VdbeAddOp2(tls, _v, i32(37), _iEph, _labelBreak)
+ _addrTop = _sqlite3VdbeAddOp2(tls, _v, i32(124), _iEph, _regKey)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, _labelContinue, _regKey, i32(0))
+ goto _139
+ }
+ _labelContinue = _sqlite3VdbeAddOp3(tls, _v, i32(42), _regRowSet, _labelBreak, _regOldRowid)
+ _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDataCur, _labelContinue, _regOldRowid)
+_139:
+_137:
func() {
- if _pParse != (*XParse)(_p.X3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73364), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(115908)))
+ if _chngKey == 0 && _pTrigger == nil && _hasFK == 0 && _regOldRowid != _regNewRowid {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124251), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116666)))
crt.X__builtin_abort(tls)
}
}()
- _db = (*Xsqlite3)(_p.X0)
- func() {
- if int32(_db.X17) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73366), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(1248)))
- crt.X__builtin_abort(tls)
+ if _chngRowid != 0 {
+ _sqlite3ExprCode(tls, _pParse, _pRowidExpr, _regNewRowid)
+ _sqlite3VdbeAddOp1(tls, _v, i32(17), _regNewRowid)
+ }
+ if _chngPk == 0 && _hasFK == 0 && _pTrigger == nil {
+ goto _148
+ }
+ _55_oldmask = func() uint32 {
+ if _hasFK != 0 {
+ return _sqlite3FkOldmask(tls, _pParse, _pTab)
}
+ return uint32(i32(0))
}()
- _nVar = int32(_pParse.X52)
- _nMem = _pParse.X18
- _nCursor = _pParse.X17
- _nArg = _pParse.X33
{
- p := &_nMem
- *p = (*p) + _nCursor
- sink1 = *p
+ p := &_55_oldmask
+ *p = (*p) | _sqlite3TriggerColmask(tls, _pParse, _pTrigger, _pChanges, i32(0), i32(3), _pTab, _onError)
+ sink5 = *p
}
- if _nCursor != i32(0) || _nMem <= i32(0) {
- goto _13
+ _i = i32(0)
+_151:
+ if _i >= int32(_pTab.X11) {
+ goto _154
}
-
- _nMem += 1
-_13:
- _n = int32(((u32(24) * uint32(_p.X27)) + uint32(i32(7))) & uint32(i32(-8)))
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(0 /* X0 */))) = (*uint8)(unsafe.Pointer(uintptr(_p.X17) + 1*uintptr(_n)))
+ if ((_55_oldmask == u32(4294967295)) || ((_i < i32(32)) && ((_55_oldmask & (u32(1) << uint(_i))) != uint32(i32(0))))) || ((int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X6) & i32(1)) != i32(0)) {
+ _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iDataCur, _i, _regOld+_i)
+ goto _159
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regOld+_i)
+_159:
+ _i += 1
+ goto _151
+_154:
+ if (int32(_chngRowid) == i32(0)) && (_pPk == nil) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(64), _regOldRowid, _regNewRowid)
+ }
+_148:
+ _newmask = int32(_sqlite3TriggerColmask(tls, _pParse, _pTrigger, _pChanges, i32(1), i32(1), _pTab, _onError))
+ _i = i32(0)
+_162:
+ if _i >= int32(_pTab.X11) {
+ goto _165
+ }
+ if _i == int32(_pTab.X10) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regNew+_i)
+ goto _167
+ }
+ _j = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))
+ if _j >= i32(0) {
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), _regNew+_i)
+ goto _169
+ }
+ if ((i32(0) == (_tmask & i32(1))) || (_i > i32(31))) || ((uint32(_newmask) & (u32(1) << uint(_i))) != 0) {
+ _sqlite3ExprCodeGetColumnToReg(tls, _pParse, _pTab, _i, _iDataCur, _regNew+_i)
+ goto _173
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regNew+_i)
+_173:
+_169:
+_167:
+ _i += 1
+ goto _162
+_165:
+ if (_tmask & i32(1)) == 0 {
+ goto _174
+ }
+ _sqlite3TableAffinity(tls, _v, _pTab, _regNew)
+ _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(110), _pChanges, i32(1), _pTab, _regOldRowid, _onError, _labelContinue)
+ if _pPk != nil {
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, _labelContinue, _regKey, _nKey)
+ goto _176
+ }
+ _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDataCur, _labelContinue, _regOldRowid)
+_176:
+ _i = i32(0)
+_177:
+ if _i >= int32(_pTab.X11) {
+ goto _180
+ }
+ if ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))) < i32(0)) && (_i != int32(_pTab.X10)) {
+ _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iDataCur, _i, _regNew+_i)
+ }
+ _i += 1
+ goto _177
+_180:
+_174:
+ if _isView != 0 {
+ goto _183
+ }
+ _71_addr1 = i32(0)
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_x.X0))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73386), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(115928)))
+ if _regOldRowid <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116723)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(4 /* X1 */))) = ((_pParse.X20) - _n) & i32(-8)
+ _sqlite3GenerateConstraintChecks(tls, _pParse, _pTab, _aRegIdx, _iDataCur, _iIdxCur, _regNewRowid, _regOldRowid, _chngKey, uint8(_onError), _labelContinue, &_bReplace, _aXRef)
+ if _hasFK != 0 {
+ _sqlite3FkCheck(tls, _pParse, _pTab, _regOldRowid, i32(0), _aXRef, int32(_chngKey))
+ }
+ if _bReplace == 0 && _chngKey == 0 {
+ goto _188
+ }
+ if _pPk != nil {
+ _71_addr1 = _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, i32(0), _regKey, _nKey)
+ goto _190
+ }
+ _71_addr1 = _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDataCur, i32(0), _regOldRowid)
+_190:
+_188:
+ _sqlite3GenerateRowIndexDelete(tls, _pParse, _pTab, _iDataCur, _iIdxCur, _aRegIdx, i32(-1))
func() {
- if (_x.X1) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73388), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(115960)))
+ if _regNew != (_regNewRowid + i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124386), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(116737)))
crt.X__builtin_abort(tls)
}
}()
+ if (_hasFK > i32(1)) || (_chngKey != 0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(120), _iDataCur, i32(0))
+ }
+ if _bReplace != 0 || (_chngKey != 0) {
+ _sqlite3VdbeJumpHere(tls, _v, _71_addr1)
+ }
+ if _hasFK != 0 {
+ _sqlite3FkCheck(tls, _pParse, _pTab, i32(0), _regNewRowid, _aXRef, int32(_chngKey))
+ }
+ _sqlite3CompleteInsertion(tls, _pParse, _pTab, _iDataCur, _iIdxCur, _regNewRowid, _aRegIdx, i32(4)|func() int32 {
+ if _eOnePass == i32(2) {
+ return i32(2)
+ }
+ return i32(0)
+ }(), i32(0), i32(0))
+ if _hasFK != 0 {
+ _sqlite3FkActions(tls, _pParse, _pTab, _pChanges, _regOldRowid, _aXRef, int32(_chngKey))
+ }
+_183:
+ if ((_db.X6)&i32(128)) != 0 && ((*XTable)(_pParse.X40) == nil) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(73), _regRowCount, i32(1))
+ }
+ _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(110), _pChanges, i32(2), _pTab, _regOldRowid, _onError, _labelContinue)
+ if _eOnePass == i32(1) {
+ goto _204
+ }
+ if _eOnePass == i32(2) {
+ _sqlite3VdbeResolveLabel(tls, _v, _labelContinue)
+ _sqlite3WhereEnd(tls, _pWInfo)
+ goto _206
+ }
+ if _pPk != nil {
+ _sqlite3VdbeResolveLabel(tls, _v, _labelContinue)
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _iEph, _addrTop)
+ goto _208
+ }
+ _sqlite3VdbeGoto(tls, _v, _labelContinue)
+_208:
+_206:
+_204:
+ _sqlite3VdbeResolveLabel(tls, _v, _labelBreak)
+ if (int32(_pParse.X6) == i32(0)) && ((*XTable)(_pParse.X40) == nil) {
+ _sqlite3AutoincrementEnd(tls, _pParse)
+ }
+ if (((_db.X6)&i32(128)) != 0 && ((*XTable)(_pParse.X40) == nil)) && ((_pParse.X6) == 0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), _regRowCount, i32(1))
+ _sqlite3VdbeSetNumCols(tls, _v, i32(1))
+ _sqlite3VdbeSetColName(tls, _v, i32(0), i32(0), str(116759), nil)
+ }
+_update_cleanup:
+ _sqlite3AuthContextPop(tls, &_sContext)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_aXRef))
+ _sqlite3SrcListDelete(tls, _db, _pTabList)
+ _sqlite3ExprListDelete(tls, _db, _pChanges)
+ _sqlite3ExprDelete(tls, _db, _pWhere)
+ _ = _sContext
+ _ = _sNC
+ _ = _aiCurOnePass
+}
+
+var _sqlite3UpdateØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3UpdateØ00__func__Ø000[0], str(116772), 14)
+}
+
+// Generate code for an UPDATE of a virtual table.
+//
+// There are two possible strategies - the default and the special
+// "onepass" strategy. Onepass is only used if the virtual table
+// implementation indicates that pWhere may match at most one row.
+//
+// The default strategy is to create an ephemeral table that contains
+// for each row to be changed:
+//
+// (A) The original rowid of that row.
+// (B) The revised rowid for the row.
+// (C) The content of every column in the row.
+//
+// Then loop through the contents of this ephemeral table executing a
+// VUpdate for each row. When finished, drop the ephemeral table.
+//
+// The "onepass" strategy does not use an ephemeral table. Instead, it
+// stores the same values (A, B and C above) in a register array and
+// makes a single invocation of VUpdate.
+func _updateVirtualTable(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList, _pTab *XTable, _pChanges *XExprList, _pRowid *XExpr, _aXRef *int32, _pWhere *XExpr, _onError int32) {
+ var _ephemTab, _i, _nArg, _regArg, _regRec, _regRowid, _iCsr, _bOnePass, _addr int32
+ var _pVTab *int8
+ var _db *Xsqlite3
+ var _v *TVdbe
+ var _aDummy [2]int32
+ var _pWInfo *XWhereInfo
+ _v = (*TVdbe)(_pParse.X2)
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _pTab)))
+ _nArg = i32(2) + int32(_pTab.X11)
+ _iCsr = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X11
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_x.X0))+1*uintptr(_x.X1)))))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73389), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeMakeReadyØ00__func__Ø000))), unsafe.Pointer(str(115972)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(124539), unsafe.Pointer((*int8)(unsafe.Pointer(&_updateVirtualTableØ00__func__Ø000))), unsafe.Pointer(str(41861)))
crt.X__builtin_abort(tls)
}
}()
- _resolveP2Values(tls, _p, &_nArg)
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(uint8(bool2int(((_pParse.X8) != 0) && ((_pParse.X9) != 0)))), 64, 6)
- if (_pParse.X54) == 0 || _nMem >= i32(10) {
- goto _22
+ _ephemTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _ephemTab, _nArg)
+ _regArg = (_pParse.X18) + i32(1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + _nArg
+ sink1 = *p
}
-
- _nMem = i32(10)
-_22:
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 1, 0)
-_23:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(8 /* X2 */))) = i32(0)
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(88 /* X18 */))))) = (*XMem)(_allocSpace(tls, &_x, _p.X18, int32(uint32(_nMem)*u32(48))))
- *(**XMem)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(112 /* X24 */))))) = (*XMem)(_allocSpace(tls, &_x, _p.X24, int32(uint32(_nVar)*u32(48))))
- *(***XMem)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(92 /* X19 */))))) = (**XMem)(_allocSpace(tls, &_x, (unsafe.Pointer)(_p.X19), int32(uint32(_nArg)*u32(4))))
- *(***XVdbeCursor)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(108 /* X23 */))))) = (**XVdbeCursor)(_allocSpace(tls, &_x, (unsafe.Pointer)(_p.X23), int32(uint32(_nCursor)*u32(4))))
- if (_x.X2) != i32(0) {
- goto _24
+ _regRec = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _regRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pSrc, _pWhere, nil, nil, uint16(i32(4)), i32(0))
+ if _pWInfo == nil {
+ return
}
-
- goto _25
-
-_24:
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(0 /* X0 */))) = (*uint8)(store70((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(176 /* X37 */))), _sqlite3DbMallocRawNN(tls, _db, uint64(_x.X2))))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_x)) + uintptr(4 /* X1 */))) = _x.X2
- if (_db.X17) == 0 {
- goto _23
+ _sqlite3VdbeAddOp2(tls, _v, i32(125), _iCsr, _regArg)
+ if _pRowid != nil {
+ _sqlite3ExprCode(tls, _pParse, _pRowid, _regArg+i32(1))
+ goto _4
}
-
-_25:
- *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(116 /* X25 */))) = _pParse.X60
- *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(432 /* X60 */))) = nil
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(_pParse.X54), 12, 2)
- if (_db.X17) == 0 {
- goto _26
+ _sqlite3VdbeAddOp2(tls, _v, i32(125), _iCsr, _regArg+i32(1))
+_4:
+ _i = i32(0)
+_5:
+ if _i >= int32(_pTab.X11) {
+ goto _8
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = int16(i32(0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = i32(0)
- goto _27
-
-_26:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = _nCursor
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))) = int16(_nVar)
- _initMemArray(tls, (*XMem)(_p.X24), _nVar, _db, uint16(i32(1)))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))) = _nMem
- _initMemArray(tls, (*XMem)(_p.X18), _nMem, _db, uint16(i32(128)))
- crt.Xmemset(tls, (unsafe.Pointer)(_p.X23), i32(0), uint32(_nCursor)*u32(4))
-_27:
- _sqlite3VdbeRewind(tls, _p)
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))) >= i32(0) {
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))))).X0), (_regArg+i32(2))+_i)
+ goto _10
+ }
+ _sqlite3VdbeAddOp3(tls, _v, i32(159), _iCsr, _i, (_regArg+i32(2))+_i)
+_10:
+ _i += 1
+ goto _5
+_8:
+ _bOnePass = _sqlite3WhereOkOnePass(tls, _pWInfo, (*int32)(unsafe.Pointer(&_aDummy)))
+ if _bOnePass == 0 {
+ goto _11
+ }
+ _sqlite3VdbeChangeToNoop(tls, _v, _addr)
+ if (*XParse)(_pParse.X39) == nil {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(20 /* X8 */))) = uint8(i32(0))
+ }
+ goto _13
+_11:
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regArg, _nArg, _regRec)
+ _sqlite3VdbeAddOp2(tls, _v, i32(117), _ephemTab, _regRowid)
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), _ephemTab, _regRec, _regRowid)
+_13:
+ if _bOnePass != i32(0) {
+ goto _14
+ }
+ _sqlite3WhereEnd(tls, _pWInfo)
+ _addr = _sqlite3VdbeAddOp1(tls, _v, i32(37), _ephemTab)
+ _i = i32(0)
+_15:
+ if _i >= _nArg {
+ goto _18
+ }
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _ephemTab, _i, _regArg+_i)
+ _i += 1
+ goto _15
+_18:
+_14:
+ _sqlite3VtabMakeWritable(tls, _pParse, _pTab)
+ _sqlite3VdbeAddOp4(tls, _v, i32(12), i32(0), _nArg, _regArg, _pVTab, i32(-8))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(func() int32 {
+ if _onError == i32(10) {
+ return i32(2)
+ }
+ return _onError
+ }()))
+ _sqlite3MayAbort(tls, _pParse)
+ if _bOnePass == i32(0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _ephemTab, _addr+i32(1))
+ _sqlite3VdbeJumpHere(tls, _v, _addr)
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _ephemTab, i32(0))
+ goto _22
+ }
+ _sqlite3WhereEnd(tls, _pWInfo)
+_22:
+ _ = _aDummy
}
-var _sqlite3VdbeMakeReadyØ00__func__Ø000 [21]int8 // -
+var _updateVirtualTableØ00__func__Ø000 [19]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeMakeReadyØ00__func__Ø000[0], str(116016), 21)
+ crt.Xstrncpy(nil, &_updateVirtualTableØ00__func__Ø000[0], str(116786), 19)
}
-func _resolveP2Values(tls *crt.TLS, _p *TVdbe, _pMaxFuncArgs *int32) { // sqlite3.c:71976:1
- var _nMaxArgs int32 // sqlite3.c:71977:7
- _ = _nMaxArgs
- var _pOp *XVdbeOp // sqlite3.c:71978:6
- _ = _pOp
- var _pParse *XParse // sqlite3.c:71979:9
- _ = _pParse
- var _aLabel *int32 // sqlite3.c:71980:7
- _ = _aLabel
- var _8_n int32 // sqlite3.c:72020:15
- _ = _8_n
- _nMaxArgs = *_pMaxFuncArgs
- _pParse = (*XParse)(_p.X3)
- _aLabel = _pParse.X26
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 128, 7)
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 256, 8)
- _pOp = (*XVdbeOp)(unsafe.Pointer(uintptr(_p.X17) + 24*uintptr((_p.X27)-i32(1))))
-_0:
- if int32(_pOp.X0) > i32(83) {
- goto _2
+// This function is called before generating code to update or delete a
+// row contained in table pTab.
+func _sqlite3FkOldmask(tls *crt.TLS, _pParse *XParse, _pTab *XTable) (r0 uint32) {
+ var _1_i int32
+ var _mask uint32
+ var _3_pIdx *XIndex
+ var _1_p *XFKey
+ _mask = u32(0)
+ if (((*Xsqlite3)(_pParse.X0).X6) & i32(524288)) == 0 {
+ goto _0
}
-
- switch int32(_pOp.X0) {
- case i32(0):
- goto _6
- case i32(1):
- goto _5
- case i32(2):
+ _1_p = (*XFKey)(_pTab.X4)
+_1:
+ if _1_p == nil {
goto _4
- case i32(3):
- goto _14
- case i32(4):
- goto _16
- case i32(5):
- goto _13
- case i32(6):
- goto _15
- case i32(7):
- goto _12
- case i32(8):
- goto _7
- case i32(9):
- goto _9
- case i32(10):
+ }
+ _1_i = i32(0)
+_5:
+ if _1_i >= (_1_p.X5) {
goto _8
- case i32(11):
- goto _11
- case i32(12):
- goto _10
- default:
- goto _17
}
-
-_4:
- if (_pOp.X4) == i32(0) {
- goto _18
+ {
+ p := &_mask
+ *p = (*p) | func() uint32 {
+ if ((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(36 /* X9 */))))) + 8*uintptr(_1_i))).X0) > i32(31) {
+ return u32(4294967295)
+ }
+ return (u32(1) << uint((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(36 /* X9 */)))))+8*uintptr(_1_i))).X0))
+ }()
+ sink5 = *p
}
-
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 128, 7)
-_18:
-_5:
-_6:
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 256, 8)
- goto _17
-
-_7:
+ _1_i += 1
+ goto _5
_8:
-_9:
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(0)), 128, 7)
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(140 /* X32 */))), int16(i32(1)), 256, 8)
- goto _17
-
-_10:
- if (_pOp.X4) <= _nMaxArgs {
+ _1_p = (*XFKey)(_1_p.X1)
+ goto _1
+_4:
+ _1_p = _sqlite3FkReferences(tls, _pTab)
+_11:
+ if _1_p == nil {
+ goto _14
+ }
+ _3_pIdx = nil
+ _sqlite3FkLocateIndex(tls, _pParse, _pTab, _1_p, &_3_pIdx, nil)
+ if _3_pIdx == nil {
+ goto _15
+ }
+ _1_i = i32(0)
+_16:
+ if _1_i >= int32(_3_pIdx.X13) {
goto _19
}
-
- _nMaxArgs = _pOp.X4
-_19:
- goto _17
-
-_11:
- func() {
- if int32((uintptr(unsafe.Pointer(_pOp))-uintptr(unsafe.Pointer((*XVdbeOp)(_p.X17))))/24) < i32(3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72021), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(116040)))
- crt.X__builtin_abort(tls)
- }
- }()
func() {
- if int32((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp))+24*uintptr(i32(-1)))).X0) != i32(56) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72022), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(116060)))
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIdx.X1)) + 2*uintptr(_1_i)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108482), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkOldmaskØ00__func__Ø000))), unsafe.Pointer(str(116805)))
crt.X__builtin_abort(tls)
}
}()
- _8_n = (*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + 24*uintptr(i32(-1)))).X3
- if _8_n <= _nMaxArgs {
- goto _24
+ {
+ p := &_mask
+ *p = (*p) | func() uint32 {
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIdx.X1)) + 2*uintptr(_1_i)))) > i32(31) {
+ return u32(4294967295)
+ }
+ return (u32(1) << uint(int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIdx.X1)) + 2*uintptr(_1_i))))))
+ }()
+ sink5 = *p
}
-
- _nMaxArgs = _8_n
-_24:
- goto _17
-
-_12:
-_13:
-_14:
- *(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _sqlite3BtreeNext
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-14))
- goto _17
-
+ _1_i += 1
+ goto _16
+_19:
_15:
-_16:
- *(*func(*crt.TLS, *XBtCursor, *int32) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, *int32) int32)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(16 /* X6 */))))))) = _sqlite3BtreePrevious
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(1 /* X1 */))) = int8(i32(-14))
- goto _17
-
-_17:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3OpcodeProperty)) + 1*uintptr(_pOp.X0))))&i32(1)) == i32(0) || (_pOp.X4) >= i32(0) {
- goto _26
- }
+ _1_p = (*XFKey)(_1_p.X3)
+ goto _11
+_14:
+_0:
+ return _mask
+}
+// A foreign key constraint requires that the key columns in the parent
+// table are collectively subject to a UNIQUE or PRIMARY KEY constraint.
+// Given that pParent is the parent table for foreign key constraint pFKey,
+// search the schema for a unique index on the parent key columns.
+//
+// If successful, zero is returned. If the parent key is an INTEGER PRIMARY
+// KEY column, then output variable *ppIdx is set to NULL. Otherwise, *ppIdx
+// is set to point to the unique index.
+//
+// If the parent key consists of a single column (the foreign key constraint
+// is not a composite foreign key), output variable *paiCol is set to NULL.
+// Otherwise, it is set to point to an allocated array of size N, where
+// N is the number of columns in the parent key. The first element of the
+// array is the index of the child table column that is mapped by the FK
+// constraint to the parent table column stored in the left-most column
+// of index *ppIdx. The second element of the array is the index of the
+// child table column that corresponds to the second left-most column of
+// *ppIdx, and so on.
+//
+// If the required index cannot be found, either because:
+//
+// 1) The named parent key columns do not exist, or
+//
+// 2) The named parent key columns do exist, but are not subject to a
+// UNIQUE or PRIMARY KEY constraint, or
+//
+// 3) No parent key columns were provided explicitly as part of the
+// foreign key definition, and the parent table does not have a
+// PRIMARY KEY, or
+//
+// 4) No parent key columns were provided explicitly as part of the
+// foreign key definition, and the PRIMARY KEY of the parent table
+// consists of a different number of columns to the child key in
+// the child table.
+//
+// then non-zero is returned, and a "foreign key mismatch" error loaded
+// into pParse. If an OOM error occurs, non-zero is returned and the
+// pParse->db->mallocFailed flag is set.
+func _sqlite3FkLocateIndex(tls *crt.TLS, _pParse *XParse, _pParent *XTable, _pFKey *XFKey, _ppIdx **XIndex, _paiCol **int32) (r0 int32) {
+ var _10_iCol int16
+ var _nCol, _8_i, _9_i, _9_j int32
+ var _aiCol *int32
+ var _zKey, _10_zDfltColl, _10_zIdxCol *int8
+ var _pIdx *XIndex
+ _pIdx = nil
+ _aiCol = nil
+ _nCol = _pFKey.X5
+ _zKey = (*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X1
func() {
- if (i32(-1) - (_pOp.X4)) >= (_pParse.X25) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72043), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(116088)))
+ if _ppIdx == nil || (*_ppIdx) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(116826)))
crt.X__builtin_abort(tls)
}
}()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOp)) + uintptr(8 /* X4 */))) = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aLabel)) + 4*uintptr(i32(-1)-(_pOp.X4))))
-_26:
-_2:
- if _pOp != (*XVdbeOp)(_p.X17) {
- goto _29
- }
-
- goto _1
-
-_29:
- *(*uintptr)(unsafe.Pointer(&_pOp)) += uintptr(4294967272)
- goto _0
-
-_1:
- _sqlite3DbFree(tls, (*Xsqlite3)(_p.X0), (unsafe.Pointer)(_pParse.X26))
- *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(76 /* X26 */))) = nil
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(72 /* X25 */))) = i32(0)
- *_pMaxFuncArgs = _nMaxArgs
func() {
- if int32((uint32((_p.X32)>>uint(i32(8)))<>uint(i32(31))) == i32(0) && (_p.X33) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72054), unsafe.Pointer((*int8)(unsafe.Pointer(&_resolveP2ValuesØ00__func__Ø000))), unsafe.Pointer(str(116120)))
+ if _paiCol != nil && (*_paiCol) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107610), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(116845)))
crt.X__builtin_abort(tls)
}
}()
-}
-
-var _resolveP2ValuesØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_resolveP2ValuesØ00__func__Ø000[0], str(116168), 16)
-}
-
-func _allocSpace(tls *crt.TLS, _p *TReusableSpace, _pBuf unsafe.Pointer, _nByte int32) (r0 unsafe.Pointer) { // sqlite3.c:73272:1
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_p.X0))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73277), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocSpaceØ00__func__Ø000))), unsafe.Pointer(str(116184)))
+ if _pParse == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(115716)))
crt.X__builtin_abort(tls)
}
}()
- if _pBuf != nil {
- goto _2
+ if _nCol != i32(1) {
+ goto _8
}
-
- _nByte = (_nByte + i32(7)) & i32(-8)
- if _nByte > (_p.X1) {
- goto _3
+ if int32(_pParent.X10) < i32(0) {
+ goto _9
}
-
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */)))
- *p = (*p) - _nByte
- sink1 = *p
+ if _zKey == nil {
+ return i32(0)
}
- _pBuf = (unsafe.Pointer)((*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p.X0)) + 1*uintptr(_p.X1))))
- goto _4
-
-_3:
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X2 */)))
- *p = (*p) + _nByte
- sink1 = *p
+ if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_pParent.X1)+16*uintptr(_pParent.X10))).X0, _zKey) == 0 {
+ return i32(0)
+ }
+_9:
+ goto _12
+_8:
+ if _paiCol == nil {
+ goto _13
}
-_4:
-_2:
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(_pBuf)))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(73287), unsafe.Pointer((*int8)(unsafe.Pointer(&_allocSpaceØ00__func__Ø000))), unsafe.Pointer(str(116216)))
+ if _nCol <= i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(116867)))
crt.X__builtin_abort(tls)
}
}()
- return _pBuf
-}
-
-var _allocSpaceØ00__func__Ø000 [11]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_allocSpaceØ00__func__Ø000[0], str(116244), 11)
+ _aiCol = (*int32)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(uint32(_nCol)*u32(4))))
+ if _aiCol == nil {
+ return i32(1)
+ }
+ *_paiCol = _aiCol
+_13:
+_12:
+ _pIdx = (*XIndex)(_pParent.X2)
+_17:
+ if _pIdx == nil {
+ goto _20
+ }
+ if int32(_pIdx.X13) != _nCol || int32(_pIdx.X15) == i32(0) || (*XExpr)(_pIdx.X9) != nil {
+ goto _23
+ }
+ if _zKey != nil {
+ goto _24
+ }
+ if int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2) {
+ goto _25
+ }
+ if _aiCol == nil {
+ goto _26
+ }
+ _8_i = i32(0)
+_27:
+ if _8_i >= _nCol {
+ goto _30
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_8_i))) = (*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_8_i))).X0
+ _8_i += 1
+ goto _27
+_30:
+_26:
+ goto _20
+_25:
+ goto _31
+_24:
+ _9_i = i32(0)
+_32:
+ if _9_i >= _nCol {
+ goto _35
+ }
+ _10_iCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_9_i)))
+ if int32(_10_iCol) < i32(0) {
+ goto _35
+ }
+ _10_zDfltColl = (*XColumn)(unsafe.Pointer(uintptr(_pParent.X1) + 16*uintptr(_10_iCol))).X2
+ if _10_zDfltColl == nil {
+ _10_zDfltColl = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
+ }
+ if _sqlite3StrICmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_9_i))), _10_zDfltColl) != 0 {
+ goto _35
+ }
+ _10_zIdxCol = (*XColumn)(unsafe.Pointer(uintptr(_pParent.X1) + 16*uintptr(_10_iCol))).X0
+ _9_j = i32(0)
+_39:
+ if _9_j >= _nCol {
+ goto _42
+ }
+ if _sqlite3StrICmp(tls, (*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(_9_j))).X1, _10_zIdxCol) != i32(0) {
+ goto _43
+ }
+ if _aiCol != nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_9_i))) = (*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_9_j))).X0
+ }
+ goto _42
+_43:
+ _9_j += 1
+ goto _39
+_42:
+ if _9_j == _nCol {
+ goto _35
+ }
+ _9_i += 1
+ goto _32
+_35:
+ if _9_i == _nCol {
+ goto _20
+ }
+_31:
+_23:
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _17
+_20:
+ if _pIdx != nil {
+ goto _47
+ }
+ if (_pParse.X47) == 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(116874), unsafe.Pointer((*XTable)(_pFKey.X0).X0), unsafe.Pointer(_pFKey.X2))
+ }
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_aiCol))
+ return i32(1)
+
+_47:
+ *_ppIdx = _pIdx
+ return i32(0)
}
-func _sqlite3BeginTransaction(tls *crt.TLS, _pParse *XParse, _type int32) { // sqlite3.c:103638:1
- var _db *Xsqlite3 // sqlite3.c:103639:11
- _ = _db
- var _v *TVdbe // sqlite3.c:103640:8
- _ = _v
- var _i int32 // sqlite3.c:103641:7
- _ = _i
+var _sqlite3FkLocateIndexØ00__func__Ø000 [21]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FkLocateIndexØ00__func__Ø000[0], str(116919), 21)
+}
+
+var _sqlite3FkOldmaskØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FkOldmaskØ00__func__Ø000[0], str(116940), 17)
+}
+
+// This is called to code the required FOR EACH ROW triggers for an operation
+// on table pTab. The operation to code triggers for (INSERT, UPDATE or DELETE)
+// is given by the op parameter. The tr_tm parameter determines whether the
+// BEFORE or AFTER triggers are coded. If the operation is an UPDATE, then
+// parameter pChanges is passed the list of columns being modified.
+//
+// If there are no triggers that fire at the specified time for the specified
+// operation on pTab, this function is a no-op.
+//
+// The reg argument is the address of the first in an array of registers
+// that contain the values substituted for the new.* and old.* references
+// in the trigger program. If N is the number of columns in table pTab
+// (a copy of pTab->nCol), then registers are populated as follows:
+//
+// Register Contains
+// ------------------------------------------------------
+// reg+0 OLD.rowid
+// reg+1 OLD.* value of left-most column of pTab
+// ... ...
+// reg+N OLD.* value of right-most column of pTab
+// reg+N+1 NEW.rowid
+// reg+N+2 OLD.* value of left-most column of pTab
+// ... ...
+// reg+N+N+1 NEW.* value of right-most column of pTab
+//
+// For ON DELETE triggers, the registers containing the NEW.* values will
+// never be accessed by the trigger program, so they are not allocated or
+// populated by the caller (there is no data to populate them with anyway).
+// Similarly, for ON INSERT triggers the values stored in the OLD.* registers
+// are never accessed, and so are not allocated by the caller. So, for an
+// ON INSERT trigger, the value passed to this function as parameter reg
+// is not a readable register, although registers (reg+N) through
+// (reg+N+N+1) are.
+//
+// Parameter orconf is the default conflict resolution algorithm for the
+// trigger program to use (REPLACE, IGNORE etc.). Parameter ignoreJump
+// is the instruction that control should jump to if a trigger program
+// raises an IGNORE exception.
+func _sqlite3CodeRowTrigger(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _op int32, _pChanges *XExprList, _tr_tm int32, _pTab *XTable, _reg int32, _orconf int32, _ignoreJump int32) {
+ var _p *XTrigger
func() {
- if _pParse == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103643), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BeginTransactionØ00__func__Ø000))), unsafe.Pointer(str(115896)))
+ if _op != i32(110) && _op != i32(108) && _op != i32(109) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123665), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(116957)))
crt.X__builtin_abort(tls)
}
}()
- _db = (*Xsqlite3)(_pParse.X0)
func() {
- if _db == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103645), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3BeginTransactionØ00__func__Ø000))), unsafe.Pointer(str(1200)))
+ if _tr_tm != i32(1) && _tr_tm != i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(117005)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3AuthCheck(tls, _pParse, i32(22), str(24772), nil, nil) == 0 {
- goto _4
- }
- return
-
-_4:
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v != nil {
- goto _5
- }
- return
-
-_5:
- if _type == i32(7) {
- goto _6
- }
-
- _i = i32(0)
-_7:
- if _i >= (_db.X5) {
- goto _10
+ func() {
+ if (_op == i32(110)) != (_pChanges != nil) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(117051)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _p = _pTrigger
+_9:
+ if _p == nil {
+ goto _12
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(2), _i, bool2int(_type == i32(9))+i32(1))
- _sqlite3VdbeUsesBtree(tls, _v, _i)
- _i += 1
- goto _7
-
-_10:
-_6:
- _sqlite3VdbeAddOp0(tls, _v, i32(1))
-}
-
-var _sqlite3BeginTransactionØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3BeginTransactionØ00__func__Ø000[0], str(116256), 24)
-}
-
-func _sqlite3CommitTransaction(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:103663:1
- var _v *TVdbe // sqlite3.c:103664:8
- _ = _v
func() {
- if _pParse == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CommitTransactionØ00__func__Ø000))), unsafe.Pointer(str(115896)))
+ if (*XSchema)(_p.X6) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(117082)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (*Xsqlite3)(_pParse.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CommitTransactionØ00__func__Ø000))), unsafe.Pointer(str(116280)))
+ if (*XSchema)(_p.X7) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123675), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(117096)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3AuthCheck(tls, _pParse, i32(22), str(24828), nil, nil) == 0 {
- goto _4
- }
- return
-
-_4:
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v == nil {
- goto _5
+ func() {
+ if (*XSchema)(_p.X6) != (*XSchema)(_p.X7) && (*XSchema)(_p.X6) != (*XSchema)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(i32(1)))).X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123676), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(117113)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((int32(_p.X2) == _op) && (int32(_p.X3) == _tr_tm)) && _checkColumnOverlap(tls, (*XIdList)(_p.X5), _pChanges) != 0 {
+ _sqlite3CodeRowTriggerDirect(tls, _pParse, _p, _pTab, _reg, _orconf, _ignoreJump)
}
-
- _sqlite3VdbeAddOp1(tls, _v, i32(1), i32(1))
-_5:
+ _p = (*XTrigger)(_p.X9)
+ goto _9
+_12:
}
-var _sqlite3CommitTransactionØ00__func__Ø000 [25]int8 // -
+var _sqlite3CodeRowTriggerØ00__func__Ø000 [22]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3CommitTransactionØ00__func__Ø000[0], str(116296), 25)
+ crt.Xstrncpy(nil, &_sqlite3CodeRowTriggerØ00__func__Ø000[0], str(117181), 22)
}
-func _sqlite3RollbackTransaction(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:103680:1
- var _v *TVdbe // sqlite3.c:103681:8
- _ = _v
+// Generate code for the trigger program associated with trigger p on
+// table pTab. The reg, orconf and ignoreJump parameters passed to this
+// function are the same as those described in the header function for
+// sqlite3CodeRowTrigger()
+func _sqlite3CodeRowTriggerDirect(tls *crt.TLS, _pParse *XParse, _p *XTrigger, _pTab *XTable, _reg int32, _orconf int32, _ignoreJump int32) {
+ var _1_bRecursive int32
+ var _v *TVdbe
+ var _pPrg *XTriggerPrg
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ _pPrg = _getRowTrigger(tls, _pParse, _p, _pTab, _orconf)
func() {
- if _pParse == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RollbackTransactionØ00__func__Ø000))), unsafe.Pointer(str(115896)))
+ if _pPrg == nil && (_pParse.X16) == 0 && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerDirectØ00__func__Ø000))), unsafe.Pointer(str(117203)))
crt.X__builtin_abort(tls)
}
}()
+ if _pPrg != nil {
+ _1_bRecursive = bool2int(((_p.X0) != nil) && (i32(0) == (((*Xsqlite3)(_pParse.X0).X6) & i32(262144))))
+ _sqlite3VdbeAddOp4(tls, _v, i32(44), _reg, _ignoreJump, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1), (*int8)(unsafe.Pointer((*XSubProgram)(_pPrg.X2))), i32(-13))
+ _sqlite3VdbeComment(tls, _v, str(117252), unsafe.Pointer(func() *int8 {
+ if (_p.X0) != nil {
+ return (_p.X0)
+ }
+ return str(117264)
+ }()), unsafe.Pointer(_onErrorText(tls, _orconf)))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(uint8(_1_bRecursive)))
+ }
+}
+
+var _sqlite3CodeRowTriggerDirectØ00__func__Ø000 [28]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3CodeRowTriggerDirectØ00__func__Ø000[0], str(117269), 28)
+}
+
+// Generate code to do constraint checks prior to an INSERT or an UPDATE
+// on table pTab.
+//
+// The regNewData parameter is the first register in a range that contains
+// the data to be inserted or the data after the update. There will be
+// pTab->nCol+1 registers in this range. The first register (the one
+// that regNewData points to) will contain the new rowid, or NULL in the
+// case of a WITHOUT ROWID table. The second register in the range will
+// contain the content of the first table column. The third register will
+// contain the content of the second table column. And so forth.
+//
+// The regOldData parameter is similar to regNewData except that it contains
+// the data prior to an UPDATE rather than afterwards. regOldData is zero
+// for an INSERT. This routine can distinguish between UPDATE and INSERT by
+// checking regOldData for zero.
+//
+// For an UPDATE, the pkChng boolean is true if the true primary key (the
+// rowid for a normal table or the PRIMARY KEY for a WITHOUT ROWID table)
+// might be modified by the UPDATE. If pkChng is false, then the key of
+// the iDataCur content table is guaranteed to be unchanged by the UPDATE.
+//
+// For an INSERT, the pkChng boolean indicates whether or not the rowid
+// was explicitly specified as part of the INSERT statement. If pkChng
+// is zero, it means that the either rowid is computed automatically or
+// that the table is a WITHOUT ROWID table and has no rowid. On an INSERT,
+// pkChng will only be true if the INSERT statement provides an integer
+// value for either the rowid column or its INTEGER PRIMARY KEY alias.
+//
+// The code generated by this routine will store new index entries into
+// registers identified by aRegIdx[]. No index entry is created for
+// indices where aRegIdx[i]==0. The order of indices in aRegIdx[] is
+// the same as the order of indices on the linked list of indices
+// at pTab->pIndex.
+//
+// The caller must have already opened writeable cursors on the main
+// table and all applicable indices (that is to say, all indices for which
+// aRegIdx[] is not zero). iDataCur is the cursor for the main table when
+// inserting or updating a rowid table, or the cursor for the PRIMARY KEY
+// index when operating on a WITHOUT ROWID table. iIdxCur is the cursor
+// for the first index in the pTab->pIndex list. Cursors for other indices
+// are at iIdxCur+N for the N-th element of the pTab->pIndex list.
+//
+// This routine also generates code to check constraints. NOT NULL,
+// CHECK, and UNIQUE constraints are all checked. If a constraint fails,
+// then the appropriate action is performed. There are five possible
+// actions: ROLLBACK, ABORT, FAIL, REPLACE, and IGNORE.
+//
+// Constraint type Action What Happens
+// --------------- ---------- ----------------------------------------
+// any ROLLBACK The current transaction is rolled back and
+// sqlite3_step() returns immediately with a
+// return code of SQLITE_CONSTRAINT.
+//
+// any ABORT Back out changes from the current command
+// only (do not do a complete rollback) then
+// cause sqlite3_step() to return immediately
+// with SQLITE_CONSTRAINT.
+//
+// any FAIL Sqlite3_step() returns immediately with a
+// return code of SQLITE_CONSTRAINT. The
+// transaction is not rolled back and any
+// changes to prior rows are retained.
+//
+// any IGNORE The attempt in insert or update the current
+// row is skipped, without throwing an error.
+// Processing continues with the next row.
+// (There is an immediate jump to ignoreDest.)
+//
+// NOT NULL REPLACE The NULL value is replace by the default
+// value for that column. If the default value
+// is NULL, the action is the same as ABORT.
+//
+// UNIQUE REPLACE The other row that conflicts with the row
+// being inserted is removed.
+//
+// CHECK REPLACE Illegal. The results in an exception.
+//
+// Which action to take is determined by the overrideError parameter.
+// Or if overrideError==OE_Default, then the pParse->onError parameter
+// is used. Or if pParse->onError==OE_Default then the onError value
+// for the constraint is used.
+func _sqlite3GenerateConstraintChecks(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _aRegIdx *int32, _iDataCur int32, _iIdxCur int32, _regNewData int32, _regOldData int32, _pkChng uint8, _overrideError uint8, _ignoreDest int32, _pbMayReplace *int32, _aiChng *int32) {
+ var _i, _ix, _nCol, _onError, _addr1, _seenReplace, _nPkField, _ipkTop, _ipkBottom, _14_allOk, _17_addrRowidOk, _34_regIdx, _34_regR, _34_iThisCur, _34_addrUniqueOk, _37_iField, _37_x, _50_x, _53_addrJump, _53_op, _53_regCmp int32
+ var _10_zMsg, _16_zName, _54_p4 *int8
+ var _isUpdate, _bAffinityDone uint8
+ var _db *Xsqlite3
+ var _27_pTrigger, _59_pTrigger *XTrigger
+ var _v *TVdbe
+ var _13_pCheck *XExprList
+ var _14_pExpr *XExpr
+ var _pIdx, _pPk *XIndex
+ _pPk = nil
+ _seenReplace = i32(0)
+ _ipkTop = i32(0)
+ _ipkBottom = i32(0)
+ _bAffinityDone = u8(0)
+ _isUpdate = uint8(bool2int(_regOldData != i32(0)))
+ _db = (*Xsqlite3)(_pParse.X0)
+ _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if (*Xsqlite3)(_pParse.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103684), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RollbackTransactionØ00__func__Ø000))), unsafe.Pointer(str(116280)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110093), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- if _sqlite3AuthCheck(tls, _pParse, i32(22), str(24840), nil, nil) == 0 {
- goto _4
- }
- return
-
-_4:
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v == nil {
+ func() {
+ if (*XSelect)(_pTab.X3) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110094), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(102268)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _nCol = int32(_pTab.X11)
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _pPk = nil
+ _nPkField = i32(1)
goto _5
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(1), i32(1), i32(1))
+ _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
+ _nPkField = int32(_pPk.X13)
_5:
-}
-
-var _sqlite3RollbackTransactionØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3RollbackTransactionØ00__func__Ø000[0], str(116324), 27)
-}
-
-func _sqlite3Savepoint(tls *crt.TLS, _pParse *XParse, _op int32, _pName *XToken) { // sqlite3.c:103698:1
- var _zName *int8 // sqlite3.c:103699:8
- _ = _zName
- var _1_v *TVdbe // sqlite3.c:103701:10
- _ = _1_v
- _zName = _sqlite3NameFromToken(tls, (*Xsqlite3)(_pParse.X0), _pName)
- if _zName == nil {
- goto _0
- }
-
- _1_v = _sqlite3GetVdbe(tls, _pParse)
- i32(0)
- if _1_v != nil && _sqlite3AuthCheck(tls, _pParse, i32(32), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3SavepointØ00azØ001)) + 4*uintptr(_op))), _zName, nil) == 0 {
- goto _2
- }
-
- _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_zName))
- return
-
-_2:
- _sqlite3VdbeAddOp4(tls, _1_v, i32(0), _op, i32(0), i32(0), _zName, i32(-1))
-_0:
-}
-
-var _sqlite3SavepointØ00azØ001 [3]*int8 // sqlite3.c:103703:23
-
-func init() {
- _sqlite3SavepointØ00azØ001 = [3]*int8{str(24772), str(24864), str(24840)}
-}
-
-func _sqlite3StartTable(tls *crt.TLS, _pParse *XParse, _pName1 *XToken, _pName2 *XToken, _isTemp int32, _isView int32, _isVirtual int32, _noErr int32) { // sqlite3.c:100538:1
- var _pTable *XTable // sqlite3.c:100547:9
- _ = _pTable
- var _zName *int8 // sqlite3.c:100548:8
- _ = _zName
- var _db *Xsqlite3 // sqlite3.c:100549:11
- _ = _db
- var _v *TVdbe // sqlite3.c:100550:8
- _ = _v
- var _iDb int32 // sqlite3.c:100551:7
- _ = _iDb
- var _pName *XToken // sqlite3.c:100552:9
- _ = _pName
- var _5_zDb *int8 // sqlite3.c:100588:10
- _ = _5_zDb
- var _8_zDb *int8 // sqlite3.c:100607:10
- _ = _8_zDb
- var _16_addr1 int32 // sqlite3.c:100662:9
- _ = _16_addr1
- var _16_fileFormat int32 // sqlite3.c:100663:9
- _ = _16_fileFormat
- var _16_reg1 int32 // sqlite3.c:100664:9
- _ = _16_reg1
- var _16_reg2 int32 // sqlite3.c:100664:15
- _ = _16_reg2
- var _16_reg3 int32 // sqlite3.c:100664:21
- _ = _16_reg3
- _zName = nil
- _db = (*Xsqlite3)(_pParse.X0)
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == 0 || ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X0) != i32(1) {
- goto _1
- }
-
- _iDb = int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X1)
- _zName = _sqlite3DbStrDup(tls, _db, func() *int8 {
- if i32(1) != 0 && (_iDb == i32(1)) {
- return str(51596)
- }
- return str(51616)
- }())
- _pName = _pName1
- goto _5
-
-_1:
- _iDb = _sqlite3TwoPartName(tls, _pParse, _pName1, _pName2, &_pName)
- if _iDb >= i32(0) {
- goto _6
- }
- return
-
+ _i = i32(0)
_6:
- if i32(1) == 0 || _isTemp == 0 || (_pName2.X1) <= uint32(i32(0)) || _iDb == i32(1) {
- goto _10
+ if _i >= _nCol {
+ goto _9
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(116352))
- return
-
-_10:
- if i32(1) == 0 || _isTemp == 0 {
- goto _12
+ if _i == int32(_pTab.X10) {
+ goto _7
}
-
- _iDb = i32(1)
-_12:
- _zName = _sqlite3NameFromToken(tls, _db, _pName)
-_5:
- *(*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(392 /* X50 */))) = *_pName
- if _zName != nil {
- goto _13
+ if (_aiChng != nil) && ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiChng)) + 4*uintptr(_i)))) < i32(0)) {
+ goto _7
}
- return
-
-_13:
- if i32(0) == _sqlite3CheckObjectName(tls, _pParse, _zName) {
- goto _14
+ _onError = int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_i))).X3)
+ if _onError == i32(0) {
+ goto _7
}
-
- goto _begin_table_error
-
-_14:
- if int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X1) != i32(1) {
+ if int32(_overrideError) != i32(10) {
+ _onError = int32(_overrideError)
goto _15
}
-
- _isTemp = i32(1)
+ if _onError == i32(10) {
+ _onError = i32(2)
+ }
_15:
+ if (_onError == i32(5)) && ((*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1) == nil) {
+ _onError = i32(2)
+ }
func() {
- if _isTemp != i32(0) && _isTemp != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100579), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(116396)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _isView != i32(0) && _isView != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100580), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(116420)))
+ if _onError != i32(1) && _onError != i32(2) && _onError != i32(3) && _onError != i32(4) && _onError != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(117297)))
crt.X__builtin_abort(tls)
}
}()
- _5_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- if _sqlite3AuthCheck(tls, _pParse, i32(18), func() *int8 {
- if i32(1) != 0 && (_isTemp == i32(1)) {
- return str(51596)
- }
- return str(51616)
- }(), nil, _5_zDb) == 0 {
- goto _25
- }
-
- goto _begin_table_error
-
-_25:
- if _isVirtual != 0 || _sqlite3AuthCheck(tls, _pParse, int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3StartTableØ00aCodeØ001)) + 1*uintptr(_isTemp+(i32(2)*_isView))))), _zName, nil, _5_zDb) == 0 {
+ switch _onError {
+ case i32(1):
goto _27
- }
-
- goto _begin_table_error
-
-_27:
- if (_pParse.X55) != 0 {
+ case i32(2):
+ goto _26
+ case i32(3):
goto _28
- }
-
- _8_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- if i32(0) == _sqlite3ReadSchema(tls, _pParse) {
+ case i32(4):
goto _29
- }
-
- goto _begin_table_error
-
-_29:
- _pTable = _sqlite3FindTable(tls, _db, _zName, _8_zDb)
- if _pTable == nil {
+ default:
goto _30
}
- if _noErr != 0 {
- goto _31
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(116444), unsafe.Pointer(_pName))
- goto _32
-
-_31:
- func() {
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 && (_sqlite3Config.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100616), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(116468)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
-_32:
- goto _begin_table_error
-
-_30:
- if _sqlite3FindIndex(tls, _db, _zName, _8_zDb) == nil {
- goto _36
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(116500), unsafe.Pointer(_zName))
- goto _begin_table_error
-
-_36:
+_26:
+ _sqlite3MayAbort(tls, _pParse)
+_27:
_28:
- _pTable = (*XTable)(_sqlite3DbMallocZero(tls, _db, uint64(u32(80))))
- if _pTable != nil {
- goto _37
- }
-
- func() {
- if (_db.X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100629), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(49304)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _sqlite3NomemError(tls, i32(100630))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(36 /* X16 */))) += 1
- goto _begin_table_error
-
-_37:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(0 /* X0 */))) = _zName
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(40 /* X10 */))) = int16(i32(-1))
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(72 /* X20 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(32 /* X8 */))) = uint32(i32(1))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTable)) + uintptr(44 /* X12 */))) = int16(i32(200))
+ _10_zMsg = _sqlite3MPrintf(tls, _db, str(8018), unsafe.Pointer(_pTab.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X0))
+ _sqlite3VdbeAddOp3(tls, _v, i32(54), i32(1299), _onError, (_regNewData+i32(1))+_i)
+ _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_10_zMsg), i32(-1))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)))
+ goto _31
+_29:
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), (_regNewData+i32(1))+_i, _ignoreDest)
+ goto _31
+_30:
func() {
- if i32(200) != int32(_sqlite3LogEst(tls, uint64(i32(1048576)))) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(49608)))
+ if _onError != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110156), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(117404)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if (*XTable)(_pParse.X63) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100639), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(24380)))
- crt.X__builtin_abort(tls)
+ _addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(76), (_regNewData+i32(1))+_i)
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1), (_regNewData+i32(1))+_i)
+ _sqlite3VdbeJumpHere(tls, _v, _addr1)
+ goto _31
+_31:
+_7:
+ _i += 1
+ goto _6
+_9:
+ if (*XExprList)(_pTab.X6) == nil || ((_db.X6)&i32(8192)) != i32(0) {
+ goto _35
+ }
+ _13_pCheck = (*XExprList)(_pTab.X6)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = _regNewData + i32(1)
+ _onError = func() int32 {
+ if int32(_overrideError) != i32(10) {
+ return int32(_overrideError)
}
+ return i32(2)
}()
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(444 /* X63 */))))) = _pTable
- if (_pParse.X6) != 0 || crt.Xstrcmp(tls, _zName, str(116536)) != i32(0) {
+ _i = i32(0)
+_38:
+ if _i >= (_13_pCheck.X0) {
+ goto _41
+ }
+ _14_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pCheck))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
+ if (_aiChng != nil) && _checkConstraintUnchanged(tls, _14_pExpr, _aiChng, int32(_pkChng)) != 0 {
+ goto _39
+ }
+ _14_allOk = _sqlite3VdbeMakeLabel(tls, _v)
+ _sqlite3ExprIfTrue(tls, _pParse, _14_pExpr, _14_allOk, i32(16))
+ if _onError == i32(4) {
+ _sqlite3VdbeGoto(tls, _v, _ignoreDest)
goto _45
}
-
- func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100648), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3StartTableØ00__func__Ø000))), unsafe.Pointer(str(52808)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr(_pTable.X20) + uintptr(72 /* X6 */))))) = _pTable
+ _16_zName = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pCheck))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1
+ if _16_zName == nil {
+ _16_zName = _pTab.X0
+ }
+ if _onError == i32(5) {
+ _onError = i32(2)
+ }
+ _sqlite3HaltConstraint(tls, _pParse, i32(275), _onError, _16_zName, int8(i32(0)), uint8(i32(3)))
_45:
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 || store36(&_v, _sqlite3GetVdbe(tls, _pParse)) == nil {
+ _sqlite3VdbeResolveLabel(tls, _v, _14_allOk)
+_39:
+ _i += 1
+ goto _38
+_41:
+_35:
+ if _pkChng == 0 || _pPk != nil {
goto _49
}
-
- _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
- if _isVirtual == 0 {
- goto _50
+ _17_addrRowidOk = _sqlite3VdbeMakeLabel(tls, _v)
+ _onError = int32(_pTab.X14)
+ if int32(_overrideError) != i32(10) {
+ _onError = int32(_overrideError)
+ goto _51
}
-
- _sqlite3VdbeAddOp0(tls, _v, i32(155))
-_50:
- _16_reg1 = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(100 /* X31 */))), preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
- _16_reg2 = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(104 /* X32 */))), preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
- _16_reg3 = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp3(tls, _v, i32(103), _iDb, _16_reg3, i32(2))
- _sqlite3VdbeUsesBtree(tls, _v, _iDb)
- _16_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(21), _16_reg3)
- _16_fileFormat = func() int32 {
- if ((_db.X6) & i32(32768)) != i32(0) {
- return i32(1)
- }
- return i32(4)
- }()
- _sqlite3VdbeAddOp3(tls, _v, i32(104), _iDb, i32(2), _16_fileFormat)
- _sqlite3VdbeAddOp3(tls, _v, i32(104), _iDb, i32(5), int32(_db.X14))
- _sqlite3VdbeJumpHere(tls, _v, _16_addr1)
- if _isView == 0 && _isVirtual == 0 {
- goto _54
+ if _onError == i32(10) {
+ _onError = i32(2)
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _16_reg2)
- goto _55
-
-_54:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(140 /* X41 */))) = _sqlite3VdbeAddOp2(tls, _v, i32(137), _iDb, _16_reg2)
-_55:
- _sqlite3OpenMasterTable(tls, _pParse, _iDb)
- _sqlite3VdbeAddOp2(tls, _v, i32(117), i32(0), _16_reg1)
- _sqlite3VdbeAddOp4(tls, _v, i32(61), i32(6), _16_reg3, i32(0), (*int8)(unsafe.Pointer(&_sqlite3StartTableØ00nullRowØ002)), i32(-2))
- _sqlite3VdbeAddOp3(tls, _v, i32(118), i32(0), _16_reg3, _16_reg1)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(8)))
- _sqlite3VdbeAddOp0(tls, _v, i32(114))
-_49:
- return
-
-_begin_table_error:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName))
-}
-
-func _sqlite3TwoPartName(tls *crt.TLS, _pParse *XParse, _pName1 *XToken, _pName2 *XToken, _pUnqual **XToken) (r0 int32) { // sqlite3.c:100455:1
- var _iDb int32 // sqlite3.c:100461:7
- _ = _iDb
- var _db *Xsqlite3 // sqlite3.c:100462:11
- _ = _db
- _db = (*Xsqlite3)(_pParse.X0)
- func() {
- if _pName2 == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100464), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TwoPartNameØ00__func__Ø000))), unsafe.Pointer(str(116552)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (_pName2.X1) <= uint32(i32(0)) {
- goto _2
+_51:
+ if _isUpdate != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(78), _regNewData, _17_addrRowidOk, _regOldData)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
}
-
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
- goto _3
+ if _onError != i32(5) || int32(_overrideError) == i32(5) {
+ goto _55
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(116564))
- return i32(-1)
-
-_3:
- *_pUnqual = _pName2
- _iDb = _sqlite3FindDb(tls, _db, _pName1)
- if _iDb >= i32(0) {
- goto _4
+ _pIdx = (*XIndex)(_pTab.X2)
+_56:
+ if _pIdx == nil {
+ goto _59
+ }
+ if (int32(_pIdx.X15) == i32(4)) || (int32(_pIdx.X15) == i32(3)) {
+ _ipkTop = _sqlite3VdbeAddOp0(tls, _v, i32(13))
+ goto _59
+ }
+ _pIdx = (*XIndex)(_pIdx.X5)
+ goto _56
+_59:
+_55:
+ _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDataCur, _17_addrRowidOk, _regNewData)
+ switch _onError {
+ case i32(1):
+ goto _64
+ case i32(2):
+ goto _65
+ case i32(3):
+ goto _66
+ case i32(4):
+ goto _68
+ case i32(5):
+ goto _67
+ default:
+ goto _63
}
- _sqlite3ErrorMsg(tls, _pParse, str(116584), unsafe.Pointer(_pName1))
- return i32(-1)
-
-_4:
- goto _5
-
-_2:
- func() {
- if int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X1) != i32(0) && ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == 0 && ((_db.X6)&i32(268435456)) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100477), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TwoPartNameØ00__func__Ø000))), unsafe.Pointer(str(116604)))
- crt.X__builtin_abort(tls)
- }
- }()
- _iDb = int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X1)
- *_pUnqual = _pName1
-_5:
- return _iDb
-}
-
-var _sqlite3TwoPartNameØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3TwoPartNameØ00__func__Ø000[0], str(116672), 19)
-}
-
-func _sqlite3FindDb(tls *crt.TLS, _db *Xsqlite3, _pName *XToken) (r0 int32) { // sqlite3.c:100430:1
- var _i int32 // sqlite3.c:100431:7
- _ = _i
- var _zName *int8 // sqlite3.c:100432:8
- _ = _zName
- _zName = _sqlite3NameFromToken(tls, _db, _pName)
- _i = _sqlite3FindDbName(tls, _db, _zName)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName))
- return _i
-}
-
-func _sqlite3CheckObjectName(tls *crt.TLS, _pParse *XParse, _zName *int8) (r0 int32) { // sqlite3.c:100491:1
- if ((*t19)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(144 /* X33 */))).X2) != 0 || int32(_pParse.X6) != i32(0) || (((*Xsqlite3)(_pParse.X0).X6)&i32(2048)) != i32(0) || i32(0) != Xsqlite3_strnicmp(tls, _zName, str(116692), i32(7)) {
- goto _3
+_63:
+ _onError = i32(2)
+_64:
+_65:
+_66:
+ _sqlite3RowidConstraint(tls, _pParse, _onError, _pTab)
+ goto _69
+_67:
+ _27_pTrigger = nil
+ if ((_db.X6) & i32(262144)) != 0 {
+ _27_pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(116700), unsafe.Pointer(_zName))
- return i32(1)
-
-_3:
- return i32(0)
-}
-
-var _sqlite3StartTableØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3StartTableØ00__func__Ø000[0], str(116744), 18)
-}
-
-var _sqlite3StartTableØ00aCodeØ001 [4]uint8 // sqlite3.c:100582:21
-
-func init() {
- _sqlite3StartTableØ00aCodeØ001 = [4]uint8{2, 4, 8, 6}
-}
-
-func _sqlite3BeginWriteOperation(tls *crt.TLS, _pParse *XParse, _setStatement int32, _iDb int32) { // sqlite3.c:103796:1
- var _pToplevel *XParse // sqlite3.c:103797:9
- _ = _pToplevel
- _pToplevel = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(92 /* X29 */)))
- *p = (*p) | (u32(1) << uint(_iDb))
- sink5 = *p
+ if (_27_pTrigger != nil) || _sqlite3FkRequired(tls, _pParse, _pTab, nil, i32(0)) != 0 {
+ _sqlite3MultiWrite(tls, _pParse)
+ _sqlite3GenerateRowDelete(tls, _pParse, _pTab, _27_pTrigger, _iDataCur, _iIdxCur, _regNewData, int16(i32(1)), uint8(i32(0)), uint8(i32(5)), uint8(i32(1)), i32(-1))
+ goto _73
}
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(20 /* X8 */)))
- *p = uint8(int32(*p) | _setStatement)
- sink2 = *p
+ if (*XIndex)(_pTab.X2) != nil {
+ _sqlite3MultiWrite(tls, _pParse)
+ _sqlite3GenerateRowIndexDelete(tls, _pParse, _pTab, _iDataCur, _iIdxCur, nil, i32(-1))
}
-}
-
-func _sqlite3OpenMasterTable(tls *crt.TLS, _p *XParse, _iDb int32) { // sqlite3.c:100395:1
- var _v *TVdbe // sqlite3.c:100396:8
- _ = _v
- _v = _sqlite3GetVdbe(tls, _p)
- _sqlite3TableLock(tls, _p, _iDb, i32(1), uint8(i32(1)), str(51616))
- _sqlite3VdbeAddOp4Int(tls, _v, i32(107), i32(0), i32(1), _iDb, i32(5))
- if (_p.X17) != i32(0) {
- goto _0
+_73:
+ _seenReplace = i32(1)
+ goto _69
+_68:
+ _sqlite3VdbeGoto(tls, _v, _ignoreDest)
+ goto _69
+_69:
+ _sqlite3VdbeResolveLabel(tls, _v, _17_addrRowidOk)
+ if _ipkTop != 0 {
+ _ipkBottom = _sqlite3VdbeAddOp0(tls, _v, i32(13))
+ _sqlite3VdbeJumpHere(tls, _v, _ipkTop)
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(40 /* X17 */))) = i32(1)
-_0:
-}
-
-var _sqlite3StartTableØ00nullRowØ002 [6]int8 // sqlite3.c:100666:23
-
-func init() {
- _sqlite3StartTableØ00nullRowØ002 = [6]int8{6, 0, 0, 0, 0, 0}
-}
-
-func _disableLookaside(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:135506:1
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(24 /* X12 */))) += 1
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) += 1
-}
-
-func _sqlite3EndTable(tls *crt.TLS, _pParse *XParse, _pCons *XToken, _pEnd *XToken, _tabOpts uint8, _pSelect *XSelect) { // sqlite3.c:101529:1
- var _p *XTable // sqlite3.c:101536:9
- _ = _p
- var _db *Xsqlite3 // sqlite3.c:101537:11
- _ = _db
- var _iDb int32 // sqlite3.c:101538:7
- _ = _iDb
- var _pIdx *XIndex // sqlite3.c:101539:9
- _ = _pIdx
- var _9_n int32 // sqlite3.c:101602:9
- _ = _9_n
- var _9_v *TVdbe // sqlite3.c:101603:10
- _ = _9_v
- var _9_zType *int8 // sqlite3.c:101604:10
- _ = _9_zType
- var _9_zType2 *int8 // sqlite3.c:101605:10
- _ = _9_zType2
- var _9_zStmt *int8 // sqlite3.c:101606:10
- _ = _9_zStmt
- var _12_dest XSelectDest // sqlite3.c:101642:18
- _ = _12_dest
- var _12_regYield int32 // sqlite3.c:101643:11
- _ = _12_regYield
- var _12_addrTop int32 // sqlite3.c:101644:11
- _ = _12_addrTop
- var _12_regRec int32 // sqlite3.c:101645:11
- _ = _12_regRec
- var _12_regRowid int32 // sqlite3.c:101646:11
- _ = _12_regRowid
- var _12_addrInsLoop int32 // sqlite3.c:101647:11
- _ = _12_addrInsLoop
- var _12_pSelTab *XTable // sqlite3.c:101648:13
- _ = _12_pSelTab
- var _14_pEnd2 *XToken // sqlite3.c:101688:13
- _ = _14_pEnd2
- var _15_pDb *XDb // sqlite3.c:101720:10
- _ = _15_pDb
- var _17_pOld *XTable // sqlite3.c:101740:11
- _ = _17_pOld
- var _17_pSchema *XSchema // sqlite3.c:101741:12
- _ = _17_pSchema
- var _19_zName *int8 // sqlite3.c:101754:18
- _ = _19_zName
- var _19_nName int32 // sqlite3.c:101755:11
- _ = _19_nName
- _db = (*Xsqlite3)(_pParse.X0)
- if _pEnd != nil || _pSelect != nil {
- goto _1
+_49:
+ *func() **XIndex { _ix = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_76:
+ if _pIdx == nil {
+ goto _79
}
- return
-
-_1:
- func() {
- if (_db.X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101544), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(23588)))
- crt.X__builtin_abort(tls)
- }
- }()
- _p = (*XTable)(_pParse.X63)
- if _p != nil {
- goto _4
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix)))) == i32(0) {
+ goto _77
}
- return
-
-_4:
- func() {
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 && _pSelect != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101548), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(116764)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
- goto _8
+ if int32(_bAffinityDone) == i32(0) {
+ _sqlite3TableAffinity(tls, _v, _pTab, _regNewData+i32(1))
+ _bAffinityDone = uint8(i32(1))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(28 /* X7 */))) = (*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X0
- if (_p.X7) != i32(1) {
- goto _9
+ _34_iThisCur = _iIdxCur + _ix
+ _34_addrUniqueOk = _sqlite3VdbeMakeLabel(tls, _v)
+ if (*XExpr)(_pIdx.X9) != nil {
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = _regNewData + i32(1)
+ _sqlite3ExprIfFalseDup(tls, _pParse, (*XExpr)(_pIdx.X9), _34_addrUniqueOk, i32(16))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = i32(0)
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(1))
- sink5 = *p
+ _34_regIdx = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix)))) + i32(1)
+ _i = i32(0)
+_83:
+ if _i >= int32(_pIdx.X14) {
+ goto _86
}
-_9:
-_8:
- if (int32(_tabOpts) & i32(32)) == 0 {
- goto _10
+ _37_iField = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i))))
+ if _37_iField == i32(-2) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = _regNewData + i32(1)
+ _sqlite3ExprCodeCopy(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), _34_regIdx+_i)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = i32(0)
+ _sqlite3VdbeComment(tls, _v, str(117424), unsafe.Pointer(_pIdx.X0), _i)
+ goto _88
}
-
- if ((_p.X9) & uint32(i32(8))) == 0 {
- goto _11
+ if (_37_iField == i32(-1)) || (_37_iField == int32(_pTab.X10)) {
+ _37_x = _regNewData
+ goto _91
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(116792))
- return
-
-_11:
- if ((_p.X9) & uint32(i32(4))) != uint32(i32(0)) {
- goto _12
+ _37_x = (_37_iField + _regNewData) + i32(1)
+_91:
+ _sqlite3VdbeAddOp2(tls, _v, func() int32 {
+ if _37_iField < i32(0) {
+ return i32(66)
+ }
+ return i32(65)
+ }(), _37_x, _34_regIdx+_i)
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(func() *int8 {
+ if _37_iField < i32(0) {
+ return str(27227)
+ }
+ return ((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_37_iField))).X0)
+ }()))
+_88:
+ _i += 1
+ goto _83
+_86:
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _34_regIdx, int32(_pIdx.X14), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix))))
+ _sqlite3VdbeComment(tls, _v, str(107188), unsafe.Pointer(_pIdx.X0))
+ if ((_isUpdate != 0) && (_pPk == _pIdx)) && (int32(_pkChng) == i32(0)) {
+ _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
+ goto _77
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(116844), unsafe.Pointer(_p.X0))
- goto _13
-
-_12:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(96))
- sink5 = *p
+ _onError = int32(_pIdx.X15)
+ if _onError == i32(0) {
+ _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
+ goto _77
}
- _convertToWithoutRowidTable(tls, _pParse, _p)
-_13:
-_10:
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_p.X20))
- if (*XExprList)(_p.X6) == nil {
- goto _14
+ if int32(_overrideError) != i32(10) {
+ _onError = int32(_overrideError)
+ goto _101
}
-
- _sqlite3ResolveSelfReference(tls, _pParse, _p, i32(4), nil, (*XExprList)(_p.X6))
-_14:
- _estimateTableWidth(tls, _p)
- _pIdx = (*XIndex)(_p.X2)
-_15:
- if _pIdx == nil {
- goto _18
+ if _onError == i32(10) {
+ _onError = i32(2)
}
-
- _estimateIndexWidth(tls, _pIdx)
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _15
-
-_18:
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
- goto _19
+_101:
+ if (((((_ix == i32(0)) && ((*XIndex)(_pIdx.X5) == nil)) && (_pPk == _pIdx)) && (_onError == i32(5))) && ((i32(0) == ((_db.X6) & i32(262144))) || (nil == _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil)))) && ((i32(0) == ((_db.X6) & i32(524288))) || ((nil == (*XFKey)(_pTab.X4)) && (nil == _sqlite3FkReferences(tls, _pTab)))) {
+ _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
+ goto _77
}
-
- _9_v = _sqlite3GetVdbe(tls, _pParse)
- if func() int32 {
- if _9_v == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(28), _34_iThisCur, _34_addrUniqueOk, _34_regIdx, int32(_pIdx.X13))
+ _34_regR = func() int32 {
+ if _pIdx == _pPk {
+ return _34_regIdx
}
- return i32(0)
- }() == 0 {
- goto _22
+ return _sqlite3GetTempRange(tls, _pParse, _nPkField)
+ }()
+ if _isUpdate == 0 && _onError != i32(5) {
+ goto _115
}
- return
-
-_22:
- _sqlite3VdbeAddOp1(tls, _9_v, i32(114), i32(0))
- if (*XSelect)(_p.X3) != nil {
- goto _23
+ if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ goto _116
}
-
- _9_zType = str(97788)
- _9_zType2 = str(24876)
- goto _24
-
-_23:
- _9_zType = str(116876)
- _9_zType2 = str(25224)
-_24:
- if _pSelect == nil {
- goto _25
+ _sqlite3VdbeAddOp2(tls, _v, i32(131), _34_iThisCur, _34_regR)
+ if _isUpdate != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(78), _34_regR, _34_addrUniqueOk, _regOldData)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
}
-
- _12_regYield = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _12_regRec = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _12_regRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- func() {
- if (_pParse.X17) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101653), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(116884)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3MayAbort(tls, _pParse)
- _sqlite3VdbeAddOp3(tls, _9_v, i32(107), i32(1), _pParse.X32, _iDb)
- _sqlite3VdbeChangeP5(tls, _9_v, uint16(i32(16)))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = i32(2)
- _12_addrTop = _sqlite3VdbeCurrentAddr(tls, _9_v) + i32(1)
- _sqlite3VdbeAddOp3(tls, _9_v, i32(15), _12_regYield, i32(0), _12_addrTop)
- _sqlite3SelectDestInit(tls, &_12_dest, i32(13), _12_regYield)
- _sqlite3Select(tls, _pParse, _pSelect, &_12_dest)
- _sqlite3VdbeEndCoroutine(tls, _9_v, _12_regYield)
- _sqlite3VdbeJumpHere(tls, _9_v, _12_addrTop-i32(1))
- if (_pParse.X16) == 0 {
- goto _28
+ goto _118
+_116:
+ if _pIdx == _pPk {
+ goto _119
}
- return
-
-_28:
- _12_pSelTab = _sqlite3ResultSetOfSelect(tls, _pParse, _pSelect)
- if _12_pSelTab != nil {
- goto _29
+ _i = i32(0)
+_120:
+ if _i >= int32(_pPk.X13) {
+ goto _123
}
- return
-
-_29:
func() {
- if (*XColumn)(_p.X1) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(116900)))
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(115265)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X11 */))) = _12_pSelTab.X11
- *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = (*XColumn)(_12_pSelTab.X1)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pSelTab)) + uintptr(42 /* X11 */))) = int16(i32(0))
- *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_12_pSelTab)) + uintptr(4 /* X1 */))))) = nil
- _sqlite3DeleteTable(tls, _db, _12_pSelTab)
- _12_addrInsLoop = _sqlite3VdbeAddOp1(tls, _9_v, i32(16), _12_dest.X2)
- _sqlite3VdbeAddOp3(tls, _9_v, i32(101), _12_dest.X3, _12_dest.X4, _12_regRec)
- _sqlite3TableAffinity(tls, _9_v, _p, i32(0))
- _sqlite3VdbeAddOp2(tls, _9_v, i32(117), i32(1), _12_regRowid)
- _sqlite3VdbeAddOp3(tls, _9_v, i32(118), i32(1), _12_regRec, _12_regRowid)
- _sqlite3VdbeGoto(tls, _9_v, _12_addrInsLoop)
- _sqlite3VdbeJumpHere(tls, _9_v, _12_addrInsLoop)
- _sqlite3VdbeAddOp1(tls, _9_v, i32(114), i32(1))
-_25:
- if _pSelect == nil {
- goto _32
+ _50_x = int32(_sqlite3ColumnOfIndex(tls, _pIdx, *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))))
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _34_iThisCur, _50_x, _34_regR+_i)
+ _sqlite3VdbeComment(tls, _v, str(8018), unsafe.Pointer(_pTab.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))))).X0))
+ _i += 1
+ goto _120
+_123:
+_119:
+ if _isUpdate == 0 {
+ goto _126
}
-
- _9_zStmt = _createTableStmt(tls, _db, _p)
- goto _33
-
-_32:
- _14_pEnd2 = func() *XToken {
- if _tabOpts != 0 {
- return (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(400 /* X51 */)))
+ _53_addrJump = _sqlite3VdbeCurrentAddr(tls, _v) + int32(_pPk.X13)
+ _53_op = i32(77)
+ _53_regCmp = func() int32 {
+ if int32((uint32(_pIdx.X16)<>uint(i32(30))) == i32(2) {
+ return _34_regIdx
}
- return _pEnd
+ return _34_regR
}()
- _9_n = int32((uintptr(unsafe.Pointer(_14_pEnd2.X0)) - uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(392 /* X50 */))).X0))) / 1)
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_14_pEnd2.X0)) + 1*uintptr(i32(0))))) == i32(59) {
- goto _36
- }
-
- {
- p := &_9_n
- *p = int32(uint32(*p) + (_14_pEnd2.X1))
- sink1 = *p
- }
-_36:
- _9_zStmt = _sqlite3MPrintf(tls, _db, str(116912), unsafe.Pointer(_9_zType2), _9_n, unsafe.Pointer((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(392 /* X50 */))).X0))
-_33:
- _sqlite3NestedParse(tls, _pParse, str(116928), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(51616)), unsafe.Pointer(_9_zType), unsafe.Pointer(_p.X0), unsafe.Pointer(_p.X0), _pParse.X32, unsafe.Pointer(_9_zStmt), _pParse.X31)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_9_zStmt))
- _sqlite3ChangeCookie(tls, _pParse, _iDb)
- if ((_p.X9) & uint32(i32(8))) == uint32(i32(0)) {
- goto _37
+ _i = i32(0)
+_129:
+ if _i >= int32(_pPk.X13) {
+ goto _132
}
-
- _15_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
+ _54_p4 = (*int8)(unsafe.Pointer(_sqlite3LocateCollSeq(tls, _pParse, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_i))))))
+ _50_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101721), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ if _50_x < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110453), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(109743)))
crt.X__builtin_abort(tls)
}
}()
- if (*XTable)((*XSchema)(_15_pDb.X4).X6) != nil {
- goto _40
+ if _i == (int32(_pPk.X13) - i32(1)) {
+ _53_addrJump = _34_addrUniqueOk
+ _53_op = i32(78)
}
-
- _sqlite3NestedParse(tls, _pParse, str(117016), unsafe.Pointer(_15_pDb.X0))
-_40:
-_37:
- _sqlite3VdbeAddParseSchemaOp(tls, _9_v, _iDb, _sqlite3MPrintf(tls, _db, str(117060), unsafe.Pointer(_p.X0)))
-_19:
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
- goto _41
- }
-
- _17_pSchema = (*XSchema)(_p.X20)
+ _sqlite3VdbeAddOp4(tls, _v, _53_op, (_regOldData+i32(1))+_50_x, _53_addrJump, _53_regCmp+_i, _54_p4, i32(-3))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
+ _i += 1
+ goto _129
+_132:
+_126:
+_118:
+_115:
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101742), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ if _onError != i32(1) && _onError != i32(2) && _onError != i32(3) && _onError != i32(4) && _onError != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110470), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(117297)))
crt.X__builtin_abort(tls)
}
}()
- _17_pOld = (*XTable)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_17_pSchema))+uintptr(8 /* X2 */))), _p.X0, (unsafe.Pointer)(_p)))
- if _17_pOld == nil {
- goto _44
+ switch _onError {
+ case i32(1):
+ goto _143
+ case i32(2):
+ goto _144
+ case i32(3):
+ goto _145
+ case i32(4):
+ goto _146
+ default:
+ goto _147
}
+_143:
+_144:
+_145:
+ _sqlite3UniqueConstraint(tls, _pParse, _onError, _pIdx)
+ goto _148
+_146:
+ _sqlite3VdbeGoto(tls, _v, _ignoreDest)
+ goto _148
+_147:
+ _59_pTrigger = nil
func() {
- if _p != _17_pOld {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101745), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(117096)))
+ if _onError != i32(5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110485), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(117404)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3OomFault(tls, _db)
- return
-
-_44:
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(444 /* X63 */))))) = nil
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(2)
- sink1 = *p
- }
- if (*XSelect)(_p.X3) != nil {
- goto _47
+ _sqlite3MultiWrite(tls, _pParse)
+ if ((_db.X6) & i32(262144)) != 0 {
+ _59_pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil)
}
-
- _19_zName = (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(392 /* X50 */))).X0
- func() {
- if _pSelect != nil || _pCons == nil || _pEnd == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101756), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3EndTableØ00__func__Ø000))), unsafe.Pointer(str(117104)))
- crt.X__builtin_abort(tls)
+ _sqlite3GenerateRowDelete(tls, _pParse, _pTab, _59_pTrigger, _iDataCur, _iIdxCur, _34_regR, int16(_nPkField), uint8(i32(0)), uint8(i32(5)), uint8(func() int32 {
+ if _pIdx == _pPk {
+ return i32(1)
}
- }()
- if (_pCons.X0) != nil {
- goto _52
+ return i32(0)
+ }()), _34_iThisCur)
+ _seenReplace = i32(1)
+ goto _148
+_148:
+ _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
+ if _34_regR != _34_regIdx {
+ _sqlite3ReleaseTempRange(tls, _pParse, _34_regR, _nPkField)
}
-
- _pCons = _pEnd
-_52:
- _19_nName = int32((uintptr(unsafe.Pointer(_pCons.X0)) - uintptr(unsafe.Pointer(_19_zName))) / 1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(52 /* X15 */))) = i32(13) + _sqlite3Utf8CharLen(tls, _19_zName, _19_nName)
-_47:
-_41:
+_77:
+ *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_ix }() += 1
+ goto _76
+_79:
+ if _ipkTop != 0 {
+ _sqlite3VdbeGoto(tls, _v, _ipkTop+i32(1))
+ _sqlite3VdbeJumpHere(tls, _v, _ipkBottom)
+ }
+ *_pbMayReplace = _seenReplace
}
-var _sqlite3EndTableØ00__func__Ø000 [16]int8 // -
+var _sqlite3GenerateConstraintChecksØ00__func__Ø000 [32]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3EndTableØ00__func__Ø000[0], str(117132), 16)
+ crt.Xstrncpy(nil, &_sqlite3GenerateConstraintChecksØ00__func__Ø000[0], str(117437), 32)
}
-func _convertToWithoutRowidTable(tls *crt.TLS, _pParse *XParse, _pTab *XTable) { // sqlite3.c:101382:1
- var _pIdx *XIndex // sqlite3.c:101383:9
- _ = _pIdx
- var _pPk *XIndex // sqlite3.c:101384:9
- _ = _pPk
- var _nPk int32 // sqlite3.c:101385:7
- _ = _nPk
- var _i int32 // sqlite3.c:101386:7
- _ = _i
- var _j int32 // sqlite3.c:101386:10
- _ = _j
- var _db *Xsqlite3 // sqlite3.c:101387:11
- _ = _db
- var _v *TVdbe // sqlite3.c:101388:8
- _ = _v
- var _5_pList *XExprList // sqlite3.c:101417:14
- _ = _5_pList
- var _5_ipkToken XToken // sqlite3.c:101418:11
- _ = _5_ipkToken
- var _11_n int32 // sqlite3.c:101468:9
- _ = _11_n
- _db = (*Xsqlite3)(_pParse.X0)
- _v = (*TVdbe)(_pParse.X2)
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X4) != 0 {
- goto _0
- }
-
- _i = i32(0)
-_1:
- if _i >= int32(_pTab.X11) {
- goto _4
- }
-
- if (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X6) & i32(1)) == i32(0) {
- goto _5
+// pExpr is a CHECK constraint on a row that is being UPDATE-ed. The
+// only columns that are modified by the UPDATE are those for which
+// aiChng[i]>=0, and also the ROWID is modified if chngRowid is true.
+//
+// Return true if CHECK constraint pExpr does not use any of the
+// changing columns (or the rowid if it is changing). In other words,
+// return true if this CHECK constraint can be skipped when validating
+// the new row in the UPDATE statement.
+func _checkConstraintUnchanged(tls *crt.TLS, _pExpr *XExpr, _aiChng *int32, _chngRowid int32) (r0 int32) {
+ var _w XWalker
+ crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */))) = uint8(i32(0))
+ *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _checkConstraintExprNode
+ *(**int32)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))) = _aiChng
+ _sqlite3WalkExpr(tls, &_w, _pExpr)
+ if _chngRowid == 0 {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */)))
+ *p = uint8(int32(*p) & i32(-3))
+ sink2 = *p
+ }
}
+ return bool2int((_w.X5) == 0)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))))) + uintptr(12 /* X3 */))) = uint8(i32(2))
-_5:
- _i += 1
- goto _1
-
-_4:
-_0:
- if (_pParse.X55) == 0 {
- goto _6
- }
- return
+ _ = _w
+ panic(0)
+}
-_6:
- if (_pParse.X41) == 0 {
- goto _7
+// This is the Walker callback from checkConstraintUnchanged(). Set
+// bit 0x01 of pWalker->eCode if
+// pWalker->eCode to 0 if this expression node references any of the
+// columns that are being modifed by an UPDATE statement.
+func _checkConstraintExprNode(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) {
+ if int32(_pExpr.X0) != i32(152) {
+ goto _0
}
-
func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101409), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(42900)))
+ if int32(_pExpr.X9) < i32(0) && int32(_pExpr.X9) != i32(-1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109937), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkConstraintExprNodeØ00__func__Ø000))), unsafe.Pointer(str(117469)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeChangeOpcode(tls, _v, uint32(_pParse.X41), uint8(i32(136)))
-_7:
- if int32(_pTab.X10) < i32(0) {
- goto _10
- }
-
- _sqlite3TokenInit(tls, &_5_ipkToken, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_pTab.X10))).X0)
- _5_pList = _sqlite3ExprListAppend(tls, _pParse, nil, _sqlite3ExprAlloc(tls, _db, i32(27), &_5_ipkToken, i32(0)))
- if _5_pList != nil {
- goto _11
+ if int32(_pExpr.X9) < i32(0) {
+ goto _4
}
- return
-
-_11:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_5_pList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))))) + uintptr(12 /* X3 */))) = _pParse.X53
- func() {
- if (*XTable)(_pParse.X63) != _pTab {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101424), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(117148)))
- crt.X__builtin_abort(tls)
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int32)(unsafe.Pointer((*t58)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))) + 4*uintptr(_pExpr.X9)))) >= i32(0) {
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */)))
+ *p = uint8(int32(*p) | i32(1))
+ sink2 = *p
}
- }()
- _sqlite3CreateIndex(tls, _pParse, nil, nil, nil, _5_pList, int32(_pTab.X14), nil, nil, i32(0), i32(0), uint8(i32(2)))
- if (_db.X17) == 0 {
- goto _14
}
- return
+ goto _6
+_4:
+ {
+ p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */)))
+ *p = uint8(int32(*p) | i32(2))
+ sink2 = *p
+ }
+_6:
+_0:
+ return i32(0)
+}
-_14:
- _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(i32(-1))
- goto _15
+var _checkConstraintExprNodeØ00__func__Ø000 [24]int8
-_10:
- _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
- if _v == nil {
- goto _16
+func init() {
+ crt.Xstrncpy(nil, &_checkConstraintExprNodeØ00__func__Ø000[0], str(117509), 24)
+}
+
+// Code an OP_Halt due to non-unique rowid.
+func _sqlite3RowidConstraint(tls *crt.TLS, _pParse *XParse, _onError int32, _pTab *XTable) {
+ var _rc int32
+ var _zMsg *int8
+ if int32(_pTab.X10) >= i32(0) {
+ _zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(8018), unsafe.Pointer(_pTab.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_pTab.X10))).X0))
+ _rc = i32(1555)
+ goto _1
}
+ _zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(117533), unsafe.Pointer(_pTab.X0))
+ _rc = i32(2579)
+_1:
+ _sqlite3HaltConstraint(tls, _pParse, _rc, _onError, _zMsg, int8(i32(-1)), uint8(i32(2)))
+}
- func() {
- if int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101438), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(51476)))
- crt.X__builtin_abort(tls)
+// Indicate that the statement currently under construction might write
+// more than one entry (example: deleting one row then inserting another,
+// inserting multiple rows in a table, or inserting a row and index entries.)
+// If an abort occurs after some of these writes have completed, then it will
+// be necessary to undo the completed writes.
+func _sqlite3MultiWrite(tls *crt.TLS, _pParse *XParse) {
+ var _pToplevel *XParse
+ _pToplevel = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
}
+ return _pParse
}()
- _sqlite3VdbeChangeOpcode(tls, _v, uint32(_pPk.X11), uint8(i32(13)))
-_16:
- _i = store1(&_j, i32(1))
-_19:
- if _i >= int32(_pPk.X13) {
- goto _22
- }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(20 /* X8 */))) = uint8(i32(1))
+}
- if _hasColumn(tls, _pPk.X1, _j, int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))) == 0 {
- goto _23
+// This routine generates VDBE code that causes the deletion of all
+// index entries associated with a single row of a single table, pTab
+//
+// Preconditions:
+//
+// 1. A read/write cursor "iDataCur" must be open on the canonical storage
+// btree for the table pTab. (This will be either the table itself
+// for rowid tables or to the primary key index for WITHOUT ROWID
+// tables.)
+//
+// 2. Read/write cursors for all indices of pTab must be open as
+// cursor number iIdxCur+i for the i-th index. (The pTab->pIndex
+// index is the 0-th index.)
+//
+// 3. The "iDataCur" cursor must be already be positioned on the row
+// that is to be deleted.
+func _sqlite3GenerateRowIndexDelete(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iDataCur int32, _iIdxCur int32, _aRegIdx *int32, _iIdxNoSeek int32) {
+ var _i, _r1, _iPartIdxLabel int32
+ var _v *TVdbe
+ var _pIdx, _pPrior, _pPk *XIndex
+ _r1 = i32(-1)
+ _pPrior = nil
+ _v = (*TVdbe)(_pParse.X2)
+ _pPk = func() *XIndex {
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ return nil
+ }
+ return _sqlite3PrimaryKeyIndex(tls, _pTab)
+ }()
+ *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_2:
+ if _pIdx == nil {
+ goto _5
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(52 /* X14 */))) -= 1
- goto _24
-
-_23:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(postInc1(&_j, int32(1))))) = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))
-_24:
- _i += 1
- goto _19
-
-_22:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(50 /* X13 */))) = uint16(_j)
-_15:
func() {
- if _pPk == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101456), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(43040)))
+ if (_iIdxCur+_i) == _iDataCur && _pPk != _pIdx {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(105425), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateRowIndexDeleteØ00__func__Ø000))), unsafe.Pointer(str(117542)))
crt.X__builtin_abort(tls)
}
}()
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk))+uintptr(55 /* X16 */))), int8(i32(1)), 32, 5)
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X4) != 0 {
- goto _27
- }
-
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk))+uintptr(55 /* X16 */))), int8(i32(1)), 8, 3)
-_27:
- _nPk = int32(_pPk.X13)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(44 /* X11 */))) = _pTab.X7
- _pIdx = (*XIndex)(_pTab.X2)
-_28:
- if _pIdx == nil {
- goto _31
+ if (_aRegIdx != nil) && ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i)))) == i32(0)) {
+ goto _3
}
-
- if int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2) {
- goto _32
+ if _pIdx == _pPk {
+ goto _3
}
-
- goto _29
-
-_32:
- _i = store1(&_11_n, i32(0))
-_33:
- if _i >= _nPk {
- goto _36
+ if (_iIdxCur + _i) == _iIdxNoSeek {
+ goto _3
}
+ _r1 = _sqlite3GenerateIndexKey(tls, _pParse, _pIdx, _iDataCur, i32(0), i32(1), &_iPartIdxLabel, _pPrior, _r1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(129), _iIdxCur+_i, _r1, int32(func() uint16 {
+ if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ return (_pIdx.X13)
+ }
+ return (_pIdx.X14)
+ }()))
+ _sqlite3ResolvePartIdxLabel(tls, _pParse, _iPartIdxLabel)
+ _pPrior = _pIdx
+_3:
+ *func() **XIndex { _i += 1; return &_pIdx }() = (*XIndex)(_pIdx.X5)
+ goto _2
+_5:
+}
- if _hasColumn(tls, _pIdx.X1, int32(_pIdx.X13), int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))) != 0 {
- goto _37
+var _sqlite3GenerateRowIndexDeleteØ00__func__Ø000 [30]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3GenerateRowIndexDeleteØ00__func__Ø000[0], str(117575), 30)
+}
+
+// This function is called when inserting, deleting or updating a row of
+// table pTab to generate VDBE code to perform foreign key constraint
+// processing for the operation.
+//
+// For a DELETE operation, parameter regOld is passed the index of the
+// first register in an array of (pTab->nCol+1) registers containing the
+// rowid of the row being deleted, followed by each of the column values
+// of the row being deleted, from left to right. Parameter regNew is passed
+// zero in this case.
+//
+// For an INSERT operation, regOld is passed zero and regNew is passed the
+// first register of an array of (pTab->nCol+1) registers containing the new
+// row data.
+//
+// For an UPDATE operation, this function is called twice. Once before
+// the original record is deleted from the table using the calling convention
+// described for DELETE. Then again after the original record is deleted
+// but before the new record is inserted using the INSERT convention.
+func _sqlite3FkCheck(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _regOld int32, _regNew int32, _aChange *int32, _bChngRowid int32) {
+ var _iDb, _isIgnoreErrors, _1_iCol, _1_i, _1_bIgnore, _6_iJump, _7_iReg, _12_rcauth, _21_eAction int32
+ var _1_aiFree, _1_aiCol, _15_aiCol *int32
+ var _zDb, _12_zCol *int8
+ var _db *Xsqlite3
+ var _1_pTo *XTable
+ var _6_v *TVdbe
+ var _15_pSrc *XSrcList
+ var _19_pItem *TSrcList_item
+ var _1_pIdx, _15_pIdx *XIndex
+ var _pFKey *XFKey
+ _db = (*Xsqlite3)(_pParse.X0)
+ _isIgnoreErrors = int32(_pParse.X47)
+ func() {
+ if (_regOld == i32(0)) == (_regNew == i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108281), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(117605)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((_db.X6) & i32(524288)) == i32(0) {
+ return
}
-
- _11_n += 1
-_37:
- _i += 1
- goto _33
-
-_36:
- if _11_n != i32(0) {
- goto _38
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
+ _zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ _pFKey = (*XFKey)(_pTab.X4)
+_3:
+ if _pFKey == nil {
+ goto _6
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(52 /* X14 */))) = _pIdx.X13
- goto _29
-
-_38:
- if _resizeIndexObject(tls, _db, _pIdx, int32(_pIdx.X13)+_11_n) == 0 {
- goto _39
+ _1_pIdx = nil
+ _1_aiFree = nil
+ _1_bIgnore = i32(0)
+ if ((_aChange != nil) && (Xsqlite3_stricmp(tls, _pTab.X0, _pFKey.X2) != i32(0))) && (_fkChildIsModified(tls, _pTab, _pFKey, _aChange, _bChngRowid) == i32(0)) {
+ goto _4
}
- return
-
-_39:
- *func() *int32 { _i = i32(0); return &_j }() = int32(_pIdx.X13)
-_40:
- if _i >= _nPk {
- goto _43
+ if (_pParse.X47) != 0 {
+ _1_pTo = _sqlite3FindTable(tls, _db, _pFKey.X2, _zDb)
+ goto _11
}
-
- if _hasColumn(tls, _pIdx.X1, int32(_pIdx.X13), int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))) != 0 {
- goto _44
+ _1_pTo = _sqlite3LocateTable(tls, _pParse, uint32(i32(0)), _pFKey.X2, _zDb)
+_11:
+ if _1_pTo != nil && _sqlite3FkLocateIndex(tls, _pParse, _1_pTo, _pFKey, &_1_pIdx, &_1_aiFree) == 0 {
+ goto _13
}
-
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j))) = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_j))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_i)))
- _j += 1
-_44:
- _i += 1
- goto _40
-
-_43:
- func() {
- if int32(_pIdx.X14) < (int32(_pIdx.X13) + _11_n) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101486), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(117172)))
- crt.X__builtin_abort(tls)
- }
- }()
func() {
- if int32(_pIdx.X14) < _j {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101487), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(117204)))
+ if _isIgnoreErrors != i32(0) && (_regOld == i32(0) || _regNew != i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(117630)))
crt.X__builtin_abort(tls)
}
}()
-_29:
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _28
-
-_31:
- if _nPk >= int32(_pTab.X11) {
- goto _49
+ if (_isIgnoreErrors == 0) || ((_db.X17) != 0) {
+ return
}
-
- if _resizeIndexObject(tls, _db, _pPk, int32(_pTab.X11)) == 0 {
- goto _50
- }
- return
-
-_50:
- *func() *int32 { _i = i32(0); return &_j }() = _nPk
-_51:
- if _i >= int32(_pTab.X11) {
- goto _54
+ if _1_pTo != nil {
+ goto _20
}
-
- if _hasColumn(tls, _pPk.X1, _j, _i) != 0 {
- goto _55
+ _6_v = _sqlite3GetVdbe(tls, _pParse)
+ _6_iJump = (_sqlite3VdbeCurrentAddr(tls, _6_v) + (_pFKey.X5)) + i32(1)
+ _1_i = i32(0)
+_21:
+ if _1_i >= (_pFKey.X5) {
+ goto _24
}
-
+ _7_iReg = (((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_1_i))).X0) + _regOld) + i32(1)
+ _sqlite3VdbeAddOp2(tls, _6_v, i32(75), _7_iReg, _6_iJump)
+ _1_i += 1
+ goto _21
+_24:
+ _sqlite3VdbeAddOp2(tls, _6_v, i32(147), int32(_pFKey.X6), i32(-1))
+_20:
+ goto _4
+_13:
func() {
- if _j >= int32(_pPk.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101496), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(117224)))
+ if (_pFKey.X5) != i32(1) && (_1_aiFree == nil || _1_pIdx == nil) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(117676)))
crt.X__builtin_abort(tls)
}
}()
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_j))) = int16(_i)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_j))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
- _j += 1
-_55:
- _i += 1
- goto _51
-
-_54:
+ if _1_aiFree != nil {
+ _1_aiCol = _1_aiFree
+ goto _30
+ }
+ _1_iCol = (*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X0
+ _1_aiCol = &_1_iCol
+_30:
+ _1_i = i32(0)
+_31:
+ if _1_i >= (_pFKey.X5) {
+ goto _34
+ }
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aiCol)) + 4*uintptr(_1_i)))) == int32(_pTab.X10) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aiCol)) + 4*uintptr(_1_i))) = i32(-1)
+ }
func() {
- if int32(_pPk.X14) != _j {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101502), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(117240)))
+ if _1_pIdx != nil && int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X1)) + 2*uintptr(_1_i)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108349), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(117711)))
crt.X__builtin_abort(tls)
}
}()
+ if (_db.X59) != nil {
+ _12_zCol = (*XColumn)(unsafe.Pointer(uintptr(_1_pTo.X1) + 16*uintptr(func() int16 {
+ if _1_pIdx != nil {
+ return (*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X1)) + 2*uintptr(_1_i))))
+ }
+ return (_1_pTo.X10)
+ }()))).X0
+ _12_rcauth = _sqlite3AuthReadCol(tls, _pParse, _1_pTo.X0, _12_zCol, _iDb)
+ _1_bIgnore = bool2int(_12_rcauth == i32(2))
+ }
+ _1_i += 1
+ goto _31
+_34:
+ _sqlite3TableLock(tls, _pParse, _iDb, _1_pTo.X7, uint8(i32(0)), _1_pTo.X0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) += 1
+ if _regOld != i32(0) {
+ _fkLookupParent(tls, _pParse, _iDb, _1_pTo, _1_pIdx, _pFKey, _1_aiCol, _regOld, i32(-1), _1_bIgnore)
+ }
+ if (_regNew != i32(0)) && (_isSetNullAction(tls, _pParse, _pFKey) == 0) {
+ _fkLookupParent(tls, _pParse, _iDb, _1_pTo, _1_pIdx, _pFKey, _1_aiCol, _regNew, i32(1), _1_bIgnore)
+ }
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_aiFree))
+_4:
+ _pFKey = (*XFKey)(_pFKey.X1)
+ goto _3
+_6:
+ _pFKey = _sqlite3FkReferences(tls, _pTab)
+_45:
+ if _pFKey == nil {
+ goto _48
+ }
+ _15_pIdx = nil
+ _15_aiCol = nil
+ if (_aChange != nil) && (_fkParentIsModified(tls, _pTab, _pFKey, _aChange, _bChngRowid) == i32(0)) {
+ goto _46
+ }
+ if ((((_pFKey.X6) == 0) && (((_db.X6) & i32(33554432)) == 0)) && ((*XParse)(_pParse.X39) == nil)) && ((_pParse.X8) == 0) {
+ func() {
+ if _regOld != i32(0) || _regNew == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(117743)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _46
+ }
+ if _sqlite3FkLocateIndex(tls, _pParse, _pTab, _pFKey, &_15_pIdx, &_15_aiCol) == 0 {
+ goto _58
+ }
+ if (_isIgnoreErrors == 0) || ((_db.X17) != 0) {
+ return
+ }
+ goto _46
+_58:
func() {
- if int32(_pTab.X11) != _j {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101503), unsafe.Pointer((*int8)(unsafe.Pointer(&_convertToWithoutRowidTableØ00__func__Ø000))), unsafe.Pointer(str(117256)))
+ if _15_aiCol == nil && (_pFKey.X5) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108414), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(117766)))
crt.X__builtin_abort(tls)
}
}()
- goto _62
-
-_49:
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk)) + uintptr(52 /* X14 */))) = uint16(_pTab.X11)
-_62:
-}
-
-var _convertToWithoutRowidTableØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_convertToWithoutRowidTableØ00__func__Ø000[0], str(117272), 27)
+ _15_pSrc = _sqlite3SrcListAppend(tls, _db, nil, nil, nil)
+ if _15_pSrc == nil {
+ goto _64
+ }
+ _19_pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pSrc)) + uintptr(8 /* X2 */)))))
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(16 /* X4 */))))) = (*XTable)(_pFKey.X0)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(8 /* X2 */))) = (*XTable)(_pFKey.X0).X0
+ *(*uint32)(unsafe.Pointer(uintptr(_19_pItem.X4) + uintptr(32 /* X8 */))) += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(40 /* X11 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ if _regNew != i32(0) {
+ _fkScanChildren(tls, _pParse, _15_pSrc, _pTab, _15_pIdx, _pFKey, _15_aiCol, _regNew, i32(-1))
+ }
+ if _regOld == i32(0) {
+ goto _66
+ }
+ _21_eAction = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(bool2int(_aChange != nil)))))
+ _fkScanChildren(tls, _pParse, _15_pSrc, _pTab, _15_pIdx, _pFKey, _15_aiCol, _regOld, i32(1))
+ if (((_pFKey.X6) == 0) && (_21_eAction != i32(9))) && (_21_eAction != i32(7)) {
+ _sqlite3MayAbort(tls, _pParse)
+ }
+_66:
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(8 /* X2 */))) = nil
+ _sqlite3SrcListDelete(tls, _db, _15_pSrc)
+_64:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_15_aiCol))
+_46:
+ _pFKey = (*XFKey)(_pFKey.X3)
+ goto _45
+_48:
+ _ = _1_iCol
}
-func _sqlite3CreateIndex(tls *crt.TLS, _pParse *XParse, _pName1 *XToken, _pName2 *XToken, _pTblName *XSrcList, _pList *XExprList, _onError int32, _pStart *XToken, _pPIWhere *XExpr, _sortOrder int32, _ifNotExist int32, _idxType uint8) { // sqlite3.c:102589:1
- var _pTab *XTable // sqlite3.c:102602:9
- _ = _pTab
- var _pIndex *XIndex // sqlite3.c:102603:9
- _ = _pIndex
- var _zName *int8 // sqlite3.c:102604:8
- _ = _zName
- var _nName int32 // sqlite3.c:102605:7
- _ = _nName
- var _i int32 // sqlite3.c:102606:7
- _ = _i
- var _j int32 // sqlite3.c:102606:10
- _ = _j
- var _sFix XDbFixer // sqlite3.c:102607:11
- _ = _sFix
- var _sortOrderMask int32 // sqlite3.c:102608:7
- _ = _sortOrderMask
- var _db *Xsqlite3 // sqlite3.c:102609:11
- _ = _db
- var _pDb *XDb // sqlite3.c:102610:6
- _ = _pDb
- var _iDb int32 // sqlite3.c:102611:7
- _ = _iDb
- var _pName *XToken // sqlite3.c:102612:9
- _ = _pName
- var _pListItem *TExprList_item // sqlite3.c:102613:24
- _ = _pListItem
- var _nExtra int32 // sqlite3.c:102614:7
- _ = _nExtra
- var _nExtraCol int32 // sqlite3.c:102615:7
- _ = _nExtraCol
- var _zExtra *int8 // sqlite3.c:102616:8
- _ = _zExtra
- var _pPk *XIndex // sqlite3.c:102617:9
- _ = _pPk
- var _20_n int32 // sqlite3.c:102741:9
- _ = _20_n
- var _20_pLoop *XIndex // sqlite3.c:102742:11
- _ = _20_pLoop
- var _23_zDb *int8 // sqlite3.c:102761:16
- _ = _23_zDb
- var _26_prevCol XToken // sqlite3.c:102778:11
- _ = _26_prevCol
- var _28_pExpr *XExpr // sqlite3.c:102793:10
- _ = _28_pExpr
- var _34_pCExpr *XExpr // sqlite3.c:102846:10
- _ = _34_pCExpr
- var _34_requestedSortOrder int32 // sqlite3.c:102847:9
- _ = _34_requestedSortOrder
- var _34_zColl *int8 // sqlite3.c:102848:16
- _ = _34_zColl
- var _37_pCopy *XExprList // sqlite3.c:102861:18
- _ = _37_pCopy
- var _42_nColl int32 // sqlite3.c:102883:11
- _ = _42_nColl
- var _46_x int32 // sqlite3.c:102909:11
- _ = _46_x
- var _52_pIdx *XIndex // sqlite3.c:102964:11
- _ = _52_pIdx
- var _53_k int32 // sqlite3.c:102966:11
- _ = _53_k
- var _54_z1 *int8 // sqlite3.c:102973:20
- _ = _54_z1
- var _54_z2 *int8 // sqlite3.c:102974:20
- _ = _54_z2
- var _59_p *XIndex // sqlite3.c:103009:11
- _ = _59_p
- var _62_v *TVdbe // sqlite3.c:103039:10
- _ = _62_v
- var _62_zStmt *int8 // sqlite3.c:103040:10
- _ = _62_zStmt
- var _62_iMem int32 // sqlite3.c:103041:9
- _ = _62_iMem
- var _63_n int32 // sqlite3.c:103061:11
- _ = _63_n
- var _68_pOther *XIndex // sqlite3.c:103110:13
- _ = _68_pOther
- _pTab = nil
- _pIndex = nil
- _zName = nil
- _db = (*Xsqlite3)(_pParse.X0)
- _pName = nil
- _nExtra = i32(0)
- _zExtra = nil
- _pPk = nil
- if (_db.X17) == 0 && (_pParse.X16) <= i32(0) {
- goto _1
+var _sqlite3FkCheckØ00__func__Ø000 [15]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3FkCheckØ00__func__Ø000[0], str(117790), 15)
+}
+
+// This function is called when a row is inserted into or deleted from the
+// child table of foreign key constraint pFKey. If an SQL UPDATE is executed
+// on the child table of pFKey, this function is invoked twice for each row
+// affected - once to "delete" the old row, and then again to "insert" the
+// new row.
+//
+// Each time it is called, this function generates VDBE code to locate the
+// row in the parent table that corresponds to the row being inserted into
+// or deleted from the child table. If the parent row can be found, no
+// special action is taken. Otherwise, if the parent row can *not* be
+// found in the parent table:
+//
+// Operation | FK type | Action taken
+// --------------------------------------------------------------------------
+// INSERT immediate Increment the "immediate constraint counter".
+//
+// DELETE immediate Decrement the "immediate constraint counter".
+//
+// INSERT deferred Increment the "deferred constraint counter".
+//
+// DELETE deferred Decrement the "deferred constraint counter".
+//
+// These operations are identified in the comment at the top of this file
+// (fkey.c) as "I.1" and "D.1".
+func _fkLookupParent(tls *crt.TLS, _pParse *XParse, _iDb int32, _pTab *XTable, _pIdx *XIndex, _pFKey *XFKey, _aiCol *int32, _regData int32, _nIncr int32, _isIgnore int32) {
+ var _i, _iCur, _iOk, _2_iReg, _4_iMustBeInt, _4_regTemp, _6_nCol, _6_regTemp, _6_regRec, _8_iJump, _9_iChild, _9_iParent int32
+ var _v *TVdbe
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ _iCur = (_pParse.X17) - i32(1)
+ _iOk = _sqlite3VdbeMakeLabel(tls, _v)
+ if _nIncr < i32(0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(45), int32(_pFKey.X6), _iOk)
}
-
- goto _exit_create_index
-
+ _i = i32(0)
_1:
- if (_pParse.X55) == 0 || int32(_idxType) == i32(2) {
- goto _3
- }
-
- goto _exit_create_index
-
-_3:
- if i32(0) == _sqlite3ReadSchema(tls, _pParse) {
+ if _i >= (_pFKey.X5) {
goto _4
}
-
- goto _exit_create_index
-
+ _2_iReg = ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i)))) + _regData) + i32(1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), _2_iReg, _iOk)
+ _i += 1
+ goto _1
_4:
- if _pTblName == nil {
+ if _isIgnore != i32(0) {
goto _5
}
-
+ if _pIdx != nil {
+ goto _6
+ }
+ _4_regTemp = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp2(tls, _v, i32(65), ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(i32(0)))))+i32(1))+_regData, _4_regTemp)
+ _4_iMustBeInt = _sqlite3VdbeAddOp2(tls, _v, i32(17), _4_regTemp, i32(0))
+ if (_pTab == (*XTable)(_pFKey.X0)) && (_nIncr == i32(1)) {
+ _sqlite3VdbeAddOp3(tls, _v, i32(78), _regData, _iOk, _4_regTemp)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
+ }
+ _sqlite3OpenTable(tls, _pParse, _iCur, _iDb, _pTab, i32(106))
+ _sqlite3VdbeAddOp3(tls, _v, i32(32), _iCur, i32(0), _4_regTemp)
+ _sqlite3VdbeGoto(tls, _v, _iOk)
+ _sqlite3VdbeJumpHere(tls, _v, _sqlite3VdbeCurrentAddr(tls, _v)-i32(2))
+ _sqlite3VdbeJumpHere(tls, _v, _4_iMustBeInt)
+ _sqlite3ReleaseTempReg(tls, _pParse, _4_regTemp)
+ goto _9
+_6:
+ _6_nCol = _pFKey.X5
+ _6_regTemp = _sqlite3GetTempRange(tls, _pParse, _6_nCol)
+ _6_regRec = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp3(tls, _v, i32(106), _iCur, _pIdx.X11, _iDb)
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pIdx)
+ _i = i32(0)
+_10:
+ if _i >= _6_nCol {
+ goto _13
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(64), ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i))))+i32(1))+_regData, _6_regTemp+_i)
+ _i += 1
+ goto _10
+_13:
+ if _pTab != (*XTable)(_pFKey.X0) || _nIncr != i32(1) {
+ goto _15
+ }
+ _8_iJump = (_sqlite3VdbeCurrentAddr(tls, _v) + _6_nCol) + i32(1)
+ _i = i32(0)
+_16:
+ if _i >= _6_nCol {
+ goto _19
+ }
+ _9_iChild = ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i)))) + i32(1)) + _regData
+ _9_iParent = (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) + i32(1)) + _regData
func() {
- if _pName1 == nil || _pName2 == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117300)))
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107820), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkLookupParentØ00__func__Ø000))), unsafe.Pointer(str(116805)))
crt.X__builtin_abort(tls)
}
}()
- _iDb = _sqlite3TwoPartName(tls, _pParse, _pName1, _pName2, &_pName)
- if _iDb >= i32(0) {
- goto _9
- }
-
- goto _exit_create_index
-
-_9:
func() {
- if _pName == nil || (_pName.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102641), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117320)))
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i)))) == int32(_pTab.X10) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107821), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkLookupParentØ00__func__Ø000))), unsafe.Pointer(str(117805)))
crt.X__builtin_abort(tls)
}
}()
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
- goto _13
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) == int32(_pTab.X10) {
+ _9_iParent = _regData
}
-
- _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTblName)
- if (_pName2.X1) != uint32(i32(0)) || _pTab == nil || (*XSchema)(_pTab.X20) != (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4) {
- goto _16
+ _sqlite3VdbeAddOp3(tls, _v, i32(77), _9_iChild, _8_iJump, _9_iParent)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
+ _i += 1
+ goto _16
+_19:
+ _sqlite3VdbeGoto(tls, _v, _iOk)
+_15:
+ _sqlite3VdbeAddOp4(tls, _v, i32(101), _6_regTemp, _6_nCol, _6_regRec, _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pIdx), _6_nCol)
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iCur, _iOk, _6_regRec, i32(0))
+ _sqlite3ReleaseTempReg(tls, _pParse, _6_regRec)
+ _sqlite3ReleaseTempRange(tls, _pParse, _6_regTemp, _6_nCol)
+_9:
+_5:
+ if ((((_pFKey.X6) == 0) && ((((*Xsqlite3)(_pParse.X0).X6) & i32(33554432)) == 0)) && ((*XParse)(_pParse.X39) == nil)) && ((_pParse.X8) == 0) {
+ func() {
+ if _nIncr != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107849), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkLookupParentØ00__func__Ø000))), unsafe.Pointer(str(117827)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3HaltConstraint(tls, _pParse, i32(787), i32(2), nil, int8(i32(-2)), uint8(i32(4)))
+ goto _31
}
-
- _iDb = i32(1)
-_16:
-_13:
- _sqlite3FixInit(tls, &_sFix, _pParse, _iDb, str(117340), _pName)
- if _sqlite3FixSrcList(tls, &_sFix, _pTblName) == 0 {
- goto _17
+ if (_nIncr > i32(0)) && (int32(_pFKey.X6) == i32(0)) {
+ _sqlite3MayAbort(tls, _pParse)
}
+ _sqlite3VdbeAddOp2(tls, _v, i32(147), int32(_pFKey.X6), _nIncr)
+_31:
+ _sqlite3VdbeResolveLabel(tls, _v, _iOk)
+ _sqlite3VdbeAddOp1(tls, _v, i32(114), _iCur)
+}
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102660), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
-_17:
- _pTab = _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTblName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))
- func() {
- if int32(_db.X17) != i32(0) && _pTab != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102663), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117348)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _pTab != nil {
- goto _21
- }
+var _fkLookupParentØ00__func__Ø000 [15]int8
- goto _exit_create_index
+func init() {
+ crt.Xstrncpy(nil, &_fkLookupParentØ00__func__Ø000[0], str(117836), 15)
+}
-_21:
- if _iDb != i32(1) || (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4) == (*XSchema)(_pTab.X20) {
- goto _23
+// Return true if the parser passed as the first argument is being
+// used to code a trigger that is really a "SET NULL" action belonging
+// to trigger pFKey.
+func _isSetNullAction(tls *crt.TLS, _pParse *XParse, _pFKey *XFKey) (r0 int32) {
+ var _1_p *XTrigger
+ var _pTop *XParse
+ _pTop = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }()
+ if (*XTriggerPrg)(_pTop.X69) == nil {
+ goto _2
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(117380), unsafe.Pointer(_pTab.X0))
- goto _exit_create_index
-
-_23:
- if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- goto _24
+ _1_p = (*XTrigger)((*XTriggerPrg)(_pTop.X69).X0)
+ if ((_1_p == (*(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(i32(0)))))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(0))))) == i32(7))) || ((_1_p == (*(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(i32(1)))))) && (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(1))))) == i32(7))) {
+ return i32(1)
}
+_2:
+ return i32(0)
+}
- _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
-_24:
- goto _25
-
-_5:
+// This function is called to generate code executed when a row is deleted
+// from the parent table of foreign key constraint pFKey and, if pFKey is
+// deferred, when a row is inserted into the same table. When generating
+// code for an SQL UPDATE operation, this function may be called twice -
+// once to "delete" the old row and once to "insert" the new row.
+//
+// Parameter nIncr is passed -1 when inserting a row (as this may decrease
+// the number of FK violations in the db) or +1 when deleting one (as this
+// may increase the number of FK constraint problems).
+//
+// The code generated by this function scans through the rows in the child
+// table that correspond to the parent table row being deleted or inserted.
+// For each child row found, one of the following actions is taken:
+//
+// Operation | FK type | Action taken
+// --------------------------------------------------------------------------
+// DELETE immediate Increment the "immediate constraint counter".
+// Or, if the ON (UPDATE|DELETE) action is RESTRICT,
+// throw a "FOREIGN KEY constraint failed" exception.
+//
+// INSERT immediate Decrement the "immediate constraint counter".
+//
+// DELETE deferred Increment the "deferred constraint counter".
+// Or, if the ON (UPDATE|DELETE) action is RESTRICT,
+// throw a "FOREIGN KEY constraint failed" exception.
+//
+// INSERT deferred Decrement the "deferred constraint counter".
+//
+// These operations are identified in the comment at the top of this file
+// (fkey.c) as "I.2" and "D.2".
+func _fkScanChildren(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList, _pTab *XTable, _pIdx *XIndex, _pFKey *XFKey, _aiCol *int32, _regData int32, _nIncr int32) {
+ var _2_iCol, _6_iCol int16
+ var _i, _iFkIfZero int32
+ var _2_zCol *int8
+ var _db *Xsqlite3
+ var _v *TVdbe
+ var _pWhere, _2_pLeft, _2_pRight, _2_pEq, _3_pNe, _3_pLeft, _3_pRight, _5_pEq, _5_pAll *XExpr
+ var _5_pPk *XIndex
+ var _sNameContext XNameContext
+ var _pWInfo *XWhereInfo
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pWhere = nil
+ _iFkIfZero = i32(0)
+ _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if _pName != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102673), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117432)))
+ if _pIdx != nil && (*XTable)(_pIdx.X3) != _pTab {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107969), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(117851)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if _pStart != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117444)))
+ if _pIdx != nil && int32(_pIdx.X13) != (_pFKey.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107970), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(117881)))
crt.X__builtin_abort(tls)
}
}()
- _pTab = (*XTable)(_pParse.X63)
- if _pTab != nil {
- goto _30
- }
-
- goto _exit_create_index
-
-_30:
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
-_25:
- _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
func() {
- if _pTab == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102681), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(44760)))
+ if _pIdx == nil && (_pFKey.X5) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107971), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(117919)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (_pParse.X16) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102682), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117456)))
+ if _pIdx == nil && ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107972), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(117945)))
crt.X__builtin_abort(tls)
}
}()
- if Xsqlite3_strnicmp(tls, _pTab.X0, str(116692), i32(7)) != i32(0) || int32((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != i32(0) || Xsqlite3_strnicmp(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab.X0))+1*uintptr(i32(7)))), str(117472), i32(9)) == i32(0) {
- goto _37
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(117484), unsafe.Pointer(_pTab.X0))
- goto _exit_create_index
-
-_37:
- if (*XSelect)(_pTab.X3) == nil {
- goto _38
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(117512))
- goto _exit_create_index
-
-_38:
- if (_pTab.X16) == 0 {
- goto _39
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(117540))
- goto _exit_create_index
-
-_39:
- if _pName == nil {
- goto _40
+ if _nIncr < i32(0) {
+ _iFkIfZero = _sqlite3VdbeAddOp2(tls, _v, i32(45), int32(_pFKey.X6), i32(0))
}
-
- _zName = _sqlite3NameFromToken(tls, _db, _pName)
- if _zName != nil {
- goto _41
+ _i = i32(0)
+_13:
+ if _i >= (_pFKey.X5) {
+ goto _16
}
-
- goto _exit_create_index
-
-_41:
+ _2_iCol = int16(func() int32 {
+ if _pIdx != nil {
+ return int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i))))
+ }
+ return i32(-1)
+ }())
+ _2_pLeft = _exprTableRegister(tls, _pParse, _pTab, _regData, _2_iCol)
+ _2_iCol = int16(func() int32 {
+ if _aiCol != nil {
+ return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i))))
+ }
+ return ((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X0)
+ }())
func() {
- if (_pName.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102721), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117576)))
+ if int32(_2_iCol) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(107997), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(99182)))
crt.X__builtin_abort(tls)
}
}()
- if i32(0) == _sqlite3CheckObjectName(tls, _pParse, _zName) {
- goto _44
- }
-
- goto _exit_create_index
-
-_44:
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
- goto _45
- }
-
- if _sqlite3FindTable(tls, _db, _zName, nil) == nil {
- goto _46
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(117588), unsafe.Pointer(_zName))
- goto _exit_create_index
-
-_46:
-_45:
- if _sqlite3FindIndex(tls, _db, _zName, _pDb.X0) == nil {
- goto _47
+ _2_zCol = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pFKey.X0).X1) + 16*uintptr(_2_iCol))).X0
+ _2_pRight = _sqlite3Expr(tls, _db, i32(27), _2_zCol)
+ _2_pEq = _sqlite3PExpr(tls, _pParse, i32(78), _2_pLeft, _2_pRight)
+ _pWhere = _sqlite3ExprAnd(tls, _db, _pWhere, _2_pEq)
+ _i += 1
+ goto _13
+_16:
+ if _pTab != (*XTable)(_pFKey.X0) || _nIncr <= i32(0) {
+ goto _24
}
-
- if _ifNotExist != 0 {
- goto _48
+ if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
+ _3_pLeft = _exprTableRegister(tls, _pParse, _pTab, _regData, int16(i32(-1)))
+ _3_pRight = _exprTableColumn(tls, _db, _pTab, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X11, int16(i32(-1)))
+ _3_pNe = _sqlite3PExpr(tls, _pParse, i32(77), _3_pLeft, _3_pRight)
+ goto _26
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(117624), unsafe.Pointer(_zName))
- goto _49
-
-_48:
+ _5_pAll = nil
+ _5_pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
func() {
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102735), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117648)))
+ if _pIdx == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108026), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(42069)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
-_49:
- goto _exit_create_index
-
-_47:
- goto _52
-
-_40:
- *func() *int32 { _20_pLoop = (*XIndex)(_pTab.X2); return &_20_n }() = i32(1)
-_53:
- if _20_pLoop == nil {
- goto _56
- }
-
- *func() *int32 { _20_pLoop = (*XIndex)(_20_pLoop.X5); return &_20_n }() += 1
- goto _53
-
-_56:
- _zName = _sqlite3MPrintf(tls, _db, str(117664), unsafe.Pointer(_pTab.X0), _20_n)
- if _zName != nil {
- goto _57
- }
-
- goto _exit_create_index
-
-_57:
- if (_pParse.X55) == 0 {
- goto _58
+ _i = i32(0)
+_29:
+ if _i >= int32(_5_pPk.X13) {
+ goto _32
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zName)) + 1*uintptr(i32(7)))) += 1
-_58:
-_52:
- _23_zDb = _pDb.X0
- if _sqlite3AuthCheck(tls, _pParse, i32(18), func() *int8 {
- if i32(1) != 0 && (_iDb == i32(1)) {
- return str(51596)
+ _6_iCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))
+ func() {
+ if int32(_6_iCol) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108029), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(99182)))
+ crt.X__builtin_abort(tls)
}
- return str(51616)
- }(), nil, _23_zDb) == 0 {
- goto _62
- }
-
- goto _exit_create_index
-
-_62:
- _i = i32(1)
- if i32(1) == 0 || _iDb != i32(1) {
- goto _64
- }
-
- _i = i32(3)
-_64:
- if _sqlite3AuthCheck(tls, _pParse, _i, _zName, _pTab.X0, _23_zDb) == 0 {
- goto _65
- }
-
- goto _exit_create_index
-
-_65:
- if _pList != nil {
- goto _66
+ }()
+ _3_pLeft = _exprTableRegister(tls, _pParse, _pTab, _regData, _6_iCol)
+ _3_pRight = _exprTableColumn(tls, _db, _pTab, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X11, _6_iCol)
+ _5_pEq = _sqlite3PExpr(tls, _pParse, i32(78), _3_pLeft, _3_pRight)
+ _5_pAll = _sqlite3ExprAnd(tls, _db, _5_pAll, _5_pEq)
+ _i += 1
+ goto _29
+_32:
+ _3_pNe = _sqlite3PExpr(tls, _pParse, i32(19), _5_pAll, nil)
+_26:
+ _pWhere = _sqlite3ExprAnd(tls, _db, _pWhere, _3_pNe)
+_24:
+ crt.Xmemset(tls, (unsafe.Pointer)(&_sNameContext), i32(0), u32(32))
+ *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNameContext)) + uintptr(4 /* X1 */))))) = _pSrc
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNameContext)) + uintptr(0 /* X0 */))))) = _pParse
+ _sqlite3ResolveExprNames(tls, &_sNameContext, _pWhere)
+ _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pSrc, _pWhere, nil, nil, uint16(i32(0)), i32(0))
+ _sqlite3VdbeAddOp2(tls, _v, i32(147), int32(_pFKey.X6), _nIncr)
+ if _pWInfo != nil {
+ _sqlite3WhereEnd(tls, _pWInfo)
}
-
- _sqlite3TokenInit(tls, &_26_prevCol, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(int32(_pTab.X11)-i32(1)))).X0)
- _pList = _sqlite3ExprListAppend(tls, _pParse, nil, _sqlite3ExprAlloc(tls, _db, i32(27), &_26_prevCol, i32(0)))
- if _pList != nil {
- goto _67
+ _sqlite3ExprDelete(tls, _db, _pWhere)
+ if _iFkIfZero != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _iFkIfZero)
}
+ _ = _sNameContext
+}
- goto _exit_create_index
+var _fkScanChildrenØ00__func__Ø000 [15]int8
-_67:
- func() {
- if (_pList.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102783), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117688)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprListSetSortOrder(tls, _pList, _sortOrder)
- goto _70
+func init() {
+ crt.Xstrncpy(nil, &_fkScanChildrenØ00__func__Ø000[0], str(117971), 15)
+}
-_66:
- _sqlite3ExprListCheckLength(tls, _pParse, _pList, str(117340))
-_70:
- _i = i32(0)
-_71:
- if _i >= (_pList.X0) {
- goto _74
+// Return an Expr object that refers to a memory register corresponding
+// to column iCol of table pTab.
+//
+// regBase is the first of an array of register that contains the data
+// for pTab. regBase itself holds the rowid. regBase+1 holds the first
+// column. regBase+2 holds the second column, and so forth.
+func _exprTableRegister(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _regBase int32, _iCol int16) (r0 *XExpr) {
+ var _zColl *int8
+ var _db *Xsqlite3
+ var _pExpr *XExpr
+ var _pCol *XColumn
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pExpr = _sqlite3Expr(tls, _db, i32(157), nil)
+ if _pExpr == nil {
+ goto _0
}
-
- _28_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- func() {
- if _28_pExpr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102794), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(44808)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_28_pExpr.X0) != i32(94) {
- goto _77
+ if int32(_iCol) < i32(0) || int32(_iCol) == int32(_pTab.X10) {
+ goto _2
}
-
- {
- p := &_nExtra
- *p = (*p) + (i32(1) + _sqlite3Strlen30(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_28_pExpr)) + uintptr(8 /* X3 */)))))))
- sink1 = *p
+ _pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = (_regBase + int32(_iCol)) + i32(1)
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = _pCol.X4
+ _zColl = _pCol.X2
+ if _zColl == nil {
+ _zColl = (*XCollSeq)(_db.X2).X0
}
-_77:
- _i += 1
- goto _71
+ _pExpr = _sqlite3ExprAddCollateString(tls, _pParse, _pExpr, _zColl)
+ goto _4
+_2:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _regBase
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = int8(i32(68))
+_4:
+_0:
+ return _pExpr
+}
-_74:
- _nName = _sqlite3Strlen30(tls, _zName)
- _nExtraCol = func() int32 {
- if _pPk != nil {
- return int32(_pPk.X13)
- }
- return i32(1)
- }()
- _pIndex = _sqlite3AllocateIndexObject(tls, _db, int16((_pList.X0)+_nExtraCol), (_nName+_nExtra)+i32(1), &_zExtra)
- if (_db.X17) == 0 {
- goto _80
+// Return an Expr object that refers to column iCol of table pTab which
+// has cursor iCur.
+func _exprTableColumn(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable, _iCursor int32, _iCol int16) (r0 *XExpr) {
+ var _pExpr *XExpr
+ _pExpr = _sqlite3Expr(tls, _db, i32(152), nil)
+ if _pExpr != nil {
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = _pTab
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _iCursor
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = _iCol
}
+ return _pExpr
+}
- goto _exit_create_index
-
-_80:
+// This routine generates code to finish the INSERT or UPDATE operation
+// that was started by a prior call to sqlite3GenerateConstraintChecks.
+// A consecutive range of registers starting at regNewData contains the
+// rowid and the content to be inserted.
+//
+// The arguments to this routine should be the same as the first six
+// arguments to sqlite3GenerateConstraintChecks.
+func _sqlite3CompleteInsertion(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iDataCur int32, _iIdxCur int32, _regNewData int32, _aRegIdx *int32, _update_flags int32, _appendBias int32, _useSeekResult int32) {
+ var _regData, _regRec, _i int32
+ var _pik_flags, _bAffinityDone uint8
+ var _v *TVdbe
+ var _pIdx *XIndex
+ _bAffinityDone = u8(0)
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pIndex.X2))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102810), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117704)))
+ if _update_flags != i32(0) && _update_flags != i32(4) && _update_flags != i32(6) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110559), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(117986)))
crt.X__builtin_abort(tls)
}
}()
+ _v = _sqlite3GetVdbe(tls, _pParse)
func() {
- if (int32((uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pIndex.X8))))-uintptr(unsafe.Pointer(nil)))/1) & i32(7)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102811), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117748)))
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110565), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(42064)))
crt.X__builtin_abort(tls)
}
}()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(0 /* X0 */))) = _zExtra
- {
- p := &_zExtra
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_nName+i32(1))))
- sink0 = *p
- }
- crt.Xmemcpy(tls, (unsafe.Pointer)(_pIndex.X0), (unsafe.Pointer)(_zName), uint32(_nName+i32(1)))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(12 /* X3 */))))) = _pTab
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(54 /* X15 */))) = uint8(_onError)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(bool2int(_onError != i32(0))), 8, 3)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(_idxType), 3, 0)
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(24 /* X6 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(50 /* X13 */))) = uint16(_pList.X0)
- if _pPIWhere == nil {
- goto _85
- }
-
- _sqlite3ResolveSelfReference(tls, _pParse, _pTab, i32(2), _pPIWhere, nil)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(36 /* X9 */))))) = _pPIWhere
- _pPIWhere = nil
-_85:
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102826), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ if (*XSelect)(_pTab.X3) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110566), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(102268)))
crt.X__builtin_abort(tls)
}
}()
- if int32((*XSchema)(_pDb.X4).X7) < i32(4) {
- goto _88
+ *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_8:
+ if _pIdx == nil {
+ goto _11
}
-
- _sortOrderMask = i32(-1)
- goto _89
-
-_88:
- _sortOrderMask = i32(0)
-_89:
- *func() **TExprList_item { _i = i32(0); return &_pListItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
-_90:
- if _i >= (_pList.X0) {
- goto _93
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i)))) == i32(0) {
+ goto _9
}
-
- _sqlite3StringToId(tls, (*XExpr)(_pListItem.X0))
- _sqlite3ResolveSelfReference(tls, _pParse, _pTab, i32(32), (*XExpr)(_pListItem.X0), nil)
- if (_pParse.X16) == 0 {
- goto _94
+ _bAffinityDone = uint8(i32(1))
+ if (*XExpr)(_pIdx.X9) != nil {
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))), _sqlite3VdbeCurrentAddr(tls, _v)+i32(2))
}
-
- goto _exit_create_index
-
-_94:
- _34_pCExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)(_pListItem.X0))
- if int32(_34_pCExpr.X0) == i32(152) {
- goto _95
+ _pik_flags = uint8(func() int32 {
+ if _useSeekResult != 0 {
+ return i32(16)
+ }
+ return i32(0)
+ }())
+ if (int32((uint32(_pIdx.X16)<>uint(i32(30))) == i32(2)) && (((_pTab.X9) & uint32(i32(32))) != uint32(i32(0))) {
+ func() {
+ if int32(_pParse.X6) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(118090)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ {
+ p := &_pik_flags
+ *p = uint8(int32(*p) | i32(1))
+ sink2 = *p
+ }
+ {
+ p := &_pik_flags
+ *p = uint8(int32(*p) | (_update_flags & i32(2)))
+ sink2 = *p
+ }
}
-
- if _pTab != (*XTable)(_pParse.X63) {
- goto _96
+ _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iIdxCur+_i, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))), (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))))+i32(1), int32(func() uint16 {
+ if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0 {
+ return (_pIdx.X13)
+ }
+ return (_pIdx.X14)
+ }()))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_pik_flags))
+_9:
+ *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_i }() += 1
+ goto _8
+_11:
+ if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ return
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(117788))
- goto _exit_create_index
-
-_96:
- if (*XExprList)(_pIndex.X10) != nil {
- goto _97
+ _regData = _regNewData + i32(1)
+ _regRec = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regData, int32(_pTab.X11), _regRec)
+ if _bAffinityDone == 0 {
+ _sqlite3TableAffinity(tls, _v, _pTab, i32(0))
+ _sqlite3ExprCacheAffinityChange(tls, _pParse, _regData, int32(_pTab.X11))
}
-
- _37_pCopy = _sqlite3ExprListDup(tls, _db, _pList, i32(0))
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(40 /* X10 */))))) = _37_pCopy
- if (_db.X17) != 0 {
- goto _98
+ if (_pParse.X6) != 0 {
+ _pik_flags = uint8(i32(0))
+ goto _25
}
-
- func() {
- if _37_pCopy == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102864), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117852)))
- crt.X__builtin_abort(tls)
+ _pik_flags = uint8(i32(1))
+ {
+ p := &_pik_flags
+ *p = uint8(int32(*p) | func() int32 {
+ if _update_flags != 0 {
+ return _update_flags
+ }
+ return i32(32)
+ }())
+ sink2 = *p
+ }
+_25:
+ if _appendBias != 0 {
+ {
+ p := &_pik_flags
+ *p = uint8(int32(*p) | i32(8))
+ sink2 = *p
}
- }()
- _pListItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_37_pCopy))+uintptr(8 /* X2 */))))) + 20*uintptr(_i)))
-_98:
-_97:
- _j = i32(-2)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(i32(-2))
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 8, 3)
- goto _101
-
-_95:
- _j = int32(_34_pCExpr.X9)
- func() {
- if _j > i32(32767) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102873), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117864)))
- crt.X__builtin_abort(tls)
+ }
+ if _useSeekResult != 0 {
+ {
+ p := &_pik_flags
+ *p = uint8(int32(*p) | i32(16))
+ sink2 = *p
}
- }()
- if _j >= i32(0) {
- goto _104
}
-
- _j = int32(_pTab.X10)
- goto _105
-
-_104:
- if int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X3) != i32(0) {
- goto _106
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), _iDataCur, _regRec, _regNewData)
+ if (_pParse.X6) == 0 {
+ _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_pTab), i32(-15))
}
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_pik_flags))
+}
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 8, 3)
-_106:
-_105:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(_j)
-_101:
- _34_zColl = nil
- if int32((*XExpr)(_pListItem.X0).X0) != i32(94) {
- goto _107
- }
+var _sqlite3CompleteInsertionØ00__func__Ø000 [25]int8
- _34_zColl = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_pListItem.X0) + uintptr(8 /* X3 */)))))
- _42_nColl = _sqlite3Strlen30(tls, _34_zColl) + i32(1)
- func() {
- if _nExtra < _42_nColl {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102886), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117876)))
- crt.X__builtin_abort(tls)
- }
- }()
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_34_zColl), uint32(_42_nColl))
- _34_zColl = _zExtra
- {
- p := &_zExtra
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_42_nColl)))
- sink0 = *p
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3CompleteInsertionØ00__func__Ø000[0], str(118108), 25)
+}
+
+// This function is called when deleting or updating a row to implement
+// any required CASCADE, SET NULL or SET DEFAULT actions.
+func _sqlite3FkActions(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pChanges *XExprList, _regOld int32, _aChange *int32, _bChngRowid int32) {
+ var _3_pAct *XTrigger
+ var _1_pFKey *XFKey
+ if (((*Xsqlite3)(_pParse.X0).X6) & i32(524288)) == 0 {
+ goto _0
}
- {
- p := &_nExtra
- *p = (*p) - _42_nColl
- sink1 = *p
+ _1_pFKey = _sqlite3FkReferences(tls, _pTab)
+_1:
+ if _1_pFKey == nil {
+ goto _4
}
- goto _110
-
-_107:
- if _j < i32(0) {
- goto _111
+ if _aChange != nil && _fkParentIsModified(tls, _pTab, _1_pFKey, _aChange, _bChngRowid) == 0 {
+ goto _6
}
-
- _34_zColl = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_j))).X2
-_111:
-_110:
- if _34_zColl != nil {
- goto _112
+ _3_pAct = _fkActionTrigger(tls, _pParse, _pTab, _1_pFKey, _pChanges)
+ if _3_pAct != nil {
+ _sqlite3CodeRowTriggerDirect(tls, _pParse, _3_pAct, _pTab, _regOld, i32(2), i32(0))
}
+_6:
+ _1_pFKey = (*XFKey)(_1_pFKey.X3)
+ goto _1
+_4:
+_0:
+}
- _34_zColl = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
-_112:
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 || _sqlite3LocateCollSeq(tls, _pParse, _34_zColl) != nil {
- goto _114
+// This function is called when an UPDATE or DELETE operation is being
+// compiled on table pTab, which is the parent table of foreign-key pFKey.
+// If the current operation is an UPDATE, then the pChanges parameter is
+// passed a pointer to the list of columns being modified. If it is a
+// DELETE, pChanges is passed a NULL pointer.
+//
+// It returns a pointer to a Trigger structure containing a trigger
+// equivalent to the ON UPDATE or ON DELETE action specified by pFKey.
+// If the action is "NO ACTION" or "RESTRICT", then a NULL pointer is
+// returned (these actions require no special handling by the triggers
+// sub-system, code for them is created by fkScanChildren()).
+//
+// For example, if pFKey is the foreign key and pTab is table "p" in
+// the following schema:
+//
+// CREATE TABLE p(pk PRIMARY KEY);
+// CREATE TABLE c(ck REFERENCES p ON DELETE CASCADE);
+//
+// then the returned trigger structure is equivalent to:
+//
+// CREATE TRIGGER ... DELETE ON p BEGIN
+// DELETE FROM c WHERE ck = old.pk;
+// END;
+//
+// The returned pointer is cached as part of the foreign key object. It
+// is eventually freed along with the rest of the foreign key object by
+// sqlite3FkDelete().
+func _fkActionTrigger(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pFKey *XFKey, _pChanges *XExprList) (r0 *XTrigger) {
+ var _action, _iAction, _2_nFrom, _2_i, _3_iFromCol int32
+ var _2_aiCol *int32
+ var _2_zFrom *int8
+ var _3_tOld, _3_tNew, _3_tFromCol, _3_tToCol, _11_tFrom XToken
+ var _db *Xsqlite3
+ var _pTrigger *XTrigger
+ var _2_pList *XExprList
+ var _2_pSelect *XSelect
+ var _2_pWhere, _2_pWhen, _3_pEq, _5_pNew, _7_pDflt, _11_pRaise *XExpr
+ var _2_pIdx *XIndex
+ var _2_pStep *XTriggerStep
+ _db = (*Xsqlite3)(_pParse.X0)
+ _iAction = bool2int(_pChanges != nil)
+ _action = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(_iAction))))
+ if (_action == i32(6)) && ((_db.X6)&i32(33554432)) != 0 {
+ return nil
}
-
- goto _exit_create_index
-
-_114:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_i))) = _34_zColl
- _34_requestedSortOrder = int32(_pListItem.X3) & _sortOrderMask
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X7)) + 1*uintptr(_i))) = uint8(_34_requestedSortOrder)
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pListItem }())) += uintptr(20)
- goto _90
-
-_93:
- if _pPk == nil {
- goto _115
+ _pTrigger = *(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(_iAction)))
+ if _action == i32(0) || _pTrigger != nil {
+ goto _3
}
-
- _j = i32(0)
-_116:
- if _j >= int32(_pPk.X13) {
- goto _119
+ _2_pIdx = nil
+ _2_aiCol = nil
+ _2_pStep = nil
+ _2_pWhere = nil
+ _2_pList = nil
+ _2_pSelect = nil
+ _2_pWhen = nil
+ if _sqlite3FkLocateIndex(tls, _pParse, _pTab, _pFKey, &_2_pIdx, &_2_aiCol) != 0 {
+ return nil
}
-
- _46_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_j))))
func() {
- if _46_x < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102910), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(114680)))
+ if _2_aiCol == nil && (_pFKey.X5) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108611), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(117766)))
crt.X__builtin_abort(tls)
}
}()
- if _hasColumn(tls, _pIndex.X1, int32(_pIndex.X13), _46_x) == 0 {
- goto _122
+ _2_i = i32(0)
+_8:
+ if _2_i >= (_pFKey.X5) {
+ goto _11
}
-
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(52 /* X14 */))) -= 1
- goto _123
-
-_122:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(_46_x)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_i))) = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_j)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X7)) + 1*uintptr(_i))) = *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X7)) + 1*uintptr(_j)))
- _i += 1
-_123:
- _j += 1
- goto _116
-
-_119:
- func() {
- if _i != int32(_pIndex.X14) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102920), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117892)))
- crt.X__builtin_abort(tls)
+ _3_tOld = XToken{}
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tOld)) + uintptr(0 /* X0 */))) = str(43177)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tOld)) + uintptr(4 /* X1 */))) = uint32(i32(3))
+ _3_tNew = XToken{}
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tNew)) + uintptr(0 /* X0 */))) = str(43173)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tNew)) + uintptr(4 /* X1 */))) = uint32(i32(3))
+ _3_iFromCol = func() int32 {
+ if _2_aiCol != nil {
+ return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aiCol)) + 4*uintptr(_2_i))))
}
+ return ((*t73)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
+ X0 int32
+ X1 *int8
+ })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X0)
}()
- goto _126
-
-_115:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_i))) = int16(i32(-1))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_i))) = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
-_126:
- _sqlite3DefaultRowEst(tls, _pIndex)
- if (*XTable)(_pParse.X63) != nil {
- goto _127
- }
-
- _estimateIndexWidth(tls, _pIndex)
-_127:
func() {
- if ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) && int32(_pTab.X10) >= i32(0) && int32(_sqlite3ColumnOfIndex(tls, _pIndex, _pTab.X10)) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117912)))
+ if _3_iFromCol < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108622), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(118133)))
crt.X__builtin_abort(tls)
}
}()
- if _pTblName == nil || int32(_pIndex.X14) < int32(_pTab.X11) {
- goto _133
- }
-
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(1)), 32, 5)
- _j = i32(0)
-_134:
- if _j >= int32(_pTab.X11) {
- goto _137
- }
-
- if _j != int32(_pTab.X10) {
- goto _138
- }
-
- goto _135
-
-_138:
- if int32(_sqlite3ColumnOfIndex(tls, _pIndex, int16(_j))) < i32(0) {
- goto _139
- }
-
- goto _135
-
-_139:
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex))+uintptr(55 /* X16 */))), int8(i32(0)), 32, 5)
- goto _137
-
-_135:
- _j += 1
- goto _134
-
-_137:
-_133:
- if _pTab != (*XTable)(_pParse.X63) {
- goto _140
- }
-
- _52_pIdx = (*XIndex)(_pTab.X2)
-_141:
- if _52_pIdx == nil {
- goto _144
- }
-
func() {
- if int32(_52_pIdx.X15) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102967), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117992)))
+ if _2_pIdx == nil && (int32(_pTab.X10) < i32(0) || int32(_pTab.X10) >= int32(_pTab.X11)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108623), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(118145)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if int32((uint32(_52_pIdx.X16)<>uint(i32(30))) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102968), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(118012)))
+ if _2_pIdx != nil && int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx.X1)) + 2*uintptr(_2_i)))) < i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108624), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(117711)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if int32(_pIndex.X15) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102969), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(118052)))
- crt.X__builtin_abort(tls)
+ _sqlite3TokenInit(tls, &_3_tToCol, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(func() int16 {
+ if _2_pIdx != nil {
+ return (*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx.X1)) + 2*uintptr(_2_i))))
}
- }()
- if int32(_52_pIdx.X13) == int32(_pIndex.X13) {
- goto _151
- }
-
- goto _142
-
-_151:
- _53_k = i32(0)
-_152:
- if _53_k >= int32(_52_pIdx.X13) {
- goto _155
+ return (_pTab.X10)
+ }()))).X0)
+ _sqlite3TokenInit(tls, &_3_tFromCol, (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pFKey.X0).X1)+16*uintptr(_3_iFromCol))).X0)
+ _3_pEq = _sqlite3PExpr(tls, _pParse, i32(78), _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tOld, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0))), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tFromCol, i32(0)))
+ _2_pWhere = _sqlite3ExprAnd(tls, _db, _2_pWhere, _3_pEq)
+ if _pChanges != nil {
+ _3_pEq = _sqlite3PExpr(tls, _pParse, i32(72), _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tOld, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0))), _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tNew, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0))))
+ _2_pWhen = _sqlite3ExprAnd(tls, _db, _2_pWhen, _3_pEq)
}
-
- func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx.X1)) + 2*uintptr(_53_k)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102975), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(118076)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx.X1)) + 2*uintptr(_53_k)))) == int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X1)) + 2*uintptr(_53_k)))) {
- goto _158
+ if _action == i32(6) || _action == i32(9) && _pChanges == nil {
+ goto _28
}
-
- goto _155
-
-_158:
- _54_z1 = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx.X8)) + 4*uintptr(_53_k)))
- _54_z2 = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex.X8)) + 4*uintptr(_53_k)))
- if _sqlite3StrICmp(tls, _54_z1, _54_z2) == 0 {
- goto _159
+ if _action == i32(9) {
+ _5_pNew = _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tNew, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0)))
+ goto _30
}
-
- goto _155
-
-_159:
- _53_k += 1
- goto _152
-
-_155:
- if _53_k != int32(_52_pIdx.X13) {
- goto _160
+ if _action != i32(8) {
+ goto _31
}
-
- if int32(_52_pIdx.X15) == int32(_pIndex.X15) {
- goto _161
+ _7_pDflt = (*XExpr)((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pFKey.X0).X1) + 16*uintptr(_3_iFromCol))).X1)
+ if _7_pDflt != nil {
+ _5_pNew = _sqlite3ExprDup(tls, _db, _7_pDflt, i32(0))
+ goto _33
}
-
- if int32(_52_pIdx.X15) == i32(10) || int32(_pIndex.X15) == i32(10) {
- goto _163
+ _5_pNew = _sqlite3ExprAlloc(tls, _db, i32(101), nil, i32(0))
+_33:
+ goto _34
+_31:
+ _5_pNew = _sqlite3ExprAlloc(tls, _db, i32(101), nil, i32(0))
+_34:
+_30:
+ _2_pList = _sqlite3ExprListAppend(tls, _pParse, _2_pList, _5_pNew)
+ _sqlite3ExprListSetName(tls, _pParse, _2_pList, &_3_tFromCol, i32(0))
+_28:
+ _2_i += 1
+ goto _8
+_11:
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_2_aiCol))
+ _2_zFrom = (*XTable)(_pFKey.X0).X0
+ _2_nFrom = _sqlite3Strlen30(tls, _2_zFrom)
+ if _action != i32(6) {
+ goto _35
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(118100), i32(0))
-_163:
- if int32(_52_pIdx.X15) != i32(10) {
- goto _164
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_11_tFrom)) + uintptr(0 /* X0 */))) = _2_zFrom
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_11_tFrom)) + uintptr(4 /* X1 */))) = uint32(_2_nFrom)
+ _11_pRaise = _sqlite3Expr(tls, _db, i32(56), str(58234))
+ if _11_pRaise != nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pRaise)) + uintptr(1 /* X1 */))) = int8(i32(2))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx)) + uintptr(54 /* X15 */))) = _pIndex.X15
-_164:
-_161:
- if int32(_idxType) != i32(2) {
- goto _165
+ _2_pSelect = _sqlite3SelectNew(tls, _pParse, _sqlite3ExprListAppend(tls, _pParse, nil, _11_pRaise), _sqlite3SrcListAppend(tls, _db, nil, &_11_tFrom, nil), _2_pWhere, nil, nil, nil, uint32(i32(0)), nil, nil)
+ _2_pWhere = nil
+_35:
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) += 1
+ _pTrigger = (*XTrigger)(_sqlite3DbMallocZero(tls, _db, uint64((u32(72)+uint32(_2_nFrom))+uint32(i32(1)))))
+ if _pTrigger == nil {
+ goto _37
}
-
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pIdx))+uintptr(55 /* X16 */))), int8(_idxType), 3, 0)
-_165:
- goto _exit_create_index
-
-_160:
-_142:
- _52_pIdx = (*XIndex)(_52_pIdx.X5)
- goto _141
-
-_144:
-_140:
- func() {
- if (_pParse.X16) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103007), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(117456)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X2) == 0 {
- goto _168
+ _2_pStep = store76((**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger))+uintptr(28 /* X8 */))))), (*XTriggerStep)(unsafe.Pointer((*XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger))+36*uintptr(i32(1)))))))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(12 /* X4 */))) = (*int8)(unsafe.Pointer((*XTriggerStep)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + 36*uintptr(i32(1))))))
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_2_pStep.X4), (unsafe.Pointer)(_2_zFrom), uint32(_2_nFrom))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(16 /* X5 */))))) = _sqlite3ExprDup(tls, _db, _2_pWhere, i32(1))
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(20 /* X6 */))))) = _sqlite3ExprListDup(tls, _db, _2_pList, i32(1))
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(8 /* X3 */))))) = _sqlite3SelectDup(tls, _db, _2_pSelect, i32(1))
+ if _2_pWhen != nil {
+ _2_pWhen = _sqlite3PExpr(tls, _pParse, i32(19), _2_pWhen, nil)
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(12 /* X4 */))))) = _sqlite3ExprDup(tls, _db, _2_pWhen, i32(1))
}
-
- func() {
- if (_pParse.X55) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103010), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(118144)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_pIndex.X6)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103011), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(118164)))
- crt.X__builtin_abort(tls)
- }
- }()
- _59_p = (*XIndex)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_pIndex.X6)+uintptr(24 /* X3 */))), _pIndex.X0, (unsafe.Pointer)(_pIndex)))
- if _59_p == nil {
- goto _173
+_37:
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) -= 1
+ _sqlite3ExprDelete(tls, _db, _2_pWhere)
+ _sqlite3ExprDelete(tls, _db, _2_pWhen)
+ _sqlite3ExprListDelete(tls, _db, _2_pList)
+ _sqlite3SelectDelete(tls, _db, _2_pSelect)
+ if int32(_db.X17) == i32(1) {
+ _fkTriggerDelete(tls, _db, _pTrigger)
+ return nil
}
-
func() {
- if _59_p != _pIndex {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103015), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateIndexØ00__func__Ø000))), unsafe.Pointer(str(118212)))
+ if _2_pStep == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(108735), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(118199)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3OomFault(tls, _db)
- goto _exit_create_index
-
-_173:
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
- *p = (*p) | i32(2)
- sink1 = *p
- }
- if _pTblName == nil {
- goto _176
+ switch _action {
+ case i32(6):
+ goto _43
+ case i32(9):
+ goto _44
+ default:
+ goto _45
}
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(44 /* X11 */))) = (*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(144 /* X33 */))).X0
-_176:
- goto _177
-
-_168:
- if ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) && _pTblName == nil {
- goto _179
+_43:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(0 /* X0 */))) = uint8(i32(119))
+ goto _46
+_44:
+ if _pChanges == nil {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(0 /* X0 */))) = uint8(i32(109))
+ goto _46
}
+_45:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(0 /* X0 */))) = uint8(i32(110))
+_46:
+ *(**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(4 /* X2 */))))) = _pTrigger
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(20 /* X6 */))))) = (*XSchema)(_pTab.X20)
+ *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(24 /* X7 */))))) = (*XSchema)(_pTab.X20)
+ *(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(_iAction))) = _pTrigger
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(8 /* X2 */))) = uint8(func() int32 {
+ if _pChanges != nil {
+ return i32(110)
+ }
+ return i32(109)
+ }())
+_3:
+ return _pTrigger
- _62_iMem = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _62_v = _sqlite3GetVdbe(tls, _pParse)
- if _62_v != nil {
- goto _180
- }
+ _ = _3_tOld
+ _ = _3_tNew
+ _ = _3_tFromCol
+ _ = _3_tToCol
+ _ = _11_tFrom
+ panic(0)
+}
- goto _exit_create_index
+var _fkActionTriggerØ00__func__Ø000 [16]int8
-_180:
- _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(44 /* X11 */))) = _sqlite3VdbeAddOp0(tls, _62_v, i32(164))
- _sqlite3VdbeAddOp2(tls, _62_v, i32(136), _iDb, _62_iMem)
- if _pStart == nil {
- goto _181
- }
+func init() {
+ crt.Xstrncpy(nil, &_fkActionTriggerØ00__func__Ø000[0], str(118208), 16)
+}
- _63_n = int32(uint32(int32((uintptr(unsafe.Pointer((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(400 /* X51 */))).X0))-uintptr(unsafe.Pointer(_pName.X0)))/1)) + ((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(400 /* X51 */))).X1))
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName.X0)) + 1*uintptr(_63_n-i32(1))))) != i32(59) {
- goto _182
+func _sqlite3AutoincrementEnd(tls *crt.TLS, _pParse *XParse) {
+ if (*TAggInfo_func)(_pParse.X38) != nil {
+ _autoIncrementEnd(tls, _pParse)
}
+}
- _63_n -= 1
-_182:
- _62_zStmt = _sqlite3MPrintf(tls, _db, str(118224), unsafe.Pointer(func() *int8 {
- if _onError == i32(0) {
- return str(196)
+// This routine generates the code needed to write autoincrement
+// maximum rowid values back into the sqlite_sequence register.
+// Every statement that might do an INSERT into an autoincrement
+// table (either directly or through triggers) needs to call this
+// routine just before the "exit" code.
+func _autoIncrementEnd(tls *crt.TLS, _pParse *XParse) {
+ var _1_iRec, _1_memId int32
+ var _db *Xsqlite3
+ var _1_pDb *XDb
+ var _v *TVdbe
+ var _1_aOp *XVdbeOp
+ var _p *TAggInfo_func
+ _v = (*TVdbe)(_pParse.X2)
+ _db = (*Xsqlite3)(_pParse.X0)
+ func() {
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109164), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoIncrementEndØ00__func__Ø000))), unsafe.Pointer(str(41861)))
+ crt.X__builtin_abort(tls)
}
- return str(118244)
- }()), _63_n, unsafe.Pointer(_pName.X0))
- goto _185
-
-_181:
- _62_zStmt = nil
-_185:
- _sqlite3NestedParse(tls, _pParse, str(118252), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(51616)), unsafe.Pointer(_pIndex.X0), unsafe.Pointer(_pTab.X0), _62_iMem, unsafe.Pointer(_62_zStmt))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_62_zStmt))
- if _pTblName == nil {
- goto _186
- }
-
- _sqlite3RefillIndex(tls, _pParse, _pIndex, _62_iMem)
- _sqlite3ChangeCookie(tls, _pParse, _iDb)
- _sqlite3VdbeAddParseSchemaOp(tls, _62_v, _iDb, _sqlite3MPrintf(tls, _db, str(118300), unsafe.Pointer(_pIndex.X0)))
- _sqlite3VdbeAddOp0(tls, _62_v, i32(153))
-_186:
- _sqlite3VdbeJumpHere(tls, _62_v, _pIndex.X11)
-_179:
-_177:
- if ((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) == 0 && _pTblName != nil {
- goto _188
+ }()
+ _p = (*TAggInfo_func)(_pParse.X38)
+_2:
+ if _p == nil {
+ goto _5
}
-
- if _onError == i32(5) && (*XIndex)(_pTab.X2) != nil && int32((*XIndex)(_pTab.X2).X15) != i32(5) {
- goto _191
+ _1_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_p.X2)))
+ _1_memId = _p.X3
+ _1_iRec = _sqlite3GetTempReg(tls, _pParse)
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_1_pDb.X4)) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109180), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoIncrementEndØ00__func__Ø000))), unsafe.Pointer(str(41863)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3OpenTable(tls, _pParse, i32(0), _p.X2, (*XTable)((*XSchema)(_1_pDb.X4).X6), i32(107))
+ _1_aOp = _sqlite3VdbeAddOpList(tls, _v, i32(5), (*XVdbeOpList)(unsafe.Pointer(&_autoIncrementEndØ00autoIncEndØ002)), _autoIncrementEndØ00iLnØ001)
+ if _1_aOp == nil {
+ goto _5
}
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(0)))))) + uintptr(4 /* X3 */))) = _1_memId + i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(1)))))) + uintptr(8 /* X4 */))) = _1_memId + i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(2)))))) + uintptr(4 /* X3 */))) = _1_memId - i32(1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(2)))))) + uintptr(12 /* X5 */))) = _1_iRec
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(3)))))) + uintptr(8 /* X4 */))) = _1_iRec
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(3)))))) + uintptr(12 /* X5 */))) = _1_memId + i32(1)
+ *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(3)))))) + uintptr(2 /* X2 */))) = uint16(i32(8))
+ _sqlite3ReleaseTempReg(tls, _pParse, _1_iRec)
+ _p = (*TAggInfo_func)(_p.X0)
+ goto _2
+_5:
+}
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(20 /* X5 */))))) = (*XIndex)(_pTab.X2)
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(8 /* X2 */))))) = _pIndex
- goto _192
-
-_191:
- _68_pOther = (*XIndex)(_pTab.X2)
-_193:
- if (*XIndex)(_68_pOther.X5) == nil || int32((*XIndex)(_68_pOther.X5).X15) == i32(5) {
- goto _194
- }
+var _autoIncrementEndØ00__func__Ø000 [17]int8
- _68_pOther = (*XIndex)(_68_pOther.X5)
- goto _193
+func init() {
+ crt.Xstrncpy(nil, &_autoIncrementEndØ00__func__Ø000[0], str(118224), 17)
+}
-_194:
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIndex)) + uintptr(20 /* X5 */))))) = (*XIndex)(_68_pOther.X5)
- *(**XIndex)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_68_pOther)) + uintptr(20 /* X5 */))))) = _pIndex
-_192:
- _pIndex = nil
-_188:
-_exit_create_index:
- if _pIndex == nil {
- goto _196
- }
+var _autoIncrementEndØ00autoIncEndØ002 [5]XVdbeOpList
- _freeIndex(tls, _db, _pIndex)
-_196:
- _sqlite3ExprDelete(tls, _db, _pPIWhere)
- _sqlite3ExprListDelete(tls, _db, _pList)
- _sqlite3SrcListDelete(tls, _db, _pTblName)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zName))
+func init() {
+ _autoIncrementEndØ00autoIncEndØ002 = [5]XVdbeOpList{XVdbeOpList{X0: u8(76), X1: i8(0), X2: i8(2), X3: i8(0)}, XVdbeOpList{X0: u8(117), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(101), X1: i8(0), X2: i8(2), X3: i8(0)}, XVdbeOpList{X0: u8(118), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(114), X1: i8(0), X2: i8(0), X3: i8(0)}}
}
-var _sqlite3CreateIndexØ00__func__Ø000 [19]int8 // -
+var _autoIncrementEndØ00iLnØ001 int32
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CreateIndexØ00__func__Ø000[0], str(118328), 19)
+// Pop an authorization context that was previously pushed
+// by sqlite3AuthContextPush
+func _sqlite3AuthContextPop(tls *crt.TLS, _pContext *XAuthContext) {
+ if (*XParse)(_pContext.X1) != nil {
+ *(**int8)(unsafe.Pointer(uintptr(_pContext.X1) + uintptr(452 /* X65 */))) = _pContext.X0
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pContext)) + uintptr(4 /* X1 */))))) = nil
+ }
}
-func _sqlite3SrcListLookup(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList) (r0 *XTable) { // sqlite3.c:104664:1
- var _pItem *TSrcList_item // sqlite3.c:104665:23
- _ = _pItem
- var _pTab *XTable // sqlite3.c:104666:9
- _ = _pTab
- _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc)) + uintptr(8 /* X2 */)))))
+// Convert the pStep->zTarget string into a SrcList and return a pointer
+// to that SrcList.
+//
+// This routine adds a specific database name, if needed, to the target when
+// forming the SrcList. This prevents a trigger in one database from
+// referring to a target in another database. An exception is when the
+// trigger is in TEMP in which case it can refer to any other database it
+// wants.
+func _targetSrcList(tls *crt.TLS, _pParse *XParse, _pStep *XTriggerStep) (r0 *XSrcList) {
+ var _iDb int32
+ var _2_zDb *int8
+ var _db *Xsqlite3
+ var _pSrc *XSrcList
+ _db = (*Xsqlite3)(_pParse.X0)
+ _pSrc = _sqlite3SrcListAppend(tls, _db, nil, nil, nil)
+ if _pSrc == nil {
+ goto _0
+ }
func() {
- if _pItem == nil || (_pSrc.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListLookupØ00__func__Ø000))), unsafe.Pointer(str(118348)))
+ if (_pSrc.X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123305), unsafe.Pointer((*int8)(unsafe.Pointer(&_targetSrcListØ00__func__Ø000))), unsafe.Pointer(str(118241)))
crt.X__builtin_abort(tls)
}
}()
- _pTab = _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), _pItem)
- _sqlite3DeleteTable(tls, (*Xsqlite3)(_pParse.X0), (*XTable)(_pItem.X4))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(16 /* X4 */))))) = _pTab
- if _pTab == nil {
- goto _3
- }
-
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(32 /* X8 */))) += 1
-_3:
- if _sqlite3IndexedByLookup(tls, _pParse, _pItem) == 0 {
- goto _4
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr((_pSrc.X0)-i32(1)))))) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, _pStep.X4)
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)((*XTrigger)(_pStep.X2).X6))
+ if (_iDb == i32(0)) || (_iDb >= i32(2)) {
+ func() {
+ if _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123310), unsafe.Pointer((*int8)(unsafe.Pointer(&_targetSrcListØ00__func__Ø000))), unsafe.Pointer(str(54328)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _2_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr((_pSrc.X0)-i32(1)))))) + uintptr(4 /* X1 */))) = _sqlite3DbStrDup(tls, _db, _2_zDb)
}
-
- _pTab = nil
-_4:
- return _pTab
-}
-
-var _sqlite3SrcListLookupØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3SrcListLookupØ00__func__Ø000[0], str(118372), 21)
+_0:
+ return _pSrc
}
-func _sqlite3FixInit(tls *crt.TLS, _pFix *XDbFixer, _pParse *XParse, _iDb int32, _zType *int8, _pName *XToken) { // sqlite3.c:99260:1
- var _db *Xsqlite3 // sqlite3.c:99267:11
- _ = _db
+var _targetSrcListØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_targetSrcListØ00__func__Ø000[0], str(118254), 14)
+}
+
+// This routine is called to handle SQL of the following forms:
+//
+// insert into TABLE (IDLIST) values(EXPRLIST),(EXPRLIST),...
+// insert into TABLE (IDLIST) select
+// insert into TABLE (IDLIST) default values
+//
+// The IDLIST following the table name is always optional. If omitted,
+// then a list of all (non-hidden) columns for the table is substituted.
+// The IDLIST appears in the pColumn parameter. pColumn is NULL if IDLIST
+// is omitted.
+//
+// For the pSelect parameter holds the values to be inserted for the
+// first two forms shown above. A VALUES clause is really just short-hand
+// for a SELECT statement that omits the FROM clause and everything else
+// that follows. If the pSelect parameter is NULL, that means that the
+// DEFAULT VALUES form of the INSERT statement is intended.
+//
+// The code generated follows one of four templates. For a simple
+// insert with data coming from a single-row VALUES clause, the code executes
+// once straight down through. Pseudo-code follows (we call this
+// the "1st template"):
+//
+// open write cursor to and its indices
+// put VALUES clause expressions into registers
+// write the resulting record into
+// cleanup
+//
+// The three remaining templates assume the statement is of the form
+//
+// INSERT INTO SELECT ...
+//
+// If the SELECT clause is of the restricted form "SELECT * FROM " -
+// in other words if the SELECT pulls all columns from a single table
+// and there is no WHERE or LIMIT or GROUP BY or ORDER BY clauses, and
+// if and are distinct tables but have identical
+// schemas, including all the same indices, then a special optimization
+// is invoked that copies raw records from over to .
+// See the xferOptimization() function for the implementation of this
+// template. This is the 2nd template.
+//
+// open a write cursor to
+// open read cursor on
+// transfer all records in over to
+// close cursors
+// foreach index on
+// open a write cursor on the index
+// open a read cursor on the corresponding index
+// transfer all records from the read to the write cursors
+// close cursors
+// end foreach
+//
+// The 3rd template is for when the second template does not apply
+// and the SELECT clause does not read from at any time.
+// The generated code follows this template:
+//
+// X <- A
+// goto B
+// A: setup for the SELECT
+// loop over the rows in the SELECT
+// load values into registers R..R+n
+// yield X
+// end loop
+// cleanup after the SELECT
+// end-coroutine X
+// B: open write cursor to and its indices
+// C: yield X, at EOF goto D
+// insert the select result into from R..R+n
+// goto C
+// D: cleanup
+//
+// The 4th template is used if the insert statement takes its
+// values from a SELECT but the data is being inserted into a table
+// that is also read as part of the SELECT. In the third form,
+// we have to use an intermediate table to store the results of
+// the select. The template is like this:
+//
+// X <- A
+// goto B
+// A: setup for the SELECT
+// loop over the tables in the SELECT
+// load value into register R..R+n
+// yield X
+// end loop
+// cleanup after the SELECT
+// end co-routine R
+// B: open temp table
+// L: yield X, at EOF goto M
+// insert row from R..R+n into temp table
+// goto L
+// M: open write cursor to and its indices
+// rewind temp table
+// C: loop over rows of intermediate table
+// transfer values form intermediate table into
+// end loop
+// D: cleanup
+func _sqlite3Insert(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pSelect *XSelect, _pColumn *XIdList, _onError int32) {
+ var _i, _j, _nColumn, _nHidden, _iDataCur, _iIdxCur, _ipkColumn, _endOfLoop, _srcTab, _addrInsTop, _addrCont, _iDb, _regFromSelect, _regAutoinc, _regRowCount, _regIns, _regRowid, _regData, _isView, _tmask, _18_regYield, _18_addrTop, _18_rc, _20_regRec, _20_regTempRowid, _20_addrL, _30_nIdx, _35_regCols, _37_addr1, _54_addr1, _59_iRegStore, _72_isReplace, _72_bUseSeek int32
+ var _aRegIdx *int32
+ var _zTab, _71_pVTab *int8
+ var _useTempTable, _appendFlag, _withoutRowid, _bIdListInOrder uint8
+ var _db *Xsqlite3
+ var _pTrigger *XTrigger
+ var _pTab *XTable
+ var _v *TVdbe
+ var _pList *XExprList
+ var _pIdx *XIndex
+ var _52_pOp *XVdbeOp
+ var _21_sNC XNameContext
+ var _dest XSelectDest
+ _nHidden = i32(0)
+ _iDataCur = i32(0)
+ _iIdxCur = i32(0)
+ _ipkColumn = i32(-1)
+ _srcTab = i32(0)
+ _addrInsTop = i32(0)
+ _addrCont = i32(0)
+ _useTempTable = u8(0)
+ _appendFlag = u8(0)
+ _pList = nil
+ _regFromSelect = i32(0)
+ _regAutoinc = i32(0)
+ _regRowCount = i32(0)
+ _aRegIdx = nil
_db = (*Xsqlite3)(_pParse.X0)
+ crt.Xmemset(tls, (unsafe.Pointer)(&_dest), i32(0), u32(24))
+ if (_pParse.X16) != 0 || ((_db.X17) != 0) {
+ goto _insert_cleanup
+ }
+ if ((_pSelect != nil) && (((_pSelect.X3) & uint32(i32(512))) != uint32(i32(0)))) && ((*XSelect)(_pSelect.X13) == nil) {
+ _pList = (*XExprList)(_pSelect.X0)
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelect)) + uintptr(0 /* X0 */))))) = nil
+ _sqlite3SelectDelete(tls, _db, _pSelect)
+ _pSelect = nil
+ }
func() {
- if (_db.X5) <= _iDb {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99270), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FixInitØ00__func__Ø000))), unsafe.Pointer(str(118396)))
+ if (_pTabList.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(115025)))
crt.X__builtin_abort(tls)
}
}()
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(0 /* X0 */))))) = _pParse
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(12 /* X3 */))) = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(4 /* X1 */))))) = (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X4)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(16 /* X4 */))) = _zType
- *(**XToken)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(20 /* X5 */))))) = _pName
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFix)) + uintptr(8 /* X2 */))) = bool2int(_iDb == i32(1))
-}
-
-var _sqlite3FixInitØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3FixInitØ00__func__Ø000[0], str(118408), 15)
-}
-
-func _sqlite3FixSrcList(tls *crt.TLS, _pFix *XDbFixer, _pList *XSrcList) (r0 int32) { // sqlite3.c:99293:1
- var _i int32 // sqlite3.c:99297:7
- _ = _i
- var _zDb *int8 // sqlite3.c:99298:14
- _ = _zDb
- var _pItem *TSrcList_item // sqlite3.c:99299:23
- _ = _pItem
+ _zTab = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X2
if func() int32 {
- if _pList == nil {
+ if _zTab == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99301), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FixSrcListØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109379), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _2
+ }() != 0 {
+ goto _insert_cleanup
}
- return i32(0)
-
-_2:
- _zDb = _pFix.X3
- *func() **TSrcList_item { _i = i32(0); return &_pItem }() = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
-_3:
- if _i >= (_pList.X0) {
- goto _6
+ _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTabList)
+ if _pTab == nil {
+ goto _insert_cleanup
}
-
- if (_pFix.X2) != i32(0) {
- goto _7
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
+ func() {
+ if _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(54328)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3AuthCheck(tls, _pParse, i32(18), _pTab.X0, nil, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0) != 0 {
+ goto _insert_cleanup
}
-
- if (_pItem.X1) == nil || _sqlite3StrICmp(tls, _pItem.X1, _zDb) == 0 {
- goto _9
+ _withoutRowid = uint8(bool2int(((_pTab.X9) & uint32(i32(32))) != uint32(i32(0))))
+ _pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(108), nil, &_tmask)
+ _isView = bool2int((*XSelect)(_pTab.X3) != nil)
+ func() {
+ if (_pTrigger == nil || _tmask == 0) && (_pTrigger != nil || _tmask != i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109407), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118268)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) != 0 {
+ goto _insert_cleanup
}
-
- _sqlite3ErrorMsg(tls, (*XParse)(_pFix.X0), str(118424), unsafe.Pointer(_pFix.X4), unsafe.Pointer((*XToken)(_pFix.X5)), unsafe.Pointer(_pItem.X1))
- return i32(1)
-
-_9:
- _sqlite3DbFree(tls, (*Xsqlite3)((*XParse)(_pFix.X0).X0), (unsafe.Pointer)(_pItem.X1))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(4 /* X1 */))) = nil
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pItem)) + uintptr(0 /* X0 */))))) = (*XSchema)(_pFix.X1)
-_7:
- if _sqlite3FixSelect(tls, _pFix, (*XSelect)(_pItem.X5)) == 0 {
- goto _10
+ if _sqlite3IsReadOnly(tls, _pParse, _pTab, _tmask) != 0 {
+ goto _insert_cleanup
}
- return i32(1)
-
-_10:
- if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pItem.X12)) == 0 {
- goto _11
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v == nil {
+ goto _insert_cleanup
}
- return i32(1)
-
-_11:
- *(*uintptr)(unsafe.Pointer(func() **TSrcList_item { _i += 1; return &_pItem }())) += uintptr(68)
- goto _3
-
-_6:
- return i32(0)
-}
-
-var _sqlite3FixSrcListØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3FixSrcListØ00__func__Ø000[0], str(118472), 18)
-}
-
-func _sqlite3FixSelect(tls *crt.TLS, _pFix *XDbFixer, _pSelect *XSelect) (r0 int32) { // sqlite3.c:99323:1
-_0:
- if _pSelect == nil {
- goto _1
+ if int32(_pParse.X6) == i32(0) {
+ _sqlite3VdbeCountChanges(tls, _v)
}
-
- if _sqlite3FixExprList(tls, _pFix, (*XExprList)(_pSelect.X0)) == 0 {
- goto _2
+ _sqlite3BeginWriteOperation(tls, _pParse, bool2int((_pSelect != nil) || (_pTrigger != nil)), _iDb)
+ if (_pColumn == nil) && _xferOptimization(tls, _pParse, _pTab, _pSelect, _onError, _iDb) != 0 {
+ func() {
+ if _pTrigger != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109440), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118317)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if _pList != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109441), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118327)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ goto _insert_end
}
- return i32(1)
-
-_2:
- if _sqlite3FixSrcList(tls, _pFix, (*XSrcList)(_pSelect.X8)) == 0 {
- goto _3
+ _regAutoinc = _autoIncBegin(tls, _pParse, _iDb, _pTab)
+ _regRowid = store1(&_regIns, (_pParse.X18)+i32(1))
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + (int32(_pTab.X11) + i32(1))
+ sink1 = *p
}
- return i32(1)
-
-_3:
- if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X9)) == 0 {
- goto _4
+ if (_pTab.X16) != 0 {
+ _regRowid += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) += 1
}
- return i32(1)
-
-_4:
- if _sqlite3FixExprList(tls, _pFix, (*XExprList)(_pSelect.X10)) == 0 {
- goto _5
+ _regData = _regRowid + i32(1)
+ _bIdListInOrder = uint8(bool2int(((_pTab.X9) & uint32(i32(128))) == uint32(i32(0))))
+ if _pColumn == nil {
+ goto _31
}
- return i32(1)
-
-_5:
- if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X11)) == 0 {
- goto _6
+ _i = i32(0)
+_32:
+ if _i >= (_pColumn.X1) {
+ goto _35
}
- return i32(1)
-
-_6:
- if _sqlite3FixExprList(tls, _pFix, (*XExprList)(_pSelect.X12)) == 0 {
- goto _7
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = i32(-1)
+ _i += 1
+ goto _32
+_35:
+ _i = i32(0)
+_36:
+ if _i >= (_pColumn.X1) {
+ goto _39
}
- return i32(1)
-
-_7:
- if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X15)) == 0 {
- goto _8
+ _j = i32(0)
+_40:
+ if _j >= int32(_pTab.X11) {
+ goto _43
}
- return i32(1)
-
-_8:
- if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pSelect.X16)) == 0 {
- goto _9
+ if _sqlite3StrICmp(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))).X0, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X0) != i32(0) {
+ goto _44
}
- return i32(1)
-
-_9:
- _pSelect = (*XSelect)(_pSelect.X13)
- goto _0
-
-_1:
- return i32(0)
-}
-
-func _sqlite3FixExprList(tls *crt.TLS, _pFix *XDbFixer, _pList *XExprList) (r0 int32) { // sqlite3.c:99382:1
- var _i int32 // sqlite3.c:99386:7
- _ = _i
- var _pItem *TExprList_item // sqlite3.c:99387:24
- _ = _pItem
- if _pList != nil {
- goto _0
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = _j
+ if _i != _j {
+ _bIdListInOrder = uint8(i32(0))
+ }
+ if _j == int32(_pTab.X10) {
+ _ipkColumn = _i
+ func() {
+ if _withoutRowid != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109484), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118336)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
}
- return i32(0)
-
-_0:
- *func() **TExprList_item { _i = i32(0); return &_pItem }() = (*TExprList_item)(unsafe.Pointer((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(8 /* X2 */)))))
-_1:
- if _i >= (_pList.X0) {
- goto _4
+ goto _43
+_44:
+ _j += 1
+ goto _40
+_43:
+ if _j < int32(_pTab.X11) {
+ goto _49
}
-
- if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pItem.X0)) == 0 {
- goto _5
+ if _sqlite3IsRowid(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))).X0) != 0 && (_withoutRowid == 0) {
+ _ipkColumn = _i
+ _bIdListInOrder = uint8(i32(0))
+ goto _52
}
- return i32(1)
-
-_5:
- *(*uintptr)(unsafe.Pointer(func() **TExprList_item { _i += 1; return &_pItem }())) += uintptr(20)
- goto _1
-
-_4:
- return i32(0)
-}
-
-func _sqlite3FixExpr(tls *crt.TLS, _pFix *XDbFixer, _pExpr *XExpr) (r0 int32) { // sqlite3.c:99356:1
-_0:
- if _pExpr == nil {
- goto _1
- }
-
- if int32(_pExpr.X0) != i32(135) {
- goto _2
- }
-
- if ((*t19)(unsafe.Pointer(uintptr((*XParse)(_pFix.X0).X0) + uintptr(144 /* X33 */))).X2) == 0 {
- goto _3
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(0 /* X0 */))) = uint8(i32(101))
- goto _4
-
-_3:
- _sqlite3ErrorMsg(tls, (*XParse)(_pFix.X0), str(118492), unsafe.Pointer(_pFix.X4))
- return i32(1)
-
-_4:
-_2:
- if ((_pExpr.X2) & uint32(i32(8404992))) == uint32(i32(0)) {
- goto _5
- }
-
- goto _1
-
-_5:
- if ((_pExpr.X2) & uint32(i32(2048))) == uint32(i32(0)) {
- goto _6
- }
-
- if _sqlite3FixSelect(tls, _pFix, (*XSelect)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) == 0 {
- goto _7
- }
- return i32(1)
-
-_7:
- goto _8
-
-_6:
- if _sqlite3FixExprList(tls, _pFix, (*XExprList)(*(*unsafe.Pointer)(unsafe.Pointer((*t10)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) == 0 {
- goto _9
- }
- return i32(1)
-
-_9:
-_8:
- if _sqlite3FixExpr(tls, _pFix, (*XExpr)(_pExpr.X5)) == 0 {
- goto _10
- }
- return i32(1)
-
-_10:
- _pExpr = (*XExpr)(_pExpr.X4)
- goto _0
-
-_1:
- return i32(0)
-}
-
-func _sqlite3ExprListSetSortOrder(tls *crt.TLS, _p *XExprList, _iSortOrder int32) { // sqlite3.c:92471:1
- if _p != nil {
- goto _0
+ _sqlite3ErrorMsg(tls, _pParse, str(118350), unsafe.Pointer(_pTabList), i32(0), unsafe.Pointer((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))).X0))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
+ goto _insert_cleanup
+_52:
+_49:
+ _i += 1
+ goto _36
+_39:
+_31:
+ if _pSelect == nil {
+ goto _53
}
- return
-
-_0:
- i32(0)
- func() {
- if (_p.X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92474), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSortOrderØ00__func__Ø000))), unsafe.Pointer(str(118516)))
- crt.X__builtin_abort(tls)
+ _18_regYield = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _18_addrTop = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
+ _sqlite3VdbeAddOp3(tls, _v, i32(15), _18_regYield, i32(0), _18_addrTop)
+ _sqlite3SelectDestInit(tls, &_dest, i32(13), _18_regYield)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_dest)) + uintptr(12 /* X3 */))) = func() int32 {
+ if _bIdListInOrder != 0 {
+ return _regData
}
+ return i32(0)
}()
- if _iSortOrder >= i32(0) {
- goto _3
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_dest)) + uintptr(16 /* X4 */))) = int32(_pTab.X11)
+ _18_rc = _sqlite3Select(tls, _pParse, _pSelect, &_dest)
+ _regFromSelect = _dest.X3
+ if (_18_rc != 0 || ((_db.X17) != 0)) || (_pParse.X16) != 0 {
+ goto _insert_cleanup
}
-
+ _sqlite3VdbeEndCoroutine(tls, _v, _18_regYield)
+ _sqlite3VdbeJumpHere(tls, _v, _18_addrTop-i32(1))
func() {
- if int32((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr((_p.X0)-i32(1)))).X3) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92476), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSortOrderØ00__func__Ø000))), unsafe.Pointer(str(118528)))
+ if (*XExprList)(_pSelect.X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109526), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118382)))
crt.X__builtin_abort(tls)
}
}()
- return
-
-_3:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+20*uintptr((_p.X0)-i32(1)))))) + uintptr(12 /* X3 */))) = uint8(_iSortOrder)
-}
-
-var _sqlite3ExprListSetSortOrderØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprListSetSortOrderØ00__func__Ø000[0], str(118572), 28)
-}
-
-func _sqlite3ExprListCheckLength(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _zObject *int8) { // sqlite3.c:92536:1
- var _mx int32 // sqlite3.c:92541:7
- _ = _mx
- _mx = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))
- if _pEList == nil || (_pEList.X0) <= _mx {
- goto _1
+ _nColumn = (*XExprList)(_pSelect.X0).X0
+ if (_pTrigger != nil) || _readsTable(tls, _pParse, _iDb, _pTab) != 0 {
+ _useTempTable = uint8(i32(1))
+ }
+ if _useTempTable != 0 {
+ _srcTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _20_regRec = _sqlite3GetTempReg(tls, _pParse)
+ _20_regTempRowid = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3VdbeAddOp2(tls, _v, i32(110), _srcTab, _nColumn)
+ _20_addrL = _sqlite3VdbeAddOp1(tls, _v, i32(16), _dest.X2)
+ _sqlite3VdbeAddOp3(tls, _v, i32(101), _regFromSelect, _nColumn, _20_regRec)
+ _sqlite3VdbeAddOp2(tls, _v, i32(117), _srcTab, _20_regTempRowid)
+ _sqlite3VdbeAddOp3(tls, _v, i32(118), _srcTab, _20_regRec, _20_regTempRowid)
+ _sqlite3VdbeGoto(tls, _v, _20_addrL)
+ _sqlite3VdbeJumpHere(tls, _v, _20_addrL)
+ _sqlite3ReleaseTempReg(tls, _pParse, _20_regRec)
+ _sqlite3ReleaseTempReg(tls, _pParse, _20_regTempRowid)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(118600), unsafe.Pointer(_zObject))
-_1:
-}
-
-func _sqlite3ResolveSelfReference(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _type int32, _pExpr *XExpr, _pList *XExprList) { // sqlite3.c:90873:1
- var _sSrc XSrcList // sqlite3.c:90880:11
- _ = _sSrc
- var _sNC XNameContext // sqlite3.c:90881:15
- _ = _sNC
+ goto _64
+_53:
+ crt.Xmemset(tls, (unsafe.Pointer)(&_21_sNC), i32(0), u32(32))
+ *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_21_sNC)) + uintptr(0 /* X0 */))))) = _pParse
+ _srcTab = i32(-1)
func() {
- if _type != i32(4) && _type != i32(2) && _type != i32(32) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(90883), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ResolveSelfReferenceØ00__func__Ø000))), unsafe.Pointer(str(118624)))
+ if int32(_useTempTable) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109578), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118398)))
crt.X__builtin_abort(tls)
}
}()
- crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
- crt.Xmemset(tls, (unsafe.Pointer)(&_sSrc), i32(0), u32(76))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc)) + uintptr(0 /* X0 */))) = i32(1)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(8 /* X2 */))) = _pTab.X0
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(16 /* X4 */))))) = _pTab
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(40 /* X11 */))) = i32(-1)
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = &_sSrc
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(28 /* X7 */))) = uint16(_type)
- if _sqlite3ResolveExprNames(tls, &_sNC, _pExpr) == 0 {
- goto _4
- }
- return
-
-_4:
if _pList == nil {
- goto _5
- }
-
- _sqlite3ResolveExprListNames(tls, &_sNC, _pList)
-_5:
-}
-
-var _sqlite3ResolveSelfReferenceØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ResolveSelfReferenceØ00__func__Ø000[0], str(118684), 28)
-}
-
-func _sqlite3StringToId(tls *crt.TLS, _p *XExpr) { // sqlite3.c:100960:1
- if int32(_p.X0) != i32(97) {
- goto _0
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(i32(27))
- goto _1
-
-_0:
- if int32(_p.X0) != i32(94) || int32((*XExpr)(_p.X4).X0) != i32(97) {
- goto _3
+ goto _67
}
-
- *(*uint8)(unsafe.Pointer(uintptr(_p.X4) + uintptr(0 /* X0 */))) = uint8(i32(27))
-_3:
-_1:
-}
-
-func _hasColumn(tls *crt.TLS, _aiCol *int16, _nCol int32, _x int32) (r0 int32) { // sqlite3.c:101352:1
-_0:
- if postInc1(&_nCol, int32(-1)) <= i32(0) {
- goto _1
+ _nColumn = _pList.X0
+ if _sqlite3ResolveExprListNames(tls, &_21_sNC, _pList) != 0 {
+ goto _insert_cleanup
}
-
- if _x != int32(*postInc71(&_aiCol, 2)) {
- goto _2
+ goto _69
+_67:
+ _nColumn = i32(0)
+_69:
+_64:
+ if (_pColumn == nil) && (_nColumn > i32(0)) {
+ _ipkColumn = int32(_pTab.X10)
}
- return i32(1)
-
-_2:
- goto _0
-
-_1:
- return i32(0)
-}
-
-func _estimateIndexWidth(tls *crt.TLS, _pIdx *XIndex) { // sqlite3.c:101338:1
- var _wIndex uint32 // sqlite3.c:101339:12
- _ = _wIndex
- var _i int32 // sqlite3.c:101340:7
- _ = _i
- var _aCol *XColumn // sqlite3.c:101341:16
- _ = _aCol
- var _1_x int16 // sqlite3.c:101343:9
- _ = _1_x
- _wIndex = u32(0)
- _aCol = (*XColumn)((*XTable)(_pIdx.X3).X1)
_i = i32(0)
-_0:
- if _i >= int32(_pIdx.X14) {
- goto _3
+_72:
+ if _i >= int32(_pTab.X11) {
+ goto _75
}
-
- _1_x = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))
- func() {
- if int32(_1_x) >= int32((*XTable)(_pIdx.X3).X11) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101344), unsafe.Pointer((*int8)(unsafe.Pointer(&_estimateIndexWidthØ00__func__Ø000))), unsafe.Pointer(str(118712)))
- crt.X__builtin_abort(tls)
- }
- }()
{
- p := &_wIndex
- *p = (*p) + uint32(func() int32 {
- if int32(_1_x) < i32(0) {
+ p := &_nHidden
+ *p = (*p) + func() int32 {
+ if (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X6) & i32(2)) != i32(0) {
return i32(1)
}
- return int32((*XColumn)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aCol)) + 16*uintptr(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))))).X5)
- }())
- sink5 = *p
+ return i32(0)
+ }()
+ sink1 = *p
}
_i += 1
- goto _0
-
-_3:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(48 /* X12 */))) = _sqlite3LogEst(tls, uint64(_wIndex*uint32(i32(4))))
-}
-
-var _estimateIndexWidthØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_estimateIndexWidthØ00__func__Ø000[0], str(118736), 19)
-}
-
-func _sqlite3NestedParse(tls *crt.TLS, _pParse *XParse, _zFormat *int8, args ...interface{}) { // sqlite3.c:99947:1
- var _ap []interface{} // sqlite3.c:99948:11
- _ = _ap
- var _zSql *int8 // sqlite3.c:99949:8
- _ = _zSql
- var _zErrMsg *int8 // sqlite3.c:99950:8
- _ = _zErrMsg
- var _db *Xsqlite3 // sqlite3.c:99951:11
- _ = _db
- var _saveBuf [84]int8 // sqlite3.c:99952:8
- _ = _saveBuf
- _zErrMsg = nil
- _db = (*Xsqlite3)(_pParse.X0)
- if (_pParse.X16) == 0 {
- goto _0
+ goto _72
+_75:
+ if ((_pColumn == nil) && _nColumn != 0) && (_nColumn != (int32(_pTab.X11) - _nHidden)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(118414), unsafe.Pointer(_pTabList), i32(0), int32(_pTab.X11)-_nHidden, _nColumn)
+ goto _insert_cleanup
}
- return
-
-_0:
- func() {
- if int32(_pParse.X6) >= i32(10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99955), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3NestedParseØ00__func__Ø000))), unsafe.Pointer(str(118756)))
- crt.X__builtin_abort(tls)
- }
- }()
- _ap = args
- _zSql = _sqlite3VMPrintf(tls, _db, _zFormat, _ap)
- _ap = nil
- if _zSql != nil {
- goto _3
+ if (_pColumn != nil) && (_nColumn != (_pColumn.X1)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(118466), _nColumn, _pColumn.X1)
+ goto _insert_cleanup
}
- return
-
-_3:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(18 /* X6 */))) += 1
- crt.Xmemcpy(tls, (unsafe.Pointer)(&_saveBuf), (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pParse))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(400))))))))), u32(84))
- crt.Xmemset(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pParse))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(400))))))))), i32(0), u32(84))
- _sqlite3RunParser(tls, _pParse, _zSql, &_zErrMsg)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zErrMsg))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zSql))
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(_pParse))))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(u32(400))))))))), (unsafe.Pointer)(&_saveBuf), u32(84))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(18 /* X6 */))) -= 1
-}
-
-var _sqlite3NestedParseØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3NestedParseØ00__func__Ø000[0], str(118776), 19)
-}
-
-func _sqlite3RefillIndex(tls *crt.TLS, _pParse *XParse, _pIndex *XIndex, _memRootPage int32) { // sqlite3.c:102462:1
- var _pTab *XTable // sqlite3.c:102463:9
- _ = _pTab
- var _iTab int32 // sqlite3.c:102464:7
- _ = _iTab
- var _iIdx int32 // sqlite3.c:102465:7
- _ = _iIdx
- var _iSorter int32 // sqlite3.c:102466:7
- _ = _iSorter
- var _addr1 int32 // sqlite3.c:102467:7
- _ = _addr1
- var _addr2 int32 // sqlite3.c:102468:7
- _ = _addr2
- var _tnum int32 // sqlite3.c:102469:7
- _ = _tnum
- var _iPartIdxLabel int32 // sqlite3.c:102470:7
- _ = _iPartIdxLabel
- var _v *TVdbe // sqlite3.c:102471:8
- _ = _v
- var _pKey *XKeyInfo // sqlite3.c:102472:11
- _ = _pKey
- var _regRecord int32 // sqlite3.c:102473:7
- _ = _regRecord
- var _db *Xsqlite3 // sqlite3.c:102474:11
- _ = _db
- var _iDb int32 // sqlite3.c:102475:7
- _ = _iDb
- var _4_j2 int32 // sqlite3.c:102520:9
- _ = _4_j2
- _pTab = (*XTable)(_pIndex.X3)
- _iTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _iIdx = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _db = (*Xsqlite3)(_pParse.X0)
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pIndex.X6))
- if _sqlite3AuthCheck(tls, _pParse, i32(27), _pIndex.X0, nil, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0) == 0 {
- goto _0
+ if ((_db.X6) & i32(128)) != 0 {
+ _regRowCount = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _regRowCount)
}
- return
-
-_0:
- _sqlite3TableLock(tls, _pParse, _iDb, _pTab.X7, uint8(i32(1)), _pTab.X0)
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v != nil {
- goto _1
+ if _isView != 0 {
+ goto _84
}
- return
-
-_1:
- if _memRootPage < i32(0) {
- goto _2
+ _30_nIdx = _sqlite3OpenTableAndIndices(tls, _pParse, _pTab, i32(107), uint8(i32(0)), i32(-1), nil, &_iDataCur, &_iIdxCur)
+ _aRegIdx = (*int32)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(4)*uint32(_30_nIdx+i32(1)))))
+ if _aRegIdx == nil {
+ goto _insert_cleanup
+ }
+ *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
+_86:
+ if _i >= _30_nIdx {
+ goto _89
}
-
- _tnum = _memRootPage
- goto _3
-
-_2:
- _tnum = _pIndex.X11
-_3:
- _pKey = _sqlite3KeyInfoOfIndex(tls, _pParse, _pIndex)
func() {
- if _pKey == nil && (_db.X17) == 0 && (_pParse.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102495), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3RefillIndexØ00__func__Ø000))), unsafe.Pointer(str(118796)))
+ if _pIdx == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109631), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118491)))
crt.X__builtin_abort(tls)
}
}()
- _iSorter = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _sqlite3VdbeAddOp4(tls, _v, i32(111), _iSorter, i32(0), int32(_pIndex.X13), (*int8)(unsafe.Pointer(_sqlite3KeyInfoRef(tls, _pKey))), i32(-5))
- _sqlite3OpenTable(tls, _pParse, _iTab, _iDb, _pTab, i32(106))
- _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iTab, i32(0))
- _regRecord = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3GenerateIndexKey(tls, _pParse, _pIndex, _iTab, _regRecord, i32(0), &_iPartIdxLabel, nil, i32(0))
- _sqlite3VdbeAddOp2(tls, _v, i32(127), _iSorter, _regRecord)
- _sqlite3ResolvePartIdxLabel(tls, _pParse, _iPartIdxLabel)
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _iTab, _addr1+i32(1))
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
- if _memRootPage >= i32(0) {
- goto _8
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + int32(_pIdx.X14)
+ sink1 = *p
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(134), _tnum, _iDb)
-_8:
- _sqlite3VdbeAddOp4(tls, _v, i32(107), _iIdx, _tnum, _iDb, (*int8)(unsafe.Pointer(_pKey)), i32(-5))
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)|func() int32 {
- if _memRootPage >= i32(0) {
- return i32(16)
- }
- return i32(0)
- }()))
- _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(35), _iSorter, i32(0))
- if int32(_pIndex.X15) == i32(0) {
- goto _11
+ *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_i }() += 1
+ goto _86
+_89:
+_84:
+ if _useTempTable != 0 {
+ _addrInsTop = _sqlite3VdbeAddOp1(tls, _v, i32(37), _srcTab)
+ _addrCont = _sqlite3VdbeCurrentAddr(tls, _v)
+ goto _93
}
-
- _4_j2 = _sqlite3VdbeCurrentAddr(tls, _v) + i32(3)
- _sqlite3VdbeGoto(tls, _v, _4_j2)
- _addr2 = _sqlite3VdbeCurrentAddr(tls, _v)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(122), _iSorter, _4_j2, _regRecord, int32(_pIndex.X13))
- _sqlite3UniqueConstraint(tls, _pParse, i32(2), _pIndex)
- goto _12
-
-_11:
- _addr2 = _sqlite3VdbeCurrentAddr(tls, _v)
-_12:
- _sqlite3VdbeAddOp3(tls, _v, i32(123), _iSorter, _regRecord, _iIdx)
- _sqlite3VdbeAddOp3(tls, _v, i32(33), _iIdx, i32(0), i32(-1))
- _sqlite3VdbeAddOp2(tls, _v, i32(128), _iIdx, _regRecord)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
- _sqlite3ReleaseTempReg(tls, _pParse, _regRecord)
- _sqlite3VdbeAddOp2(tls, _v, i32(3), _iSorter, _addr2)
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
- _sqlite3VdbeAddOp1(tls, _v, i32(114), _iTab)
- _sqlite3VdbeAddOp1(tls, _v, i32(114), _iIdx)
- _sqlite3VdbeAddOp1(tls, _v, i32(114), _iSorter)
-}
-
-var _sqlite3RefillIndexØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3RefillIndexØ00__func__Ø000[0], str(118840), 19)
-}
-
-func _sqlite3ResolvePartIdxLabel(tls *crt.TLS, _pParse *XParse, _iLabel int32) { // sqlite3.c:105532:1
- if _iLabel == 0 {
- goto _0
+ if _pSelect != nil {
+ _addrInsTop = store1(&_addrCont, _sqlite3VdbeAddOp1(tls, _v, i32(16), _dest.X2))
}
-
- _sqlite3VdbeResolveLabel(tls, (*TVdbe)(_pParse.X2), _iLabel)
- _sqlite3ExprCachePop(tls, _pParse)
-_0:
-}
-
-func _sqlite3UniqueConstraint(tls *crt.TLS, _pParse *XParse, _onError int32, _pIdx *XIndex) { // sqlite3.c:103861:1
- var _zErr *int8 // sqlite3.c:103866:8
- _ = _zErr
- var _j int32 // sqlite3.c:103867:7
- _ = _j
- var _errMsg XStrAccum // sqlite3.c:103868:12
- _ = _errMsg
- var _pTab *XTable // sqlite3.c:103869:9
- _ = _pTab
- var _3_zCol *int8 // sqlite3.c:103876:12
- _ = _3_zCol
- _pTab = (*XTable)(_pIdx.X3)
- _sqlite3StrAccumInit(tls, &_errMsg, (*Xsqlite3)(_pParse.X0), nil, i32(0), i32(200))
- if (*XExprList)(_pIdx.X10) == nil {
- goto _0
+_93:
+ _endOfLoop = _sqlite3VdbeMakeLabel(tls, _v)
+ if (_tmask & i32(1)) == 0 {
+ goto _95
}
-
- _sqlite3XPrintf(tls, &_errMsg, str(118860), unsafe.Pointer(_pIdx.X0))
- goto _1
-
-_0:
- _j = i32(0)
-_2:
- if _j >= int32(_pIdx.X13) {
- goto _5
+ _35_regCols = _sqlite3GetTempRange(tls, _pParse, int32(_pTab.X11)+i32(1))
+ if _ipkColumn < i32(0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(-1), _35_regCols)
+ goto _97
}
-
func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103877), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UniqueConstraintØ00__func__Ø000))), unsafe.Pointer(str(118872)))
+ if _withoutRowid != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118336)))
crt.X__builtin_abort(tls)
}
}()
- _3_zCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_j)))))).X0
- if _j == 0 {
- goto _8
+ if _useTempTable != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _ipkColumn, _35_regCols)
+ goto _101
}
-
- _sqlite3StrAccumAppend(tls, &_errMsg, str(118896), i32(2))
-_8:
- _sqlite3XPrintf(tls, &_errMsg, str(6608), unsafe.Pointer(_pTab.X0), unsafe.Pointer(_3_zCol))
- _j += 1
- goto _2
-
-_5:
-_1:
- _zErr = _sqlite3StrAccumFinish(tls, &_errMsg)
- _sqlite3HaltConstraint(tls, _pParse, func() int32 {
- if int32((uint32(_pIdx.X16)<>uint(i32(30))) == i32(2) {
- return i32(1555)
+ func() {
+ if _pSelect != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118496)))
+ crt.X__builtin_abort(tls)
}
- return i32(2067)
- }(), _onError, _zErr, int8(i32(-1)), uint8(i32(2)))
-}
-
-var _sqlite3UniqueConstraintØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3UniqueConstraintØ00__func__Ø000[0], str(118900), 24)
-}
-
-func _sqlite3ChangeCookie(tls *crt.TLS, _pParse *XParse, _iDb int32) { // sqlite3.c:101167:1
- var _db *Xsqlite3 // sqlite3.c:101168:11
- _ = _db
- var _v *TVdbe // sqlite3.c:101169:8
- _ = _v
- _db = (*Xsqlite3)(_pParse.X0)
- _v = (*TVdbe)(_pParse.X2)
+ }()
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_ipkColumn))).X0), _35_regCols)
+_101:
+ _37_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(76), _35_regCols)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(-1), _35_regCols)
+ _sqlite3VdbeJumpHere(tls, _v, _37_addr1)
+ _sqlite3VdbeAddOp1(tls, _v, i32(17), _35_regCols)
+_97:
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101170), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ChangeCookieØ00__func__Ø000))), unsafe.Pointer(str(52808)))
+ if (_pTab.X16) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(41933)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp3(tls, _v, i32(104), _iDb, i32(1), ((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X4).X0)+i32(1))
-}
-
-var _sqlite3ChangeCookieØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ChangeCookieØ00__func__Ø000[0], str(118924), 20)
-}
-
-func _sqlite3VdbeAddParseSchemaOp(tls *crt.TLS, _p *TVdbe, _iDb int32, _zWhere *int8) { // sqlite3.c:71726:1
- var _j int32 // sqlite3.c:71727:7
- _ = _j
- _sqlite3VdbeAddOp4(tls, _p, i32(139), _iDb, i32(0), i32(0), _zWhere, i32(-1))
+ _i = store1(&_j, i32(0))
+_106:
+ if _i >= int32(_pTab.X11) {
+ goto _109
+ }
+ if _pColumn == nil {
+ goto _110
+ }
_j = i32(0)
-_0:
- if _j >= ((*Xsqlite3)(_p.X0).X5) {
- goto _3
+_111:
+ if _j >= (_pColumn.X1) {
+ goto _114
+ }
+ if ((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0) + 8*uintptr(_j))).X1) == _i {
+ goto _114
}
-
- _sqlite3VdbeUsesBtree(tls, _p, _j)
_j += 1
- goto _0
-
-_3:
-}
-
-func _resizeIndexObject(tls *crt.TLS, _db *Xsqlite3, _pIdx *XIndex, _N int32) (r0 int32) { // sqlite3.c:101300:1
- var _zExtra *int8 // sqlite3.c:101301:8
- _ = _zExtra
- var _nByte int32 // sqlite3.c:101302:7
- _ = _nByte
- if int32(_pIdx.X14) < _N {
- goto _0
+ goto _111
+_114:
+_110:
+ if (((_useTempTable == 0) && (_pList == nil)) || ((_pColumn != nil) && (_j >= (_pColumn.X1)))) || ((_pColumn == nil) && i32(0) != 0) {
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1), (_35_regCols+_i)+i32(1))
+ goto _122
+ }
+ if _useTempTable != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _j, (_35_regCols+_i)+i32(1))
+ goto _124
}
- return i32(0)
-
-_0:
func() {
- if int32((uint32((_pIdx.X16)>>uint(i32(4)))<>uint(i32(31))) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101304), unsafe.Pointer((*int8)(unsafe.Pointer(&_resizeIndexObjectØ00__func__Ø000))), unsafe.Pointer(str(118944)))
+ if _pSelect != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109711), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(118496)))
crt.X__builtin_abort(tls)
}
}()
- _nByte = int32(u32(7) * uint32(_N))
- _zExtra = (*int8)(_sqlite3DbMallocZero(tls, _db, uint64(_nByte)))
- if _zExtra != nil {
- goto _3
- }
- return _sqlite3NomemError(tls, i32(101307))
-
-_3:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_pIdx.X8), u32(4)*uint32(_pIdx.X14))
- *(***int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(32 /* X8 */))) = (**int8)(unsafe.Pointer(_zExtra))
- {
- p := &_zExtra
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(4)*uint32(_N))))
- sink0 = *p
+ _sqlite3ExprCodeAndCache(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), (_35_regCols+_i)+i32(1))
+_124:
+_122:
+ if (_pColumn == nil) && i32(1) != 0 {
+ _j += 1
}
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_pIdx.X1), u32(2)*uint32(_pIdx.X14))
- *(**int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(4 /* X1 */))) = (*int16)(unsafe.Pointer(_zExtra))
- {
- p := &_zExtra
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(u32(2)*uint32(_N))))
- sink0 = *p
+ _i += 1
+ goto _106
+_109:
+ if _isView == 0 {
+ _sqlite3TableAffinity(tls, _v, _pTab, _35_regCols+i32(1))
}
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zExtra), (unsafe.Pointer)(_pIdx.X7), uint32(_pIdx.X14))
- *(**uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(28 /* X7 */))) = (*uint8)(unsafe.Pointer(_zExtra))
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx)) + uintptr(52 /* X14 */))) = uint16(_N)
- storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx))+uintptr(55 /* X16 */))), int8(i32(1)), 16, 4)
- return i32(0)
-}
-
-var _resizeIndexObjectØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_resizeIndexObjectØ00__func__Ø000[0], str(118964), 18)
-}
-
-func _estimateTableWidth(tls *crt.TLS, _pTab *XTable) { // sqlite3.c:101324:1
- var _wTable uint32 // sqlite3.c:101325:12
- _ = _wTable
- var _pTabCol *XColumn // sqlite3.c:101326:16
- _ = _pTabCol
- var _i int32 // sqlite3.c:101327:7
- _ = _i
- _wTable = u32(0)
- *func() **XColumn { _i = int32(_pTab.X11); return &_pTabCol }() = (*XColumn)(_pTab.X1)
-_0:
- if _i <= i32(0) {
- goto _3
+ _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(108), nil, i32(1), _pTab, (_35_regCols-int32(_pTab.X11))-i32(1), _onError, _endOfLoop)
+ _sqlite3ReleaseTempRange(tls, _pParse, _35_regCols, int32(_pTab.X11)+i32(1))
+_95:
+ if _isView != 0 {
+ goto _130
}
-
- {
- p := &_wTable
- *p = (*p) + uint32(_pTabCol.X5)
- sink5 = *p
+ if (_pTab.X16) != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regIns)
}
- *(*uintptr)(unsafe.Pointer(func() **XColumn { _i -= 1; return &_pTabCol }())) += uintptr(16)
- goto _0
-
-_3:
- if int32(_pTab.X10) >= i32(0) {
- goto _4
+ if _ipkColumn < i32(0) {
+ goto _132
}
-
- _wTable += 1
-_4:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(46 /* X13 */))) = _sqlite3LogEst(tls, uint64(_wTable*uint32(i32(4))))
-}
-
-func _sqlite3TableAffinity(tls *crt.TLS, _v *TVdbe, _pTab *XTable, _iReg int32) { // sqlite3.c:108965:1
- var _i int32 // sqlite3.c:108966:7
- _ = _i
- var _zColAff *int8 // sqlite3.c:108967:8
- _ = _zColAff
- var _1_db *Xsqlite3 // sqlite3.c:108969:13
- _ = _1_db
- _zColAff = _pTab.X5
- if _zColAff != nil {
- goto _0
+ if _useTempTable != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _ipkColumn, _regRowid)
+ goto _134
}
-
- _1_db = _sqlite3VdbeDb(tls, _v)
- _zColAff = (*int8)(_sqlite3DbMallocRaw(tls, nil, uint64(int32(_pTab.X11)+i32(1))))
- if _zColAff != nil {
- goto _1
+ if _pSelect != nil {
+ _sqlite3VdbeAddOp2(tls, _v, i32(64), _regFromSelect+_ipkColumn, _regRowid)
+ goto _136
}
-
- _sqlite3OomFault(tls, _1_db)
- return
-
-_1:
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_ipkColumn))).X0), _regRowid)
+ _52_pOp = _sqlite3VdbeGetOp(tls, _v, i32(-1))
+ if (func() int32 {
+ if _52_pOp != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109750), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 && (int32(_52_pOp.X0) == i32(59))) && ((_pTab.X16) == 0) {
+ _appendFlag = uint8(i32(1))
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(117))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(4 /* X3 */))) = _iDataCur
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(8 /* X4 */))) = _regRowid
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(12 /* X5 */))) = _regAutoinc
+ }
+_136:
+_134:
+ if _appendFlag != 0 {
+ goto _142
+ }
+ if (_pTab.X16) == 0 {
+ _54_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(76), _regRowid)
+ _sqlite3VdbeAddOp3(tls, _v, i32(117), _iDataCur, _regRowid, _regAutoinc)
+ _sqlite3VdbeJumpHere(tls, _v, _54_addr1)
+ goto _144
+ }
+ _54_addr1 = _sqlite3VdbeCurrentAddr(tls, _v)
+ _sqlite3VdbeAddOp2(tls, _v, i32(75), _regRowid, _54_addr1+i32(2))
+_144:
+ _sqlite3VdbeAddOp1(tls, _v, i32(17), _regRowid)
+_142:
+ goto _145
+_132:
+ if (_pTab.X16) != 0 || (_withoutRowid != 0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regRowid)
+ goto _148
+ }
+ _sqlite3VdbeAddOp3(tls, _v, i32(117), _iDataCur, _regRowid, _regAutoinc)
+ _appendFlag = uint8(i32(1))
+_148:
+_145:
+ _autoIncStep(tls, _pParse, _regAutoinc, _regRowid)
+ _nHidden = i32(0)
_i = i32(0)
-_2:
+_149:
if _i >= int32(_pTab.X11) {
- goto _5
+ goto _152
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zColAff)) + 1*uintptr(_i))) = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_i))).X4
+ _59_iRegStore = (_regRowid + i32(1)) + _i
+ if _i == int32(_pTab.X10) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(60), _59_iRegStore)
+ goto _150
+ }
+ if _pColumn != nil {
+ goto _154
+ }
+ if (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X6) & i32(2)) != i32(0) {
+ _j = i32(-1)
+ _nHidden += 1
+ goto _156
+ }
+ _j = _i - _nHidden
+_156:
+ goto _157
+_154:
+ _j = i32(0)
+_158:
+ if _j >= (_pColumn.X1) {
+ goto _161
+ }
+ if ((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0) + 8*uintptr(_j))).X1) == _i {
+ goto _161
+ }
+ _j += 1
+ goto _158
+_161:
+_157:
+ if ((_j < i32(0)) || (_nColumn == i32(0))) || ((_pColumn != nil) && (_j >= (_pColumn.X1))) {
+ _sqlite3ExprCodeFactorable(tls, _pParse, (*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1), _59_iRegStore)
+ goto _167
+ }
+ if _useTempTable != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _j, _59_iRegStore)
+ goto _169
+ }
+ if _pSelect == nil {
+ goto _170
+ }
+ if _regFromSelect != _regData {
+ _sqlite3VdbeAddOp2(tls, _v, i32(65), _regFromSelect+_j, _59_iRegStore)
+ }
+ goto _172
+_170:
+ _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), _59_iRegStore)
+_172:
+_169:
+_167:
+_150:
_i += 1
- goto _2
-
-_5:
-_6:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zColAff)) + 1*uintptr(postInc1(&_i, int32(-1))))) = int8(i32(0))
- if (_i >= i32(0)) && (int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zColAff)) + 1*uintptr(_i)))) == i32(65)) {
- goto _6
+ goto _149
+_152:
+ if (_pTab.X16) != 0 {
+ _71_pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _pTab)))
+ _sqlite3VtabMakeWritable(tls, _pParse, _pTab)
+ _sqlite3VdbeAddOp4(tls, _v, i32(12), i32(1), int32(_pTab.X11)+i32(2), _regIns, _71_pVTab, i32(-8))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(func() int32 {
+ if _onError == i32(10) {
+ return i32(2)
+ }
+ return _onError
+ }()))
+ _sqlite3MayAbort(tls, _pParse)
+ goto _176
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(20 /* X5 */))) = _zColAff
-_0:
- _i = _sqlite3Strlen30(tls, _zColAff)
- if _i == 0 {
- goto _8
+ _sqlite3GenerateConstraintChecks(tls, _pParse, _pTab, _aRegIdx, _iDataCur, _iIdxCur, _regIns, i32(0), uint8(bool2int(_ipkColumn >= i32(0))), uint8(_onError), _endOfLoop, &_72_isReplace, nil)
+ _sqlite3FkCheck(tls, _pParse, _pTab, i32(0), _regIns, nil, i32(0))
+ _72_bUseSeek = bool2int((_72_isReplace == i32(0)) || ((_pTrigger == nil) && ((((_db.X6) & i32(524288)) == i32(0)) || (_sqlite3FkReferences(tls, _pTab) == nil))))
+ _sqlite3CompleteInsertion(tls, _pParse, _pTab, _iDataCur, _iIdxCur, _regIns, _aRegIdx, i32(0), int32(_appendFlag), _72_bUseSeek)
+_176:
+_130:
+ if ((_db.X6) & i32(128)) != i32(0) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(73), _regRowCount, i32(1))
}
-
- if _iReg == 0 {
- goto _9
+ if _pTrigger != nil {
+ _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(108), nil, i32(2), _pTab, (_regData-i32(2))-int32(_pTab.X11), _onError, _endOfLoop)
}
-
- _sqlite3VdbeAddOp4(tls, _v, i32(100), _iReg, _i, i32(0), _zColAff, _i)
- goto _10
-
-_9:
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), _zColAff, _i)
-_10:
-_8:
-}
-
-func _createTableStmt(tls *crt.TLS, _db *Xsqlite3, _p *XTable) (r0 *int8) { // sqlite3.c:101232:1
- var _i int32 // sqlite3.c:101233:7
- _ = _i
- var _k int32 // sqlite3.c:101233:10
- _ = _k
- var _n int32 // sqlite3.c:101233:13
- _ = _n
- var _zStmt *int8 // sqlite3.c:101234:8
- _ = _zStmt
- var _zSep *int8 // sqlite3.c:101235:8
- _ = _zSep
- var _zSep2 *int8 // sqlite3.c:101235:15
- _ = _zSep2
- var _zEnd *int8 // sqlite3.c:101235:23
- _ = _zEnd
- var _pCol *XColumn // sqlite3.c:101236:10
- _ = _pCol
- var _5_len int32 // sqlite3.c:101269:9
- _ = _5_len
- var _5_zType *int8 // sqlite3.c:101270:16
- _ = _5_zType
- _n = i32(0)
- *func() *int32 { _pCol = (*XColumn)(_p.X1); return &_i }() = i32(0)
-_0:
- if _i >= int32(_p.X11) {
- goto _3
+ _sqlite3VdbeResolveLabel(tls, _v, _endOfLoop)
+ if _useTempTable != 0 {
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _srcTab, _addrCont)
+ _sqlite3VdbeJumpHere(tls, _v, _addrInsTop)
+ _sqlite3VdbeAddOp1(tls, _v, i32(114), _srcTab)
+ goto _183
}
-
- {
- p := &_n
- *p = (*p) + (_identLength(tls, _pCol.X0) + i32(5))
- sink1 = *p
+ if _pSelect != nil {
+ _sqlite3VdbeGoto(tls, _v, _addrCont)
+ _sqlite3VdbeJumpHere(tls, _v, _addrInsTop)
}
- *(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
- goto _0
-
-_3:
- {
- p := &_n
- *p = (*p) + _identLength(tls, _p.X0)
- sink1 = *p
+_183:
+_insert_end:
+ if (int32(_pParse.X6) == i32(0)) && ((*XTable)(_pParse.X40) == nil) {
+ _sqlite3AutoincrementEnd(tls, _pParse)
}
- if _n >= i32(50) {
- goto _4
+ if (((_db.X6)&i32(128)) != 0 && ((_pParse.X6) == 0)) && ((*XTable)(_pParse.X40) == nil) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), _regRowCount, i32(1))
+ _sqlite3VdbeSetNumCols(tls, _v, i32(1))
+ _sqlite3VdbeSetColName(tls, _v, i32(0), i32(0), str(118507), nil)
}
+_insert_cleanup:
+ _sqlite3SrcListDelete(tls, _db, _pTabList)
+ _sqlite3ExprListDelete(tls, _db, _pList)
+ _sqlite3SelectDelete(tls, _db, _pSelect)
+ _sqlite3IdListDelete(tls, _db, _pColumn)
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_aRegIdx))
+ _ = _dest
+ _ = _21_sNC
+}
- _zSep = str(196)
- _zSep2 = str(112580)
- _zEnd = str(38624)
- goto _5
-
-_4:
- _zSep = str(118984)
- _zSep2 = str(118988)
- _zEnd = str(118996)
-_5:
- {
- p := &_n
- *p = (*p) + (i32(35) + (i32(6) * int32(_p.X11)))
- sink1 = *p
+var _sqlite3InsertØ00__func__Ø000 [14]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3InsertØ00__func__Ø000[0], str(118521), 14)
+}
+
+// Attempt the transfer optimization on INSERTs of the form
+//
+// INSERT INTO tab1 SELECT * FROM tab2;
+//
+// The xfer optimization transfers raw records from tab2 over to tab1.
+// Columns are not decoded and reassembled, which greatly improves
+// performance. Raw index records are transferred in the same way.
+//
+// The xfer optimization is only attempted if tab1 and tab2 are compatible.
+// There are lots of rules for determining compatibility - see comments
+// embedded in the code for details.
+//
+// This routine returns TRUE if the optimization is guaranteed to be used.
+// Sometimes the xfer optimization will only work if the destination table
+// is empty - a factor that can only be determined at run-time. In that
+// case, this routine generates code for the xfer optimization but also
+// does a test to see if the destination table is empty and jumps over the
+// xfer optimization code if the test fails. In that case, this routine
+// returns FALSE so that the caller will know to go ahead and generate
+// an unoptimized transfer. This routine also returns FALSE if there
+// is no chance that the xfer optimization can be applied.
+//
+// This optimization is particularly useful at making VACUUM run faster.
+func _xferOptimization(tls *crt.TLS, _pParse *XParse, _pDest *XTable, _pSelect *XSelect, _onError int32, _iDbDest int32) (r0 int32) {
+ var _i, _iDbSrc, _iSrc, _iDest, _addr1, _addr2, _emptyDestTest, _emptySrcTest, _regAutoinc, _destHasUniqueIdx, _regData, _regRowid int32
+ var _47_zColl *int8
+ var _37_insFlags, _44_idxInsFlags uint8
+ var _db *Xsqlite3
+ var _pSrc *XTable
+ var _v *TVdbe
+ var _pItem *TSrcList_item
+ var _pEList *XExprList
+ var _23_pDestCol, _23_pSrcCol *XColumn
+ var _pSrcIdx, _pDestIdx *XIndex
+ _db = (*Xsqlite3)(_pParse.X0)
+ _emptyDestTest = i32(0)
+ _emptySrcTest = i32(0)
+ _destHasUniqueIdx = i32(0)
+ if _pSelect == nil {
+ return i32(0)
}
- _zStmt = (*int8)(_sqlite3DbMallocRaw(tls, nil, uint64(_n)))
- if _zStmt != nil {
- goto _6
+ if ((*XWith)(_pParse.X70) != nil) || ((*XWith)(_pSelect.X17) != nil) {
+ return i32(0)
}
-
- _sqlite3OomFault(tls, _db)
- return nil
-
-_6:
- Xsqlite3_snprintf(tls, _n, _zStmt, str(119000))
- _k = _sqlite3Strlen30(tls, _zStmt)
- _identPut(tls, _zStmt, &_k, _p.X0)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt)) + 1*uintptr(postInc1(&_k, int32(1))))) = int8(i32(40))
- *func() *int32 { _pCol = (*XColumn)(_p.X1); return &_i }() = i32(0)
-_7:
- if _i >= int32(_p.X11) {
- goto _10
+ if _sqlite3TriggerList(tls, _pParse, _pDest) != nil {
+ return i32(0)
}
-
- Xsqlite3_snprintf(tls, _n-_k, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k))), _zSep)
- {
- p := &_k
- *p = (*p) + _sqlite3Strlen30(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k))))
- sink1 = *p
+ if (_pDest.X16) != 0 {
+ return i32(0)
}
- _zSep = _zSep2
- _identPut(tls, _zStmt, &_k, _pCol.X0)
+ if _onError != i32(10) {
+ goto _5
+ }
+ if int32(_pDest.X10) >= i32(0) {
+ _onError = int32(_pDest.X14)
+ }
+ if _onError == i32(10) {
+ _onError = i32(2)
+ }
+_5:
func() {
- if (int32(_pCol.X4) - i32(65)) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101276), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(119016)))
+ if (*XSrcList)(_pSelect.X8) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110825), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118535)))
crt.X__builtin_abort(tls)
}
}()
+ if ((*XSrcList)(_pSelect.X8).X0) != i32(1) {
+ return i32(0)
+ }
+ if (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pSelect.X8)+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X5) != nil {
+ return i32(0)
+ }
+ if (*XExpr)(_pSelect.X9) != nil {
+ return i32(0)
+ }
+ if (*XExprList)(_pSelect.X12) != nil {
+ return i32(0)
+ }
+ if (*XExprList)(_pSelect.X10) != nil {
+ return i32(0)
+ }
+ if (*XExpr)(_pSelect.X15) != nil {
+ return i32(0)
+ }
func() {
- if (int32(_pCol.X4) - i32(65)) >= i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101277), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(119052)))
+ if (*XExpr)(_pSelect.X16) != nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110846), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118549)))
crt.X__builtin_abort(tls)
}
}()
- _5_zType = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_createTableStmtØ00azTypeØ001)) + 4*uintptr(int32(_pCol.X4)-i32(65))))
- _5_len = _sqlite3Strlen30(tls, _5_zType)
+ if (*XSelect)(_pSelect.X13) != nil {
+ return i32(0)
+ }
+ if ((_pSelect.X3) & uint32(i32(1))) != 0 {
+ return i32(0)
+ }
+ _pEList = (*XExprList)(_pSelect.X0)
func() {
- if int32(_pCol.X4) != i32(65) && int32(_pCol.X4) != int32(_sqlite3AffinityType(tls, _5_zType, nil)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101286), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(119104)))
+ if _pEList == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110854), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(45052)))
crt.X__builtin_abort(tls)
}
}()
- crt.Xmemcpy(tls, (unsafe.Pointer)((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k)))), (unsafe.Pointer)(_5_zType), uint32(_5_len))
- {
- p := &_k
- *p = (*p) + _5_len
- sink1 = *p
+ if (_pEList.X0) != i32(1) {
+ return i32(0)
}
func() {
- if _k > _n {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101290), unsafe.Pointer((*int8)(unsafe.Pointer(&_createTableStmtØ00__func__Ø000))), unsafe.Pointer(str(119188)))
+ if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110858), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118569)))
crt.X__builtin_abort(tls)
}
}()
- *(*uintptr)(unsafe.Pointer(func() **XColumn { _i += 1; return &_pCol }())) += uintptr(16)
- goto _7
-
-_10:
- Xsqlite3_snprintf(tls, _n-_k, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zStmt))+1*uintptr(_k))), str(24316), unsafe.Pointer(_zEnd))
- return _zStmt
-}
-
-func _identLength(tls *crt.TLS, _z *int8) (r0 int32) { // sqlite3.c:101183:1
- var _n int32 // sqlite3.c:101184:7
- _ = _n
- _n = i32(0)
-_0:
- if (*_z) == 0 {
- goto _3
+ if int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0).X0) != i32(161) {
+ return i32(0)
}
-
- if int32(*_z) != i32(34) {
- goto _4
+ _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pSelect.X8) + uintptr(8 /* X2 */)))))
+ _pSrc = _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), _pItem)
+ if _pSrc == nil {
+ return i32(0)
}
-
- _n += 1
-_4:
- *(*uintptr)(unsafe.Pointer(func() **int8 { _n += 1; return &_z }())) += uintptr(1)
- goto _0
-
-_3:
- return _n + i32(2)
-}
-
-func _identPut(tls *crt.TLS, _z *int8, _pIdx *int32, _zSignedIdent *int8) { // sqlite3.c:101204:1
- var _zIdent *uint8 // sqlite3.c:101205:17
- _ = _zIdent
- var _i int32 // sqlite3.c:101206:7
- _ = _i
- var _j int32 // sqlite3.c:101206:10
- _ = _j
- var _needQuote int32 // sqlite3.c:101206:13
- _ = _needQuote
- _zIdent = (*uint8)(unsafe.Pointer(_zSignedIdent))
- _i = *_pIdx
- _j = i32(0)
-_0:
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) == 0 {
- goto _3
+ if _pSrc == _pDest {
+ return i32(0)
}
-
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))))))&i32(6)) != 0 || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) == i32(95) {
- goto _5
+ if (((_pDest.X9) & uint32(i32(32))) == uint32(i32(0))) != (((_pSrc.X9) & uint32(i32(32))) == uint32(i32(0))) {
+ return i32(0)
}
-
- goto _3
-
-_5:
- _j += 1
- goto _0
-
-_3:
- _needQuote = bool2int((((int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(i32(0))))))))&i32(4)) != 0 || (_sqlite3KeywordCode(tls, _zIdent, _j) != i32(27))) || (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) != i32(0))) || (_j == i32(0)))
- if _needQuote == 0 {
- goto _9
+ if (_pSrc.X16) != 0 {
+ return i32(0)
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(i32(34))
-_9:
- _j = i32(0)
-_10:
- if (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) == 0 {
- goto _13
+ if (*XSelect)(_pSrc.X3) != nil {
+ return i32(0)
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j))))
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zIdent)) + 1*uintptr(_j)))) != i32(34) {
- goto _14
+ if int32(_pDest.X11) != int32(_pSrc.X11) {
+ return i32(0)
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(i32(34))
-_14:
- _j += 1
- goto _10
-
-_13:
- if _needQuote == 0 {
- goto _15
+ if int32(_pDest.X10) != int32(_pSrc.X10) {
+ return i32(0)
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(postInc1(&_i, int32(1))))) = int8(i32(34))
-_15:
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_i))) = int8(i32(0))
- *_pIdx = _i
-}
-
-func _sqlite3KeywordCode(tls *crt.TLS, _z *uint8, _n int32) (r0 int32) { // sqlite3.c:139602:1
- var _id int32 // sqlite3.c:139603:7
- _ = _id
- _id = i32(27)
- _keywordCode(tls, (*int8)(unsafe.Pointer(_z)), _n, &_id)
- return _id
-}
-
-var _createTableStmtØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_createTableStmtØ00__func__Ø000[0], str(119196), 16)
-}
-
-var _createTableStmtØ00azTypeØ001 [5]*int8 // sqlite3.c:101262:23
-
-func init() {
- _createTableStmtØ00azTypeØ001 = [5]*int8{str(196), str(119212), str(119220), str(119228), str(119236)}
-}
-
-func _sqlite3Utf8CharLen(tls *crt.TLS, _zIn *int8, _nByte int32) (r0 int32) { // sqlite3.c:27506:1
- var _r int32 // sqlite3.c:27507:7
- _ = _r
- var _z *uint8 // sqlite3.c:27508:12
- _ = _z
- var _zTerm *uint8 // sqlite3.c:27509:12
- _ = _zTerm
- _r = i32(0)
- _z = (*uint8)(unsafe.Pointer(_zIn))
- if _nByte < i32(0) {
- goto _0
+ _i = i32(0)
+_33:
+ if _i >= int32(_pDest.X11) {
+ goto _36
+ }
+ _23_pDestCol = (*XColumn)(unsafe.Pointer(uintptr(_pDest.X1) + 16*uintptr(_i)))
+ _23_pSrcCol = (*XColumn)(unsafe.Pointer(uintptr(_pSrc.X1) + 16*uintptr(_i)))
+ if int32(_23_pDestCol.X4) != int32(_23_pSrcCol.X4) {
+ return i32(0)
+ }
+ if Xsqlite3_stricmp(tls, _23_pDestCol.X2, _23_pSrcCol.X2) != i32(0) {
+ return i32(0)
+ }
+ if ((_23_pDestCol.X3) != 0) && ((_23_pSrcCol.X3) == 0) {
+ return i32(0)
+ }
+ if _i <= i32(0) {
+ goto _41
}
-
- _zTerm = (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_nByte)))
- goto _1
-
-_0:
- _zTerm = (*uint8)(unsafe.Pointer(uintptr(u32(4294967295))))
-_1:
func() {
- if uintptr(unsafe.Pointer(_z)) > uintptr(unsafe.Pointer(_zTerm)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(27515), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3Utf8CharLenØ00__func__Ø000))), unsafe.Pointer(str(119244)))
+ if (*XExpr)(_23_pDestCol.X1) != nil && int32((*XExpr)(_23_pDestCol.X1).X0) != i32(162) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110913), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118588)))
crt.X__builtin_abort(tls)
}
}()
-_4:
- if int32(*_z) == i32(0) || uintptr(unsafe.Pointer(_z)) >= uintptr(unsafe.Pointer(_zTerm)) {
- goto _5
+ func() {
+ if (*XExpr)(_23_pSrcCol.X1) != nil && int32((*XExpr)(_23_pSrcCol.X1).X0) != i32(162) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110914), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118639)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (((*XExpr)(_23_pDestCol.X1) == nil) != ((*XExpr)(_23_pSrcCol.X1) == nil)) || (((*XExpr)(_23_pDestCol.X1) != nil) && (crt.Xstrcmp(tls, *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_23_pDestCol.X1) + uintptr(8 /* X3 */))))), *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_23_pSrcCol.X1) + uintptr(8 /* X3 */)))))) != i32(0))) {
+ return i32(0)
}
-
- if int32(*postInc11(&_z, 1)) < i32(192) {
- goto _7
+_41:
+ _i += 1
+ goto _33
+_36:
+ _pDestIdx = (*XIndex)(_pDest.X2)
+_51:
+ if _pDestIdx == nil {
+ goto _54
}
-
-_8:
- if (int32(*_z) & i32(192)) != i32(128) {
- goto _9
+ if int32(_pDestIdx.X15) != i32(0) {
+ _destHasUniqueIdx = i32(1)
}
-
- *(*uintptr)(unsafe.Pointer(&_z)) += uintptr(1)
- goto _8
-
-_9:
-_7:
- _r += 1
- goto _4
-
-_5:
- return _r
-}
-
-var _sqlite3Utf8CharLenØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3Utf8CharLenØ00__func__Ø000[0], str(119256), 19)
-}
-
-func _sqlite3AddColumn(tls *crt.TLS, _pParse *XParse, _pName *XToken, _pType *XToken) { // sqlite3.c:100746:1
- var _p *XTable // sqlite3.c:100747:9
- _ = _p
- var _i int32 // sqlite3.c:100748:7
- _ = _i
- var _z *int8 // sqlite3.c:100749:8
- _ = _z
- var _zType *int8 // sqlite3.c:100750:8
- _ = _zType
- var _pCol *XColumn // sqlite3.c:100751:10
- _ = _pCol
- var _db *Xsqlite3 // sqlite3.c:100752:11
- _ = _db
- var _4_aNew *XColumn // sqlite3.c:100773:12
- _ = _4_aNew
- _db = (*Xsqlite3)(_pParse.X0)
- if store42(&_p, (*XTable)(_pParse.X63)) != nil {
- goto _0
+ _pSrcIdx = (*XIndex)(_pSrc.X2)
+_56:
+ if _pSrcIdx == nil {
+ goto _59
}
- return
-
-_0:
- if (int32(_p.X11) + i32(1)) <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(2))))) {
- goto _1
+ if _xferCompatibleIndex(tls, _pDestIdx, _pSrcIdx) != 0 {
+ goto _59
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(119276), unsafe.Pointer(_p.X0))
- return
-
-_1:
- _z = (*int8)(_sqlite3DbMallocRaw(tls, _db, uint64(((_pName.X1)+(_pType.X1))+uint32(i32(2)))))
- if _z != nil {
- goto _2
+ _pSrcIdx = (*XIndex)(_pSrcIdx.X5)
+ goto _56
+_59:
+ if _pSrcIdx == nil {
+ return i32(0)
}
- return
-
-_2:
- crt.Xmemcpy(tls, (unsafe.Pointer)(_z), (unsafe.Pointer)(_pName.X0), _pName.X1)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_pName.X1))) = int8(i32(0))
- _sqlite3Dequote(tls, _z)
- _i = i32(0)
-_3:
- if _i >= int32(_p.X11) {
- goto _6
+ _pDestIdx = (*XIndex)(_pDestIdx.X5)
+ goto _51
+_54:
+ if ((*XExprList)(_pDest.X6) != nil) && _sqlite3ExprListCompare(tls, (*XExprList)(_pSrc.X6), (*XExprList)(_pDest.X6), i32(-1)) != 0 {
+ return i32(0)
}
-
- if Xsqlite3_stricmp(tls, _z, (*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_i))).X0) != i32(0) {
- goto _7
+ if (((_db.X6) & i32(524288)) != i32(0)) && ((*XFKey)(_pDest.X4) != nil) {
+ return i32(0)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(119300), unsafe.Pointer(_z))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_z))
- return
-
-_7:
- _i += 1
- goto _3
-
-_6:
- if (int32(_p.X11) & i32(7)) != i32(0) {
- goto _8
+ if ((_db.X6) & i32(128)) != i32(0) {
+ return i32(0)
}
-
- _4_aNew = (*XColumn)(_sqlite3DbRealloc(tls, _db, _p.X1, uint64(uint32(int32(_p.X11)+i32(8))*u32(16))))
- if _4_aNew != nil {
- goto _9
+ _iDbSrc = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pSrc.X20))
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDbSrc)
+ _iSrc = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _iDest = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
+ _regAutoinc = _autoIncBegin(tls, _pParse, _iDbDest, _pDest)
+ _regData = _sqlite3GetTempReg(tls, _pParse)
+ _regRowid = _sqlite3GetTempReg(tls, _pParse)
+ _sqlite3OpenTable(tls, _pParse, _iDest, _iDbDest, _pDest, i32(107))
+ func() {
+ if ((_pDest.X9)&uint32(i32(32))) != uint32(i32(0)) && _destHasUniqueIdx == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110971), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118688)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (((_db.X6) & i32(268435456)) == i32(0)) && ((((int32(_pDest.X10) < i32(0)) && ((*XIndex)(_pDest.X2) != nil)) || _destHasUniqueIdx != 0) || ((_onError != i32(2)) && (_onError != i32(1)))) {
+ _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iDest, i32(0))
+ _emptyDestTest = _sqlite3VdbeAddOp0(tls, _v, i32(13))
+ _sqlite3VdbeJumpHere(tls, _v, _addr1)
}
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_z))
- return
-
-_9:
- *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X1 */))))) = _4_aNew
-_8:
- _pCol = (*XColumn)(unsafe.Pointer(uintptr(_p.X1) + 16*uintptr(_p.X11)))
- crt.Xmemset(tls, (unsafe.Pointer)(_pCol), i32(0), u32(16))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(0 /* X0 */))) = _z
- if (_pType.X1) != uint32(i32(0)) {
- goto _10
+ if ((_pSrc.X9) & uint32(i32(32))) != uint32(i32(0)) {
+ goto _76
}
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = int8(i32(65))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(14 /* X5 */))) = uint8(i32(1))
- goto _11
-
-_10:
- _zType = (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(_z))+uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_sqlite3Strlen30(tls, _z)))))))))) + uintptr(unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(i32(1))))))))
- crt.Xmemcpy(tls, (unsafe.Pointer)(_zType), (unsafe.Pointer)(_pType.X0), _pType.X1)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zType)) + 1*uintptr(_pType.X1))) = int8(i32(0))
- _sqlite3Dequote(tls, _zType)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(13 /* X4 */))) = _sqlite3AffinityType(tls, _zType, (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol))+uintptr(14 /* X5 */))))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
- *p = uint8(int32(*p) | i32(4))
- sink2 = *p
+ _sqlite3OpenTable(tls, _pParse, _iSrc, _iDbSrc, _pSrc, i32(106))
+ _emptySrcTest = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iSrc, i32(0))
+ if int32(_pDest.X10) >= i32(0) {
+ _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(125), _iSrc, _regRowid)
+ _addr2 = _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDest, i32(0), _regRowid)
+ _sqlite3RowidConstraint(tls, _pParse, _onError, _pDest)
+ _sqlite3VdbeJumpHere(tls, _v, _addr2)
+ _autoIncStep(tls, _pParse, _regAutoinc, _regRowid)
+ goto _78
}
-_11:
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(42 /* X11 */))) += 1
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(84 /* X28 */))))) + uintptr(4 /* X1 */))) = uint32(i32(0))
-}
-
-func _sqlite3AddDefaultValue(tls *crt.TLS, _pParse *XParse, _pSpan *XExprSpan) { // sqlite3.c:100914:1
- var _p *XTable // sqlite3.c:100915:9
- _ = _p
- var _pCol *XColumn // sqlite3.c:100916:10
- _ = _pCol
- var _db *Xsqlite3 // sqlite3.c:100917:11
- _ = _db
- var _3_x XExpr // sqlite3.c:100929:12
- _ = _3_x
- _db = (*Xsqlite3)(_pParse.X0)
- _p = (*XTable)(_pParse.X63)
- if _p == nil {
- goto _0
+ if (*XIndex)(_pDest.X2) == nil {
+ _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(117), _iDest, _regRowid)
+ goto _80
}
-
- _pCol = (*XColumn)(unsafe.Pointer(uintptr(_p.X1) + 16*uintptr(int32(_p.X11)-i32(1))))
- if _sqlite3ExprIsConstantOrFunction(tls, (*XExpr)(_pSpan.X0), (*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X2) != 0 {
- goto _1
+ _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(125), _iSrc, _regRowid)
+ func() {
+ if ((_pDest.X9) & uint32(i32(8))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(111013), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118724)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+_80:
+_78:
+ _sqlite3VdbeAddOp3(tls, _v, i32(124), _iSrc, _regData, i32(1))
+ if ((_db.X6) & i32(268435456)) != 0 {
+ _sqlite3VdbeAddOp3(tls, _v, i32(33), _iDest, i32(0), i32(-1))
+ _37_insFlags = uint8(i32(57))
+ goto _84
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(119328), unsafe.Pointer(_pCol.X0))
- goto _2
-
-_1:
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_pCol.X1))
- crt.Xmemset(tls, (unsafe.Pointer)(&_3_x), i32(0), u32(48))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(0 /* X0 */))) = uint8(i32(162))
- *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(8 /* X3 */))))) = _sqlite3DbStrNDup(tls, _db, _pSpan.X1, uint64(int32((uintptr(unsafe.Pointer(_pSpan.X2))-uintptr(unsafe.Pointer(_pSpan.X1)))/1)))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(12 /* X4 */))))) = (*XExpr)(_pSpan.X0)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(4 /* X2 */))) = uint32(i32(4096))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(4 /* X1 */))))) = _sqlite3ExprDup(tls, _db, &_3_x, i32(1))
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_x)) + uintptr(8 /* X3 */)))))))
-_2:
-_0:
- _sqlite3ExprDelete(tls, _db, (*XExpr)(_pSpan.X0))
-}
-
-func _sqlite3ExprIsConstantOrFunction(tls *crt.TLS, _p *XExpr, _isInit uint8) (r0 int32) { // sqlite3.c:92782:1
+ _37_insFlags = uint8(i32(41))
+_84:
+ _sqlite3VdbeAddOp4(tls, _v, i32(118), _iDest, _regData, _regRowid, (*int8)(unsafe.Pointer(_pDest)), i32(-15))
+ _sqlite3VdbeChangeP5(tls, _v, uint16(_37_insFlags))
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _iSrc, _addr1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _iSrc, i32(0))
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _iDest, i32(0))
+ goto _85
+_76:
+ _sqlite3TableLock(tls, _pParse, _iDbDest, _pDest.X7, uint8(i32(1)), _pDest.X0)
+ _sqlite3TableLock(tls, _pParse, _iDbSrc, _pSrc.X7, uint8(i32(0)), _pSrc.X0)
+_85:
+ _pDestIdx = (*XIndex)(_pDest.X2)
+_86:
+ if _pDestIdx == nil {
+ goto _89
+ }
+ _44_idxInsFlags = uint8(i32(0))
+ _pSrcIdx = (*XIndex)(_pSrc.X2)
+_90:
+ if func() int32 {
+ if _pSrcIdx != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(111035), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
+ goto _95
+ }
+ if _xferCompatibleIndex(tls, _pDestIdx, _pSrcIdx) != 0 {
+ goto _95
+ }
+ _pSrcIdx = (*XIndex)(_pSrcIdx.X5)
+ goto _90
+_95:
func() {
- if int32(_isInit) != i32(0) && int32(_isInit) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92783), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprIsConstantOrFunctionØ00__func__Ø000))), unsafe.Pointer(str(119376)))
+ if _pSrcIdx == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(111038), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(118764)))
crt.X__builtin_abort(tls)
}
}()
- return _exprIsConst(tls, _p, i32(4)+int32(_isInit), i32(0))
+ _sqlite3VdbeAddOp3(tls, _v, i32(106), _iSrc, _pSrcIdx.X11, _iDbSrc)
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pSrcIdx)
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(_pSrcIdx.X0))
+ _sqlite3VdbeAddOp3(tls, _v, i32(107), _iDest, _pDestIdx.X11, _iDbDest)
+ _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pDestIdx)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)))
+ _sqlite3VdbeComment(tls, _v, str(24576), unsafe.Pointer(_pDestIdx.X0))
+ _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iSrc, i32(0))
+ _sqlite3VdbeAddOp3(tls, _v, i32(124), _iSrc, _regData, i32(1))
+ if ((_db.X6) & i32(268435456)) == 0 {
+ goto _99
+ }
+ _i = i32(0)
+_100:
+ if _i >= int32(_pSrcIdx.X14) {
+ goto _103
+ }
+ _47_zColl = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrcIdx.X8)) + 4*uintptr(_i)))
+ if Xsqlite3_stricmp(tls, (*int8)(unsafe.Pointer(&_sqlite3StrBINARY)), _47_zColl) != 0 {
+ goto _103
+ }
+ _i += 1
+ goto _100
+_103:
+ if _i == int32(_pSrcIdx.X14) {
+ _44_idxInsFlags = uint8(i32(16))
+ _sqlite3VdbeAddOp3(tls, _v, i32(33), _iDest, i32(0), i32(-1))
+ }
+_99:
+ if (((_pSrc.X9) & uint32(i32(32))) != uint32(i32(0))) && (int32((uint32(_pDestIdx.X16)<>uint(i32(30))) == i32(2)) {
+ {
+ p := &_44_idxInsFlags
+ *p = uint8(int32(*p) | i32(1))
+ sink2 = *p
+ }
+ }
+ _sqlite3VdbeAddOp2(tls, _v, i32(128), _iDest, _regData)
+ _sqlite3VdbeChangeP5(tls, _v, uint16(int32(_44_idxInsFlags)|i32(8)))
+ _sqlite3VdbeAddOp2(tls, _v, i32(7), _iSrc, _addr1+i32(1))
+ _sqlite3VdbeJumpHere(tls, _v, _addr1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _iSrc, i32(0))
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _iDest, i32(0))
+ _pDestIdx = (*XIndex)(_pDestIdx.X5)
+ goto _86
+_89:
+ if _emptySrcTest != 0 {
+ _sqlite3VdbeJumpHere(tls, _v, _emptySrcTest)
+ }
+ _sqlite3ReleaseTempReg(tls, _pParse, _regRowid)
+ _sqlite3ReleaseTempReg(tls, _pParse, _regData)
+ if _emptyDestTest != 0 {
+ _sqlite3AutoincrementEnd(tls, _pParse)
+ _sqlite3VdbeAddOp2(tls, _v, i32(55), i32(0), i32(0))
+ _sqlite3VdbeJumpHere(tls, _v, _emptyDestTest)
+ _sqlite3VdbeAddOp2(tls, _v, i32(114), _iDest, i32(0))
+ return i32(0)
+ }
+ return i32(1)
}
-var _sqlite3ExprIsConstantOrFunctionØ00__func__Ø000 [32]int8 // -
+var _xferOptimizationØ00__func__Ø000 [17]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprIsConstantOrFunctionØ00__func__Ø000[0], str(119400), 32)
+ crt.Xstrncpy(nil, &_xferOptimizationØ00__func__Ø000[0], str(118772), 17)
}
-func _spanExpr(tls *crt.TLS, _pOut *XExprSpan, _pParse *XParse, _op int32, _t XToken) { // sqlite3.c:135547:3
- var _p *XExpr // sqlite3.c:135548:10
- _ = _p
- _p = (*XExpr)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64((u32(48)+(_t.X1))+uint32(i32(1)))))
- if _p == nil {
- goto _0
+// Check to see if index pSrc is compatible as a source of data
+// for index pDest in an insert transfer optimization. The rules
+// for a compatible index:
+//
+// * The index is over the same set of columns
+// * The same DESC and ASC markings occurs on all columns
+// * The same onError processing (OE_Abort, OE_Ignore, etc)
+// * The same collating sequence on each column
+// * The index has the exact same WHERE clause
+func _xferCompatibleIndex(tls *crt.TLS, _pDest *XIndex, _pSrc *XIndex) (r0 int32) {
+ var _i int32
+ func() {
+ if _pDest == nil || _pSrc == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110722), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferCompatibleIndexØ00__func__Ø000))), unsafe.Pointer(str(118789)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XTable)(_pDest.X3) == (*XTable)(_pSrc.X3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110723), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferCompatibleIndexØ00__func__Ø000))), unsafe.Pointer(str(118803)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if int32(_pDest.X13) != int32(_pSrc.X13) {
+ return i32(0)
}
-
- crt.Xmemset(tls, (unsafe.Pointer)(_p), i32(0), u32(48))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(0 /* X0 */))) = uint8(_op)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */))) = uint32(i32(8388608))
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(34 /* X10 */))) = int16(i32(-1))
- *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))) = (*int8)(unsafe.Pointer((*XExpr)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + 48*uintptr(i32(1))))))
- crt.Xmemcpy(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */)))))), (unsafe.Pointer)(_t.X0), _t.X1)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))) + 1*uintptr(_t.X1))) = int8(i32(0))
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))))))) & i32(128)) == 0 {
- goto _1
+ if int32(_pDest.X15) != int32(_pSrc.X15) {
+ return i32(0)
}
-
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))) + 1*uintptr(i32(0))))) != i32(34) {
- goto _2
+ _i = i32(0)
+_7:
+ if _i >= int32(_pSrc.X13) {
+ goto _10
}
-
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(4 /* X2 */)))
- *p = (*p) | uint32(i32(64))
- sink5 = *p
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X1)) + 2*uintptr(_i)))) != int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest.X1)) + 2*uintptr(_i)))) {
+ return i32(0)
}
-_2:
- _sqlite3Dequote(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(8 /* X3 */))))))
-_1:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X7 */))) = i32(1)
-_0:
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _p
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(4 /* X1 */))) = _t.X0
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_t.X0)) + 1*uintptr(_t.X1)))
-}
-
-func _sqlite3AddNotNull(tls *crt.TLS, _pParse *XParse, _onError int32) { // sqlite3.c:100809:1
- var _p *XTable // sqlite3.c:100810:9
- _ = _p
- _p = (*XTable)(_pParse.X63)
- if _p != nil && func() int32 {
- if int32(_p.X11) < i32(1) {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(100812), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddNotNullØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X1)) + 2*uintptr(_i)))) != i32(-2) {
+ goto _12
+ }
+ func() {
+ if (*XExprList)(_pSrc.X10) == nil || (*XExprList)(_pDest.X10) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(110735), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferCompatibleIndexØ00__func__Ø000))), unsafe.Pointer(str(118831)))
+ crt.X__builtin_abort(tls)
}
+ }()
+ if _sqlite3ExprCompare(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSrc.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pDest.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), i32(-1)) != i32(0) {
return i32(0)
- }() == 0 {
- goto _3
}
- return
-
-_3:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(int32(_p.X11)-i32(1)))))) + uintptr(12 /* X3 */))) = uint8(_onError)
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(512))
- sink5 = *p
+_12:
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X7)) + 1*uintptr(_i)))) != int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest.X7)) + 1*uintptr(_i)))) {
+ return i32(0)
}
-}
-
-var _sqlite3AddNotNullØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3AddNotNullØ00__func__Ø000[0], str(119432), 18)
-}
-
-func _sqlite3AddPrimaryKey(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _onError int32, _autoInc int32, _sortOrder int32) { // sqlite3.c:100986:1
- var _pTab *XTable // sqlite3.c:100993:9
- _ = _pTab
- var _pCol *XColumn // sqlite3.c:100994:10
- _ = _pCol
- var _iCol int32 // sqlite3.c:100995:7
- _ = _iCol
- var _i int32 // sqlite3.c:100995:18
- _ = _i
- var _nTerm int32 // sqlite3.c:100996:7
- _ = _nTerm
- var _4_pCExpr *XExpr // sqlite3.c:101012:12
- _ = _4_pCExpr
- var _5_zCName *int8 // sqlite3.c:101016:20
- _ = _5_zCName
- _pTab = (*XTable)(_pParse.X63)
- _pCol = nil
- _iCol = i32(-1)
- if _pTab != nil {
- goto _0
+ if Xsqlite3_stricmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X8)) + 4*uintptr(_i))), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest.X8)) + 4*uintptr(_i)))) != i32(0) {
+ return i32(0)
}
+ _i += 1
+ goto _7
+_10:
+ if _sqlite3ExprCompare(tls, (*XExpr)(_pSrc.X9), (*XExpr)(_pDest.X9), i32(-1)) != 0 {
+ return i32(0)
+ }
+ return i32(1)
+}
- goto _primary_key_exit
-
-_0:
- if ((_pTab.X9) & uint32(i32(4))) == 0 {
+var _xferCompatibleIndexØ00__func__Ø000 [20]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_xferCompatibleIndexØ00__func__Ø000[0], str(118871), 20)
+}
+
+// Locate or create an AutoincInfo structure associated with table pTab
+// which is in database iDb. Return the register number for the register
+// that holds the maximum rowid. Return zero if pTab is not an AUTOINCREMENT
+// table. (Also return zero when doing a VACUUM since we do not want to
+// update the AUTOINCREMENT counters during a VACUUM.)
+//
+// There is at most one AutoincInfo structure per table even if the
+// same table is autoincremented multiple times due to inserts within
+// triggers. A new AutoincInfo structure is created if this is the
+// first use of table pTab. On 2nd and subsequent uses, the original
+// AutoincInfo structure is used.
+//
+// Three memory locations are allocated:
+//
+// (1) Register to hold the name of the pTab table.
+// (2) Register to hold the maximum ROWID of pTab.
+// (3) Register to hold the rowid in sqlite_sequence of pTab
+//
+// The 2nd register is the one that is returned. That is all the
+// insert routine needs to know about.
+func _autoIncBegin(tls *crt.TLS, _pParse *XParse, _iDb int32, _pTab *XTable) (r0 int32) {
+ var _memId int32
+ var _1_pToplevel *XParse
+ var _1_pInfo *TAggInfo_func
+ _memId = i32(0)
+ if ((_pTab.X9)&uint32(i32(8))) == uint32(i32(0)) || (((*Xsqlite3)(_pParse.X0).X6)&i32(268435456)) != i32(0) {
goto _1
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(119452), unsafe.Pointer(_pTab.X0))
- goto _primary_key_exit
-
-_1:
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(i32(4))
- sink5 = *p
+ _1_pToplevel = func() *XParse {
+ if (*XParse)(_pParse.X39) != nil {
+ return (*XParse)(_pParse.X39)
+ }
+ return _pParse
+ }()
+ _1_pInfo = (*TAggInfo_func)(_1_pToplevel.X38)
+_4:
+ if (_1_pInfo != nil) && ((*XTable)(_1_pInfo.X1) != _pTab) {
+ _1_pInfo = (*TAggInfo_func)(_1_pInfo.X0)
+ goto _4
}
- if _pList != nil {
- goto _2
+ if _1_pInfo != nil {
+ goto _7
}
-
- _iCol = int32(_pTab.X11) - i32(1)
- _pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol)))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
- *p = uint8(int32(*p) | i32(1))
- sink2 = *p
+ _1_pInfo = (*TAggInfo_func)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(16))))
+ if _1_pInfo == nil {
+ return i32(0)
}
- _nTerm = i32(1)
- goto _3
+ *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(0 /* X0 */))))) = (*TAggInfo_func)(_1_pToplevel.X38)
+ *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel)) + uintptr(128 /* X38 */))))) = _1_pInfo
+ *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(4 /* X1 */))))) = _pTab
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(8 /* X2 */))) = _iDb
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel)) + uintptr(44 /* X18 */))) += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(12 /* X3 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel))+uintptr(44 /* X18 */))), 1)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel)) + uintptr(44 /* X18 */))) += 1
+_7:
+ _memId = _1_pInfo.X3
+_1:
+ return _memId
+}
+// Update the maximum rowid for an autoincrement calculation.
+//
+// This routine should be called when the regRowid register holds a
+// new rowid that is about to be inserted. If that new rowid is
+// larger than the maximum rowid in the memId memory cell, then the
+// memory cell is updated.
+func _autoIncStep(tls *crt.TLS, _pParse *XParse, _memId int32, _regRowid int32) {
+ if _memId > i32(0) {
+ _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(148), _memId, _regRowid)
+ }
+}
+
+// Return non-zero if the table pTab in database iDb or any of its indices
+// have been opened at any point in the VDBE program. This is used to see if
+// a statement of the form "INSERT INTO SELECT ..." can
+// run without using a temporary table for the results of the SELECT.
+func _readsTable(tls *crt.TLS, _p *XParse, _iDb int32, _pTab *XTable) (r0 int32) {
+ var _i, _iEnd, _2_tnum int32
+ var _v *TVdbe
+ var _2_pIndex *XIndex
+ var _1_pOp *XVdbeOp
+ var _pVTab *XVTable
+ _v = _sqlite3GetVdbe(tls, _p)
+ _iEnd = _sqlite3VdbeCurrentAddr(tls, _v)
+ _pVTab = func() *XVTable {
+ if (_pTab.X16) != 0 {
+ return _sqlite3GetVTable(tls, (*Xsqlite3)(_p.X0), _pTab)
+ }
+ return nil
+ }()
+ _i = i32(1)
_2:
- _nTerm = _pList.X0
- _i = i32(0)
-_4:
- if _i >= _nTerm {
- goto _7
+ if _i >= _iEnd {
+ goto _5
}
-
- _4_pCExpr = _sqlite3ExprSkipCollate(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0))
+ _1_pOp = _sqlite3VdbeGetOp(tls, _v, _i)
func() {
- if _4_pCExpr == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101013), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddPrimaryKeyØ00__func__Ø000))), unsafe.Pointer(str(119496)))
+ if _1_pOp == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109010), unsafe.Pointer((*int8)(unsafe.Pointer(&_readsTableØ00__func__Ø000))), unsafe.Pointer(str(109348)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3StringToId(tls, _4_pCExpr)
- if int32(_4_pCExpr.X0) != i32(27) {
- goto _10
+ if int32(_1_pOp.X0) != i32(106) || (_1_pOp.X5) != _iDb {
+ goto _9
}
-
- _5_zCName = *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pCExpr)) + uintptr(8 /* X3 */)))))
- _iCol = i32(0)
+ _2_tnum = _1_pOp.X4
+ if _2_tnum == (_pTab.X7) {
+ return i32(1)
+ }
+ _2_pIndex = (*XIndex)(_pTab.X2)
_11:
- if _iCol >= int32(_pTab.X11) {
+ if _2_pIndex == nil {
goto _14
}
-
- if _sqlite3StrICmp(tls, _5_zCName, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_iCol))).X0) != i32(0) {
- goto _15
- }
-
- _pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol)))
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pCol)) + uintptr(15 /* X6 */)))
- *p = uint8(int32(*p) | i32(1))
- sink2 = *p
+ if _2_tnum == (_2_pIndex.X11) {
+ return i32(1)
}
- goto _14
-
-_15:
- _iCol += 1
+ _2_pIndex = (*XIndex)(_2_pIndex.X5)
goto _11
-
_14:
-_10:
+_9:
+ if (int32(_1_pOp.X0) == i32(158)) && ((*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */)))))) == _pVTab) {
+ func() {
+ if (*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t39)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */)))))) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109025), unsafe.Pointer((*int8)(unsafe.Pointer(&_readsTableØ00__func__Ø000))), unsafe.Pointer(str(118891)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_1_pOp.X1) != i32(-8) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(109026), unsafe.Pointer((*int8)(unsafe.Pointer(&_readsTableØ00__func__Ø000))), unsafe.Pointer(str(72269)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ return i32(1)
+ }
_i += 1
- goto _4
+ goto _2
+_5:
+ return i32(0)
+}
-_7:
-_3:
- if _nTerm != i32(1) || _pCol == nil || _sqlite3StrICmp(tls, _sqlite3ColumnType(tls, _pCol, str(196)), str(25748)) != i32(0) || _sortOrder == i32(1) {
- goto _19
- }
+var _readsTableØ00__func__Ø000 [11]int8
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(40 /* X10 */))) = int16(_iCol)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(48 /* X14 */))) = uint8(_onError)
+func init() {
+ crt.Xstrncpy(nil, &_readsTableØ00__func__Ø000[0], str(118908), 11)
+}
+
+// Generate code that evaluates the given expression and puts the result
+// in register target.
+//
+// Also make a copy of the expression results into another "cache" register
+// and modify the expression so that the next time it is evaluated,
+// the result is a copy of the cache register.
+//
+// This routine is used for expressions that are used multiple
+// times. They are evaluated once and the results of the expression
+// are reused.
+func _sqlite3ExprCodeAndCache(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) {
+ var _iMem int32
+ var _v *TVdbe
+ _v = (*TVdbe)(_pParse.X2)
func() {
- if _autoInc != i32(0) && _autoInc != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101034), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddPrimaryKeyØ00__func__Ø000))), unsafe.Pointer(str(119508)))
+ if _target <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95114), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeAndCacheØ00__func__Ø000))), unsafe.Pointer(str(99594)))
crt.X__builtin_abort(tls)
}
}()
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(36 /* X9 */)))
- *p = (*p) | uint32(_autoInc*i32(8))
- sink5 = *p
- }
- if _pList == nil {
- goto _23
- }
+ func() {
+ if int32(_pExpr.X0) == i32(157) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(95115), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeAndCacheØ00__func__Ø000))), unsafe.Pointer(str(118919)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3ExprCode(tls, _pParse, _pExpr, _target)
+ _iMem = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ _sqlite3VdbeAddOp2(tls, _v, i32(64), _target, _iMem)
+ _exprToRegister(tls, _pExpr, _iMem)
+}
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(410 /* X53 */))) = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(i32(0)))).X3
-_23:
- goto _24
+var _sqlite3ExprCodeAndCacheØ00__func__Ø000 [24]int8
-_19:
- if _autoInc == 0 {
- goto _25
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprCodeAndCacheØ00__func__Ø000[0], str(118942), 24)
+}
+
+// Parse context structure pFrom has just been used to create a sub-vdbe
+// (trigger program). If an error has occurred, transfer error information
+// from pFrom to pTo.
+func _transferParseError(tls *crt.TLS, _pTo *XParse, _pFrom *XParse) {
+ func() {
+ if (_pFrom.X1) != nil && (_pFrom.X16) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123418), unsafe.Pointer((*int8)(unsafe.Pointer(&_transferParseErrorØ00__func__Ø000))), unsafe.Pointer(str(118966)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_pTo.X1) != nil && (_pTo.X16) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123419), unsafe.Pointer((*int8)(unsafe.Pointer(&_transferParseErrorØ00__func__Ø000))), unsafe.Pointer(str(118999)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (_pTo.X16) == i32(0) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(4 /* X1 */))) = _pFrom.X1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(36 /* X16 */))) = _pFrom.X16
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(12 /* X3 */))) = _pFrom.X3
+ goto _7
}
+ _sqlite3DbFree(tls, (*Xsqlite3)(_pFrom.X0), (unsafe.Pointer)(_pFrom.X1))
+_7:
+}
- _sqlite3ErrorMsg(tls, _pParse, str(119536))
- goto _26
+var _transferParseErrorØ00__func__Ø000 [19]int8
-_25:
- _sqlite3CreateIndex(tls, _pParse, nil, nil, nil, _pList, _onError, nil, nil, _sortOrder, i32(0), uint8(i32(2)))
- _pList = nil
-_26:
-_24:
-_primary_key_exit:
- _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _pList)
+func init() {
+ crt.Xstrncpy(nil, &_transferParseErrorØ00__func__Ø000[0], str(119028), 19)
+}
+
+// This function returns a pointer to the array of opcodes associated with
+// the Vdbe passed as the first argument. It is the callers responsibility
+// to arrange for the returned array to be eventually freed using the
+// vdbeFreeOpArray() function.
+//
+// Before returning, *pnOp is set to the number of entries in the returned
+// array. Also, *pnMaxArg is set to the larger of its current value and
+// the number of entries in the Vdbe.apArg[] array required to execute the
+// returned program.
+func _sqlite3VdbeTakeOpArray(tls *crt.TLS, _p *TVdbe, _pnOp *int32, _pnMaxArg *int32) (r0 *XVdbeOp) {
+ var _aOp *XVdbeOp
+ _aOp = (*XVdbeOp)(_p.X17)
+ func() {
+ if _aOp == nil || ((*Xsqlite3)(_p.X0).X17) != 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72108), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeTakeOpArrayØ00__func__Ø000))), unsafe.Pointer(str(119047)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_p.X33) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(72111), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeTakeOpArrayØ00__func__Ø000))), unsafe.Pointer(str(119075)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _resolveP2Values(tls, _p, _pnMaxArg)
+ *_pnOp = _p.X27
+ *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(84 /* X17 */))))) = nil
+ return _aOp
}
-var _sqlite3AddPrimaryKeyØ00__func__Ø000 [21]int8 // -
+var _sqlite3VdbeTakeOpArrayØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3AddPrimaryKeyØ00__func__Ø000[0], str(119592), 21)
+ crt.Xstrncpy(nil, &_sqlite3VdbeTakeOpArrayØ00__func__Ø000[0], str(119103), 23)
}
-func _sqlite3AddCheckConstraint(tls *crt.TLS, _pParse *XParse, _pCheckExpr *XExpr) { // sqlite3.c:101056:1
- var _pTab *XTable // sqlite3.c:101061:9
- _ = _pTab
- var _db *Xsqlite3 // sqlite3.c:101062:11
- _ = _db
- _pTab = (*XTable)(_pParse.X63)
+// Generate code to drop a table.
+func _sqlite3CodeDropTable(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iDb int32, _isView int32) {
+ var _db *Xsqlite3
+ var _pDb *XDb
+ var _pTrigger *XTrigger
+ var _v *TVdbe
_db = (*Xsqlite3)(_pParse.X0)
- if _pTab == nil || (_pParse.X55) != 0 || _sqlite3BtreeIsReadonly(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(144 /* X33 */))).X1))).X1)) != 0 {
- goto _2
+ _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ func() {
+ if _v == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102140), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeDropTableØ00__func__Ø000))), unsafe.Pointer(str(42064)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
+ if (_pTab.X16) != 0 {
+ _sqlite3VdbeAddOp0(tls, _v, i32(155))
}
-
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTab)) + uintptr(24 /* X6 */))))) = _sqlite3ExprListAppend(tls, _pParse, (*XExprList)(_pTab.X6), _pCheckExpr)
- if ((*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(84 /* X28 */))).X1) == 0 {
+ _pTrigger = _sqlite3TriggerList(tls, _pParse, _pTab)
+_3:
+ if _pTrigger != nil {
+ func() {
+ if (*XSchema)(_pTrigger.X6) != (*XSchema)(_pTab.X20) && (*XSchema)(_pTrigger.X6) != (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102155), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeDropTableØ00__func__Ø000))), unsafe.Pointer(str(119126)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3DropTriggerPtr(tls, _pParse, _pTrigger)
+ _pTrigger = (*XTrigger)(_pTrigger.X9)
goto _3
}
-
- _sqlite3ExprListSetName(tls, _pParse, (*XExprList)(_pTab.X6), (*XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(84 /* X28 */))), i32(1))
-_3:
- goto _4
-
-_2:
- _sqlite3ExprDelete(tls, (*Xsqlite3)(_pParse.X0), _pCheckExpr)
-_4:
+ if ((_pTab.X9) & uint32(i32(8))) != 0 {
+ _sqlite3NestedParse(tls, _pParse, str(119200), unsafe.Pointer(_pDb.X0), unsafe.Pointer(_pTab.X0))
+ }
+ _sqlite3NestedParse(tls, _pParse, str(119245), unsafe.Pointer(_pDb.X0), unsafe.Pointer(str(50026)), unsafe.Pointer(_pTab.X0))
+ if (_isView == 0) && ((_pTab.X16) == 0) {
+ _destroyTable(tls, _pParse, _pTab)
+ }
+ if (_pTab.X16) != 0 {
+ _sqlite3VdbeAddOp4(tls, _v, i32(157), _iDb, i32(0), i32(0), _pTab.X0, i32(0))
+ }
+ _sqlite3VdbeAddOp4(tls, _v, i32(141), _iDb, i32(0), i32(0), _pTab.X0, i32(0))
+ _sqlite3ChangeCookie(tls, _pParse, _iDb)
+ _sqliteViewResetAll(tls, _db, _iDb)
}
-func _sqlite3BtreeIsReadonly(tls *crt.TLS, _p *XBtree) (r0 int32) { // sqlite3.c:68869:1
- return bool2int((int32((*XBtShared)(_p.X1).X10) & i32(1)) != i32(0))
+var _sqlite3CodeDropTableØ00__func__Ø000 [21]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3CodeDropTableØ00__func__Ø000[0], str(119301), 21)
}
-func _sqlite3CreateForeignKey(tls *crt.TLS, _pParse *XParse, _pFromCol *XExprList, _pTo *XToken, _pToCol *XExprList, _flags int32) { // sqlite3.c:102320:1
- var _db *Xsqlite3 // sqlite3.c:102327:11
- _ = _db
- var _pFKey *XFKey // sqlite3.c:102329:8
- _ = _pFKey
- var _pNextTo *XFKey // sqlite3.c:102330:8
- _ = _pNextTo
- var _p *XTable // sqlite3.c:102331:9
- _ = _p
- var _nByte int32 // sqlite3.c:102332:7
- _ = _nByte
- var _i int32 // sqlite3.c:102333:7
- _ = _i
- var _nCol int32 // sqlite3.c:102334:7
- _ = _nCol
- var _z *int8 // sqlite3.c:102335:8
- _ = _z
- var _1_iCol int32 // sqlite3.c:102340:9
- _ = _1_iCol
- var _10_j int32 // sqlite3.c:102380:11
- _ = _10_j
- var _15_n int32 // sqlite3.c:102397:11
- _ = _15_n
+// Drop a trigger given a pointer to that trigger.
+func _sqlite3DropTriggerPtr(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger) {
+ var _iDb, _1_code int32
+ var _1_zDb, _1_zTab *int8
+ var _db *Xsqlite3
+ var _pTable *XTable
+ var _v *TVdbe
_db = (*Xsqlite3)(_pParse.X0)
- _pFKey = nil
- _p = (*XTable)(_pParse.X63)
+ _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTrigger.X6))
func() {
- if _pTo == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(119616)))
+ if _iDb < i32(0) || _iDb >= (_db.X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123183), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(21738)))
crt.X__builtin_abort(tls)
}
}()
- if _p != nil && (_pParse.X55) == 0 {
- goto _3
+ _pTable = _tableOfTrigger(tls, _pTrigger)
+ func() {
+ if _pTable == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123185), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(94083)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (*XSchema)(_pTable.X20) != (*XSchema)(_pTrigger.X6) && _iDb != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123186), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(119322)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _1_code = i32(16)
+ _1_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ _1_zTab = func() *int8 {
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ return str(50007)
+ }
+ return str(50026)
+ }()
+ if _iDb == i32(1) {
+ _1_code = i32(14)
}
-
- goto _fk_end
-
-_3:
- if _pFromCol != nil {
- goto _4
+ if _sqlite3AuthCheck(tls, _pParse, _1_code, _pTrigger.X0, _pTable.X0, _1_zDb) != 0 || _sqlite3AuthCheck(tls, _pParse, i32(9), _1_zTab, nil, _1_zDb) != 0 {
+ return
}
-
- _1_iCol = int32(_p.X11) - i32(1)
- if func() int32 {
- if _1_iCol < i32(0) {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102341), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
+ func() {
+ if _pTable == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(123202), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(21956)))
+ crt.X__builtin_abort(tls)
}
- return i32(0)
- }() == 0 {
- goto _7
- }
-
- goto _fk_end
-
-_7:
- if _pToCol == nil || (_pToCol.X0) == i32(1) {
- goto _9
+ }()
+ if store38(&_v, _sqlite3GetVdbe(tls, _pParse)) != nil {
+ _sqlite3NestedParse(tls, _pParse, str(119367), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(50026)), unsafe.Pointer(_pTrigger.X0))
+ _sqlite3ChangeCookie(tls, _pParse, _iDb)
+ _sqlite3VdbeAddOp4(tls, _v, i32(143), _iDb, i32(0), i32(0), _pTrigger.X0, i32(0))
}
+}
- _sqlite3ErrorMsg(tls, _pParse, str(119624), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_1_iCol))).X0), unsafe.Pointer(_pTo))
- goto _fk_end
+var _sqlite3DropTriggerPtrØ00__func__Ø000 [22]int8
-_9:
- _nCol = i32(1)
- goto _10
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3DropTriggerPtrØ00__func__Ø000[0], str(119418), 22)
+}
+// Write VDBE code to erase table pTab and all associated indices on disk.
+// Code to update the sqlite_master tables and internal schema definitions
+// in case a root-page belonging to another table is moved by the btree layer
+// is also added (this can happen with an auto-vacuum database).
+func _destroyTable(tls *crt.TLS, _pParse *XParse, _pTab *XTable) {
+ var _iTab, _iDestroyed, _1_iLargest, _3_iIdx, _6_iDb int32
+ var _1_pIdx *XIndex
+ _iTab = _pTab.X7
+ _iDestroyed = i32(0)
+_0:
+ _1_iLargest = i32(0)
+ if (_iDestroyed == i32(0)) || (_iTab < _iDestroyed) {
+ _1_iLargest = _iTab
+ }
+ _1_pIdx = (*XIndex)(_pTab.X2)
_4:
- if _pToCol == nil || (_pToCol.X0) == (_pFromCol.X0) {
- goto _12
+ if _1_pIdx == nil {
+ goto _7
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(119688))
- goto _fk_end
-
-_12:
- _nCol = _pFromCol.X0
-_10:
- _nByte = int32(((u32(44) + (uint32(_nCol-i32(1)) * u32(8))) + (_pTo.X1)) + uint32(i32(1)))
- if _pToCol == nil {
- goto _14
+ _3_iIdx = _1_pIdx.X11
+ func() {
+ if (*XSchema)(_1_pIdx.X6) != (*XSchema)(_pTab.X20) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102089), unsafe.Pointer((*int8)(unsafe.Pointer(&_destroyTableØ00__func__Ø000))), unsafe.Pointer(str(115137)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if ((_iDestroyed == i32(0)) || (_3_iIdx < _iDestroyed)) && (_3_iIdx > _1_iLargest) {
+ _1_iLargest = _3_iIdx
}
-
- _i = i32(0)
-_15:
- if _i >= (_pToCol.X0) {
- goto _18
+ _1_pIdx = (*XIndex)(_1_pIdx.X5)
+ goto _4
+_7:
+ if _1_iLargest == i32(0) {
+ return
}
+ _6_iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTab.X20))
+ func() {
+ if _6_iDb < i32(0) || _6_iDb >= ((*Xsqlite3)(_pParse.X0).X5) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102098), unsafe.Pointer((*int8)(unsafe.Pointer(&_destroyTableØ00__func__Ø000))), unsafe.Pointer(str(102338)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _destroyRootPage(tls, _pParse, _1_iLargest, _6_iDb)
+ _iDestroyed = _1_iLargest
+ goto _0
+}
- {
- p := &_nByte
- *p = (*p) + (_sqlite3Strlen30(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) + i32(1))
- sink1 = *p
- }
- _i += 1
- goto _15
+var _destroyTableØ00__func__Ø000 [13]int8
-_18:
-_14:
- _pFKey = (*XFKey)(_sqlite3DbMallocZero(tls, _db, uint64(_nByte)))
- if _pFKey != nil {
- goto _19
- }
+func init() {
+ crt.Xstrncpy(nil, &_destroyTableØ00__func__Ø000[0], str(119440), 13)
+}
- goto _fk_end
+func _destroyRootPage(tls *crt.TLS, _pParse *XParse, _iTable int32, _iDb int32) {
+ var _r1 int32
+ var _v *TVdbe
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ _r1 = _sqlite3GetTempReg(tls, _pParse)
+ func() {
+ if _iTable <= i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(102026), unsafe.Pointer((*int8)(unsafe.Pointer(&_destroyRootPageØ00__func__Ø000))), unsafe.Pointer(str(119453)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3VdbeAddOp3(tls, _v, i32(133), _iTable, _r1, _iDb)
+ _sqlite3MayAbort(tls, _pParse)
+ _sqlite3NestedParse(tls, _pParse, str(119462), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(50026)), _iTable, _r1, _r1)
+ _sqlite3ReleaseTempReg(tls, _pParse, _r1)
+}
-_19:
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(0 /* X0 */))))) = _p
- *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(4 /* X1 */))))) = (*XFKey)(_p.X4)
- _z = (*int8)(unsafe.Pointer((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_nCol)))))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(8 /* X2 */))) = _z
- crt.Xmemcpy(tls, (unsafe.Pointer)(_z), (unsafe.Pointer)(_pTo.X0), _pTo.X1)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_pTo.X1))) = int8(i32(0))
- _sqlite3Dequote(tls, _z)
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr((_pTo.X1)+uint32(i32(1)))))
- sink0 = *p
- }
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(20 /* X5 */))) = _nCol
- if _pFromCol != nil {
- goto _20
- }
+var _destroyRootPageØ00__func__Ø000 [16]int8
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(i32(0)))))) + uintptr(0 /* X0 */))) = int32(_p.X11) - i32(1)
- goto _21
+func init() {
+ crt.Xstrncpy(nil, &_destroyRootPageØ00__func__Ø000[0], str(119518), 16)
+}
-_20:
- _i = i32(0)
-_22:
- if _i >= _nCol {
- goto _25
+// Clear the column names from every VIEW in database idx.
+func _sqliteViewResetAll(tls *crt.TLS, _db *Xsqlite3, _idx int32) {
+ var _i *XHashElem
+ var _1_pTab *XTable
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _idx, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101959), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqliteViewResetAllØ00__func__Ø000))), unsafe.Pointer(str(119534)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if (int32((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_idx))).X4).X9) & i32(2)) != i32(2) {
+ return
}
-
- _10_j = i32(0)
-_26:
- if _10_j >= int32(_p.X11) {
- goto _29
+ _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_idx))).X4) + uintptr(8 /* X2 */))).X2)
+_3:
+ if _i == nil {
+ goto _6
}
-
- if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_10_j))).X0, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFromCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) != i32(0) {
- goto _30
+ _1_pTab = (*XTable)(_i.X2)
+ if (*XSelect)(_1_pTab.X3) != nil {
+ _sqlite3DeleteColumnNames(tls, _db, _1_pTab)
+ *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(4 /* X1 */))))) = nil
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(42 /* X11 */))) = int16(i32(0))
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(_i))))) + uintptr(0 /* X0 */))) = _10_j
- goto _29
-
-_30:
- _10_j += 1
- goto _26
-
-_29:
- if _10_j < int32(_p.X11) {
- goto _31
+ _i = (*XHashElem)(_i.X0)
+ goto _3
+_6:
+ {
+ p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_idx))).X4) + uintptr(78 /* X9 */)))
+ *p = uint16(int32(*p) & i32(-3))
+ sink14 = *p
}
+}
- _sqlite3ErrorMsg(tls, _pParse, str(119784), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFromCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1))
- goto _fk_end
+var _sqliteViewResetAllØ00__func__Ø000 [19]int8
-_31:
- _i += 1
- goto _22
+func init() {
+ crt.Xstrncpy(nil, &_sqliteViewResetAllØ00__func__Ø000[0], str(119569), 19)
+}
-_25:
-_21:
- if _pToCol == nil {
- goto _32
+// The parser calls this routine in order to create a new VIEW
+func _sqlite3CreateView(tls *crt.TLS, _pParse *XParse, _pBegin *XToken, _pName1 *XToken, _pName2 *XToken, _pCNames *XExprList, _pSelect *XSelect, _isTemp int32, _noErr int32) {
+ var _n, _iDb int32
+ var _z *int8
+ var _sEnd XToken
+ var _db *Xsqlite3
+ var _p *XTable
+ var _pName *XToken
+ var _sFix XDbFixer
+ _pName = nil
+ _db = (*Xsqlite3)(_pParse.X0)
+ if int32(_pParse.X52) > i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(119588))
+ goto _create_view_fail
}
-
- _i = i32(0)
-_33:
- if _i >= _nCol {
- goto _36
+ _sqlite3StartTable(tls, _pParse, _pName1, _pName2, _isTemp, i32(1), i32(0), _noErr)
+ _p = (*XTable)(_pParse.X63)
+ if (_p == nil) || (_pParse.X16) != 0 {
+ goto _create_view_fail
}
-
- _15_n = _sqlite3Strlen30(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = _z
- crt.Xmemcpy(tls, (unsafe.Pointer)(_z), (unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToCol))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1), uint32(_15_n))
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_15_n))) = int8(i32(0))
- {
- p := &_z
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_15_n+i32(1))))
- sink0 = *p
+ _sqlite3TwoPartName(tls, _pParse, _pName1, _pName2, &_pName)
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_p.X20))
+ _sqlite3FixInit(tls, &_sFix, _pParse, _iDb, str(111821), _pName)
+ if _sqlite3FixSelect(tls, &_sFix, _pSelect) != 0 {
+ goto _create_view_fail
}
- _i += 1
- goto _33
-
-_36:
-_32:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(24 /* X6 */))) = uint8(i32(0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(0)))) = uint8(_flags & i32(255))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(1)))) = uint8((_flags >> uint(i32(8))) & i32(255))
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = _sqlite3SelectDup(tls, _db, _pSelect, i32(1))
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))))) = _sqlite3ExprListDup(tls, _db, _pCNames, i32(1))
+ if (_db.X17) != 0 {
+ goto _create_view_fail
+ }
+ _sEnd = _pParse.X51
func() {
- if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_p.X20)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102408), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(119832)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sEnd.X0)) + 1*uintptr(i32(0))))) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateViewØ00__func__Ø000))), unsafe.Pointer(str(119624)))
crt.X__builtin_abort(tls)
}
}()
- _pNextTo = (*XFKey)(_sqlite3HashInsert(tls, (*XHash)(unsafe.Pointer(uintptr(_p.X20)+uintptr(56 /* X5 */))), _pFKey.X2, (unsafe.Pointer)(_pFKey)))
- if _pNextTo != _pFKey {
- goto _39
- }
-
- _sqlite3OomFault(tls, _db)
- goto _fk_end
-
-_39:
- if _pNextTo == nil {
- goto _40
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sEnd.X0)) + 1*uintptr(i32(0))))) != i32(59) {
+ {
+ p := (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(0 /* X0 */)))
+ *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sEnd.X1)))
+ sink0 = *p
+ }
}
-
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(4 /* X1 */))) = uint32(i32(0))
+ _n = int32((uintptr(unsafe.Pointer(_sEnd.X0)) - uintptr(unsafe.Pointer(_pBegin.X0))) / 1)
func() {
- if (*XFKey)(_pNextTo.X4) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102417), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(119876)))
+ if _n <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(101821), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateViewØ00__func__Ø000))), unsafe.Pointer(str(1358)))
crt.X__builtin_abort(tls)
}
}()
- *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(12 /* X3 */))))) = _pNextTo
- *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNextTo)) + uintptr(16 /* X4 */))))) = _pFKey
-_40:
- *(**XFKey)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(16 /* X4 */))))) = _pFKey
- _pFKey = nil
-_fk_end:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pFKey))
- _sqlite3ExprListDelete(tls, _db, _pFromCol)
- _sqlite3ExprListDelete(tls, _db, _pToCol)
+ _z = _pBegin.X0
+_10:
+ if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))))))) & i32(1)) != 0 {
+ _n -= 1
+ goto _10
+ }
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(4 /* X1 */))) = uint32(i32(1))
+ _sqlite3EndTable(tls, _pParse, nil, &_sEnd, uint8(i32(0)), nil)
+_create_view_fail:
+ _sqlite3SelectDelete(tls, _db, _pSelect)
+ _sqlite3ExprListDelete(tls, _db, _pCNames)
+ _ = _sEnd
+ _ = _sFix
}
-var _sqlite3CreateForeignKeyØ00__func__Ø000 [24]int8 // -
+var _sqlite3CreateViewØ00__func__Ø000 [18]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3CreateForeignKeyØ00__func__Ø000[0], str(119896), 24)
+ crt.Xstrncpy(nil, &_sqlite3CreateViewØ00__func__Ø000[0], str(119637), 18)
}
-func _sqlite3DeferForeignKey(tls *crt.TLS, _pParse *XParse, _isDeferred int32) { // sqlite3.c:102441:1
- var _pTab *XTable // sqlite3.c:102443:9
- _ = _pTab
- var _pFKey *XFKey // sqlite3.c:102444:8
- _ = _pFKey
- if store42(&_pTab, (*XTable)(_pParse.X63)) != nil && store73(&_pFKey, (*XFKey)(_pTab.X4)) != nil {
- goto _1
+func _parserDoubleLinkSelect(tls *crt.TLS, _pParse *XParse, _p *XSelect) {
+ var _1_mxSelect, _1_cnt int32
+ var _1_pNext, _1_pLoop *XSelect
+ if (*XSelect)(_p.X13) == nil {
+ goto _0
}
- return
-
+ _1_pNext = nil
+ _1_cnt = i32(0)
+ _1_pLoop = _p
_1:
- func() {
- if _isDeferred != i32(0) && _isDeferred != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102446), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeferForeignKeyØ00__func__Ø000))), unsafe.Pointer(str(119920)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey)) + uintptr(24 /* X6 */))) = uint8(_isDeferred)
+ if _1_pLoop == nil {
+ goto _4
+ }
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop)) + uintptr(64 /* X14 */))))) = _1_pNext
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop)) + uintptr(8 /* X3 */)))
+ *p = (*p) | uint32(i32(256))
+ sink5 = *p
+ }
+ *func() *int32 {
+ *func() **XSelect { _1_pNext = _1_pLoop; return &_1_pLoop }() = (*XSelect)(_1_pLoop.X13)
+ return &_1_cnt
+ }() += 1
+ goto _1
+_4:
+ if ((((_p.X3) & uint32(i32(1024))) == uint32(i32(0))) && (store1(&_1_mxSelect, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(4))))) > i32(0))) && (_1_cnt > _1_mxSelect) {
+ _sqlite3ErrorMsg(tls, _pParse, str(119655))
+ }
+_0:
}
-var _sqlite3DeferForeignKeyØ00__func__Ø000 [23]int8 // -
+var _yy_reduceØ00__func__Ø000 [10]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3DeferForeignKeyØ00__func__Ø000[0], str(119952), 23)
+ crt.Xstrncpy(nil, &_yy_reduceØ00__func__Ø000[0], str(119689), 10)
}
-func _sqlite3AddCollateType(tls *crt.TLS, _pParse *XParse, _pToken *XToken) { // sqlite3.c:101081:1
- var _p *XTable // sqlite3.c:101082:9
- _ = _p
- var _i int32 // sqlite3.c:101083:7
- _ = _i
- var _zColl *int8 // sqlite3.c:101084:8
- _ = _zColl
- var _db *Xsqlite3 // sqlite3.c:101085:11
- _ = _db
- var _1_pIdx *XIndex // sqlite3.c:101094:11
- _ = _1_pIdx
- if store42(&_p, (*XTable)(_pParse.X63)) != nil {
- goto _0
- }
- return
-
-_0:
- _i = int32(_p.X11) - i32(1)
+// Set the ExprList.a[].zSpan element of the most recently added item
+// on the expression list.
+//
+// pList might be NULL following an OOM error. But pSpan should never be
+// NULL. If a memory allocation fails, the pParse->db->mallocFailed flag
+// is set.
+func _sqlite3ExprListSetSpan(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pSpan *XExprSpan) {
+ var _db *Xsqlite3
+ var _1_pItem *TExprList_item
_db = (*Xsqlite3)(_pParse.X0)
- _zColl = _sqlite3NameFromToken(tls, _db, _pToken)
- if _zColl != nil {
- goto _1
- }
- return
-
-_1:
- if _sqlite3LocateCollSeq(tls, _pParse, _zColl) == nil {
- goto _2
- }
-
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_i))).X2))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XColumn)(unsafe.Pointer(uintptr(_p.X1)+16*uintptr(_i))))) + uintptr(8 /* X2 */))) = _zColl
- _1_pIdx = (*XIndex)(_p.X2)
-_3:
- if _1_pIdx == nil {
- goto _6
- }
-
func() {
- if int32(_1_pIdx.X13) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101103), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AddCollateTypeØ00__func__Ø000))), unsafe.Pointer(str(119976)))
+ if _pList == nil && int32(_db.X17) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92521), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSpanØ00__func__Ø000))), unsafe.Pointer(str(119699)))
crt.X__builtin_abort(tls)
}
}()
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X1)) + 2*uintptr(i32(0))))) != _i {
- goto _9
+ if _pList != nil {
+ _1_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr((_pList.X0)-i32(1))))
+ func() {
+ if (_pList.X0) <= i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92524), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSpanØ00__func__Ø000))), unsafe.Pointer(str(21335)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if (_db.X17) == 0 && (*XExpr)(_1_pItem.X0) != (*XExpr)(_pSpan.X0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92525), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSpanØ00__func__Ø000))), unsafe.Pointer(str(119731)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pItem.X2))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(8 /* X2 */))) = _sqlite3DbStrNDup(tls, _db, _pSpan.X1, uint64(int32((uintptr(unsafe.Pointer(_pSpan.X2))-uintptr(unsafe.Pointer(_pSpan.X1)))/1)))
}
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X8)) + 4*uintptr(i32(0)))) = (*XColumn)(unsafe.Pointer(uintptr(_p.X1) + 16*uintptr(_i))).X2
-_9:
- _1_pIdx = (*XIndex)(_1_pIdx.X5)
- goto _3
-
-_6:
- goto _10
-
-_2:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_zColl))
-_10:
}
-var _sqlite3AddCollateTypeØ00__func__Ø000 [22]int8 // -
+var _sqlite3ExprListSetSpanØ00__func__Ø000 [23]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3AddCollateTypeØ00__func__Ø000[0], str(119996), 22)
+ crt.Xstrncpy(nil, &_sqlite3ExprListSetSpanØ00__func__Ø000[0], str(119778), 23)
}
-func _sqlite3DropTable(tls *crt.TLS, _pParse *XParse, _pName *XSrcList, _isView int32, _noErr int32) { // sqlite3.c:102204:1
- var _pTab *XTable // sqlite3.c:102205:9
- _ = _pTab
- var _v *TVdbe // sqlite3.c:102206:8
- _ = _v
- var _db *Xsqlite3 // sqlite3.c:102207:11
- _ = _db
- var _iDb int32 // sqlite3.c:102208:7
- _ = _iDb
- var _4_code int32 // sqlite3.c:102236:9
- _ = _4_code
- var _4_zTab *int8 // sqlite3.c:102237:16
- _ = _4_zTab
- var _4_zDb *int8 // sqlite3.c:102238:16
- _ = _4_zDb
- var _4_zArg2 *int8 // sqlite3.c:102239:16
- _ = _4_zArg2
- _db = (*Xsqlite3)(_pParse.X0)
- if (_db.X17) == 0 {
+// When building up a FROM clause in the parser, the join operator
+// is initially attached to the left operand. But the code generator
+// expects the join operator to be on the right operand. This routine
+// Shifts all join operators from left to right for an entire FROM
+// clause.
+//
+// Example: Suppose the join is like this:
+//
+// A natural cross join B
+//
+// The operator is "natural cross join". The A and B operands are stored
+// in p->a[0] and p->a[1], respectively. The parser initially stores the
+// operator with A. This routine shifts that operator over to B.
+func _sqlite3SrcListShiftJoinType(tls *crt.TLS, _p *XSrcList) {
+ var _1_i int32
+ if _p == nil {
goto _0
}
-
- goto _exit_drop_table
-
+ _1_i = (_p.X0) - i32(1)
+_1:
+ if _1_i <= i32(0) {
+ goto _4
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i)))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = (*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i-i32(1)))))) + uintptr(36 /* X9 */))).X0
+ _1_i -= 1
+ goto _1
+_4:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0))))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = uint8(i32(0))
_0:
+}
+
+// Add an INDEXED BY or NOT INDEXED clause to the most recently added
+// element of the source-list passed as the second argument.
+func _sqlite3SrcListIndexedBy(tls *crt.TLS, _pParse *XParse, _p *XSrcList, _pIndexedBy *XToken) {
+ var _1_pItem *TSrcList_item
func() {
- if (_pParse.X16) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102213), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(117456)))
+ if _pIndexedBy == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListIndexedByØ00__func__Ø000))), unsafe.Pointer(str(119801)))
crt.X__builtin_abort(tls)
}
}()
- func() {
- if (_pName.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102214), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(120020)))
- crt.X__builtin_abort(tls)
+ if _p == nil || func() int32 {
+ if (_p.X0) > i32(0) {
+ return i32(1)
}
- }()
- if _sqlite3ReadSchema(tls, _pParse) == 0 {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103577), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListIndexedByØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() == 0 {
goto _5
}
-
- goto _exit_drop_table
-
-_5:
- if _noErr == 0 {
- goto _6
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) += 1
-_6:
+ _1_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 68*uintptr((_p.X0)-i32(1))))
func() {
- if _isView != i32(0) && _isView != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102217), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(120036)))
+ if int32((uint32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */))).X1)<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103579), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListIndexedByØ00__func__Ø000))), unsafe.Pointer(str(119815)))
crt.X__builtin_abort(tls)
}
}()
- _pTab = _sqlite3LocateTableItem(tls, _pParse, uint32(_isView), (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))
- if _noErr == 0 {
- goto _10
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(69 /* X21 */))) -= 1
-_10:
- if _pTab != nil {
- goto _11
- }
-
- if _noErr == 0 {
- goto _12
- }
-
- _sqlite3CodeVerifyNamedSchema(tls, _pParse, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X1)
-_12:
- goto _exit_drop_table
-
-_11:
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
func() {
- if _iDb < i32(0) || _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102226), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTableØ00__func__Ø000))), unsafe.Pointer(str(21312)))
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1)))<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103580), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListIndexedByØ00__func__Ø000))), unsafe.Pointer(str(119839)))
crt.X__builtin_abort(tls)
}
}()
- if (_pTab.X16) == 0 || _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) == 0 {
- goto _17
- }
-
- goto _exit_drop_table
-
-_17:
- _4_zTab = func() *int8 {
- if i32(1) != 0 && (_iDb == i32(1)) {
- return str(51596)
+ func() {
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103581), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListIndexedByØ00__func__Ø000))), unsafe.Pointer(str(119864)))
+ crt.X__builtin_abort(tls)
}
- return str(51616)
}()
- _4_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- _4_zArg2 = nil
- if _sqlite3AuthCheck(tls, _pParse, i32(9), _4_zTab, nil, _4_zDb) == 0 {
- goto _21
- }
-
- goto _exit_drop_table
-
-_21:
- if _isView == 0 {
- goto _22
- }
-
- if i32(1) == 0 || _iDb != i32(1) {
- goto _24
+ if ((_pIndexedBy.X1) == uint32(i32(1))) && ((_pIndexedBy.X0) == nil) {
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(1)), 1, 0)
+ goto _14
}
+ *(**int8)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(60 /* X15 */))))) = _sqlite3NameFromToken(tls, (*Xsqlite3)(_pParse.X0), _pIndexedBy)
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(bool2int((*(**int8)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(60 /* X15 */)))))) != nil)), 2, 1)
+_14:
+_5:
+}
- _4_code = i32(15)
- goto _25
+var _sqlite3SrcListIndexedByØ00__func__Ø000 [24]int8
-_24:
- _4_code = i32(17)
-_25:
- goto _26
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3SrcListIndexedByØ00__func__Ø000[0], str(119887), 24)
+}
-_22:
- if (_pTab.X16) == 0 {
- goto _27
+// Add the list of function arguments to the SrcList entry for a
+// table-valued-function.
+func _sqlite3SrcListFuncArgs(tls *crt.TLS, _pParse *XParse, _p *XSrcList, _pList *XExprList) {
+ var _1_pItem *TSrcList_item
+ if _p != nil {
+ _1_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 68*uintptr((_p.X0)-i32(1))))
+ func() {
+ if int32((uint32((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */))).X1)<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103600), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListFuncArgsØ00__func__Ø000))), unsafe.Pointer(str(119815)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(1)))<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103601), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListFuncArgsØ00__func__Ø000))), unsafe.Pointer(str(119839)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32((uint32(((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */))).X1)>>uint(i32(2)))<>uint(i32(31))) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103602), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListFuncArgsØ00__func__Ø000))), unsafe.Pointer(str(119864)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t29)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(60 /* X15 */))))))) = _pList
+ storebits3((*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t28)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */)))))+uintptr(1 /* X1 */))), int8(i32(1)), 4, 2)
+ goto _7
}
+ _sqlite3ExprListDelete(tls, (*Xsqlite3)(_pParse.X0), _pList)
+_7:
+}
- _4_code = i32(30)
- _4_zArg2 = (*XModule)(_sqlite3GetVTable(tls, _db, _pTab).X1).X1
- goto _28
-
-_27:
- if i32(1) == 0 || _iDb != i32(1) {
- goto _30
+var _sqlite3SrcListFuncArgsØ00__func__Ø000 [23]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3SrcListFuncArgsØ00__func__Ø000[0], str(119911), 23)
+}
+
+// Given 1 to 3 identifiers preceding the JOIN keyword, determine the
+// type of join. Return an integer constant that expresses that type
+// in terms of the following bit values:
+//
+// JT_INNER
+// JT_CROSS
+// JT_OUTER
+// JT_NATURAL
+// JT_LEFT
+// JT_RIGHT
+//
+// A full outer join is the combination of JT_LEFT and JT_RIGHT.
+//
+// If an illegal or unsupported join type is seen, then still return
+// a join type, but put an error in the pParse structure.
+func _sqlite3JoinType(tls *crt.TLS, _pParse *XParse, _pA *XToken, _pB *XToken, _pC *XToken) (r0 int32) {
+ var _jointype, _i, _j int32
+ var _5_zSp *int8
+ var _p *XToken
+ var _apAll [3]*XToken
+ _jointype = i32(0)
+ *(**XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apAll)) + 4*uintptr(i32(0)))) = _pA
+ *(**XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apAll)) + 4*uintptr(i32(1)))) = _pB
+ *(**XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apAll)) + 4*uintptr(i32(2)))) = _pC
+ _i = i32(0)
+_0:
+ if _i >= i32(3) || (*(**XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apAll)) + 4*uintptr(_i)))) == nil {
+ goto _4
}
-
- _4_code = i32(13)
- goto _31
-
-_30:
- _4_code = i32(11)
-_31:
-_28:
-_26:
- if _sqlite3AuthCheck(tls, _pParse, _4_code, _pTab.X0, _4_zArg2, _4_zDb) == 0 {
- goto _32
+ _p = *(**XToken)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_apAll)) + 4*uintptr(_i)))
+ _j = i32(0)
+_5:
+ if _j >= i32(7) {
+ goto _8
}
-
- goto _exit_drop_table
-
-_32:
- if _sqlite3AuthCheck(tls, _pParse, i32(9), _pTab.X0, nil, _4_zDb) == 0 {
- goto _33
+ if ((_p.X1) == uint32((*t77)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3JoinTypeØ00aKeywordØ002))+3*uintptr(_j))).X1)) && (Xsqlite3_strnicmp(tls, _p.X0, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3JoinTypeØ00zKeyTextØ001))+1*uintptr((*t77)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3JoinTypeØ00aKeywordØ002))+3*uintptr(_j))).X0))), int32(_p.X1)) == i32(0)) {
+ {
+ p := &_jointype
+ *p = (*p) | int32((*t77)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3JoinTypeØ00aKeywordØ002))+3*uintptr(_j))).X2)
+ sink1 = *p
+ }
+ goto _8
}
-
- goto _exit_drop_table
-
-_33:
- if Xsqlite3_strnicmp(tls, _pTab.X0, str(116692), i32(7)) != i32(0) || Xsqlite3_strnicmp(tls, _pTab.X0, str(120072), i32(11)) == i32(0) {
- goto _35
+ _j += 1
+ goto _5
+_8:
+ if _j >= i32(7) {
+ {
+ p := &_jointype
+ *p = (*p) | i32(64)
+ sink1 = *p
+ }
+ goto _4
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(120084), unsafe.Pointer(_pTab.X0))
- goto _exit_drop_table
-
-_35:
- if _isView == 0 || (*XSelect)(_pTab.X3) != nil {
- goto _37
+ _i += 1
+ goto _0
+_4:
+ if (_jointype&i32(33)) != i32(33) && (_jointype&i32(64)) == i32(0) {
+ goto _13
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(120112), unsafe.Pointer(_pTab.X0))
- goto _exit_drop_table
-
-_37:
- if _isView != 0 || (*XSelect)(_pTab.X3) == nil {
- goto _39
+ _5_zSp = str(119934)
+ func() {
+ if _pB == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(116764), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3JoinTypeØ00__func__Ø000))), unsafe.Pointer(str(119936)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _pC == nil {
+ *(*uintptr)(unsafe.Pointer(&_5_zSp)) += uintptr(1)
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(120148), unsafe.Pointer(_pTab.X0))
- goto _exit_drop_table
-
-_39:
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v == nil {
- goto _40
+ _sqlite3ErrorMsg(tls, _pParse, str(119942), unsafe.Pointer(_pA), unsafe.Pointer(_pB), unsafe.Pointer(_5_zSp), unsafe.Pointer(_pC))
+ _jointype = i32(1)
+ goto _17
+_13:
+ if ((_jointype & i32(32)) != i32(0)) && ((_jointype & i32(24)) != i32(8)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(119986))
+ _jointype = i32(1)
}
+_17:
+ return _jointype
- _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
- _sqlite3ClearStatTables(tls, _pParse, _iDb, str(97688), _pTab.X0)
- _sqlite3FkDropTable(tls, _pParse, _pName, _pTab)
- _sqlite3CodeDropTable(tls, _pParse, _pTab, _iDb, _isView)
-_40:
-_exit_drop_table:
- _sqlite3SrcListDelete(tls, _db, _pName)
+ _ = _apAll
+ panic(0)
}
-var _sqlite3DropTableØ00__func__Ø000 [17]int8 // -
+var _sqlite3JoinTypeØ00aKeywordØ002 [7]struct {
+ X0 uint8
+ X1 uint8
+ X2 uint8
+}
func init() {
- crt.Xstrncpy(nil, &_sqlite3DropTableØ00__func__Ø000[0], str(120180), 17)
+ _sqlite3JoinTypeØ00aKeywordØ002 = [7]struct {
+ X0 uint8
+ X1 uint8
+ X2 uint8
+ }{t77{X0: u8(0), X1: u8(7), X2: u8(4)}, t77{X0: u8(6), X1: u8(4), X2: u8(40)}, t77{X0: u8(10), X1: u8(5), X2: u8(32)}, t77{X0: u8(14), X1: u8(5), X2: u8(48)}, t77{X0: u8(19), X1: u8(4), X2: u8(56)}, t77{X0: u8(23), X1: u8(5), X2: u8(1)}, t77{X0: u8(28), X1: u8(5), X2: u8(3)}}
}
-func _sqlite3CodeVerifyNamedSchema(tls *crt.TLS, _pParse *XParse, _zDb *int8) { // sqlite3.c:103772:1
- var _db *Xsqlite3 // sqlite3.c:103773:11
- _ = _db
- var _i int32 // sqlite3.c:103774:7
- _ = _i
- var _1_pDb *XDb // sqlite3.c:103776:8
- _ = _1_pDb
- _db = (*Xsqlite3)(_pParse.X0)
- _i = i32(0)
-_0:
- if _i >= (_db.X5) {
- goto _3
- }
-
- _1_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_i)))
- if (*XBtree)(_1_pDb.X1) == nil || _zDb != nil && i32(0) != _sqlite3StrICmp(tls, _zDb, _1_pDb.X0) {
- goto _6
- }
-
- _sqlite3CodeVerifySchema(tls, _pParse, _i)
-_6:
- _i += 1
- goto _0
+var _sqlite3JoinTypeØ00zKeyTextØ001 [34]int8
-_3:
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3JoinTypeØ00zKeyTextØ001[0], str(120041), 34)
}
-func _sqlite3ClearStatTables(tls *crt.TLS, _pParse *XParse, _iDb int32, _zType *int8, _zName *int8) { // sqlite3.c:102110:1
- var _i int32 // sqlite3.c:102116:7
- _ = _i
- var _zDbName *int8 // sqlite3.c:102117:14
- _ = _zDbName
- var _1_zTab [24]int8 // sqlite3.c:102119:10
- _ = _1_zTab
- _zDbName = (*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4) + 16*uintptr(_iDb))).X0
- _i = i32(1)
-_0:
- if _i > i32(4) {
- goto _3
- }
-
- Xsqlite3_snprintf(tls, int32(u32(24)), (*int8)(unsafe.Pointer(&_1_zTab)), str(120200), _i)
- if _sqlite3FindTable(tls, (*Xsqlite3)(_pParse.X0), (*int8)(unsafe.Pointer(&_1_zTab)), _zDbName) == nil {
- goto _4
- }
-
- _sqlite3NestedParse(tls, _pParse, str(120216), unsafe.Pointer(_zDbName), unsafe.Pointer((*int8)(unsafe.Pointer(&_1_zTab))), unsafe.Pointer(_zType), unsafe.Pointer(_zName))
-_4:
- _i += 1
- goto _0
+var _sqlite3JoinTypeØ00__func__Ø000 [16]int8
-_3:
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3JoinTypeØ00__func__Ø000[0], str(120075), 16)
}
-func _sqlite3FkDropTable(tls *crt.TLS, _pParse *XParse, _pName *XSrcList, _pTab *XTable) { // sqlite3.c:108116:1
- var _db *Xsqlite3 // sqlite3.c:108117:11
- _ = _db
- var _1_iSkip int32 // sqlite3.c:108119:9
- _ = _1_iSkip
- var _1_v *TVdbe // sqlite3.c:108120:10
- _ = _1_v
- var _2_p *XFKey // sqlite3.c:108129:12
- _ = _2_p
+// pColumns and pExpr form a vector assignment which is part of the SET
+// clause of an UPDATE statement. Like this:
+//
+// (a,b,c) = (expr1,expr2,expr3)
+// Or: (a,b,c) = (SELECT x,y,z FROM ....)
+//
+// For each term of the vector assignment, append new entries to the
+// expression list pList. In the case of a subquery on the RHS, append
+// TK_SELECT_COLUMN expressions.
+func _sqlite3ExprListAppendVector(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pColumns *XIdList, _pExpr *XExpr) (r0 *XExprList) {
+ var _n, _i, _iFirst int32
+ var _db *Xsqlite3
+ var _2_pSubExpr, _4_pFirst *XExpr
_db = (*Xsqlite3)(_pParse.X0)
- if ((_db.X6)&i32(524288)) == 0 || (_pTab.X16) != 0 || (*XSelect)(_pTab.X3) != nil {
- goto _2
- }
-
- _1_iSkip = i32(0)
- _1_v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if _1_v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkDropTableØ00__func__Ø000))), unsafe.Pointer(str(42900)))
- crt.X__builtin_abort(tls)
+ _iFirst = func() int32 {
+ if _pList != nil {
+ return (_pList.X0)
}
+ return i32(0)
}()
- if _sqlite3FkReferences(tls, _pTab) != nil {
- goto _5
+ if func() int32 {
+ if _pColumns == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92423), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListAppendVectorØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ goto _vector_append_error
}
-
- _2_p = (*XFKey)(_pTab.X4)
-_6:
- if _2_p == nil {
- goto _9
+ if _pExpr == nil {
+ goto _vector_append_error
}
-
- if (_2_p.X6) == 0 && ((_db.X6)&i32(33554432)) == 0 {
- goto _11
+ if (int32(_pExpr.X0) != i32(119)) && ((_pColumns.X1) != store1(&_n, _sqlite3ExprVectorSize(tls, _pExpr))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(42971), _pColumns.X1, _n)
+ goto _vector_append_error
}
-
- goto _9
-
-_11:
- _2_p = (*XFKey)(_2_p.X1)
- goto _6
-
-_9:
- if _2_p != nil {
- goto _12
+ _i = i32(0)
+_8:
+ if _i >= (_pColumns.X1) {
+ goto _11
}
- return
-
-_12:
- _1_iSkip = _sqlite3VdbeMakeLabel(tls, _1_v)
- _sqlite3VdbeAddOp2(tls, _1_v, i32(45), i32(1), _1_iSkip)
-_5:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(158 /* X47 */))) = uint8(i32(1))
- _sqlite3DeleteFrom(tls, _pParse, _sqlite3SrcListDup(tls, _db, _pName, i32(0)), nil)
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(158 /* X47 */))) = uint8(i32(0))
- if ((_db.X6) & i32(33554432)) != i32(0) {
- goto _13
+ _2_pSubExpr = _sqlite3ExprForVectorField(tls, _pParse, _pExpr, _i)
+ _pList = _sqlite3ExprListAppend(tls, _pParse, _pList, _2_pSubExpr)
+ if _pList != nil {
+ func() {
+ if (_pList.X0) != ((_iFirst + _i) + i32(1)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92441), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListAppendVectorØ00__func__Ø000))), unsafe.Pointer(str(120091)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr((_pList.X0)-i32(1)))))) + uintptr(4 /* X1 */))) = (*TIdList_item)(unsafe.Pointer(uintptr(_pColumns.X0) + 8*uintptr(_i))).X0
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TIdList_item)(unsafe.Pointer(uintptr(_pColumns.X0)+8*uintptr(_i))))) + uintptr(0 /* X0 */))) = nil
}
-
- _sqlite3VdbeAddOp2(tls, _1_v, i32(45), i32(0), _sqlite3VdbeCurrentAddr(tls, _1_v)+i32(2))
- _sqlite3HaltConstraint(tls, _pParse, i32(787), i32(2), nil, int8(i32(-2)), uint8(i32(4)))
-_13:
- if _1_iSkip == 0 {
- goto _14
+ _i += 1
+ goto _8
+_11:
+ if (((_db.X17) == 0) && (int32(_pExpr.X0) == i32(119))) && func() int32 {
+ if _pList != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92447), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListAppendVectorØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 {
+ _4_pFirst = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr(_iFirst))).X0)
+ func() {
+ if _4_pFirst == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92449), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListAppendVectorØ00__func__Ø000))), unsafe.Pointer(str(120116)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ func() {
+ if int32(_4_pFirst.X0) != i32(159) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(92450), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListAppendVectorØ00__func__Ø000))), unsafe.Pointer(str(120126)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFirst)) + uintptr(16 /* X5 */))))) = _pExpr
+ _pExpr = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_4_pFirst)) + uintptr(28 /* X8 */))) = _pColumns.X1
}
-
- _sqlite3VdbeResolveLabel(tls, _1_v, _1_iSkip)
-_14:
-_2:
+_vector_append_error:
+ _sqlite3ExprDelete(tls, _db, _pExpr)
+ _sqlite3IdListDelete(tls, _db, _pColumns)
+ return _pList
}
-var _sqlite3FkDropTableØ00__func__Ø000 [19]int8 // -
+var _sqlite3ExprListAppendVectorØ00__func__Ø000 [28]int8
func init() {
- crt.Xstrncpy(nil, &_sqlite3FkDropTableØ00__func__Ø000[0], str(120248), 19)
-}
-
-func _sqlite3FkReferences(tls *crt.TLS, _pTab *XTable) (r0 *XFKey) { // sqlite3.c:108076:1
- /* X5 */
- return (*XFKey)(_sqlite3HashFind(tls, (*XHash)(unsafe.Pointer(uintptr(_pTab.X20)+uintptr(56))), _pTab.X0))
+ crt.Xstrncpy(nil, &_sqlite3ExprListAppendVectorØ00__func__Ø000[0], str(120155), 28)
}
-func _sqlite3DeleteFrom(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pWhere *XExpr) { // sqlite3.c:104841:1
- var _v *TVdbe // sqlite3.c:104846:8
- _ = _v
- var _pTab *XTable // sqlite3.c:104847:9
- _ = _pTab
- var _i int32 // sqlite3.c:104848:7
- _ = _i
- var _pWInfo *XWhereInfo // sqlite3.c:104849:13
- _ = _pWInfo
- var _pIdx *XIndex // sqlite3.c:104850:9
- _ = _pIdx
- var _iTabCur int32 // sqlite3.c:104851:7
- _ = _iTabCur
- var _iDataCur int32 // sqlite3.c:104852:7
- _ = _iDataCur
- var _iIdxCur int32 // sqlite3.c:104853:7
- _ = _iIdxCur
- var _nIdx int32 // sqlite3.c:104854:7
- _ = _nIdx
- var _db *Xsqlite3 // sqlite3.c:104855:11
- _ = _db
- var _sContext XAuthContext // sqlite3.c:104856:15
- _ = _sContext
- var _sNC XNameContext // sqlite3.c:104857:15
- _ = _sNC
- var _iDb int32 // sqlite3.c:104858:7
- _ = _iDb
- var _memCnt int32 // sqlite3.c:104859:7
- _ = _memCnt
- var _rcauth int32 // sqlite3.c:104860:7
- _ = _rcauth
- var _eOnePass int32 // sqlite3.c:104861:7
- _ = _eOnePass
- var _aiCurOnePass [2]int32 // sqlite3.c:104862:7
- _ = _aiCurOnePass
- var _aToOpen *uint8 // sqlite3.c:104863:6
- _ = _aToOpen
- var _pPk *XIndex // sqlite3.c:104864:9
- _ = _pPk
- var _iPk int32 // sqlite3.c:104865:7
- _ = _iPk
- var _nPk int16 // sqlite3.c:104866:7
- _ = _nPk
- var _iKey int32 // sqlite3.c:104867:7
- _ = _iKey
- var _nKey int16 // sqlite3.c:104868:7
- _ = _nKey
- var _iEphCur int32 // sqlite3.c:104869:7
- _ = _iEphCur
- var _iRowSet int32 // sqlite3.c:104870:7
- _ = _iRowSet
- var _addrBypass int32 // sqlite3.c:104871:7
- _ = _addrBypass
- var _addrLoop int32 // sqlite3.c:104872:7
- _ = _addrLoop
- var _addrEphOpen int32 // sqlite3.c:104873:7
- _ = _addrEphOpen
- var _bComplex int32 // sqlite3.c:104874:7
- _ = _bComplex
- var _isView int32 // sqlite3.c:104878:7
- _ = _isView
- var _pTrigger *XTrigger // sqlite3.c:104879:11
- _ = _pTrigger
- var _14_wcf uint16 // sqlite3.c:105015:9
- _ = _14_wcf
- var _28_iAddrOnce int32 // sqlite3.c:105114:11
- _ = _28_iAddrOnce
- var _34_pVTab *int8 // sqlite3.c:105149:18
- _ = _34_pVTab
- var _36_count int32 // sqlite3.c:105161:11
- _ = _36_count
- _iDataCur = i32(0)
- _iIdxCur = i32(0)
- _memCnt = i32(-1)
- _aToOpen = nil
- _iPk = i32(0)
- _nPk = i16(1)
- _iEphCur = i32(0)
- _iRowSet = i32(0)
- _addrBypass = i32(0)
- _addrLoop = i32(0)
- _addrEphOpen = i32(0)
- crt.Xmemset(tls, (unsafe.Pointer)(&_sContext), i32(0), u32(8))
- _db = (*Xsqlite3)(_pParse.X0)
- if (_pParse.X16) == 0 && (_db.X17) == 0 {
- goto _1
+// Append a new element to the given IdList. Create a new IdList if
+// need be.
+//
+// A new IdList is returned, or NULL if malloc() fails.
+func _sqlite3IdListAppend(tls *crt.TLS, _db *Xsqlite3, _pList *XIdList, _pToken *XToken) (r0 *XIdList) {
+ var _i int32
+ if _pList != nil {
+ goto _0
}
-
- goto _delete_from_cleanup
-
-_1:
- func() {
- if (_pTabList.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104887), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120268)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTabList)
- if _pTab != nil {
- goto _4
+ _pList = (*XIdList)(_sqlite3DbMallocZero(tls, _db, uint64(u32(8))))
+ if _pList == nil {
+ return nil
}
-
- goto _delete_from_cleanup
-
-_4:
- _pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil)
- _isView = bool2int((*XSelect)(_pTab.X3) != nil)
- _bComplex = bool2int((_pTrigger != nil) || _sqlite3FkRequired(tls, _pParse, _pTab, nil, i32(0)) != 0)
- if _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) == 0 {
- goto _6
+_0:
+ *(**TIdList_item)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList)) + uintptr(0 /* X0 */))))) = (*TIdList_item)(_sqlite3ArrayAllocate(tls, _db, _pList.X0, int32(u32(8)), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(4 /* X1 */))), &_i))
+ if _i < i32(0) {
+ _sqlite3IdListDelete(tls, _db, _pList)
+ return nil
}
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TIdList_item)(unsafe.Pointer(uintptr(_pList.X0)+8*uintptr(_i))))) + uintptr(0 /* X0 */))) = _sqlite3NameFromToken(tls, _db, _pToken)
+ return _pList
+}
- goto _delete_from_cleanup
+func _spanSet(tls *crt.TLS, _pOut *XExprSpan, _pStart *XToken, _pEnd *XToken) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(4 /* X1 */))) = _pStart.X0
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEnd.X0)) + 1*uintptr(_pEnd.X1)))
+}
-_6:
- if _sqlite3IsReadOnly(tls, _pParse, _pTab, func() int32 {
- if _pTrigger != nil {
- return i32(1)
- }
- return i32(0)
- }()) == 0 {
- goto _9
+// Assign a variable number to an expression that encodes a wildcard
+// in the original SQL statement.
+//
+// Wildcards consisting of a single "?" are assigned the next sequential
+// variable number.
+//
+// Wildcards of the form "?nnn" are assigned the number "nnn". We make
+// sure "nnn" is not too big to avoid a denial of service attack when
+// the SQL statement comes from an external source.
+//
+// Wildcards of the form ":aaa", "@aaa", or "$aaa" are assigned the same number
+// as the previous instance of the same wildcard. Or if this is the first
+// instance of the wildcard, the next sequential variable number is
+// assigned.
+func _sqlite3ExprAssignVarNumber(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _n uint32) {
+ var _x int16
+ var _2_doAdd, _3_bOk int32
+ var _3_i int64
+ var _z *int8
+ var _db *Xsqlite3
+ _db = (*Xsqlite3)(_pParse.X0)
+ if _pExpr == nil {
+ return
}
-
- goto _delete_from_cleanup
-
-_9:
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
func() {
- if _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104923), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(56120)))
+ if ((_pExpr.X2) & uint32(i32(25600))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91849), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAssignVarNumberØ00__func__Ø000))), unsafe.Pointer(str(120183)))
crt.X__builtin_abort(tls)
}
}()
- _rcauth = _sqlite3AuthCheck(tls, _pParse, i32(9), _pTab.X0, nil, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
+ _z = *(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(8 /* X3 */)))))
func() {
- if _rcauth != i32(0) && _rcauth != i32(1) && _rcauth != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104926), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120288)))
+ if _z == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91851), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAssignVarNumberØ00__func__Ø000))), unsafe.Pointer(str(44451)))
crt.X__builtin_abort(tls)
}
}()
- if _rcauth != i32(1) {
- goto _16
- }
-
- goto _delete_from_cleanup
-
-_16:
func() {
- if _isView != 0 && _pTrigger == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104930), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120356)))
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) == i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91852), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAssignVarNumberØ00__func__Ø000))), unsafe.Pointer(str(120244)))
crt.X__builtin_abort(tls)
}
}()
func() {
- if (_pTabList.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104934), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120268)))
+ if _n != uint32(_sqlite3Strlen30(tls, _z)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91853), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAssignVarNumberØ00__func__Ø000))), unsafe.Pointer(str(120252)))
crt.X__builtin_abort(tls)
}
}()
- _iTabCur = store1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0))))))+uintptr(40 /* X11 */))), postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1)))
- *func() **XIndex { _nIdx = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_22:
- if _pIdx == nil {
- goto _25
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) == i32(0) {
+ func() {
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(63) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91856), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprAssignVarNumberØ00__func__Ø000))), unsafe.Pointer(str(120279)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _x = preInc18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(408 /* X52 */))), 1)
+ goto _12
}
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) += 1
- *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_nIdx }() += 1
- goto _22
-
-_25:
- if _isView == 0 {
- goto _26
+ _2_doAdd = i32(0)
+ if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(0))))) != i32(63) {
+ goto _13
}
-
- _sqlite3AuthContextPush(tls, _pParse, &_sContext, _pTab.X0)
-_26:
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v != nil {
- goto _27
+ if _n == uint32(i32(2)) {
+ _3_i = int64(int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(i32(1))))) - i32(48))
+ _3_bOk = i32(1)
+ goto _15
}
-
- goto _delete_from_cleanup
-
-_27:
- if int32(_pParse.X6) != i32(0) {
- goto _28
+ _3_bOk = bool2int(i32(0) == _sqlite3Atoi64(tls, (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z))+1*uintptr(i32(1)))), &_3_i, int32(_n-uint32(i32(1))), uint8(i32(1))))
+_15:
+ if ((_3_bOk == i32(0)) || (_3_i < int64(i32(1)))) || (_3_i > int64(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(9)))))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(120289), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(9)))))
+ return
}
-
- _sqlite3VdbeCountChanges(tls, _v)
-_28:
- _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
- if _isView == 0 {
- goto _29
+ _x = int16(_3_i)
+ if int32(_x) > int32(_pParse.X52) {
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(408 /* X52 */))) = int16(int32(_x))
+ _2_doAdd = i32(1)
+ goto _20
}
-
- _sqlite3MaterializeView(tls, _pParse, _pTab, _pWhere, _iTabCur)
- _iDataCur = store1(&_iIdxCur, _iTabCur)
-_29:
- crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = _pTabList
- if _sqlite3ResolveExprNames(tls, &_sNC, _pWhere) == 0 {
- goto _30
+ if _sqlite3VListNumToName(tls, _pParse.X60, int32(_x)) == nil {
+ _2_doAdd = i32(1)
}
-
- goto _delete_from_cleanup
-
-_30:
- if ((_db.X6) & i32(128)) == 0 {
- goto _31
+_20:
+ goto _22
+_13:
+ _x = int16(_sqlite3VListNameToNum(tls, _pParse.X60, _z, int32(_n)))
+ if int32(_x) == i32(0) {
+ _x = preInc18((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(408 /* X52 */))), 1)
+ _2_doAdd = i32(1)
}
-
- _memCnt = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _memCnt)
-_31:
- if _rcauth != i32(0) || _pWhere != nil || _bComplex != 0 || (_pTab.X16) != 0 {
- goto _35
+_22:
+ if _2_doAdd != 0 {
+ *(**int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(432 /* X60 */))) = _sqlite3VListAdd(tls, _db, _pParse.X60, _z, int32(_n), int32(_x))
}
-
+_12:
+ *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = _x
+ if int32(_x) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(92 /* X31 */))))) + 4*uintptr(i32(9))))) {
+ _sqlite3ErrorMsg(tls, _pParse, str(120332))
+ }
+}
+
+var _sqlite3ExprAssignVarNumberØ00__func__Ø000 [27]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprAssignVarNumberØ00__func__Ø000[0], str(120355), 27)
+}
+
+// Add a new name/number pair to a VList. This might require that the
+// VList object be reallocated, so return the new VList. If an OOM
+// error occurs, the original VList returned and the
+// db->mallocFailed flag is set.
+//
+// A VList is really just an array of integers. To destroy a VList,
+// simply pass it to sqlite3DbFree().
+//
+// The first integer is the number of integers allocated for the whole
+// VList. The second integer is the number of integers actually used.
+// Each name/number pair is encoded by subsequent groups of 3 or more
+// integers.
+//
+// Each name/number pair starts with two integers which are the numeric
+// value for the pair and the size of the name/number pair, respectively.
+// The text name overlays one or more following integers. The text name
+// is always zero-terminated.
+//
+// Conceptually:
+//
+// struct VList {
+// int nAlloc; // Number of allocated slots
+// int nUsed; // Number of used slots
+// struct VListEntry {
+// int iValue; // Value for this entry
+// int nSlot; // Slots used by this entry
+// // ... variable name goes here
+// } a[0];
+// }
+//
+// During code generation, pointers to the variable names within the
+// VList are taken. When that happens, nAlloc is set to zero as an
+// indication that the VList may never again be enlarged, since the
+// accompanying realloc() would invalidate the pointers.
+func _sqlite3VListAdd(tls *crt.TLS, _db *Xsqlite3, _pIn *int32, _zName *int8, _nName int32, _iVal int32) (r0 *int32) {
+ var _nInt, _i, _1_nAlloc int32
+ var _1_pOut *int32
+ var _z *int8
+ _nInt = (_nName / i32(4)) + i32(3)
func() {
- if _isView != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105002), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120376)))
+ if _pIn != nil && (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(0))))) < i32(3) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29170), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VListAddØ00__func__Ø000))), unsafe.Pointer(str(120382)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3TableLock(tls, _pParse, _iDb, _pTab.X7, uint8(i32(1)), _pTab.X0)
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _38
- }
-
- _sqlite3VdbeAddOp4(tls, _v, i32(134), _pTab.X7, _iDb, _memCnt, _pTab.X0, i32(-2))
-_38:
- _pIdx = (*XIndex)(_pTab.X2)
-_39:
- if _pIdx == nil {
- goto _42
+ if _pIn != nil && ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(1)))))+_nInt) <= (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(0))))) {
+ goto _4
}
-
- func() {
- if (*XSchema)(_pIdx.X6) != (*XSchema)(_pTab.X20) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105009), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120384)))
- crt.X__builtin_abort(tls)
+ _1_nAlloc = func() int32 {
+ if _pIn != nil {
+ return ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(0))))) * i32(2))
}
- }()
- _sqlite3VdbeAddOp2(tls, _v, i32(134), _pIdx.X11, _iDb)
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _39
-
-_42:
- goto _45
-
-_35:
- _14_wcf = u16(1044)
- if (int32(_sNC.X7) & i32(64)) == 0 {
- goto _46
- }
-
- _bComplex = i32(1)
-_46:
- {
- p := &_14_wcf
- *p = uint16(int32(*p) | func() int32 {
- if _bComplex != 0 {
- return i32(0)
- }
- return i32(8)
- }())
- sink12 = *p
+ return i32(10)
+ }() + _nInt
+ _1_pOut = (*int32)(_sqlite3DbRealloc(tls, _db, (unsafe.Pointer)(_pIn), uint64(uint32(_1_nAlloc)*u32(4))))
+ if _1_pOut == nil {
+ return _pIn
}
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _49
+ if _pIn == nil {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOut)) + 4*uintptr(i32(1)))) = i32(2)
}
-
- _pPk = nil
- _nPk = int16(i32(1))
- _iRowSet = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _iRowSet)
- goto _50
-
-_49:
- _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
+ _pIn = _1_pOut
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(0)))) = _1_nAlloc
+_4:
+ _i = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(1))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i))) = _iVal
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i+i32(1)))) = _nInt
+ _z = (*int8)(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(_i+i32(2))))))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(1)))) = _i + _nInt
func() {
- if _pPk == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105028), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(43040)))
+ if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(1))))) > (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIn)) + 4*uintptr(i32(0))))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(29185), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VListAddØ00__func__Ø000))), unsafe.Pointer(str(120402)))
crt.X__builtin_abort(tls)
}
}()
- _nPk = int16(_pPk.X13)
- _iPk = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + int32(_nPk)
- sink1 = *p
- }
- _iEphCur = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _addrEphOpen = _sqlite3VdbeAddOp2(tls, _v, i32(110), _iEphCur, int32(_nPk))
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pPk)
-_50:
- _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pTabList, _pWhere, nil, nil, _14_wcf, _iTabCur+i32(1))
- if _pWInfo != nil {
- goto _53
- }
+ crt.Xmemcpy(tls, (unsafe.Pointer)(_z), (unsafe.Pointer)(_zName), uint32(_nName))
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_nName))) = int8(i32(0))
+ return _pIn
+}
- goto _delete_from_cleanup
+var _sqlite3VListAddØ00__func__Ø000 [16]int8
-_53:
- _eOnePass = _sqlite3WhereOkOnePass(tls, _pWInfo, (*int32)(unsafe.Pointer(&_aiCurOnePass)))
- func() {
- if (_pTab.X16) != i32(0) && _eOnePass == i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105048), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120416)))
- crt.X__builtin_abort(tls)
- }
- }()
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3VListAddØ00__func__Ø000[0], str(120417), 16)
+}
+
+// Construct a new expression node for a function with multiple
+// arguments.
+func _sqlite3ExprFunction(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pToken *XToken) (r0 *XExpr) {
+ var _db *Xsqlite3
+ var _pNew *XExpr
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if (_pTab.X16) == 0 && _bComplex == 0 && _eOnePass == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105049), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120464)))
+ if _pToken == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprFunctionØ00__func__Ø000))), unsafe.Pointer(str(120433)))
crt.X__builtin_abort(tls)
}
}()
- if ((_db.X6) & i32(128)) == 0 {
- goto _61
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(73), _memCnt, i32(1))
-_61:
- if _pPk == nil {
- goto _62
- }
-
- _i = i32(0)
-_63:
- if _i >= int32(_nPk) {
- goto _66
+ _pNew = _sqlite3ExprAlloc(tls, _db, i32(151), _pToken, i32(1))
+ if _pNew == nil {
+ _sqlite3ExprListDelete(tls, _db, _pList)
+ return nil
}
-
+ *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(20 /* X6 */))))))) = _pList
func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105059), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120520)))
+ if ((_pNew.X2) & uint32(i32(2048))) != uint32(i32(0)) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91822), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprFunctionØ00__func__Ø000))), unsafe.Pointer(str(103875)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iTabCur, int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))), _iPk+_i)
- _i += 1
- goto _63
-
-_66:
- _iKey = _iPk
- goto _69
-
-_62:
- _iKey = (_pParse.X18) + i32(1)
- _iKey = _sqlite3ExprCodeGetColumn(tls, _pParse, _pTab, i32(-1), _iTabCur, _iKey, uint8(i32(0)))
- if _iKey <= (_pParse.X18) {
- goto _70
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = _iKey
-_70:
-_69:
- if _eOnePass == i32(0) {
- goto _71
- }
+ _sqlite3ExprSetHeightAndFlags(tls, _pParse, _pNew)
+ return _pNew
+}
- _nKey = _nPk
- _aToOpen = (*uint8)(_sqlite3DbMallocRawNN(tls, _db, uint64(_nIdx+i32(2))))
- if _aToOpen != nil {
- goto _72
- }
+var _sqlite3ExprFunctionØ00__func__Ø000 [20]int8
- _sqlite3WhereEnd(tls, _pWInfo)
- goto _delete_from_cleanup
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3ExprFunctionØ00__func__Ø000[0], str(120440), 20)
+}
-_72:
- crt.Xmemset(tls, (unsafe.Pointer)(_aToOpen), i32(1), uint32(_nIdx+i32(1)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_nIdx+i32(1)))) = uint8(i32(0))
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0))))) < i32(0) {
- goto _73
+// Set the Expr.nHeight variable using the exprSetHeight() function. If
+// the height is greater than the maximum allowed expression depth,
+// leave an error in pParse.
+//
+// Also propagate all EP_Propagate flags from the Expr.x.pList into
+// Expr.flags.
+func _sqlite3ExprSetHeightAndFlags(tls *crt.TLS, _pParse *XParse, _p *XExpr) {
+ if (_pParse.X16) != 0 {
+ return
}
+ _exprSetHeight(tls, _p)
+ _sqlite3ExprCheckHeight(tls, _pParse, _p.X7)
+}
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0)))))-_iTabCur))) = uint8(i32(0))
-_73:
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) < i32(0) {
- goto _74
- }
+func _spanBinaryExpr(tls *crt.TLS, _pParse *XParse, _op int32, _pLeft *XExprSpan, _pRight *XExprSpan) {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLeft)) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, _op, (*XExpr)(_pLeft.X0), (*XExpr)(_pRight.X0))
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pLeft)) + uintptr(8 /* X2 */))) = _pRight.X2
+}
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1)))))-_iTabCur))) = uint8(i32(0))
-_74:
- if _addrEphOpen == 0 {
- goto _75
+func _exprNot(tls *crt.TLS, _pParse *XParse, _doNot int32, _pSpan *XExprSpan) {
+ if _doNot != 0 {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSpan)) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, i32(19), (*XExpr)(_pSpan.X0), nil)
}
+}
- _sqlite3VdbeChangeToNoop(tls, _v, _addrEphOpen)
-_75:
- goto _76
+func _spanUnaryPostfix(tls *crt.TLS, _pParse *XParse, _op int32, _pOperand *XExprSpan, _pPostOp *XToken) {
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOperand)) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, _op, (*XExpr)(_pOperand.X0), nil)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOperand)) + uintptr(8 /* X2 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPostOp.X0)) + 1*uintptr(_pPostOp.X1)))
+}
-_71:
- if _pPk == nil {
- goto _77
+func _binaryToUnaryIfNull(tls *crt.TLS, _pParse *XParse, _pY *XExpr, _pA *XExpr, _op int32) {
+ var _db *Xsqlite3
+ _db = (*Xsqlite3)(_pParse.X0)
+ if ((_pA != nil) && (_pY != nil)) && (int32(_pY.X0) == i32(101)) {
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(0 /* X0 */))) = uint8(_op)
+ _sqlite3ExprDelete(tls, _db, (*XExpr)(_pA.X5))
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pA)) + uintptr(16 /* X5 */))))) = nil
}
+}
- _iKey = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _nKey = int16(i32(0))
- _sqlite3VdbeAddOp4(tls, _v, i32(101), _iPk, int32(_nPk), _iKey, _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pPk), int32(_nPk))
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iEphCur, _iKey, _iPk, int32(_nPk))
- goto _78
+func _spanUnaryPrefix(tls *crt.TLS, _pOut *XExprSpan, _pParse *XParse, _op int32, _pOperand *XExprSpan, _pPreOp *XToken) {
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(4 /* X1 */))) = _pPreOp.X0
+ *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(0 /* X0 */))))) = _sqlite3PExpr(tls, _pParse, _op, (*XExpr)(_pOperand.X0), nil)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pOut)) + uintptr(8 /* X2 */))) = _pOperand.X2
+}
-_77:
- _nKey = int16(i32(1))
- _sqlite3VdbeAddOp2(tls, _v, i32(145), _iRowSet, _iKey)
-_78:
-_76:
- if _eOnePass == i32(0) {
- goto _79
+// Add pSelect to the Expr.x.pSelect field. Or, if pExpr is NULL (due
+// do a memory allocation failure) then delete the pSelect object.
+func _sqlite3PExprAddSelect(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _pSelect *XSelect) {
+ if _pExpr != nil {
+ *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer((*t12)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(20 /* X6 */))))))) = _pSelect
+ {
+ p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(4 /* X2 */)))
+ *p = (*p) | uint32(i32(2099200))
+ sink5 = *p
+ }
+ _sqlite3ExprSetHeightAndFlags(tls, _pParse, _pExpr)
+ goto _1
}
+ func() {
+ if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(91751), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PExprAddSelectØ00__func__Ø000))), unsafe.Pointer(str(42486)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ _sqlite3SelectDelete(tls, (*Xsqlite3)(_pParse.X0), _pSelect)
+_1:
+}
- _addrBypass = _sqlite3VdbeMakeLabel(tls, _v)
- goto _80
+var _sqlite3PExprAddSelectØ00__func__Ø000 [22]int8
-_79:
- _sqlite3WhereEnd(tls, _pWInfo)
-_80:
- if _isView != 0 {
- goto _81
- }
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3PExprAddSelectØ00__func__Ø000[0], str(120460), 22)
+}
- _28_iAddrOnce = i32(0)
- if _eOnePass != i32(2) {
- goto _82
+func _parserAddExprIdListTerm(tls *crt.TLS, _pParse *XParse, _pPrior *XExprList, _pIdToken *XToken, _hasCollate int32, _sortOrder int32) (r0 *XExprList) {
+ var _p *XExprList
+ _p = _sqlite3ExprListAppend(tls, _pParse, _pPrior, nil)
+ if (_hasCollate != 0 || (_sortOrder != i32(-1))) && (int32((*t21)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(144 /* X33 */))).X2) == i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(120482), _pIdToken.X1, unsafe.Pointer(_pIdToken.X0))
}
+ _sqlite3ExprListSetName(tls, _pParse, _p, _pIdToken, i32(1))
+ return _p
+}
- _28_iAddrOnce = _sqlite3VdbeAddOp0(tls, _v, i32(20))
-_82:
- _sqlite3OpenTableAndIndices(tls, _pParse, _pTab, i32(107), uint8(i32(8)), _iTabCur, _aToOpen, &_iDataCur, &_iIdxCur)
+// This routine will drop an existing named index. This routine
+// implements the DROP INDEX statement.
+func _sqlite3DropIndex(tls *crt.TLS, _pParse *XParse, _pName *XSrcList, _ifExists int32) {
+ var _iDb, _7_code int32
+ var _7_zDb, _7_zTab *int8
+ var _db *Xsqlite3
+ var _7_pTab *XTable
+ var _v *TVdbe
+ var _pIndex *XIndex
+ _db = (*Xsqlite3)(_pParse.X0)
func() {
- if _pPk == nil && (_pTab.X16) == 0 && _iDataCur != _iTabCur {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105121), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120540)))
+ if (_pParse.X16) != i32(0) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103185), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropIndexØ00__func__Ø000))), unsafe.Pointer(str(112366)))
crt.X__builtin_abort(tls)
}
}()
+ if (_db.X17) != 0 {
+ goto _exit_drop_index
+ }
func() {
- if _pPk == nil && (_pTab.X16) == 0 && _iIdxCur != (_iDataCur+i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120584)))
+ if (_pName.X0) != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(103189), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropIndexØ00__func__Ø000))), unsafe.Pointer(str(114791)))
crt.X__builtin_abort(tls)
}
}()
- if _eOnePass != i32(2) {
- goto _91
+ if i32(0) != _sqlite3ReadSchema(tls, _pParse) {
+ goto _exit_drop_index
}
-
- _sqlite3VdbeJumpHere(tls, _v, _28_iAddrOnce)
-_91:
-_81:
- if _eOnePass == i32(0) {
- goto _92
+ _pIndex = _sqlite3FindIndex(tls, _db, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X2, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X1)
+ if _pIndex != nil {
+ goto _6
}
-
- func() {
- if int32(_nKey) != int32(_nPk) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105130), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120632)))
- crt.X__builtin_abort(tls)
+ if _ifExists == 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(120520), unsafe.Pointer(_pName), i32(0))
+ goto _8
+ }
+ _sqlite3CodeVerifyNamedSchema(tls, _pParse, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pName))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X1)
+_8:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
+ goto _exit_drop_index
+_6:
+ if int32((uint32(_pIndex.X16)<>uint(i32(30))) != i32(0) {
+ _sqlite3ErrorMsg(tls, _pParse, str(120538), i32(0))
+ goto _exit_drop_index
+ }
+ _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pIndex.X6))
+ _7_code = i32(10)
+ _7_pTab = (*XTable)(_pIndex.X3)
+ _7_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
+ _7_zTab = func() *int8 {
+ if i32(1) != 0 && (_iDb == i32(1)) {
+ return str(50007)
}
+ return str(50026)
}()
- if (_pTab.X16) != 0 || (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_iDataCur-_iTabCur)))) == 0 {
- goto _96
+ if _sqlite3AuthCheck(tls, _pParse, i32(9), _7_zTab, nil, _7_zDb) != 0 {
+ goto _exit_drop_index
+ }
+ if i32(1) != 0 && _iDb != 0 {
+ _7_code = i32(12)
+ }
+ if _sqlite3AuthCheck(tls, _pParse, _7_code, _pIndex.X0, _7_pTab.X0, _7_zDb) != 0 {
+ goto _exit_drop_index
+ }
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v != nil {
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
+ _sqlite3NestedParse(tls, _pParse, str(120611), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(50026)), unsafe.Pointer(_pIndex.X0))
+ _sqlite3ClearStatTables(tls, _pParse, _iDb, str(61657), _pIndex.X0)
+ _sqlite3ChangeCookie(tls, _pParse, _iDb)
+ _destroyRootPage(tls, _pParse, _pIndex.X11, _iDb)
+ _sqlite3VdbeAddOp4(tls, _v, i32(142), _iDb, i32(0), i32(0), _pIndex.X0, i32(0))
}
+_exit_drop_index:
+ _sqlite3SrcListDelete(tls, _db, _pName)
+}
+var _sqlite3DropIndexØ00__func__Ø000 [17]int8
+
+func init() {
+ crt.Xstrncpy(nil, &_sqlite3DropIndexØ00__func__Ø000[0], str(120660), 17)
+}
+
+// The VACUUM command is used to clean up the database,
+// collapse free space, etc. It is modelled after the VACUUM command
+// in PostgreSQL. The VACUUM command works as follows:
+//
+// (1) Create a new transient database file
+// (2) Copy all content from the database being vacuumed into
+// the new transient database file
+// (3) Copy content from the transient database back into the
+// original database.
+//
+// The transient database requires temporary disk space approximately
+// equal to the size of the original database. The copy operation of
+// step (3) requires additional temporary disk space approximately equal
+// to the size of the original database for the rollback journal.
+// Hence, temporary disk space that is approximately 2x the size of the
+// original database is required. Every page of the database is written
+// approximately 3 times: Once for step (2) and twice for step (3).
+// Two writes per page are required in step (3) because the original
+// database content must be written into the rollback journal prior to
+// overwriting the database with the vacuumed content.
+//
+// Only 1x temporary space and only 1x writes would be required if
+// the copy of step (3) were replaced by deleting the original database
+// and renaming the transient database as the original. But that will
+// not work if other processes are attached to the original database.
+// And a power loss in between deleting the original and renaming the
+// transient would cause the database file to appear to be deleted
+// following reboot.
+func _sqlite3Vacuum(tls *crt.TLS, _pParse *XParse, _pNm *XToken) {
+ var _iDb int32
+ var _v *TVdbe
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ _iDb = i32(0)
+ if _v == nil {
+ return
+ }
+ if _pNm == nil {
+ goto _1
+ }
+ _iDb = _sqlite3TwoPartName(tls, _pParse, _pNm, _pNm, &_pNm)
+ if _iDb < i32(0) {
+ return
+ }
+_1:
+ if _iDb != i32(1) {
+ _sqlite3VdbeAddOp1(tls, _v, i32(10), _iDb)
+ _sqlite3VdbeUsesBtree(tls, _v, _iDb)
+ }
+}
+
+// Process a pragma statement.
+//
+// Pragmas are of this form:
+//
+// PRAGMA [schema.]id [= value]
+//
+// The identifier might also be a string. The value is a string, and
+// identifier, or a number. If minusFlag is true, then the value is
+// a number that was preceded by a minus sign.
+//
+// If the left side is "database.id" then pId1 is the database name
+// and pId2 is the id. If the left side is just "id" then pId1 is the
+// id and pId2 is any empty string.
+func _sqlite3Pragma(tls *crt.TLS, _pParse *XParse, _pId1 *XToken, _pId2 *XToken, _pValue *XToken, _minusFlag int32) {
+ var _99_cnum, _177_szThreshold int16
+ var _iDb, _rc, _13_size, _15_size, _18_b, _20_ii, _22_iReg, _25_eMode, _28_ii, _31_eMode, _31_ii, _33_n, _43_eAuto, _44_iAddr, _45_iLimit, _45_addr, _49_size, _52_size, _57_ii, _68_res, _77_iLevel, _80_mask, _85_i, _85_k, _85_nHidden, _96_i, _96_mx, _101_i, _104_i, _106_i, _110_i, _111_j, _113_i, _113_j, _113_x, _113_regResult, _113_regKey, _113_regRow, _113_addrTop, _113_addrOk, _124_iCol, _126_jmp, _135_i, _135_j, _135_addr, _135_mxErr, _135_isQuick, _138_cnt, _138_mxIdx, _138_nIdx, _143_loopTop, _143_iDataCur, _143_iIdxCur, _143_r1, _146_jmp2, _148_addrCkFault, _148_addrCkOk, _148_k, _150_jmp2, _150_jmp3, _150_jmp4, _150_jmp5, _150_ckUniq, _151_uniqOk, _151_jmp6, _151_kk, _152_iCol, _164_iCookie, _167_i, _169_iBt, _169_eMode, _177_iDbLast, _177_iTabCur, _185_r1, _193_i, _194_j int32
+ var _39_iLimit, _56_sz, _189_N, _191_N int64
+ var _177_opMask uint32
+ var _113_aiCols, _138_aRoot *int32
+ var _zLeft, _zRight, _zDb, _25_zRet, _33_zMode, _146_zErr, _148_zErr, _167_zOpt, _177_zSubSql, _194_zState *int8
+ var _db *Xsqlite3
+ var _14_pBt, _18_pBt, _41_pBt, _194_pBt *XBtree
+ var _pDb *XDb
+ var _27_pPager, _39_pPager *XPager
+ var _177_pSchema *XSchema
+ var _92_i, _106_p, _113_k, _138_x, _177_k *XHashElem
+ var _138_pTbls *XHash
+ var _84_pTab, _93_pTab, _95_pTab, _101_pTab, _108_pTab, _113_pTab, _113_pParent, _139_pTab, _141_pTab, _143_pTab, _177_pTab *XTable
+ var _v *TVdbe
+ var _pId *XToken
+ var _147_pCheck *XExprList
+ var _85_pCol *XColumn
+ var _85_pPk, _92_pIdx, _95_pIdx, _101_pIdx, _113_pIdx, _139_pIdx, _141_pIdx, _143_pIdx, _143_pPk, _143_pPrior, _177_pIdx *XIndex
+ var _11_aOp, _44_aOp, _155_aOp, _165_aOp, _166_aOp *XVdbeOp
+ var _107_pColl *XCollSeq
+ var _aFcntl [4]*int8
+ var _108_pFK, _113_pFK *XFKey
+ var _103_azOrigin [3]*int8
+ var _pPragma *XPragmaName
+ var _157_pEnc *TEncName
+ _zLeft = nil
+ _zRight = nil
+ _zDb = nil
+ _db = (*Xsqlite3)(_pParse.X0)
+ _v = _sqlite3GetVdbe(tls, _pParse)
+ if _v == nil {
+ return
+ }
+ _sqlite3VdbeRunOnlyOnce(tls, _v)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(2)
+ _iDb = _sqlite3TwoPartName(tls, _pParse, _pId1, _pId2, &_pId)
+ if _iDb < i32(0) {
+ return
+ }
+ _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
+ if (_iDb == i32(1)) && _sqlite3OpenTempDatabase(tls, _pParse) != 0 {
+ return
+ }
+ _zLeft = _sqlite3NameFromToken(tls, _db, _pId)
+ if _zLeft == nil {
+ return
+ }
+ if _minusFlag != 0 {
+ _zRight = _sqlite3MPrintf(tls, _db, str(120677), unsafe.Pointer(_pValue))
+ goto _6
+ }
+ _zRight = _sqlite3NameFromToken(tls, _db, _pValue)
+_6:
func() {
- if _pPk == nil && (*XSelect)(_pTab.X3) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105132), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120644)))
+ if _pId2 == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113600), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120681)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, _addrBypass, _iKey, int32(_nKey))
-_96:
- goto _100
-
-_92:
- if _pPk == nil {
- goto _101
+ _zDb = func() *int8 {
+ if (_pId2.X1) > uint32(i32(0)) {
+ return (_pDb.X0)
+ }
+ return nil
+ }()
+ if _sqlite3AuthCheck(tls, _pParse, i32(19), _zLeft, _zRight, _zDb) != 0 {
+ goto _pragma_out
+ }
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(0)))) = nil
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(1)))) = _zLeft
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(2)))) = _zRight
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(3)))) = nil
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t19)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(376 /* X71 */))))) + uintptr(8 /* X2 */))) = i32(0)
+ _rc = Xsqlite3_file_control(tls, _db, _zDb, i32(14), (unsafe.Pointer)(&_aFcntl))
+ if _rc == i32(0) {
+ _sqlite3VdbeSetNumCols(tls, _v, i32(1))
+ _sqlite3VdbeSetColName(tls, _v, i32(0), i32(0), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(0)))), *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&struct{ f uintptr }{4294967295})))
+ _returnSingleText(tls, _v, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(0)))))
+ Xsqlite3_free(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(0))))))
+ goto _pragma_out
+ }
+ if _rc == i32(12) {
+ goto _13
+ }
+ if (*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(0))))) != nil {
+ _sqlite3ErrorMsg(tls, _pParse, str(24576), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(0))))))
+ Xsqlite3_free(tls, (unsafe.Pointer)(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aFcntl)) + 4*uintptr(i32(0))))))
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(36 /* X16 */))) += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _rc
+ goto _pragma_out
+_13:
+ _pPragma = _pragmaLocate(tls, _zLeft)
+ if _pPragma == nil {
+ goto _pragma_out
+ }
+ if (int32(_pPragma.X2) & i32(1)) == i32(0) {
+ goto _16
+ }
+ if _sqlite3ReadSchema(tls, _pParse) != 0 {
+ goto _pragma_out
+ }
+_16:
+ if ((int32(_pPragma.X2) & i32(2)) == i32(0)) && (((int32(_pPragma.X2) & i32(4)) == i32(0)) || (_zRight == nil)) {
+ _setPragmaResultColumnNames(tls, _v, _pPragma)
+ }
+ switch int32(_pPragma.X1) {
+ case i32(0):
+ goto _50
+ case i32(1):
+ goto _29
+ case i32(2):
+ goto _37
+ case i32(4):
+ goto _31
+ case i32(5):
+ goto _32
+ case i32(6):
+ goto _47
+ case i32(7):
+ goto _43
+ case i32(8):
+ goto _51
+ case i32(10):
+ goto _42
+ case i32(11):
+ goto _22
+ case i32(12):
+ goto _49
+ case i32(13):
+ goto _45
+ case i32(14):
+ goto _44
+ case i32(15):
+ goto _30
+ case i32(16):
+ goto _40
+ case i32(17):
+ goto _41
+ case i32(18):
+ goto _48
+ case i32(19):
+ goto _27
+ case i32(20):
+ goto _28
+ case i32(22):
+ goto _26
+ case i32(23):
+ goto _25
+ case i32(24):
+ goto _33
+ case i32(25):
+ goto _55
+ case i32(26):
+ goto _23
+ case i32(27):
+ goto _24
+ case i32(28):
+ goto _54
+ case i32(29):
+ goto _57
+ case i32(30):
+ goto _36
+ case i32(31):
+ goto _38
+ case i32(32):
+ goto _34
+ case i32(33):
+ goto _35
+ case i32(34):
+ goto _58
+ case i32(35):
+ goto _53
+ case i32(36):
+ goto _52
+ case i32(41):
+ goto _59
+ case i32(42):
+ goto _46
+ case i32(43):
+ goto _39
+ default:
+ goto _56
}
- _addrLoop = _sqlite3VdbeAddOp1(tls, _v, i32(37), _iEphCur)
- _sqlite3VdbeAddOp2(tls, _v, i32(124), _iEphCur, _iKey)
+_22:
+ _sqlite3VdbeUsesBtree(tls, _v, _iDb)
+ if _zRight != nil {
+ goto _60
+ }
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
+ *p = (*p) + i32(2)
+ sink1 = *p
+ }
+ _sqlite3VdbeVerifyNoMallocRequired(tls, _v, i32(9))
+ _11_aOp = _sqlite3VdbeAddOpList(tls, _v, i32(9), (*XVdbeOpList)(unsafe.Pointer(&_sqlite3PragmaØ00getCacheSizeØ002)), _sqlite3PragmaØ00iLnØ001)
+ if func() int32 {
+ if _11_aOp == nil {
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113699), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(1)
+ }()
+ }
+ return i32(0)
+ }() != 0 {
+ goto _64
+ }
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_aOp))+24*uintptr(i32(0)))))) + uintptr(4 /* X3 */))) = _iDb
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_aOp))+24*uintptr(i32(1)))))) + uintptr(4 /* X3 */))) = _iDb
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_aOp))+24*uintptr(i32(6)))))) + uintptr(4 /* X3 */))) = i32(-2000)
+ goto _65
+_60:
+ _13_size = _sqlite3AbsInt32(tls, _sqlite3Atoi(tls, _zRight))
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(0), _iDb)
+ _sqlite3VdbeAddOp3(tls, _v, i32(104), _iDb, i32(3), _13_size)
func() {
- if int32(_nKey) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105139), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120672)))
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113707), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(51150)))
crt.X__builtin_abort(tls)
}
}()
- goto _104
-
-_101:
- _addrLoop = _sqlite3VdbeAddOp3(tls, _v, i32(42), _iRowSet, i32(0), _iKey)
+ *(*int32)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(80 /* X10 */))) = _13_size
+ _sqlite3BtreeSetCacheSize(tls, (*XBtree)(_pDb.X1), (*XSchema)(_pDb.X4).X10)
+_65:
+ goto _64
+_23:
+ _14_pBt = (*XBtree)(_pDb.X1)
func() {
- if int32(_nKey) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105143), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120680)))
+ if _14_pBt == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113727), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120686)))
crt.X__builtin_abort(tls)
}
}()
-_104:
-_100:
- if (_pTab.X16) == 0 {
- goto _107
+ if _zRight == nil {
+ _15_size = func() int32 {
+ if func() int32 {
+ if _14_pBt != nil {
+ return i32(1)
+ }
+ return func() int32 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113729), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(4908)))
+ crt.X__builtin_abort(tls)
+ return i32(0)
+ }()
+ }() != 0 {
+ return _sqlite3BtreeGetPageSize(tls, _14_pBt)
+ }
+ return i32(0)
+ }()
+ _returnSingleInt(tls, _v, int64(_15_size))
+ goto _75
}
-
- _34_pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _pTab)))
- _sqlite3VtabMakeWritable(tls, _pParse, _pTab)
- _sqlite3VdbeAddOp4(tls, _v, i32(12), i32(0), i32(1), _iKey, _34_pVTab, i32(-8))
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(2)))
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(76 /* X27 */))) = _sqlite3Atoi(tls, _zRight)
+ if i32(7) == _sqlite3BtreeSetPageSize(tls, _14_pBt, _db.X27, i32(-1), i32(0)) {
+ _sqlite3OomFault(tls, _db)
+ }
+_75:
+ goto _64
+_24:
+ _18_pBt = (*XBtree)(_pDb.X1)
+ _18_b = i32(-1)
func() {
- if _eOnePass != i32(0) && _eOnePass != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105153), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DeleteFromØ00__func__Ø000))), unsafe.Pointer(str(120688)))
+ if _18_pBt == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113754), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120686)))
crt.X__builtin_abort(tls)
}
}()
- _sqlite3MayAbort(tls, _pParse)
- if _eOnePass != i32(1) || (*XParse)(_pParse.X39) != nil {
- goto _112
+ if _zRight != nil {
+ _18_b = int32(_sqlite3GetBoolean(tls, _zRight, uint8(i32(0))))
}
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(20 /* X8 */))) = uint8(i32(0))
-_112:
- goto _113
-
-_107:
- _36_count = bool2int(int32(_pParse.X6) == i32(0))
- _sqlite3GenerateRowDelete(tls, _pParse, _pTab, _pTrigger, _iDataCur, _iIdxCur, _iKey, _nKey, uint8(_36_count), uint8(i32(10)), uint8(_eOnePass), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1)))))
-_113:
- if _eOnePass == i32(0) {
- goto _114
+ if (_pId2.X1) != uint32(i32(0)) || _18_b < i32(0) {
+ goto _81
}
-
- _sqlite3VdbeResolveLabel(tls, _v, _addrBypass)
- _sqlite3WhereEnd(tls, _pWInfo)
- goto _115
-
-_114:
- if _pPk == nil {
- goto _116
+ _20_ii = i32(0)
+_82:
+ if _20_ii >= (_db.X5) {
+ goto _85
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _iEphCur, _addrLoop+i32(1))
- _sqlite3VdbeJumpHere(tls, _v, _addrLoop)
- goto _117
-
-_116:
- _sqlite3VdbeGoto(tls, _v, _addrLoop)
- _sqlite3VdbeJumpHere(tls, _v, _addrLoop)
-_117:
-_115:
-_45:
- if int32(_pParse.X6) != i32(0) || (*XTable)(_pParse.X40) != nil {
- goto _119
+ _sqlite3BtreeSecureDelete(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_20_ii))).X1), _18_b)
+ _20_ii += 1
+ goto _82
+_85:
+_81:
+ _18_b = _sqlite3BtreeSecureDelete(tls, _18_pBt, _18_b)
+ _returnSingleInt(tls, _v, int64(_18_b))
+ goto _64
+_25:
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
+ _22_iReg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
+ if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3UpperToLower)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zLeft)) + 1*uintptr(i32(0))))))))) == i32(112) {
+ _sqlite3VdbeAddOp2(tls, _v, i32(161), _iDb, _22_iReg)
+ goto _87
}
-
- _sqlite3AutoincrementEnd(tls, _pParse)
-_119:
- if ((_db.X6)&i32(128)) == 0 || (_pParse.X6) != 0 || (*XTable)(_pParse.X40) != nil {
- goto _122
+ _sqlite3VdbeAddOp3(tls, _v, i32(162), _iDb, _22_iReg, _sqlite3AbsInt32(tls, _sqlite3Atoi(tls, _zRight)))
+_87:
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), _22_iReg, i32(1))
+ goto _64
+_26:
+ _25_zRet = str(91148)
+ _25_eMode = _getLockingMode(tls, _zRight)
+ if ((_pId2.X1) == uint32(i32(0))) && (_25_eMode == i32(-1)) {
+ _25_eMode = int32(_db.X19)
+ goto _90
}
-
- _sqlite3VdbeAddOp2(tls, _v, i32(67), _memCnt, i32(1))
- _sqlite3VdbeSetNumCols(tls, _v, i32(1))
- _sqlite3VdbeSetColName(tls, _v, i32(0), i32(0), str(120740), nil)
-_122:
-_delete_from_cleanup:
- _sqlite3AuthContextPop(tls, &_sContext)
- _sqlite3SrcListDelete(tls, _db, _pTabList)
- _sqlite3ExprDelete(tls, _db, _pWhere)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_aToOpen))
-}
-
-var _sqlite3DeleteFromØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3DeleteFromØ00__func__Ø000[0], str(120756), 18)
-}
-
-func _sqlite3TriggersExist(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _op int32, _pChanges *XExprList, _pMask *int32) (r0 *XTrigger) { // sqlite3.c:123259:1
- var _mask int32 // sqlite3.c:123266:7
- _ = _mask
- var _pList *XTrigger // sqlite3.c:123267:11
- _ = _pList
- var _p *XTrigger // sqlite3.c:123268:11
- _ = _p
- _mask = i32(0)
- _pList = nil
- if (((*Xsqlite3)(_pParse.X0).X6) & i32(16777216)) == i32(0) {
- goto _0
+ if (_pId2.X1) != uint32(i32(0)) {
+ goto _91
}
-
- _pList = _sqlite3TriggerList(tls, _pParse, _pTab)
-_0:
func() {
- if _pList != nil && (_pTab.X16) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123273), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TriggersExistØ00__func__Ø000))), unsafe.Pointer(str(120776)))
+ if _pDb != (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(0)))) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113826), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120693)))
crt.X__builtin_abort(tls)
}
}()
- _p = _pList
-_4:
- if _p == nil {
- goto _7
+ _28_ii = i32(2)
+_94:
+ if _28_ii >= (_db.X5) {
+ goto _97
}
-
- if int32(_p.X2) != _op || _checkColumnOverlap(tls, (*XIdList)(_p.X5), _pChanges) == 0 {
- goto _9
+ _27_pPager = _sqlite3BtreePager(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_28_ii))).X1))
+ _sqlite3PagerLockingMode(tls, _27_pPager, _25_eMode)
+ _28_ii += 1
+ goto _94
+_97:
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(67 /* X19 */))) = uint8(_25_eMode)
+_91:
+ _27_pPager = _sqlite3BtreePager(tls, (*XBtree)(_pDb.X1))
+ _25_eMode = _sqlite3PagerLockingMode(tls, _27_pPager, _25_eMode)
+_90:
+ func() {
+ if _25_eMode != i32(0) && _25_eMode != i32(1) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113837), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120710)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _25_eMode == i32(1) {
+ _25_zRet = str(91138)
}
-
- {
- p := &_mask
- *p = (*p) | int32(_p.X3)
- sink1 = *p
+ _returnSingleText(tls, _v, _25_zRet)
+ goto _64
+_27:
+ if _zRight == nil {
+ _31_eMode = i32(-1)
+ goto _103
}
-_9:
- _p = (*XTrigger)(_p.X9)
- goto _4
-
-_7:
- if _pMask == nil {
- goto _10
+ _33_n = _sqlite3Strlen30(tls, _zRight)
+ _31_eMode = i32(0)
+_104:
+ if store0(&_33_zMode, _sqlite3JournalModename(tls, _31_eMode)) == nil {
+ goto _107
}
-
- *_pMask = _mask
-_10:
- return func() *XTrigger {
- if _mask != 0 {
- return _pList
- }
- return nil
- }()
-}
-
-func _sqlite3TriggerList(tls *crt.TLS, _pParse *XParse, _pTab *XTable) (r0 *XTrigger) { // sqlite3.c:122691:1
- var _pTmpSchema *XSchema // sqlite3.c:122692:10
- _ = _pTmpSchema
- var _pList *XTrigger // sqlite3.c:122693:11
- _ = _pList
- var _2_p *XHashElem // sqlite3.c:122700:14
- _ = _2_p
- var _3_pTrig *XTrigger // sqlite3.c:122703:15
- _ = _3_pTrig
- _pTmpSchema = (*XSchema)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4) + 16*uintptr(i32(1)))).X4)
- _pList = nil
- if (_pParse.X47) == 0 {
- goto _0
+ if Xsqlite3_strnicmp(tls, _zRight, _33_zMode, _33_n) == i32(0) {
+ goto _107
}
- return nil
-
-_0:
- if _pTmpSchema == (*XSchema)(_pTab.X20) {
- goto _1
+ _31_eMode += 1
+ goto _104
+_107:
+ if _33_zMode == nil {
+ _31_eMode = i32(-1)
}
-
+_103:
+ if (_31_eMode == i32(-1)) && ((_pId2.X1) == uint32(i32(0))) {
+ _iDb = i32(0)
+ *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pId2)) + uintptr(4 /* X1 */))) = uint32(i32(1))
+ }
+ _31_ii = (_db.X5) - i32(1)
+_112:
+ if _31_ii < i32(0) {
+ goto _115
+ }
+ if ((*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_31_ii))).X1) != nil) && ((_31_ii == _iDb) || ((_pId2.X1) == uint32(i32(0)))) {
+ _sqlite3VdbeUsesBtree(tls, _v, _31_ii)
+ _sqlite3VdbeAddOp3(tls, _v, i32(9), _31_ii, i32(1), _31_eMode)
+ }
+ _31_ii -= 1
+ goto _112
+_115:
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), i32(1))
+ goto _64
+_28:
+ _39_pPager = _sqlite3BtreePager(tls, (*XBtree)(_pDb.X1))
+ _39_iLimit = i64(-2)
+ if _zRight == nil {
+ goto _119
+ }
+ _sqlite3DecOrHexToI64(tls, _zRight, &_39_iLimit)
+ if _39_iLimit < int64(i32(-1)) {
+ _39_iLimit = int64(i32(-1))
+ }
+_119:
+ _39_iLimit = _sqlite3PagerJournalSizeLimit(tls, _39_pPager, _39_iLimit)
+ _returnSingleInt(tls, _v, _39_iLimit)
+ goto _64
+_29:
+ _41_pBt = (*XBtree)(_pDb.X1)
func() {
- if _sqlite3SchemaMutexHeld(tls, (*Xsqlite3)(_pParse.X0), i32(0), _pTmpSchema) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(122701), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TriggerListØ00__func__Ø000))), unsafe.Pointer(str(120808)))
+ if _41_pBt == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113916), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120686)))
crt.X__builtin_abort(tls)
}
}()
- _2_p = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTmpSchema)) + uintptr(40 /* X4 */))).X2)
-_4:
- if _2_p == nil {
- goto _7
- }
-
- _3_pTrig = (*XTrigger)(_2_p.X2)
- if (*XSchema)(_3_pTrig.X7) != (*XSchema)(_pTab.X20) || i32(0) != _sqlite3StrICmp(tls, _3_pTrig.X1, _pTab.X0) {
- goto _9
+ if _zRight == nil {
+ _returnSingleInt(tls, _v, int64(_sqlite3BtreeGetAutoVacuum(tls, _41_pBt)))
+ goto _124
}
-
- *(**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pTrig)) + uintptr(32 /* X9 */))))) = func() *XTrigger {
- if _pList != nil {
- return _pList
- }
- return (*XTrigger)(_pTab.X19)
- }()
- _pList = _3_pTrig
-_9:
- _2_p = (*XHashElem)(_2_p.X0)
- goto _4
-
-_7:
-_1:
- r0 = func() *XTrigger {
- if _pList != nil {
- return _pList
+ _43_eAuto = _getAutoVacuum(tls, _zRight)
+ func() {
+ if _43_eAuto < i32(0) || _43_eAuto > i32(2) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113921), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120780)))
+ crt.X__builtin_abort(tls)
}
- return (*XTrigger)(_pTab.X19)
}()
- return
-}
-
-var _sqlite3TriggerListØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3TriggerListØ00__func__Ø000[0], str(120860), 19)
-}
-
-var _sqlite3TriggersExistØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3TriggersExistØ00__func__Ø000[0], str(120880), 21)
-}
-
-func _checkColumnOverlap(tls *crt.TLS, _pIdList *XIdList, _pEList *XExprList) (r0 int32) { // sqlite3.c:123244:1
- var _e int32 // sqlite3.c:123245:7
- _ = _e
- if _pIdList != nil && func() int32 {
- if _pEList == nil {
+ *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(68 /* X20 */))) = int8(uint8(_43_eAuto))
+ _rc = _sqlite3BtreeSetAutoVacuum(tls, _41_pBt, _43_eAuto)
+ if _rc != i32(0) || _43_eAuto != i32(1) && _43_eAuto != i32(2) {
+ goto _130
+ }
+ _44_iAddr = _sqlite3VdbeCurrentAddr(tls, _v)
+ _sqlite3VdbeVerifyNoMallocRequired(tls, _v, i32(5))
+ _44_aOp = _sqlite3VdbeAddOpList(tls, _v, i32(5), (*XVdbeOpList)(unsafe.Pointer(&_sqlite3PragmaØ00setMeta6Ø004)), _sqlite3PragmaØ00iLnØ003)
+ if func() int32 {
+ if _44_aOp == nil {
return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123246), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkColumnOverlapØ00__func__Ø000))), unsafe.Pointer(str(3240)))
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113947), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(4908)))
crt.X__builtin_abort(tls)
return i32(1)
}()
}
return i32(0)
- }() == 0 {
- goto _3
- }
- return i32(1)
-
-_3:
- _e = i32(0)
-_4:
- if _e >= (_pEList.X0) {
- goto _7
+ }() != 0 {
+ goto _64
}
-
- if _sqlite3IdListIndex(tls, _pIdList, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(_e))).X1) < i32(0) {
- goto _8
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_44_aOp))+24*uintptr(i32(0)))))) + uintptr(4 /* X3 */))) = _iDb
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_44_aOp))+24*uintptr(i32(1)))))) + uintptr(4 /* X3 */))) = _iDb
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_44_aOp))+24*uintptr(i32(2)))))) + uintptr(8 /* X4 */))) = _44_iAddr + i32(4)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_44_aOp))+24*uintptr(i32(4)))))) + uintptr(4 /* X3 */))) = _iDb
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_44_aOp))+24*uintptr(i32(4)))))) + uintptr(12 /* X5 */))) = _43_eAuto - i32(1)
+ _sqlite3VdbeUsesBtree(tls, _v, _iDb)
+_130:
+_124:
+ goto _64
+_30:
+ if ((_zRight == nil) || (_sqlite3GetInt32(tls, _zRight, &_45_iLimit) == 0)) || (_45_iLimit <= i32(0)) {
+ _45_iLimit = i32(2147483647)
}
- return i32(1)
-
-_8:
- _e += 1
- goto _4
-
-_7:
- return i32(0)
-}
-
-var _checkColumnOverlapØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_checkColumnOverlapØ00__func__Ø000[0], str(120904), 19)
-}
-
-func _sqlite3FkRequired(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _aChange *int32, _chngRowid int32) (r0 int32) { // sqlite3.c:108514:1
- var _eRet int32 // sqlite3.c:108520:7
- _ = _eRet
- var _3_p *XFKey // sqlite3.c:108530:12
- _ = _3_p
- _eRet = i32(0)
- if (((*Xsqlite3)(_pParse.X0).X6) & i32(524288)) == 0 {
- goto _0
+ _sqlite3BeginWriteOperation(tls, _pParse, i32(0), _iDb)
+ _sqlite3VdbeAddOp2(tls, _v, i32(56), _45_iLimit, i32(1))
+ _45_addr = _sqlite3VdbeAddOp1(tls, _v, i32(49), _iDb)
+ _sqlite3VdbeAddOp1(tls, _v, i32(67), i32(1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(73), i32(1), i32(-1))
+ _sqlite3VdbeAddOp2(tls, _v, i32(46), i32(1), _45_addr)
+ _sqlite3VdbeJumpHere(tls, _v, _45_addr)
+ goto _64
+_31:
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(113995), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _zRight == nil {
+ _returnSingleInt(tls, _v, int64((*XSchema)(_pDb.X4).X10))
+ goto _140
}
-
- if _aChange != nil {
- goto _1
+ _49_size = _sqlite3Atoi(tls, _zRight)
+ *(*int32)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(80 /* X10 */))) = _49_size
+ _sqlite3BtreeSetCacheSize(tls, (*XBtree)(_pDb.X1), (*XSchema)(_pDb.X4).X10)
+_140:
+ goto _64
+_32:
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(114029), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _zRight == nil {
+ _returnSingleInt(tls, _v, int64(func() int32 {
+ if ((_db.X6) & i32(32)) == i32(0) {
+ return i32(0)
+ }
+ return _sqlite3BtreeSetSpillSize(tls, (*XBtree)(_pDb.X1), i32(0))
+ }()))
+ goto _146
}
-
- _eRet = bool2int((_sqlite3FkReferences(tls, _pTab) != nil) || ((*XFKey)(_pTab.X4) != nil))
- goto _3
-
-_1:
- _3_p = (*XFKey)(_pTab.X4)
-_4:
- if _3_p == nil {
- goto _7
+ _52_size = i32(1)
+ if _sqlite3GetInt32(tls, _zRight, &_52_size) != 0 {
+ _sqlite3BtreeSetSpillSize(tls, (*XBtree)(_pDb.X1), _52_size)
}
-
- if i32(0) != Xsqlite3_stricmp(tls, _pTab.X0, _3_p.X2) {
- goto _8
+ if _sqlite3GetBoolean(tls, _zRight, uint8(bool2int(_52_size != i32(0)))) != 0 {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | i32(32)
+ sink1 = *p
+ }
+ goto _149
}
- return i32(2)
-
-_8:
- if _fkChildIsModified(tls, _pTab, _3_p, _aChange, _chngRowid) == 0 {
- goto _9
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) & i32(-33)
+ sink1 = *p
}
-
- _eRet = i32(1)
-_9:
- _3_p = (*XFKey)(_3_p.X1)
- goto _4
-
-_7:
- _3_p = _sqlite3FkReferences(tls, _pTab)
-_10:
- if _3_p == nil {
- goto _13
+_149:
+ _setAllPagerFlags(tls, _db)
+_146:
+ goto _64
+_33:
+ func() {
+ if _sqlite3SchemaMutexHeld(tls, _db, _iDb, nil) == 0 {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(114066), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(51150)))
+ crt.X__builtin_abort(tls)
+ }
+ }()
+ if _zRight == nil {
+ goto _152
}
-
- if _fkParentIsModified(tls, _pTab, _3_p, _aChange, _chngRowid) == 0 {
- goto _14
+ _sqlite3DecOrHexToI64(tls, _zRight, &_56_sz)
+ if _56_sz < int64(i32(0)) {
+ _56_sz = _sqlite3Config.X17
}
-
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_p))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(1))))) == i32(0) {
- goto _15
+ if (_pId2.X1) == uint32(i32(0)) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(36 /* X8 */))) = _56_sz
}
- return i32(2)
-
-_15:
- _eRet = i32(1)
-_14:
- _3_p = (*XFKey)(_3_p.X3)
- goto _10
-
-_13:
-_3:
-_0:
- r0 = _eRet
- return
-}
-
-func _fkChildIsModified(tls *crt.TLS, _pTab *XTable, _p *XFKey, _aChange *int32, _bChngRowid int32) (r0 int32) { // sqlite3.c:108177:1
- var _i int32 // sqlite3.c:108183:7
- _ = _i
- var _1_iChildKey int32 // sqlite3.c:108185:9
- _ = _1_iChildKey
- _i = i32(0)
-_0:
- if _i >= (_p.X5) {
- goto _3
+ _57_ii = (_db.X5) - i32(1)
+_155:
+ if _57_ii < i32(0) {
+ goto _158
}
-
- _1_iChildKey = (*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(36 /* X9 */))))) + 8*uintptr(_i))).X0
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aChange)) + 4*uintptr(_1_iChildKey)))) < i32(0) {
- goto _4
+ if ((*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_57_ii))).X1) != nil) && ((_57_ii == _iDb) || ((_pId2.X1) == uint32(i32(0)))) {
+ _sqlite3BtreeSetMmapLimit(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_57_ii))).X1), _56_sz)
}
- return i32(1)
-
-_4:
- if _1_iChildKey != int32(_pTab.X10) || _bChngRowid == 0 {
- goto _6
+ _57_ii -= 1
+ goto _155
+_158:
+_152:
+ _56_sz = int64(i32(-1))
+ _rc = Xsqlite3_file_control(tls, _db, _zDb, i32(18), (unsafe.Pointer)(&_56_sz))
+ if _rc == i32(0) {
+ _returnSingleInt(tls, _v, _56_sz)
+ goto _163
}
- return i32(1)
-
-_6:
- _i += 1
- goto _0
-
-_3:
- return i32(0)
-}
-
-func _fkParentIsModified(tls *crt.TLS, _pTab *XTable, _p *XFKey, _aChange *int32, _bChngRowid int32) (r0 int32) { // sqlite3.c:108204:1
- var _i int32 // sqlite3.c:108210:7
- _ = _i
- var _1_zKey *int8 // sqlite3.c:108212:10
- _ = _1_zKey
- var _1_iKey int32 // sqlite3.c:108213:9
- _ = _1_iKey
- var _3_pCol *XColumn // sqlite3.c:108216:16
- _ = _3_pCol
- _i = i32(0)
-_0:
- if _i >= (_p.X5) {
- goto _3
+ if _rc != i32(12) {
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(36 /* X16 */))) += 1
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(12 /* X3 */))) = _rc
}
-
- _1_zKey = (*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(36 /* X9 */))))) + 8*uintptr(_i))).X1
- _1_iKey = i32(0)
-_4:
- if _1_iKey >= int32(_pTab.X11) {
- goto _7
+_163:
+ goto _64
+_34:
+ if _zRight == nil {
+ _returnSingleInt(tls, _v, int64(_db.X16))
+ goto _166
}
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aChange)) + 4*uintptr(_1_iKey)))) < i32(0) && (_1_iKey != int32(_pTab.X10) || _bChngRowid == 0) {
- goto _10
+ _changeTempStorage(tls, _pParse, _zRight)
+_166:
+ goto _64
+_35:
+ if _zRight == nil {
+ _returnSingleText(tls, _v, Xsqlite3_temp_directory)
+ goto _168
}
-
- _3_pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_1_iKey)))
- if _1_zKey == nil {
- goto _11
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRight)) + 1*uintptr(i32(0))))) == 0 {
+ goto _169
}
-
- if i32(0) != _sqlite3StrICmp(tls, _3_pCol.X0, _1_zKey) {
- goto _12
+ _rc = _sqlite3OsAccess(tls, (*Xsqlite3_vfs)(_db.X0), _zRight, i32(1), &_68_res)
+ if (_rc != i32(0)) || (_68_res == i32(0)) {
+ _sqlite3ErrorMsg(tls, _pParse, str(120801))
+ goto _pragma_out
}
- return i32(1)
-
-_12:
- goto _13
-
-_11:
- if (int32(_3_pCol.X6) & i32(1)) == 0 {
- goto _14
+_169:
+ if (i32(0) != 0 || (i32(1) != 0 && (int32(_db.X16) <= i32(1)))) || i32(0) != 0 {
+ _invalidateTempStorage(tls, _pParse)
}
- return i32(1)
-
-_14:
-_13:
-_10:
- _1_iKey += 1
- goto _4
-
-_7:
- _i += 1
- goto _0
-
-_3:
- return i32(0)
-}
-
-func _sqlite3IsReadOnly(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _viewOk int32) (r0 int32) { // sqlite3.c:104685:1
- if ((_pTab.X16) == 0 || *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32
- }{(*(*func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32)(unsafe.Pointer(&struct {
- f func(*crt.TLS, unsafe.Pointer, int32, *unsafe.Pointer, *int64) int32
- }{((*Xsqlite3_module)((*XModule)(_sqlite3GetVTable(tls, (*Xsqlite3)(_pParse.X0), _pTab).X1).X0).X13)})))})) != *(*unsafe.Pointer)(unsafe.Pointer(&struct {
- f func(*crt.TLS, *Xsqlite3_vtab, int32, **XMem, *int64) int32
- }{nil}))) && (((_pTab.X9)&uint32(i32(1))) == uint32(i32(0)) || (((*Xsqlite3)(_pParse.X0).X6)&i32(2048)) != i32(0) || int32(_pParse.X6) != i32(0)) {
- goto _4
+ Xsqlite3_free(tls, (unsafe.Pointer)(Xsqlite3_temp_directory))
+ if (*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_zRight)) + 1*uintptr(i32(0))))) != 0 {
+ Xsqlite3_temp_directory = Xsqlite3_mprintf(tls, str(24576), unsafe.Pointer(_zRight))
+ bug20530(Xsqlite3_temp_directory)
+ goto _177
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(120924), unsafe.Pointer(_pTab.X0))
- return i32(1)
-
-_4:
- if _viewOk != 0 || (*XSelect)(_pTab.X3) == nil {
- goto _6
+ Xsqlite3_temp_directory = nil
+ bug20530(Xsqlite3_temp_directory)
+_177:
+_168:
+ goto _64
+_36:
+ if _zRight == nil {
+ _returnSingleInt(tls, _v, int64(int32(_pDb.X2)-i32(1)))
+ goto _179
}
-
- _sqlite3ErrorMsg(tls, _pParse, str(120956), unsafe.Pointer(_pTab.X0))
- return i32(1)
-
-_6:
- return i32(0)
-}
-
-func _sqlite3AuthContextPush(tls *crt.TLS, _pParse *XParse, _pContext *XAuthContext, _zContext *int8) { // sqlite3.c:99671:1
- func() {
- if _pParse == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(99676), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3AuthContextPushØ00__func__Ø000))), unsafe.Pointer(str(120996)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pContext)) + uintptr(4 /* X1 */))))) = _pParse
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pContext)) + uintptr(0 /* X0 */))) = _pParse.X65
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(452 /* X65 */))) = _zContext
-}
-
-var _sqlite3AuthContextPushØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3AuthContextPushØ00__func__Ø000[0], str(121004), 23)
-}
-
-func _sqlite3VdbeCountChanges(tls *crt.TLS, _v *TVdbe) { // sqlite3.c:75923:1
- storebits16((*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_v))+uintptr(140 /* X32 */))), int16(i32(1)), 16, 4)
-}
-
-func _sqlite3MaterializeView(tls *crt.TLS, _pParse *XParse, _pView *XTable, _pWhere *XExpr, _iCur int32) { // sqlite3.c:104722:1
- var _dest XSelectDest // sqlite3.c:104728:14
- _ = _dest
- var _pSel *XSelect // sqlite3.c:104729:10
- _ = _pSel
- var _pFrom *XSrcList // sqlite3.c:104730:11
- _ = _pFrom
- var _db *Xsqlite3 // sqlite3.c:104731:11
- _ = _db
- var _iDb int32 // sqlite3.c:104732:7
- _ = _iDb
- _db = (*Xsqlite3)(_pParse.X0)
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pView.X20))
- _pWhere = _sqlite3ExprDup(tls, _db, _pWhere, i32(0))
- _pFrom = _sqlite3SrcListAppend(tls, _db, nil, nil, nil)
- if _pFrom == nil {
- goto _0
+ if (_db.X15) == 0 {
+ _sqlite3ErrorMsg(tls, _pParse, str(120826))
+ goto _181
}
-
- func() {
- if (_pFrom.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104736), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MaterializeViewØ00__func__Ø000))), unsafe.Pointer(str(121028)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, _pView.X0)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(4 /* X1 */))) = _sqlite3DbStrDup(tls, _db, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
- func() {
- if (*XExpr)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X12) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104739), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MaterializeViewØ00__func__Ø000))), unsafe.Pointer(str(121044)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XIdList)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFrom))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X13) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(104740), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3MaterializeViewØ00__func__Ø000))), unsafe.Pointer(str(121064)))
- crt.X__builtin_abort(tls)
+ if _iDb == i32(1) {
+ goto _182
+ }
+ _77_iLevel = (int32(_getSafetyLevel(tls, _zRight, i32(0), uint8(i32(1)))) + i32(1)) & i32(7)
+ if _77_iLevel == i32(0) {
+ _77_iLevel = i32(1)
+ }
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDb)) + uintptr(8 /* X2 */))) = uint8(_77_iLevel)
+ *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDb)) + uintptr(9 /* X3 */))) = uint8(i32(1))
+ _setAllPagerFlags(tls, _db)
+_182:
+_181:
+_179:
+ goto _64
+_37:
+ if _zRight == nil {
+ _setPragmaResultColumnNames(tls, _v, _pPragma)
+ _returnSingleInt(tls, _v, int64(bool2int((uint32(_db.X6)&(_pPragma.X5)) != uint32(i32(0)))))
+ goto _185
+ }
+ _80_mask = int32(_pPragma.X5)
+ if int32(_db.X15) == i32(0) {
+ {
+ p := &_80_mask
+ *p = (*p) & i32(-524289)
+ sink1 = *p
}
- }()
-_0:
- _pSel = _sqlite3SelectNew(tls, _pParse, nil, _pFrom, _pWhere, nil, nil, nil, uint32(i32(131072)), nil, nil)
- _sqlite3SelectDestInit(tls, &_dest, i32(12), _iCur)
- _sqlite3Select(tls, _pParse, _pSel, &_dest)
- _sqlite3SelectDelete(tls, _db, _pSel)
-}
-
-var _sqlite3MaterializeViewØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3MaterializeViewØ00__func__Ø000[0], str(121088), 23)
-}
-
-func _sqlite3SelectNew(tls *crt.TLS, _pParse *XParse, _pEList *XExprList, _pSrc *XSrcList, _pWhere *XExpr, _pGroupBy *XExprList, _pHaving *XExpr, _pOrderBy *XExprList, _selFlags uint32, _pLimit *XExpr, _pOffset *XExpr) (r0 *XSelect) { // sqlite3.c:116622:1
- var _pNew *XSelect // sqlite3.c:116634:10
- _ = _pNew
- var _standin XSelect // sqlite3.c:116635:10
- _ = _standin
- _pNew = (*XSelect)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(80))))
- if _pNew != nil {
- goto _0
}
-
- func() {
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116638), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(43572)))
- crt.X__builtin_abort(tls)
+ if _sqlite3GetBoolean(tls, _zRight, uint8(i32(0))) != 0 {
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) | _80_mask
+ sink1 = *p
}
- }()
- _pNew = &_standin
-_0:
- if _pEList != nil {
- goto _3
+ goto _188
}
-
- _pEList = _sqlite3ExprListAppend(tls, _pParse, nil, _sqlite3Expr(tls, (*Xsqlite3)(_pParse.X0), i32(161), nil))
-_3:
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(0 /* X0 */))))) = _pEList
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(4 /* X1 */))) = uint8(i32(119))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(8 /* X3 */))) = _selFlags
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(12 /* X4 */))) = i32(0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(16 /* X5 */))) = i32(0)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(20 /* X6 */))))) + 1*uintptr(i32(0)))) = int8(i32(0))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(0)))) = i32(-1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew))+uintptr(32 /* X7 */))))) + 4*uintptr(i32(1)))) = i32(-1)
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(6 /* X2 */))) = int16(i32(0))
- if _pSrc != nil {
- goto _4
+ {
+ p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(24 /* X6 */)))
+ *p = (*p) & (^_80_mask)
+ sink1 = *p
}
-
- _pSrc = (*XSrcList)(_sqlite3DbMallocZero(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(76))))
-_4:
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(40 /* X8 */))))) = _pSrc
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(44 /* X9 */))))) = _pWhere
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(48 /* X10 */))))) = _pGroupBy
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(52 /* X11 */))))) = _pHaving
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(56 /* X12 */))))) = _pOrderBy
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(60 /* X13 */))))) = nil
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(64 /* X14 */))))) = nil
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(68 /* X15 */))))) = _pLimit
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(72 /* X16 */))))) = _pOffset
- *(**XWith)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pNew)) + uintptr(76 /* X17 */))))) = nil
- func() {
- if _pOffset != nil && _pLimit == nil && (_pParse.X16) <= i32(0) && int32((*Xsqlite3)(_pParse.X0).X17) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(121112)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- goto _10
+ if _80_mask == i32(33554432) {
+ *(*int64)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(444 /* X78 */))) = int64(i32(0))
}
-
- _clearSelect(tls, (*Xsqlite3)(_pParse.X0), _pNew, bool2int(_pNew != &_standin))
- _pNew = nil
- goto _11
-
-_10:
+_188:
+ _sqlite3VdbeAddOp0(tls, _v, i32(153))
+ _setAllPagerFlags(tls, _db)
+_185:
+ goto _64
+_38:
+ if _zRight == nil {
+ goto _190
+ }
+ _84_pTab = _sqlite3LocateTable(tls, _pParse, uint32(i32(2)), _zRight, _zDb)
+ if _84_pTab == nil {
+ goto _191
+ }
+ _85_nHidden = i32(0)
+ _85_pPk = _sqlite3PrimaryKeyIndex(tls, _84_pTab)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(6)
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
+ _sqlite3ViewGetColumnNames(tls, _pParse, _84_pTab)
+ *func() **XColumn { _85_i = i32(0); return &_85_pCol }() = (*XColumn)(_84_pTab.X1)
+_192:
+ if _85_i >= int32(_84_pTab.X11) {
+ goto _195
+ }
+ if (int32(_85_pCol.X6) & i32(2)) != i32(0) {
+ _85_nHidden += 1
+ goto _193
+ }
+ if (int32(_85_pCol.X6) & i32(1)) == i32(0) {
+ _85_k = i32(0)
+ goto _198
+ }
+ if _85_pPk == nil {
+ _85_k = i32(1)
+ goto _200
+ }
+ _85_k = i32(1)
+_201:
+ if _85_k > int32(_84_pTab.X11) || int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_85_pPk.X1)) + 2*uintptr(_85_k-i32(1))))) == _85_i {
+ goto _205
+ }
+ _85_k += 1
+ goto _201
+_205:
+_200:
+_198:
func() {
- if (*XSrcList)(_pNew.X8) == nil && (_pParse.X16) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116671), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(121188)))
+ if (*XExpr)(_85_pCol.X1) != nil && int32((*XExpr)(_85_pCol.X1).X0) != i32(162) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(114330), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120879)))
crt.X__builtin_abort(tls)
}
}()
-_11:
- func() {
- if _pNew == &_standin {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(116673), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SelectNewØ00__func__Ø000))), unsafe.Pointer(str(121220)))
- crt.X__builtin_abort(tls)
+ _sqlite3VdbeMultiLoad(tls, _v, i32(1), str(120922), _85_i-_85_nHidden, unsafe.Pointer(_85_pCol.X0), unsafe.Pointer(_sqlite3ColumnType(tls, _85_pCol, str(0))), func() int32 {
+ if (_85_pCol.X3) != 0 {
+ return i32(1)
}
- }()
- return _pNew
-}
-
-var _sqlite3SelectNewØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3SelectNewØ00__func__Ø000[0], str(121236), 17)
-}
-
-func _sqlite3WhereOkOnePass(tls *crt.TLS, _pWInfo *XWhereInfo, _aiCur *int32) (r0 int32) { // sqlite3.c:130489:1
- crt.Xmemcpy(tls, (unsafe.Pointer)(_aiCur), (unsafe.Pointer)((*[2]int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWInfo))+uintptr(24 /* X6 */)))), u32(8))
- return int32(_pWInfo.X14)
-}
-
-func _sqlite3OpenTableAndIndices(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _op int32, _p5 uint8, _iBase int32, _aToOpen *uint8, _piDataCur *int32, _piIdxCur *int32) (r0 int32) { // sqlite3.c:110642:1
- var _i int32 // sqlite3.c:110652:7
- _ = _i
- var _iDb int32 // sqlite3.c:110653:7
- _ = _iDb
- var _iDataCur int32 // sqlite3.c:110654:7
- _ = _iDataCur
- var _pIdx *XIndex // sqlite3.c:110655:9
- _ = _pIdx
- var _v *TVdbe // sqlite3.c:110656:8
- _ = _v
- var _4_iIdxCur int32 // sqlite3.c:110679:9
- _ = _4_iIdxCur
- func() {
- if _op != i32(106) && _op != i32(107) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110658), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(121256)))
- crt.X__builtin_abort(tls)
+ return i32(0)
+ }(), unsafe.Pointer(func() *int8 {
+ if (*XExpr)(_85_pCol.X1) != nil {
+ return (*(**int8)(unsafe.Pointer((*t27)(unsafe.Pointer(uintptr(_85_pCol.X1) + uintptr(8 /* X3 */))))))
}
- }()
+ return nil
+ }()), _85_k)
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), i32(6))
+_193:
+ *(*uintptr)(unsafe.Pointer(func() **XColumn { _85_i += 1; return &_85_pCol }())) += uintptr(16)
+ goto _192
+_195:
+_191:
+_190:
+ goto _64
+_39:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(5)
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
+ _92_i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr(_pDb.X4) + uintptr(8 /* X2 */))).X2)
+_213:
+ if _92_i == nil {
+ goto _216
+ }
+ _93_pTab = (*XTable)(_92_i.X2)
+ _sqlite3VdbeMultiLoad(tls, _v, i32(1), str(120929), unsafe.Pointer(_93_pTab.X0), i32(0), int32(_93_pTab.X13), int32(_93_pTab.X12), _93_pTab.X9)
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), i32(5))
+ _92_pIdx = (*XIndex)(_93_pTab.X2)
+_217:
+ if _92_pIdx == nil {
+ goto _220
+ }
+ _sqlite3VdbeMultiLoad(tls, _v, i32(2), str(120935), unsafe.Pointer(_92_pIdx.X0), int32(_92_pIdx.X12), int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_92_pIdx.X2)) + 2*uintptr(i32(0))))), (uint32((_92_pIdx.X16)>>uint(i32(7)))<>uint(i32(31)))
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), i32(5))
+ _92_pIdx = (*XIndex)(_92_pIdx.X5)
+ goto _217
+_220:
+ _92_i = (*XHashElem)(_92_i.X0)
+ goto _213
+_216:
+ goto _64
+_40:
+ if _zRight == nil {
+ goto _221
+ }
+ _95_pIdx = _sqlite3FindIndex(tls, _db, _zRight, _zDb)
+ if _95_pIdx == nil {
+ goto _222
+ }
+ if (_pPragma.X5) != 0 {
+ _96_mx = int32(_95_pIdx.X14)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(6)
+ goto _224
+ }
+ _96_mx = int32(_95_pIdx.X13)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(3)
+_224:
+ _95_pTab = (*XTable)(_95_pIdx.X3)
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
func() {
- if _op != i32(107) && int32(_p5) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110659), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(121292)))
+ if (_pParse.X18) > int32(_pPragma.X4) {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(114390), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120940)))
crt.X__builtin_abort(tls)
}
}()
- if (_pTab.X16) == 0 {
- goto _6
+ _96_i = i32(0)
+_227:
+ if _96_i >= _96_mx {
+ goto _230
}
- return i32(0)
-
-_6:
- _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTab.X20))
- _v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110668), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(43120)))
- crt.X__builtin_abort(tls)
+ _99_cnum = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_95_pIdx.X1)) + 2*uintptr(_96_i)))
+ _sqlite3VdbeMultiLoad(tls, _v, i32(1), str(120974), _96_i, int32(_99_cnum), unsafe.Pointer(func() *int8 {
+ if int32(_99_cnum) < i32(0) {
+ return nil
}
- }()
- if _iBase >= i32(0) {
- goto _9
+ return ((*XColumn)(unsafe.Pointer(uintptr(_95_pTab.X1) + 16*uintptr(_99_cnum))).X0)
+ }()))
+ if (_pPragma.X5) != 0 {
+ _sqlite3VdbeMultiLoad(tls, _v, i32(4), str(120978), int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_95_pIdx.X7)) + 1*uintptr(_96_i)))), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_95_pIdx.X8)) + 4*uintptr(_96_i)))), bool2int(_96_i < int32(_95_pIdx.X13)))
}
-
- _iBase = _pParse.X17
-_9:
- _iDataCur = postInc1(&_iBase, int32(1))
- if _piDataCur == nil {
- goto _10
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), _pParse.X18)
+ _96_i += 1
+ goto _227
+_230:
+_222:
+_221:
+ goto _64
+_41:
+ if _zRight == nil {
+ goto _234
}
-
- *_piDataCur = _iDataCur
-_10:
- if ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) || _aToOpen != nil && (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(i32(0))))) == 0 {
- goto _13
+ _101_pTab = _sqlite3FindTable(tls, _db, _zRight, _zDb)
+ if _101_pTab == nil {
+ goto _235
}
-
- _sqlite3OpenTable(tls, _pParse, _iDataCur, _iDb, _pTab, _op)
- goto _14
-
-_13:
- _sqlite3TableLock(tls, _pParse, _iDb, _pTab.X7, uint8(bool2int(_op == i32(107))), _pTab.X0)
-_14:
- if _piIdxCur == nil {
- goto _15
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(5)
+ _sqlite3CodeVerifySchema(tls, _pParse, _iDb)
+ *func() *int32 { _101_pIdx = (*XIndex)(_101_pTab.X2); return &_101_i }() = i32(0)
+_236:
+ if _101_pIdx == nil {
+ goto _239
}
-
- *_piIdxCur = _iBase
-_15:
- *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_16:
- if _pIdx == nil {
- goto _19
+ _103_azOrigin = [3]*int8{}
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_103_azOrigin)) + 4*uintptr(i32(0)))) = str(120982)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_103_azOrigin)) + 4*uintptr(i32(1)))) = str(120984)
+ *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_103_azOrigin)) + 4*uintptr(i32(2)))) = str(61650)
+ _sqlite3VdbeMultiLoad(tls, _v, i32(1), str(120986), _101_i, unsafe.Pointer(_101_pIdx.X0), bool2int(int32(_101_pIdx.X15) != i32(0)), unsafe.Pointer(*(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_103_azOrigin)) + 4*uintptr((uint32(_101_pIdx.X16)<>uint(i32(30)))))), bool2int((*XExpr)(_101_pIdx.X9) != nil))
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), i32(5))
+ *func() *int32 { _101_pIdx = (*XIndex)(_101_pIdx.X5); return &_101_i }() += 1
+ goto _236
+_239:
+_235:
+_234:
+ goto _64
+_42:
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(3)
+ _104_i = i32(0)
+_240:
+ if _104_i >= (_db.X5) {
+ goto _243
+ }
+ if (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_104_i))).X1) == nil {
+ goto _241
}
-
- _4_iIdxCur = postInc1(&_iBase, int32(1))
func() {
- if (*XSchema)(_pIdx.X6) != (*XSchema)(_pTab.X20) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110680), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3OpenTableAndIndicesØ00__func__Ø000))), unsafe.Pointer(str(120384)))
+ if ((*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_104_i))).X0) == nil {
+ crt.X__builtin_fprintf(tls, Xstderr, str(1), unsafe.Pointer(str(37)), i32(114434), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3PragmaØ00__func__Ø000))), unsafe.Pointer(str(120992)))
crt.X__builtin_abort(tls)
}
}()
- if int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2) || ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) {
- goto _23
- }
-
- if _piDataCur == nil {
- goto _24
+ _sqlite3VdbeMultiLoad(tls, _v, i32(1), str(121015), _104_i, unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_104_i))).X0), unsafe.Pointer(_sqlite3BtreeGetFilename(tls, (*XBtree)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_104_i))).X1))))
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), i32(3))
+_241:
+ _104_i += 1
+ goto _240
+_243:
+ goto _64
+_43:
+ _106_i = i32(0)
+ *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) = i32(2)
+ _106_p = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db)) + uintptr(360 /* X70 */))).X2)
+_247:
+ if _106_p == nil {
+ goto _250
}
-
- *_piDataCur = _4_iIdxCur
-_24:
- _p5 = uint8(i32(0))
-_23:
- if _aToOpen != nil && (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_i+i32(1))))) == 0 {
- goto _26
+ _107_pColl = (*XCollSeq)(_106_p.X2)
+ _sqlite3VdbeMultiLoad(tls, _v, i32(1), str(121019), postInc1(&_106_i, int32(1)), unsafe.Pointer(_107_pColl.X0))
+ _sqlite3VdbeAddOp2(tls, _v, i32(67), i32(1), i32(2))
+ _106_p = (*XHashElem)(_106_p.X0)
+ goto _247
+_250:
+ goto _64
+_44:
+ if _zRight == nil {
+ goto _251
}
-
- _sqlite3VdbeAddOp3(tls, _v, _op, _4_iIdxCur, _pIdx.X11, _iDb)
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pIdx)
- _sqlite3VdbeChangeP5(tls, _v, uint16(_p5))
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(_pIdx.X0))
-_26:
- *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_i }() += 1
- goto _16
-
-_19:
- if _iBase <= (_pParse.X17) {
- goto _27
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) = _iBase
-_27:
- return _i
-}
-
-var _sqlite3OpenTableAndIndicesØ00__func__Ø000 [27]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3OpenTableAndIndicesØ00__func__Ø000[0], str(121320), 27)
-}
-
-func _sqlite3VtabMakeWritable(tls *crt.TLS, _pParse *XParse, _pTab *XTable) { // sqlite3.c:126088:1
- var _pToplevel *XParse // sqlite3.c:126089:9
- _ = _pToplevel
- var _i int32 // sqlite3.c:126090:7
- _ = _i
- var _n int32 // sqlite3.c:126090:10
- _ = _n
- var _apVtabLock **XTable // sqlite3.c:126091:9
- _ = _apVtabLock
- _pToplevel = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- func() {
- if (_pTab.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(126093), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VtabMakeWritableØ00__func__Ø000))), unsafe.Pointer(str(24268)))
- crt.X__builtin_abort(tls)
- }
- }()
- _i = i32(0)
-_4:
- if _i >= (_pToplevel.X56) {
- goto _7
- }
-
- if _pTab != (*(**XTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel.X67)) + 4*uintptr(_i)))) {
- goto _8
- }
- return
-
-_8:
- _i += 1
- goto _4
-
-_7:
- _n = int32(uint32((_pToplevel.X56)+i32(1)) * u32(4))
- _apVtabLock = (**XTable)(Xsqlite3_realloc64(tls, (unsafe.Pointer)(_pToplevel.X67), uint64(_n)))
- if _apVtabLock == nil {
- goto _9
- }
-
- *(***XTable)(unsafe.Pointer((**unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(464 /* X67 */))))) = _apVtabLock
- *(**XTable)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel.X67)) + 4*uintptr(postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel))+uintptr(416 /* X56 */))), int32(1))))) = _pTab
- goto _10
-
-_9:
- _sqlite3OomFault(tls, (*Xsqlite3)(_pToplevel.X0))
-_10:
-}
-
-var _sqlite3VtabMakeWritableØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VtabMakeWritableØ00__func__Ø000[0], str(121348), 24)
-}
-
-func _sqlite3GenerateRowDelete(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pTrigger *XTrigger, _iDataCur int32, _iIdxCur int32, _iPk int32, _nPk int16, _count uint8, _onconf uint8, _eMode uint8, _iIdxNoSeek int32) { // sqlite3.c:105255:1
- var _v *TVdbe // sqlite3.c:105268:8
- _ = _v
- var _iOld int32 // sqlite3.c:105269:7
- _ = _iOld
- var _iLabel int32 // sqlite3.c:105270:7
- _ = _iLabel
- var _opSeek uint8 // sqlite3.c:105271:6
- _ = _opSeek
- var _2_mask uint32 // sqlite3.c:105292:9
- _ = _2_mask
- var _2_iCol int32 // sqlite3.c:105293:9
- _ = _2_iCol
- var _2_addrStart int32 // sqlite3.c:105294:9
- _ = _2_addrStart
- var _6_p5 uint8 // sqlite3.c:105355:8
- _ = _6_p5
- _v = (*TVdbe)(_pParse.X2)
- _iOld = i32(0)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105274), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateRowDeleteØ00__func__Ø000))), unsafe.Pointer(str(42900)))
- crt.X__builtin_abort(tls)
- }
- }()
- _iLabel = _sqlite3VdbeMakeLabel(tls, _v)
- _opSeek = uint8(func() int32 {
- if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- return i32(32)
- }
- return i32(29)
- }())
- if int32(_eMode) != i32(0) {
- goto _4
- }
-
- _sqlite3VdbeAddOp4Int(tls, _v, int32(_opSeek), _iDataCur, _iLabel, _iPk, int32(_nPk))
-_4:
- if _sqlite3FkRequired(tls, _pParse, _pTab, nil, i32(0)) == 0 && _pTrigger == nil {
- goto _6
- }
-
- _2_mask = _sqlite3TriggerColmask(tls, _pParse, _pTrigger, nil, i32(0), i32(3), _pTab, int32(_onconf))
- {
- p := &_2_mask
- *p = (*p) | _sqlite3FkOldmask(tls, _pParse, _pTab)
- sink5 = *p
- }
- _iOld = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + (i32(1) + int32(_pTab.X11))
- sink1 = *p
- }
- _sqlite3VdbeAddOp2(tls, _v, i32(64), _iPk, _iOld)
- _2_iCol = i32(0)
-_7:
- if _2_iCol >= int32(_pTab.X11) {
- goto _10
- }
-
- if _2_mask != u32(4294967295) && (_2_iCol > i32(31) || (_2_mask&(u32(1)<= _sqlite3VdbeCurrentAddr(tls, _v) {
- goto _14
- }
-
- _sqlite3VdbeAddOp4Int(tls, _v, int32(_opSeek), _iDataCur, _iLabel, _iPk, int32(_nPk))
- _iIdxNoSeek = i32(-1)
-_14:
- _sqlite3FkCheck(tls, _pParse, _pTab, _iOld, i32(0), nil, i32(0))
-_6:
- if (*XSelect)(_pTab.X3) != nil {
- goto _15
- }
-
- _6_p5 = u8(0)
- _sqlite3GenerateRowIndexDelete(tls, _pParse, _pTab, _iDataCur, _iIdxCur, nil, _iIdxNoSeek)
- _sqlite3VdbeAddOp2(tls, _v, i32(120), _iDataCur, func() int32 {
- if _count != 0 {
- return i32(1)
- }
- return i32(0)
- }())
- if int32(_pParse.X6) != i32(0) {
- goto _18
- }
-
- _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_pTab), i32(-15))
-_18:
- if int32(_eMode) == i32(0) {
- goto _19
- }
-
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(4)))
-_19:
- if _iIdxNoSeek < i32(0) || _iIdxNoSeek == _iDataCur {
- goto _21
- }
-
- _sqlite3VdbeAddOp1(tls, _v, i32(120), _iIdxNoSeek)
-_21:
- if int32(_eMode) != i32(2) {
- goto _22
- }
-
- {
- p := &_6_p5
- *p = uint8(int32(*p) | i32(2))
- sink2 = *p
- }
-_22:
- _sqlite3VdbeChangeP5(tls, _v, uint16(_6_p5))
-_15:
- _sqlite3FkActions(tls, _pParse, _pTab, nil, _iOld, nil, i32(0))
- _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(109), nil, i32(2), _pTab, _iOld, int32(_onconf), _iLabel)
- _sqlite3VdbeResolveLabel(tls, _v, _iLabel)
-}
-
-var _sqlite3GenerateRowDeleteØ00__func__Ø000 [25]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3GenerateRowDeleteØ00__func__Ø000[0], str(121372), 25)
-}
-
-func _sqlite3TriggerColmask(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _pChanges *XExprList, _isNew int32, _tr_tm int32, _pTab *XTable, _orconf int32) (r0 uint32) { // sqlite3.c:123714:1
- var _op int32 // sqlite3.c:123723:13
- _ = _op
- var _mask uint32 // sqlite3.c:123724:7
- _ = _mask
- var _p *XTrigger // sqlite3.c:123725:11
- _ = _p
- var _2_pPrg *XTriggerPrg // sqlite3.c:123732:18
- _ = _2_pPrg
- _op = func() int32 {
- if _pChanges != nil {
- return i32(110)
- }
- return i32(109)
- }()
- _mask = u32(0)
- func() {
- if _isNew != i32(1) && _isNew != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123727), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3TriggerColmaskØ00__func__Ø000))), unsafe.Pointer(str(121400)))
- crt.X__builtin_abort(tls)
- }
- }()
- _p = _pTrigger
-_5:
- if _p == nil {
- goto _8
- }
-
- if int32(_p.X2) != _op || (_tr_tm&int32(_p.X3)) == 0 || _checkColumnOverlap(tls, (*XIdList)(_p.X5), _pChanges) == 0 {
- goto _11
- }
-
- _2_pPrg = _getRowTrigger(tls, _pParse, _p, _pTab, _orconf)
- if _2_pPrg == nil {
- goto _12
- }
-
- {
- p := &_mask
- *p = (*p) | (*(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(_isNew))))
- sink5 = *p
- }
-_12:
-_11:
- _p = (*XTrigger)(_p.X9)
- goto _5
-
-_8:
- return _mask
-}
-
-var _sqlite3TriggerColmaskØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3TriggerColmaskØ00__func__Ø000[0], str(121424), 22)
-}
-
-func _getRowTrigger(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _pTab *XTable, _orconf int32) (r0 *XTriggerPrg) { // sqlite3.c:123546:1
- var _pRoot *XParse // sqlite3.c:123552:9
- _ = _pRoot
- var _pPrg *XTriggerPrg // sqlite3.c:123553:14
- _ = _pPrg
- _pRoot = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- func() {
- if (_pTrigger.X0) != nil && _pTab != _tableOfTrigger(tls, _pTrigger) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123555), unsafe.Pointer((*int8)(unsafe.Pointer(&_getRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(121448)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pPrg = (*XTriggerPrg)(_pRoot.X69)
-_5:
- if _pPrg == nil || (*XTrigger)(_pPrg.X0) == _pTrigger && (_pPrg.X3) == _orconf {
- goto _10
- }
-
- _pPrg = (*XTriggerPrg)(_pPrg.X1)
- goto _5
-
-_10:
- if _pPrg != nil {
- goto _11
- }
-
- _pPrg = _codeRowTrigger(tls, _pParse, _pTrigger, _pTab, _orconf)
-_11:
- return _pPrg
-}
-
-var _getRowTriggerØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_getRowTriggerØ00__func__Ø000[0], str(121504), 14)
-}
-
-func _codeRowTrigger(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _pTab *XTable, _orconf int32) (r0 *XTriggerPrg) { // sqlite3.c:123433:1
- var _pTop *XParse // sqlite3.c:123439:9
- _ = _pTop
- var _db *Xsqlite3 // sqlite3.c:123440:11
- _ = _db
- var _pPrg *XTriggerPrg // sqlite3.c:123441:14
- _ = _pPrg
- var _pWhen *XExpr // sqlite3.c:123442:8
- _ = _pWhen
- var _v *TVdbe // sqlite3.c:123443:8
- _ = _v
- var _sNC XNameContext // sqlite3.c:123444:15
- _ = _sNC
- var _pProgram *XSubProgram // sqlite3.c:123445:14
- _ = _pProgram
- var _pSubParse *XParse // sqlite3.c:123446:9
- _ = _pSubParse
- var _iEndTrigger int32 // sqlite3.c:123447:7
- _ = _iEndTrigger
- _pTop = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- _db = (*Xsqlite3)(_pParse.X0)
- _pWhen = nil
- _pProgram = nil
- _iEndTrigger = i32(0)
- func() {
- if (_pTrigger.X0) != nil && _pTab != _tableOfTrigger(tls, _pTrigger) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123449), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(121448)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*TVdbe)(_pTop.X2) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123450), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(121520)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pPrg = (*XTriggerPrg)(_sqlite3DbMallocZero(tls, _db, uint64(u32(24))))
- if _pPrg != nil {
- goto _7
- }
- return nil
-
-_7:
- *(**XTriggerPrg)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(4 /* X1 */))))) = (*XTriggerPrg)(_pTop.X69)
- *(**XTriggerPrg)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTop)) + uintptr(472 /* X69 */))))) = _pPrg
- *(**XSubProgram)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(8 /* X2 */))))) = store74(&_pProgram, (*XSubProgram)(_sqlite3DbMallocZero(tls, _db, uint64(u32(28)))))
- if _pProgram != nil {
- goto _8
- }
- return nil
-
-_8:
- _sqlite3VdbeLinkSubProgram(tls, (*TVdbe)(_pTop.X2), _pProgram)
- *(**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(0 /* X0 */))))) = _pTrigger
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg)) + uintptr(12 /* X3 */))) = _orconf
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(0)))) = u32(4294967295)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(1)))) = u32(4294967295)
- _pSubParse = (*XParse)(_sqlite3DbMallocZero(tls, _db, uint64(u32(484))))
- if _pSubParse != nil {
- goto _9
- }
- return nil
-
-_9:
- crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pSubParse
- *(**Xsqlite3)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(0 /* X0 */))))) = _db
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(136 /* X40 */))))) = _pTab
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(132 /* X39 */))))) = _pTop
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(452 /* X65 */))) = _pTrigger.X0
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(156 /* X45 */))) = _pTrigger.X2
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSubParse)) + uintptr(144 /* X42 */))) = _pParse.X42
- _v = _sqlite3GetVdbe(tls, _pSubParse)
- if _v == nil {
- goto _10
- }
-
- _sqlite3VdbeComment(tls, _v, str(121532), unsafe.Pointer(_pTrigger.X0), unsafe.Pointer(_onErrorText(tls, _orconf)), unsafe.Pointer(func() *int8 {
- if int32(_pTrigger.X3) == i32(1) {
- return str(24992)
- }
- return str(24964)
- }()), unsafe.Pointer(func() *int8 {
- if int32(_pTrigger.X2) == i32(110) {
- return str(25556)
- }
- return str(196)
- }()), unsafe.Pointer(func() *int8 {
- if int32(_pTrigger.X2) == i32(108) {
- return str(25540)
- }
- return str(196)
- }()), unsafe.Pointer(func() *int8 {
- if int32(_pTrigger.X2) == i32(109) {
- return str(25548)
- }
- return str(196)
- }()), unsafe.Pointer(_pTab.X0))
- _sqlite3VdbeChangeP4(tls, _v, i32(-1), _sqlite3MPrintf(tls, _db, str(121564), unsafe.Pointer(_pTrigger.X0)), i32(-1))
- if (*XExpr)(_pTrigger.X4) == nil {
- goto _19
- }
-
- _pWhen = _sqlite3ExprDup(tls, _db, (*XExpr)(_pTrigger.X4), i32(0))
- if i32(0) != _sqlite3ResolveExprNames(tls, &_sNC, _pWhen) || int32(_db.X17) != i32(0) {
- goto _21
- }
-
- _iEndTrigger = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3ExprIfFalse(tls, _pSubParse, _pWhen, _iEndTrigger, i32(16))
-_21:
- _sqlite3ExprDelete(tls, _db, _pWhen)
-_19:
- _codeTriggerProgram(tls, _pSubParse, (*XTriggerStep)(_pTrigger.X8), _orconf)
- if _iEndTrigger == 0 {
- goto _22
- }
-
- _sqlite3VdbeResolveLabel(tls, _v, _iEndTrigger)
-_22:
- _sqlite3VdbeAddOp0(tls, _v, i32(55))
- _sqlite3VdbeComment(tls, _v, str(121580), unsafe.Pointer(_pTrigger.X0), unsafe.Pointer(_onErrorText(tls, _orconf)))
- _transferParseError(tls, _pParse, _pSubParse)
- if int32(_db.X17) != i32(0) {
- goto _23
- }
-
- *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(0 /* X0 */))))) = _sqlite3VdbeTakeOpArray(tls, _v, (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram))+uintptr(4 /* X1 */))), (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTop))+uintptr(108 /* X33 */))))
-_23:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(8 /* X2 */))) = _pSubParse.X18
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(12 /* X3 */))) = _pSubParse.X17
- *(*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pProgram)) + uintptr(20 /* X5 */))) = (unsafe.Pointer)(_pTrigger)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(0)))) = _pSubParse.X43
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPrg))+uintptr(16 /* X4 */))))) + 4*uintptr(i32(1)))) = _pSubParse.X44
- _sqlite3VdbeDelete(tls, _v)
-_10:
- func() {
- if (*TAggInfo_func)(_pSubParse.X38) != nil || (*XTable)(_pSubParse.X68) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123532), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(121592)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XTriggerPrg)(_pSubParse.X69) != nil || (_pSubParse.X33) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123533), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(121636)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ParserReset(tls, _pSubParse)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_pSubParse))
- return _pPrg
-}
-
-var _codeRowTriggerØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_codeRowTriggerØ00__func__Ø000[0], str(121684), 15)
-}
-
-func _sqlite3VdbeLinkSubProgram(tls *crt.TLS, _pVdbe *TVdbe, _p *XSubProgram) { // sqlite3.c:72317:1
- *(**XSubProgram)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))))) = (*XSubProgram)(_pVdbe.X42)
- *(**XSubProgram)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pVdbe)) + uintptr(196 /* X42 */))))) = _p
-}
-
-func _onErrorText(tls *crt.TLS, _onError int32) (r0 *int8) { // sqlite3.c:123399:1
- switch _onError {
- case i32(1):
- goto _2
- case i32(2):
- goto _1
- case i32(3):
- goto _3
- case i32(4):
- goto _5
- case i32(5):
- goto _4
- case i32(10):
- goto _6
- default:
- goto _7
- }
-
-_1:
- return str(48952)
-
-_2:
- return str(48940)
-
-_3:
- return str(48960)
-
-_4:
- return str(6472)
-
-_5:
- return str(48968)
-
-_6:
- return str(121700)
-
-_7:
- return str(121708)
-}
-
-func _codeTriggerProgram(tls *crt.TLS, _pParse *XParse, _pStepList *XTriggerStep, _orconf int32) (r0 int32) { // sqlite3.c:123322:1
- var _pStep *XTriggerStep // sqlite3.c:123327:15
- _ = _pStep
- var _v *TVdbe // sqlite3.c:123328:8
- _ = _v
- var _db *Xsqlite3 // sqlite3.c:123329:11
- _ = _db
- var _6_sDest XSelectDest // sqlite3.c:123378:20
- _ = _6_sDest
- var _6_pSelect *XSelect // sqlite3.c:123379:16
- _ = _6_pSelect
- _v = (*TVdbe)(_pParse.X2)
- _db = (*Xsqlite3)(_pParse.X0)
- func() {
- if (*XTable)(_pParse.X40) == nil || (*XParse)(_pParse.X39) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123331), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(121712)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _pStepList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123332), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(121756)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123333), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(43120)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pStep = _pStepList
-_7:
- if _pStep == nil {
- goto _10
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(157 /* X46 */))) = func() uint8 {
- if _orconf == i32(10) {
- return (_pStep.X1)
- }
- return uint8(_orconf)
- }()
- func() {
- if int32(_pParse.X11) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123349), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(121768)))
- crt.X__builtin_abort(tls)
- }
- }()
- switch int32(_pStep.X0) {
- case i32(108):
- goto _17
- case i32(109):
- goto _18
- case i32(110):
- goto _16
- default:
- goto _19
- }
-
-_16:
- _sqlite3Update(tls, _pParse, _targetSrcList(tls, _pParse, _pStep), _sqlite3ExprListDup(tls, _db, (*XExprList)(_pStep.X6), i32(0)), _sqlite3ExprDup(tls, _db, (*XExpr)(_pStep.X5), i32(0)), int32(_pParse.X46))
- goto _20
-
-_17:
- _sqlite3Insert(tls, _pParse, _targetSrcList(tls, _pParse, _pStep), _sqlite3SelectDup(tls, _db, (*XSelect)(_pStep.X3), i32(0)), _sqlite3IdListDup(tls, _db, (*XIdList)(_pStep.X7)), int32(_pParse.X46))
- goto _20
-
-_18:
- _sqlite3DeleteFrom(tls, _pParse, _targetSrcList(tls, _pParse, _pStep), _sqlite3ExprDup(tls, _db, (*XExpr)(_pStep.X5), i32(0)))
- goto _20
-
-_19:
- func() {
- if int32(_pStep.X0) != i32(119) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123377), unsafe.Pointer((*int8)(unsafe.Pointer(&_codeTriggerProgramØ00__func__Ø000))), unsafe.Pointer(str(121796)))
- crt.X__builtin_abort(tls)
- }
- }()
- _6_pSelect = _sqlite3SelectDup(tls, _db, (*XSelect)(_pStep.X3), i32(0))
- _sqlite3SelectDestInit(tls, &_6_sDest, i32(4), i32(0))
- _sqlite3Select(tls, _pParse, _6_pSelect, &_6_sDest)
- _sqlite3SelectDelete(tls, _db, _6_pSelect)
- goto _20
-
-_20:
- if int32(_pStep.X0) == i32(119) {
- goto _23
- }
-
- _sqlite3VdbeAddOp0(tls, _v, i32(121))
-_23:
- _pStep = (*XTriggerStep)(_pStep.X8)
- goto _7
-
-_10:
- return i32(0)
-}
-
-var _codeTriggerProgramØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_codeTriggerProgramØ00__func__Ø000[0], str(121820), 19)
-}
-
-func _sqlite3Update(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pChanges *XExprList, _pWhere *XExpr, _onError int32) { // sqlite3.c:123835:1
- var _i int32 // sqlite3.c:123842:7
- _ = _i
- var _j int32 // sqlite3.c:123842:10
- _ = _j
- var _pTab *XTable // sqlite3.c:123843:9
- _ = _pTab
- var _addrTop int32 // sqlite3.c:123844:7
- _ = _addrTop
- var _pWInfo *XWhereInfo // sqlite3.c:123845:13
- _ = _pWInfo
- var _v *TVdbe // sqlite3.c:123846:8
- _ = _v
- var _pIdx *XIndex // sqlite3.c:123847:9
- _ = _pIdx
- var _pPk *XIndex // sqlite3.c:123848:9
- _ = _pPk
- var _nIdx int32 // sqlite3.c:123849:7
- _ = _nIdx
- var _iBaseCur int32 // sqlite3.c:123850:7
- _ = _iBaseCur
- var _iDataCur int32 // sqlite3.c:123851:7
- _ = _iDataCur
- var _iIdxCur int32 // sqlite3.c:123852:7
- _ = _iIdxCur
- var _db *Xsqlite3 // sqlite3.c:123853:11
- _ = _db
- var _aRegIdx *int32 // sqlite3.c:123854:7
- _ = _aRegIdx
- var _aXRef *int32 // sqlite3.c:123855:7
- _ = _aXRef
- var _aToOpen *uint8 // sqlite3.c:123858:6
- _ = _aToOpen
- var _chngPk uint8 // sqlite3.c:123859:6
- _ = _chngPk
- var _chngRowid uint8 // sqlite3.c:123860:6
- _ = _chngRowid
- var _chngKey uint8 // sqlite3.c:123861:6
- _ = _chngKey
- var _pRowidExpr *XExpr // sqlite3.c:123862:8
- _ = _pRowidExpr
- var _sContext XAuthContext // sqlite3.c:123863:15
- _ = _sContext
- var _sNC XNameContext // sqlite3.c:123864:15
- _ = _sNC
- var _iDb int32 // sqlite3.c:123865:7
- _ = _iDb
- var _eOnePass int32 // sqlite3.c:123866:7
- _ = _eOnePass
- var _hasFK int32 // sqlite3.c:123867:7
- _ = _hasFK
- var _labelBreak int32 // sqlite3.c:123868:7
- _ = _labelBreak
- var _labelContinue int32 // sqlite3.c:123869:7
- _ = _labelContinue
- var _flags int32 // sqlite3.c:123870:7
- _ = _flags
- var _isView int32 // sqlite3.c:123873:7
- _ = _isView
- var _pTrigger *XTrigger // sqlite3.c:123874:11
- _ = _pTrigger
- var _tmask int32 // sqlite3.c:123875:7
- _ = _tmask
- var _newmask int32 // sqlite3.c:123877:7
- _ = _newmask
- var _iEph int32 // sqlite3.c:123878:7
- _ = _iEph
- var _nKey int32 // sqlite3.c:123879:7
- _ = _nKey
- var _aiCurOnePass [2]int32 // sqlite3.c:123880:7
- _ = _aiCurOnePass
- var _addrOpen int32 // sqlite3.c:123881:7
- _ = _addrOpen
- var _iPk int32 // sqlite3.c:123882:7
- _ = _iPk
- var _nPk int16 // sqlite3.c:123883:7
- _ = _nPk
- var _bReplace int32 // sqlite3.c:123884:7
- _ = _bReplace
- var _regRowCount int32 // sqlite3.c:123887:7
- _ = _regRowCount
- var _regOldRowid int32 // sqlite3.c:123888:7
- _ = _regOldRowid
- var _regNewRowid int32 // sqlite3.c:123889:7
- _ = _regNewRowid
- var _regNew int32 // sqlite3.c:123890:7
- _ = _regNew
- var _regOld int32 // sqlite3.c:123891:7
- _ = _regOld
- var _regRowSet int32 // sqlite3.c:123892:7
- _ = _regRowSet
- var _regKey int32 // sqlite3.c:123893:7
- _ = _regKey
- var _15_rc int32 // sqlite3.c:124000:11
- _ = _15_rc
- var _18_reg int32 // sqlite3.c:124033:9
- _ = _18_reg
- var _21_iIdxCol int16 // sqlite3.c:124040:13
- _ = _21_iIdxCol
- var _36_iCur int32 // sqlite3.c:124160:9
- _ = _36_iCur
- var _45_addrOnce int32 // sqlite3.c:124202:9
- _ = _45_addrOnce
- var _55_oldmask uint32 // sqlite3.c:124260:9
- _ = _55_oldmask
- var _71_addr1 int32 // sqlite3.c:124353:9
- _ = _71_addr1
- _addrTop = i32(0)
- _aRegIdx = nil
- _aXRef = nil
- _pRowidExpr = nil
- _iEph = i32(0)
- _nKey = i32(0)
- _addrOpen = i32(0)
- _iPk = i32(0)
- _nPk = i16(0)
- _bReplace = i32(0)
- _regRowCount = i32(0)
- _regOldRowid = i32(0)
- _regNewRowid = i32(0)
- _regNew = i32(0)
- _regOld = i32(0)
- _regRowSet = i32(0)
- _regKey = i32(0)
- crt.Xmemset(tls, (unsafe.Pointer)(&_sContext), i32(0), u32(8))
- _db = (*Xsqlite3)(_pParse.X0)
- if (_pParse.X16) == 0 && (_db.X17) == 0 {
- goto _1
- }
-
- goto _update_cleanup
-
-_1:
- func() {
- if (_pTabList.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123900), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(120268)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTabList)
- if _pTab != nil {
- goto _4
- }
-
- goto _update_cleanup
-
-_4:
- _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTab.X20))
- _pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(110), _pChanges, &_tmask)
- _isView = bool2int((*XSelect)(_pTab.X3) != nil)
- func() {
- if _pTrigger == nil && _tmask != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123914), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(121840)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) == 0 {
- goto _8
- }
-
- goto _update_cleanup
-
-_8:
- if _sqlite3IsReadOnly(tls, _pParse, _pTab, _tmask) == 0 {
- goto _9
- }
-
- goto _update_cleanup
-
-_9:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(40 /* X11 */))) = store1(&_iBaseCur, store1(&_iDataCur, postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))))
- _iIdxCur = _iDataCur + i32(1)
- _pPk = func() *XIndex {
- if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- return nil
- }
- return _sqlite3PrimaryKeyIndex(tls, _pTab)
- }()
- *func() **XIndex { _nIdx = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_12:
- if _pIdx == nil {
- goto _15
- }
-
- if int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2) || _pPk == nil {
- goto _17
- }
-
- _iDataCur = _pParse.X17
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(40 /* X11 */))) = _iDataCur
-_17:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) += 1
- *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_nIdx }() += 1
- goto _12
-
-_15:
- _aXRef = (*int32)(_sqlite3DbMallocRawNN(tls, _db, uint64(((u32(4)*uint32(int32(_pTab.X11)+_nIdx))+uint32(_nIdx))+uint32(i32(2)))))
- if _aXRef != nil {
- goto _18
- }
-
- goto _update_cleanup
-
-_18:
- _aRegIdx = (*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(_aXRef)) + uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(_pTab.X11)))))*uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(4)))))))))))
- _aToOpen = (*uint8)(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(_aRegIdx)) + uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(_nIdx)))))*uintptr(unsafe.Pointer((*int32)(unsafe.Pointer(uintptr(4)))))))))))))
- crt.Xmemset(tls, (unsafe.Pointer)(_aToOpen), i32(1), uint32(_nIdx+i32(1)))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_nIdx+i32(1)))) = uint8(i32(0))
- _i = i32(0)
-_19:
- if _i >= int32(_pTab.X11) {
- goto _22
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i))) = i32(-1)
- _i += 1
- goto _19
-
-_22:
- crt.Xmemset(tls, (unsafe.Pointer)(&_sNC), i32(0), u32(32))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(0 /* X0 */))))) = _pParse
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNC)) + uintptr(4 /* X1 */))))) = _pTabList
- _chngRowid = store2(&_chngPk, uint8(i32(0)))
- _i = i32(0)
-_23:
- if _i >= (_pChanges.X0) {
- goto _26
- }
-
- if _sqlite3ResolveExprNames(tls, &_sNC, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0)) == 0 {
- goto _27
- }
-
- goto _update_cleanup
-
-_27:
- _j = i32(0)
-_28:
- if _j >= int32(_pTab.X11) {
- goto _31
- }
-
- if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X0, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) != i32(0) {
- goto _32
- }
-
- if _j != int32(_pTab.X10) {
- goto _33
- }
-
- _chngRowid = uint8(i32(1))
- _pRowidExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- goto _34
-
-_33:
- if _pPk == nil || (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X6)&i32(1)) == i32(0) {
- goto _36
- }
-
- _chngPk = uint8(i32(1))
-_36:
-_34:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_j))) = _i
- goto _31
-
-_32:
- _j += 1
- goto _28
-
-_31:
- if _j < int32(_pTab.X11) {
- goto _37
- }
-
- if _pPk != nil || _sqlite3IsRowid(tls, (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1) == 0 {
- goto _39
- }
-
- _j = i32(-1)
- _chngRowid = uint8(i32(1))
- _pRowidExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- goto _40
-
-_39:
- _sqlite3ErrorMsg(tls, _pParse, str(121864), unsafe.Pointer((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
- goto _update_cleanup
-
-_40:
-_37:
- _15_rc = _sqlite3AuthCheck(tls, _pParse, i32(23), _pTab.X0, func() *int8 {
- if _j < i32(0) {
- return str(100628)
- }
- return ((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_j))).X0)
- }(), (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0)
- if _15_rc != i32(1) {
- goto _43
- }
-
- goto _update_cleanup
-
-_43:
- if _15_rc != i32(2) {
- goto _45
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_j))) = i32(-1)
-_45:
- _i += 1
- goto _23
-
-_26:
- func() {
- if (int32(_chngRowid) & int32(_chngPk)) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124012), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(121884)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_chngRowid) != i32(0) && int32(_chngRowid) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124013), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(121908)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_chngPk) != i32(0) && int32(_chngPk) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124014), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(121940)))
- crt.X__builtin_abort(tls)
- }
- }()
- _chngKey = uint8(int32(_chngRowid) + int32(_chngPk))
- *(*uint64)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))))) + uintptr(52 /* X14 */))) = func() uint64 {
- if (_pTab.X16) != 0 {
- return u64(18446744073709551615)
- }
- return uint64(i32(0))
- }()
- _hasFK = _sqlite3FkRequired(tls, _pParse, _pTab, _aXRef, int32(_chngKey))
- *func() **XIndex { _j = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_56:
- if _pIdx == nil {
- goto _59
- }
-
- if _chngKey == 0 && _hasFK <= i32(1) && (*XExpr)(_pIdx.X9) == nil && _pIdx != _pPk {
- goto _63
- }
-
- _18_reg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + int32(_pIdx.X14)
- sink1 = *p
- }
- goto _64
-
-_63:
- _18_reg = i32(0)
- _i = i32(0)
-_65:
- if _i >= int32(_pIdx.X13) {
- goto _68
- }
-
- _21_iIdxCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))
- if int32(_21_iIdxCol) >= i32(0) && (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_21_iIdxCol)))) < i32(0) {
- goto _70
- }
-
- _18_reg = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + int32(_pIdx.X14)
- sink1 = *p
- }
- if _onError != i32(5) && (_onError != i32(10) || int32(_pIdx.X15) != i32(5)) {
- goto _73
- }
-
- _bReplace = i32(1)
-_73:
- goto _68
-
-_70:
- _i += 1
- goto _65
-
-_68:
-_64:
- if _18_reg != i32(0) {
- goto _74
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_j+i32(1)))) = uint8(i32(0))
-_74:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_j))) = _18_reg
- *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_j }() += 1
- goto _56
-
-_59:
- if _bReplace == 0 {
- goto _75
- }
-
- crt.Xmemset(tls, (unsafe.Pointer)(_aToOpen), i32(1), uint32(_nIdx+i32(1)))
-_75:
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v != nil {
- goto _76
- }
-
- goto _update_cleanup
-
-_76:
- if int32(_pParse.X6) != i32(0) {
- goto _77
- }
-
- _sqlite3VdbeCountChanges(tls, _v)
-_77:
- _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
- if (_pTab.X16) != 0 {
- goto _78
- }
-
- _regRowSet = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _regOldRowid = store1(&_regNewRowid, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1))
- if _chngPk == 0 && _pTrigger == nil && _hasFK == 0 {
- goto _81
- }
-
- _regOld = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + int32(_pTab.X11)
- sink1 = *p
- }
-_81:
- if _chngKey == 0 && _pTrigger == nil && _hasFK == 0 {
- goto _84
- }
-
- _regNewRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
-_84:
- _regNew = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + int32(_pTab.X11)
- sink1 = *p
- }
-_78:
- if _isView == 0 {
- goto _85
- }
-
- _sqlite3AuthContextPush(tls, _pParse, &_sContext, _pTab.X0)
-_85:
- if _isView == 0 {
- goto _86
- }
-
- _sqlite3MaterializeView(tls, _pParse, _pTab, _pWhere, _iDataCur)
-_86:
- if _sqlite3ResolveExprNames(tls, &_sNC, _pWhere) == 0 {
- goto _87
- }
-
- goto _update_cleanup
-
-_87:
- if (_pTab.X16) == 0 {
- goto _88
- }
-
- _updateVirtualTable(tls, _pParse, _pTabList, _pTab, _pChanges, _pRowidExpr, _aXRef, _pWhere, _onError)
- goto _update_cleanup
-
-_88:
- if ((_db.X6)&i32(128)) == 0 || (*XTable)(_pParse.X40) != nil {
- goto _90
- }
-
- _regRowCount = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _regRowCount)
-_90:
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _91
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(59), i32(0), _regRowSet, _regOldRowid)
- goto _92
-
-_91:
- func() {
- if _pPk == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124122), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(43040)))
- crt.X__builtin_abort(tls)
- }
- }()
- _nPk = int16(_pPk.X13)
- _iPk = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + int32(_nPk)
- sink1 = *p
- }
- _regKey = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _iEph = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _iPk)
- _addrOpen = _sqlite3VdbeAddOp2(tls, _v, i32(110), _iEph, int32(_nPk))
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pPk)
-_92:
- _flags = i32(4100)
- if (_pParse.X6) != 0 || _pTrigger != nil || _hasFK != 0 || _chngKey != 0 || _bReplace != 0 {
- goto _99
- }
-
- {
- p := &_flags
- *p = (*p) | i32(8)
- sink1 = *p
- }
-_99:
- _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pTabList, _pWhere, nil, nil, uint16(_flags), _iIdxCur)
- if _pWInfo != nil {
- goto _100
- }
-
- goto _update_cleanup
-
-_100:
- _eOnePass = _sqlite3WhereOkOnePass(tls, _pWInfo, (*int32)(unsafe.Pointer(&_aiCurOnePass)))
- if _eOnePass != i32(2) {
- goto _101
- }
-
- _36_iCur = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))
- if _36_iCur < i32(0) || _36_iCur == _iDataCur || (*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr(_36_iCur-_iBaseCur)))) == 0 {
- goto _104
- }
-
- _eOnePass = i32(0)
-_104:
- func() {
- if _36_iCur == _iDataCur && ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124164), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(121964)))
- crt.X__builtin_abort(tls)
- }
- }()
-_101:
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _108
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(125), _iDataCur, _regOldRowid)
- if _eOnePass != i32(0) {
- goto _109
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(145), _regRowSet, _regOldRowid)
-_109:
- goto _110
-
-_108:
- _i = i32(0)
-_111:
- if _i >= int32(_nPk) {
- goto _114
- }
-
- func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124182), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(120520)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iDataCur, int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))), _iPk+_i)
- _i += 1
- goto _111
-
-_114:
- if _eOnePass == 0 {
- goto _117
- }
-
- _sqlite3VdbeChangeToNoop(tls, _v, _addrOpen)
- _nKey = int32(_nPk)
- _regKey = _iPk
- goto _118
-
-_117:
- _sqlite3VdbeAddOp4(tls, _v, i32(101), _iPk, int32(_nPk), _regKey, _sqlite3IndexAffinityStr(tls, _db, _pPk), int32(_nPk))
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iEph, _regKey, _iPk, int32(_nPk))
-_118:
-_110:
- if _eOnePass == i32(2) {
- goto _119
- }
-
- _sqlite3WhereEnd(tls, _pWInfo)
-_119:
- _labelBreak = _sqlite3VdbeMakeLabel(tls, _v)
- if _isView != 0 {
- goto _120
- }
-
- _45_addrOnce = i32(0)
- if _eOnePass == i32(0) {
- goto _121
- }
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0))))) < i32(0) {
- goto _122
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0)))))-_iBaseCur))) = uint8(i32(0))
-_122:
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) < i32(0) {
- goto _123
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aToOpen)) + 1*uintptr((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1)))))-_iBaseCur))) = uint8(i32(0))
-_123:
-_121:
- if _eOnePass != i32(2) || (_nIdx-bool2int((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) >= i32(0))) <= i32(0) {
- goto _125
- }
-
- _45_addrOnce = _sqlite3VdbeAddOp0(tls, _v, i32(20))
-_125:
- _sqlite3OpenTableAndIndices(tls, _pParse, _pTab, i32(107), uint8(i32(0)), _iBaseCur, _aToOpen, nil, nil)
- if _45_addrOnce == 0 {
- goto _126
- }
-
- _sqlite3VdbeJumpHere(tls, _v, _45_addrOnce)
-_126:
-_120:
- if _eOnePass == i32(0) {
- goto _127
- }
-
- if _isView != 0 || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(0))))) == _iDataCur || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_aiCurOnePass)) + 4*uintptr(i32(1))))) == _iDataCur {
- goto _130
- }
-
- func() {
- if _pPk == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124221), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(122000)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, _labelBreak, _regKey, _nKey)
-_130:
- if _eOnePass != i32(1) {
- goto _133
- }
-
- _labelContinue = _labelBreak
- goto _134
-
-_133:
- _labelContinue = _sqlite3VdbeMakeLabel(tls, _v)
-_134:
- _sqlite3VdbeAddOp2(tls, _v, i32(75), func() int32 {
- if _pPk != nil {
- return _regKey
- }
- return _regOldRowid
- }(), _labelBreak)
- goto _137
-
-_127:
- if _pPk == nil {
- goto _138
- }
-
- _labelContinue = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3VdbeAddOp2(tls, _v, i32(37), _iEph, _labelBreak)
- _addrTop = _sqlite3VdbeAddOp2(tls, _v, i32(124), _iEph, _regKey)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, _labelContinue, _regKey, i32(0))
- goto _139
-
-_138:
- _labelContinue = _sqlite3VdbeAddOp3(tls, _v, i32(42), _regRowSet, _labelBreak, _regOldRowid)
- _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDataCur, _labelContinue, _regOldRowid)
-_139:
-_137:
- func() {
- if _chngKey == 0 && _pTrigger == nil && _hasFK == 0 && _regOldRowid != _regNewRowid {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124251), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(122004)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _chngRowid == 0 {
- goto _145
- }
-
- _sqlite3ExprCode(tls, _pParse, _pRowidExpr, _regNewRowid)
- _sqlite3VdbeAddOp1(tls, _v, i32(17), _regNewRowid)
-_145:
- if _chngPk == 0 && _hasFK == 0 && _pTrigger == nil {
- goto _148
- }
-
- _55_oldmask = func() uint32 {
- if _hasFK != 0 {
- return _sqlite3FkOldmask(tls, _pParse, _pTab)
- }
- return uint32(i32(0))
- }()
- {
- p := &_55_oldmask
- *p = (*p) | _sqlite3TriggerColmask(tls, _pParse, _pTrigger, _pChanges, i32(0), i32(3), _pTab, _onError)
- sink5 = *p
- }
- _i = i32(0)
-_151:
- if _i >= int32(_pTab.X11) {
- goto _154
- }
-
- if _55_oldmask != u32(4294967295) && (_i >= i32(32) || (_55_oldmask&(u32(1)<= int32(_pTab.X11) {
- goto _165
- }
-
- if _i != int32(_pTab.X10) {
- goto _166
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regNew+_i)
- goto _167
-
-_166:
- _j = *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))
- if _j < i32(0) {
- goto _168
- }
-
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), _regNew+_i)
- goto _169
-
-_168:
- if i32(0) != (_tmask&i32(1)) && _i <= i32(31) && (uint32(_newmask)&(u32(1)<= int32(_pTab.X11) {
- goto _180
- }
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))) >= i32(0) || _i == int32(_pTab.X10) {
- goto _182
- }
-
- _sqlite3ExprCodeGetColumnOfTable(tls, _v, _pTab, _iDataCur, _i, _regNew+_i)
-_182:
- _i += 1
- goto _177
-
-_180:
-_174:
- if _isView != 0 {
- goto _183
- }
-
- _71_addr1 = i32(0)
- func() {
- if _regOldRowid <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124356), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(122064)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3GenerateConstraintChecks(tls, _pParse, _pTab, _aRegIdx, _iDataCur, _iIdxCur, _regNewRowid, _regOldRowid, _chngKey, uint8(_onError), _labelContinue, &_bReplace, _aXRef)
- if _hasFK == 0 {
- goto _186
- }
-
- _sqlite3FkCheck(tls, _pParse, _pTab, _regOldRowid, i32(0), _aXRef, int32(_chngKey))
-_186:
- if _bReplace == 0 && _chngKey == 0 {
- goto _188
- }
-
- if _pPk == nil {
- goto _189
- }
-
- _71_addr1 = _sqlite3VdbeAddOp4Int(tls, _v, i32(29), _iDataCur, i32(0), _regKey, _nKey)
- goto _190
-
-_189:
- _71_addr1 = _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDataCur, i32(0), _regOldRowid)
-_190:
-_188:
- _sqlite3GenerateRowIndexDelete(tls, _pParse, _pTab, _iDataCur, _iIdxCur, _aRegIdx, i32(-1))
- func() {
- if _regNew != (_regNewRowid + i32(1)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124386), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3UpdateØ00__func__Ø000))), unsafe.Pointer(str(122080)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _hasFK <= i32(1) && _chngKey == 0 {
- goto _194
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(120), _iDataCur, i32(0))
-_194:
- if _bReplace == 0 && _chngKey == 0 {
- goto _196
- }
-
- _sqlite3VdbeJumpHere(tls, _v, _71_addr1)
-_196:
- if _hasFK == 0 {
- goto _197
- }
-
- _sqlite3FkCheck(tls, _pParse, _pTab, i32(0), _regNewRowid, _aXRef, int32(_chngKey))
-_197:
- _sqlite3CompleteInsertion(tls, _pParse, _pTab, _iDataCur, _iIdxCur, _regNewRowid, _aRegIdx, i32(4)|func() int32 {
- if _eOnePass == i32(2) {
- return i32(2)
- }
- return i32(0)
- }(), i32(0), i32(0))
- if _hasFK == 0 {
- goto _200
- }
-
- _sqlite3FkActions(tls, _pParse, _pTab, _pChanges, _regOldRowid, _aXRef, int32(_chngKey))
-_200:
-_183:
- if ((_db.X6)&i32(128)) == 0 || (*XTable)(_pParse.X40) != nil {
- goto _202
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(73), _regRowCount, i32(1))
-_202:
- _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(110), _pChanges, i32(2), _pTab, _regOldRowid, _onError, _labelContinue)
- if _eOnePass != i32(1) {
- goto _203
- }
-
- goto _204
-
-_203:
- if _eOnePass != i32(2) {
- goto _205
- }
-
- _sqlite3VdbeResolveLabel(tls, _v, _labelContinue)
- _sqlite3WhereEnd(tls, _pWInfo)
- goto _206
-
-_205:
- if _pPk == nil {
- goto _207
- }
-
- _sqlite3VdbeResolveLabel(tls, _v, _labelContinue)
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _iEph, _addrTop)
- goto _208
-
-_207:
- _sqlite3VdbeGoto(tls, _v, _labelContinue)
-_208:
-_206:
-_204:
- _sqlite3VdbeResolveLabel(tls, _v, _labelBreak)
- if int32(_pParse.X6) != i32(0) || (*XTable)(_pParse.X40) != nil {
- goto _210
- }
-
- _sqlite3AutoincrementEnd(tls, _pParse)
-_210:
- if ((_db.X6)&i32(128)) == 0 || (*XTable)(_pParse.X40) != nil || (_pParse.X6) != 0 {
- goto _213
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(67), _regRowCount, i32(1))
- _sqlite3VdbeSetNumCols(tls, _v, i32(1))
- _sqlite3VdbeSetColName(tls, _v, i32(0), i32(0), str(122104), nil)
-_213:
-_update_cleanup:
- _sqlite3AuthContextPop(tls, &_sContext)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_aXRef))
- _sqlite3SrcListDelete(tls, _db, _pTabList)
- _sqlite3ExprListDelete(tls, _db, _pChanges)
- _sqlite3ExprDelete(tls, _db, _pWhere)
-}
-
-var _sqlite3UpdateØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3UpdateØ00__func__Ø000[0], str(122120), 14)
-}
-
-func _updateVirtualTable(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList, _pTab *XTable, _pChanges *XExprList, _pRowid *XExpr, _aXRef *int32, _pWhere *XExpr, _onError int32) { // sqlite3.c:124511:1
- var _v *TVdbe // sqlite3.c:124521:8
- _ = _v
- var _ephemTab int32 // sqlite3.c:124522:7
- _ = _ephemTab
- var _i int32 // sqlite3.c:124523:7
- _ = _i
- var _db *Xsqlite3 // sqlite3.c:124524:11
- _ = _db
- var _pVTab *int8 // sqlite3.c:124525:14
- _ = _pVTab
- var _pWInfo *XWhereInfo // sqlite3.c:124526:13
- _ = _pWInfo
- var _nArg int32 // sqlite3.c:124527:7
- _ = _nArg
- var _regArg int32 // sqlite3.c:124528:7
- _ = _regArg
- var _regRec int32 // sqlite3.c:124529:7
- _ = _regRec
- var _regRowid int32 // sqlite3.c:124530:7
- _ = _regRowid
- var _iCsr int32 // sqlite3.c:124531:7
- _ = _iCsr
- var _aDummy [2]int32 // sqlite3.c:124532:7
- _ = _aDummy
- var _bOnePass int32 // sqlite3.c:124533:7
- _ = _bOnePass
- var _addr int32 // sqlite3.c:124534:7
- _ = _addr
- _v = (*TVdbe)(_pParse.X2)
- _db = (*Xsqlite3)(_pParse.X0)
- _pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _pTab)))
- _nArg = i32(2) + int32(_pTab.X11)
- _iCsr = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X11
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(124539), unsafe.Pointer((*int8)(unsafe.Pointer(&_updateVirtualTableØ00__func__Ø000))), unsafe.Pointer(str(42900)))
- crt.X__builtin_abort(tls)
- }
- }()
- _ephemTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _addr = _sqlite3VdbeAddOp2(tls, _v, i32(110), _ephemTab, _nArg)
- _regArg = (_pParse.X18) + i32(1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + _nArg
- sink1 = *p
- }
- _regRec = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _regRowid = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pSrc, _pWhere, nil, nil, uint16(i32(4)), i32(0))
- if _pWInfo != nil {
- goto _2
- }
- return
-
-_2:
- _sqlite3VdbeAddOp2(tls, _v, i32(125), _iCsr, _regArg)
- if _pRowid == nil {
- goto _3
- }
-
- _sqlite3ExprCode(tls, _pParse, _pRowid, _regArg+i32(1))
- goto _4
-
-_3:
- _sqlite3VdbeAddOp2(tls, _v, i32(125), _iCsr, _regArg+i32(1))
-_4:
- _i = i32(0)
-_5:
- if _i >= int32(_pTab.X11) {
- goto _8
- }
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))) < i32(0) {
- goto _9
- }
-
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pChanges))+uintptr(8 /* X2 */)))))+20*uintptr(*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aXRef)) + 4*uintptr(_i)))))).X0), (_regArg+i32(2))+_i)
- goto _10
-
-_9:
- _sqlite3VdbeAddOp3(tls, _v, i32(159), _iCsr, _i, (_regArg+i32(2))+_i)
-_10:
- _i += 1
- goto _5
-
-_8:
- _bOnePass = _sqlite3WhereOkOnePass(tls, _pWInfo, (*int32)(unsafe.Pointer(&_aDummy)))
- if _bOnePass == 0 {
- goto _11
- }
-
- _sqlite3VdbeChangeToNoop(tls, _v, _addr)
- if (*XParse)(_pParse.X39) != nil {
- goto _12
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(20 /* X8 */))) = uint8(i32(0))
-_12:
- goto _13
-
-_11:
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regArg, _nArg, _regRec)
- _sqlite3VdbeAddOp2(tls, _v, i32(117), _ephemTab, _regRowid)
- _sqlite3VdbeAddOp3(tls, _v, i32(118), _ephemTab, _regRec, _regRowid)
-_13:
- if _bOnePass != i32(0) {
- goto _14
- }
-
- _sqlite3WhereEnd(tls, _pWInfo)
- _addr = _sqlite3VdbeAddOp1(tls, _v, i32(37), _ephemTab)
- _i = i32(0)
-_15:
- if _i >= _nArg {
- goto _18
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _ephemTab, _i, _regArg+_i)
- _i += 1
- goto _15
-
-_18:
-_14:
- _sqlite3VtabMakeWritable(tls, _pParse, _pTab)
- _sqlite3VdbeAddOp4(tls, _v, i32(12), i32(0), _nArg, _regArg, _pVTab, i32(-8))
- _sqlite3VdbeChangeP5(tls, _v, uint16(func() int32 {
- if _onError == i32(10) {
- return i32(2)
- }
- return _onError
- }()))
- _sqlite3MayAbort(tls, _pParse)
- if _bOnePass != i32(0) {
- goto _21
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _ephemTab, _addr+i32(1))
- _sqlite3VdbeJumpHere(tls, _v, _addr)
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _ephemTab, i32(0))
- goto _22
-
-_21:
- _sqlite3WhereEnd(tls, _pWInfo)
-_22:
-}
-
-var _updateVirtualTableØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_updateVirtualTableØ00__func__Ø000[0], str(122136), 19)
-}
-
-func _sqlite3FkOldmask(tls *crt.TLS, _pParse *XParse, _pTab *XTable) (r0 uint32) { // sqlite3.c:108466:1
- var _mask uint32 // sqlite3.c:108470:7
- _ = _mask
- var _1_p *XFKey // sqlite3.c:108472:10
- _ = _1_p
- var _1_i int32 // sqlite3.c:108473:9
- _ = _1_i
- var _3_pIdx *XIndex // sqlite3.c:108478:13
- _ = _3_pIdx
- _mask = u32(0)
- if (((*Xsqlite3)(_pParse.X0).X6) & i32(524288)) == 0 {
- goto _0
- }
-
- _1_p = (*XFKey)(_pTab.X4)
-_1:
- if _1_p == nil {
- goto _4
- }
-
- _1_i = i32(0)
-_5:
- if _1_i >= (_1_p.X5) {
- goto _8
- }
-
- {
- p := &_mask
- *p = (*p) | func() uint32 {
- if ((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(36 /* X9 */))))) + 8*uintptr(_1_i))).X0) > i32(31) {
- return u32(4294967295)
- }
- return (u32(1) << uint((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_p))+uintptr(36 /* X9 */)))))+8*uintptr(_1_i))).X0))
- }()
- sink5 = *p
- }
- _1_i += 1
- goto _5
-
-_8:
- _1_p = (*XFKey)(_1_p.X1)
- goto _1
-
-_4:
- _1_p = _sqlite3FkReferences(tls, _pTab)
-_11:
- if _1_p == nil {
- goto _14
- }
-
- _3_pIdx = nil
- _sqlite3FkLocateIndex(tls, _pParse, _pTab, _1_p, &_3_pIdx, nil)
- if _3_pIdx == nil {
- goto _15
- }
-
- _1_i = i32(0)
-_16:
- if _1_i >= int32(_3_pIdx.X13) {
- goto _19
- }
-
- func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIdx.X1)) + 2*uintptr(_1_i)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108482), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkOldmaskØ00__func__Ø000))), unsafe.Pointer(str(122156)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := &_mask
- *p = (*p) | func() uint32 {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIdx.X1)) + 2*uintptr(_1_i)))) > i32(31) {
- return u32(4294967295)
- }
- return (u32(1) << uint(int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_3_pIdx.X1)) + 2*uintptr(_1_i))))))
- }()
- sink5 = *p
- }
- _1_i += 1
- goto _16
-
-_19:
-_15:
- _1_p = (*XFKey)(_1_p.X3)
- goto _11
-
-_14:
-_0:
- r0 = _mask
- return
-}
-
-func _sqlite3FkLocateIndex(tls *crt.TLS, _pParse *XParse, _pParent *XTable, _pFKey *XFKey, _ppIdx **XIndex, _paiCol **int32) (r0 int32) { // sqlite3.c:107596:1
- var _pIdx *XIndex // sqlite3.c:107603:9
- _ = _pIdx
- var _aiCol *int32 // sqlite3.c:107604:7
- _ = _aiCol
- var _nCol int32 // sqlite3.c:107605:7
- _ = _nCol
- var _zKey *int8 // sqlite3.c:107606:8
- _ = _zKey
- var _8_i int32 // sqlite3.c:107652:17
- _ = _8_i
- var _9_i int32 // sqlite3.c:107662:13
- _ = _9_i
- var _9_j int32 // sqlite3.c:107662:16
- _ = _9_j
- var _10_iCol int16 // sqlite3.c:107664:15
- _ = _10_iCol
- var _10_zDfltColl *int8 // sqlite3.c:107665:22
- _ = _10_zDfltColl
- var _10_zIdxCol *int8 // sqlite3.c:107666:16
- _ = _10_zIdxCol
- _pIdx = nil
- _aiCol = nil
- _nCol = _pFKey.X5
- _zKey = (*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X1
- func() {
- if _ppIdx == nil || (*_ppIdx) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107609), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(122180)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _paiCol != nil && (*_paiCol) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107610), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(122200)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _pParse == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107611), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(120996)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _nCol != i32(1) {
- goto _8
- }
-
- if int32(_pParent.X10) < i32(0) {
- goto _9
- }
-
- if _zKey != nil {
- goto _10
- }
- return i32(0)
-
-_10:
- if _sqlite3StrICmp(tls, (*XColumn)(unsafe.Pointer(uintptr(_pParent.X1)+16*uintptr(_pParent.X10))).X0, _zKey) != 0 {
- goto _11
- }
- return i32(0)
-
-_11:
-_9:
- goto _12
-
-_8:
- if _paiCol == nil {
- goto _13
- }
-
- func() {
- if _nCol <= i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107634), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkLocateIndexØ00__func__Ø000))), unsafe.Pointer(str(122224)))
- crt.X__builtin_abort(tls)
- }
- }()
- _aiCol = (*int32)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(uint32(_nCol)*u32(4))))
- if _aiCol != nil {
- goto _16
- }
- return i32(1)
-
-_16:
- *_paiCol = _aiCol
-_13:
-_12:
- _pIdx = (*XIndex)(_pParent.X2)
-_17:
- if _pIdx == nil {
- goto _20
- }
-
- if int32(_pIdx.X13) != _nCol || int32(_pIdx.X15) == i32(0) || (*XExpr)(_pIdx.X9) != nil {
- goto _23
- }
-
- if _zKey != nil {
- goto _24
- }
-
- if int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2) {
- goto _25
- }
-
- if _aiCol == nil {
- goto _26
- }
-
- _8_i = i32(0)
-_27:
- if _8_i >= _nCol {
- goto _30
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_8_i))) = (*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_8_i))).X0
- _8_i += 1
- goto _27
-
-_30:
-_26:
- goto _20
-
-_25:
- goto _31
-
-_24:
- _9_i = i32(0)
-_32:
- if _9_i >= _nCol {
- goto _35
- }
-
- _10_iCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_9_i)))
- if int32(_10_iCol) >= i32(0) {
- goto _36
- }
-
- goto _35
-
-_36:
- _10_zDfltColl = (*XColumn)(unsafe.Pointer(uintptr(_pParent.X1) + 16*uintptr(_10_iCol))).X2
- if _10_zDfltColl != nil {
- goto _37
- }
-
- _10_zDfltColl = (*int8)(unsafe.Pointer(&_sqlite3StrBINARY))
-_37:
- if _sqlite3StrICmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X8)) + 4*uintptr(_9_i))), _10_zDfltColl) == 0 {
- goto _38
- }
-
- goto _35
-
-_38:
- _10_zIdxCol = (*XColumn)(unsafe.Pointer(uintptr(_pParent.X1) + 16*uintptr(_10_iCol))).X0
- _9_j = i32(0)
-_39:
- if _9_j >= _nCol {
- goto _42
- }
-
- if _sqlite3StrICmp(tls, (*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */)))))+8*uintptr(_9_j))).X1, _10_zIdxCol) != i32(0) {
- goto _43
- }
-
- if _aiCol == nil {
- goto _44
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_9_i))) = (*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_9_j))).X0
-_44:
- goto _42
-
-_43:
- _9_j += 1
- goto _39
-
-_42:
- if _9_j != _nCol {
- goto _45
- }
-
- goto _35
-
-_45:
- _9_i += 1
- goto _32
-
-_35:
- if _9_i != _nCol {
- goto _46
- }
-
- goto _20
-
-_46:
-_31:
-_23:
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _17
-
-_20:
- if _pIdx != nil {
- goto _47
- }
-
- if (_pParse.X47) != 0 {
- goto _48
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(122232), unsafe.Pointer((*XTable)(_pFKey.X0).X0), unsafe.Pointer(_pFKey.X2))
-_48:
- _sqlite3DbFree(tls, (*Xsqlite3)(_pParse.X0), (unsafe.Pointer)(_aiCol))
- return i32(1)
-
-_47:
- *_ppIdx = _pIdx
- return i32(0)
-}
-
-var _sqlite3FkLocateIndexØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3FkLocateIndexØ00__func__Ø000[0], str(122280), 21)
-}
-
-var _sqlite3FkOldmaskØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3FkOldmaskØ00__func__Ø000[0], str(122304), 17)
-}
-
-func _sqlite3CodeRowTrigger(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger, _op int32, _pChanges *XExprList, _tr_tm int32, _pTab *XTable, _reg int32, _orconf int32, _ignoreJump int32) { // sqlite3.c:123652:1
- var _p *XTrigger // sqlite3.c:123663:11
- _ = _p
- func() {
- if _op != i32(110) && _op != i32(108) && _op != i32(109) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123665), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(122324)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _tr_tm != i32(1) && _tr_tm != i32(2) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123666), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(122372)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_op == i32(110)) != (_pChanges != nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123667), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(122420)))
- crt.X__builtin_abort(tls)
- }
- }()
- _p = _pTrigger
-_9:
- if _p == nil {
- goto _12
- }
-
- func() {
- if (*XSchema)(_p.X6) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123674), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(122452)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSchema)(_p.X7) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123675), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(122468)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSchema)(_p.X6) != (*XSchema)(_p.X7) && (*XSchema)(_p.X6) != (*XSchema)((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(i32(1)))).X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123676), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerØ00__func__Ø000))), unsafe.Pointer(str(122488)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_p.X2) != _op || int32(_p.X3) != _tr_tm || _checkColumnOverlap(tls, (*XIdList)(_p.X5), _pChanges) == 0 {
- goto _22
- }
-
- _sqlite3CodeRowTriggerDirect(tls, _pParse, _p, _pTab, _reg, _orconf, _ignoreJump)
-_22:
- _p = (*XTrigger)(_p.X9)
- goto _9
-
-_12:
-}
-
-var _sqlite3CodeRowTriggerØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CodeRowTriggerØ00__func__Ø000[0], str(122556), 22)
-}
-
-func _sqlite3CodeRowTriggerDirect(tls *crt.TLS, _pParse *XParse, _p *XTrigger, _pTab *XTable, _reg int32, _orconf int32, _ignoreJump int32) { // sqlite3.c:123580:1
- var _v *TVdbe // sqlite3.c:123588:8
- _ = _v
- var _pPrg *XTriggerPrg // sqlite3.c:123589:14
- _ = _pPrg
- var _1_bRecursive int32 // sqlite3.c:123596:9
- _ = _1_bRecursive
- _v = _sqlite3GetVdbe(tls, _pParse)
- _pPrg = _getRowTrigger(tls, _pParse, _p, _pTab, _orconf)
- func() {
- if _pPrg == nil && (_pParse.X16) == 0 && ((*Xsqlite3)(_pParse.X0).X17) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123591), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeRowTriggerDirectØ00__func__Ø000))), unsafe.Pointer(str(122580)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _pPrg == nil {
- goto _4
- }
-
- _1_bRecursive = bool2int(((_p.X0) != nil) && (i32(0) == (((*Xsqlite3)(_pParse.X0).X6) & i32(262144))))
- _sqlite3VdbeAddOp4(tls, _v, i32(44), _reg, _ignoreJump, preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1), (*int8)(unsafe.Pointer((*XSubProgram)(_pPrg.X2))), i32(-13))
- _sqlite3VdbeComment(tls, _v, str(122632), unsafe.Pointer(func() *int8 {
- if (_p.X0) != nil {
- return (_p.X0)
- }
- return str(122644)
- }()), unsafe.Pointer(_onErrorText(tls, _orconf)))
- _sqlite3VdbeChangeP5(tls, _v, uint16(uint8(_1_bRecursive)))
-_4:
-}
-
-var _sqlite3CodeRowTriggerDirectØ00__func__Ø000 [28]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CodeRowTriggerDirectØ00__func__Ø000[0], str(122652), 28)
-}
-
-func _sqlite3GenerateConstraintChecks(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _aRegIdx *int32, _iDataCur int32, _iIdxCur int32, _regNewData int32, _regOldData int32, _pkChng uint8, _overrideError uint8, _ignoreDest int32, _pbMayReplace *int32, _aiChng *int32) { // sqlite3.c:110060:1
- var _v *TVdbe // sqlite3.c:110074:8
- _ = _v
- var _pIdx *XIndex // sqlite3.c:110075:9
- _ = _pIdx
- var _pPk *XIndex // sqlite3.c:110076:9
- _ = _pPk
- var _db *Xsqlite3 // sqlite3.c:110077:11
- _ = _db
- var _i int32 // sqlite3.c:110078:7
- _ = _i
- var _ix int32 // sqlite3.c:110079:7
- _ = _ix
- var _nCol int32 // sqlite3.c:110080:7
- _ = _nCol
- var _onError int32 // sqlite3.c:110081:7
- _ = _onError
- var _addr1 int32 // sqlite3.c:110082:7
- _ = _addr1
- var _seenReplace int32 // sqlite3.c:110083:7
- _ = _seenReplace
- var _nPkField int32 // sqlite3.c:110084:7
- _ = _nPkField
- var _ipkTop int32 // sqlite3.c:110085:7
- _ = _ipkTop
- var _ipkBottom int32 // sqlite3.c:110086:7
- _ = _ipkBottom
- var _isUpdate uint8 // sqlite3.c:110087:6
- _ = _isUpdate
- var _bAffinityDone uint8 // sqlite3.c:110088:6
- _ = _bAffinityDone
- var _10_zMsg *int8 // sqlite3.c:110141:14
- _ = _10_zMsg
- var _13_pCheck *XExprList // sqlite3.c:110170:14
- _ = _13_pCheck
- var _14_allOk int32 // sqlite3.c:110174:11
- _ = _14_allOk
- var _14_pExpr *XExpr // sqlite3.c:110175:12
- _ = _14_pExpr
- var _16_zName *int8 // sqlite3.c:110182:14
- _ = _16_zName
- var _17_addrRowidOk int32 // sqlite3.c:110198:9
- _ = _17_addrRowidOk
- var _27_pTrigger *XTrigger // sqlite3.c:110271:17
- _ = _27_pTrigger
- var _34_regIdx int32 // sqlite3.c:110319:9
- _ = _34_regIdx
- var _34_regR int32 // sqlite3.c:110320:9
- _ = _34_regR
- var _34_iThisCur int32 // sqlite3.c:110321:9
- _ = _34_iThisCur
- var _34_addrUniqueOk int32 // sqlite3.c:110322:9
- _ = _34_addrUniqueOk
- var _37_iField int32 // sqlite3.c:110346:11
- _ = _37_iField
- var _37_x int32 // sqlite3.c:110347:11
- _ = _37_x
- var _50_x int32 // sqlite3.c:110426:13
- _ = _50_x
- var _53_addrJump int32 // sqlite3.c:110446:15
- _ = _53_addrJump
- var _53_op int32 // sqlite3.c:110447:15
- _ = _53_op
- var _53_regCmp int32 // sqlite3.c:110448:15
- _ = _53_regCmp
- var _54_p4 *int8 // sqlite3.c:110451:18
- _ = _54_p4
- var _59_pTrigger *XTrigger // sqlite3.c:110484:17
- _ = _59_pTrigger
- _pPk = nil
- _seenReplace = i32(0)
- _ipkTop = i32(0)
- _ipkBottom = i32(0)
- _bAffinityDone = u8(0)
- _isUpdate = uint8(bool2int(_regOldData != i32(0)))
- _db = (*Xsqlite3)(_pParse.X0)
- _v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110093), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(43120)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSelect)(_pTab.X3) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110094), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(106748)))
- crt.X__builtin_abort(tls)
- }
- }()
- _nCol = int32(_pTab.X11)
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _4
- }
-
- _pPk = nil
- _nPkField = i32(1)
- goto _5
-
-_4:
- _pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
- _nPkField = int32(_pPk.X13)
-_5:
- _i = i32(0)
-_6:
- if _i >= _nCol {
- goto _9
- }
-
- if _i != int32(_pTab.X10) {
- goto _10
- }
-
- goto _7
-
-_10:
- if _aiChng == nil || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiChng)) + 4*uintptr(_i)))) >= i32(0) {
- goto _12
- }
-
- goto _7
-
-_12:
- _onError = int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_i))).X3)
- if _onError != i32(0) {
- goto _13
- }
-
- goto _7
-
-_13:
- if int32(_overrideError) == i32(10) {
- goto _14
- }
-
- _onError = int32(_overrideError)
- goto _15
-
-_14:
- if _onError != i32(10) {
- goto _16
- }
-
- _onError = i32(2)
-_16:
-_15:
- if _onError != i32(5) || (*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1) != nil {
- goto _18
- }
-
- _onError = i32(2)
-_18:
- func() {
- if _onError != i32(1) && _onError != i32(2) && _onError != i32(3) && _onError != i32(4) && _onError != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110133), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(122680)))
- crt.X__builtin_abort(tls)
- }
- }()
- switch _onError {
- case i32(1):
- goto _27
- case i32(2):
- goto _26
- case i32(3):
- goto _28
- case i32(4):
- goto _29
- default:
- goto _30
- }
-
-_26:
- _sqlite3MayAbort(tls, _pParse)
-_27:
-_28:
- _10_zMsg = _sqlite3MPrintf(tls, _db, str(6608), unsafe.Pointer(_pTab.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X0))
- _sqlite3VdbeAddOp3(tls, _v, i32(54), i32(1299), _onError, (_regNewData+i32(1))+_i)
- _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_10_zMsg), i32(-1))
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)))
- goto _31
-
-_29:
- _sqlite3VdbeAddOp2(tls, _v, i32(75), (_regNewData+i32(1))+_i, _ignoreDest)
- goto _31
-
-_30:
- func() {
- if _onError != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110156), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(122788)))
- crt.X__builtin_abort(tls)
- }
- }()
- _addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(76), (_regNewData+i32(1))+_i)
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1), (_regNewData+i32(1))+_i)
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
- goto _31
-
-_31:
-_7:
- _i += 1
- goto _6
-
-_9:
- if (*XExprList)(_pTab.X6) == nil || ((_db.X6)&i32(8192)) != i32(0) {
- goto _35
- }
-
- _13_pCheck = (*XExprList)(_pTab.X6)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = _regNewData + i32(1)
- _onError = func() int32 {
- if int32(_overrideError) != i32(10) {
- return int32(_overrideError)
- }
- return i32(2)
- }()
- _i = i32(0)
-_38:
- if _i >= (_13_pCheck.X0) {
- goto _41
- }
-
- _14_pExpr = (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pCheck))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X0)
- if _aiChng == nil || _checkConstraintUnchanged(tls, _14_pExpr, _aiChng, int32(_pkChng)) == 0 {
- goto _43
- }
-
- goto _39
-
-_43:
- _14_allOk = _sqlite3VdbeMakeLabel(tls, _v)
- _sqlite3ExprIfTrue(tls, _pParse, _14_pExpr, _14_allOk, i32(16))
- if _onError != i32(4) {
- goto _44
- }
-
- _sqlite3VdbeGoto(tls, _v, _ignoreDest)
- goto _45
-
-_44:
- _16_zName = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_13_pCheck))+uintptr(8 /* X2 */))))) + 20*uintptr(_i))).X1
- if _16_zName != nil {
- goto _46
- }
-
- _16_zName = _pTab.X0
-_46:
- if _onError != i32(5) {
- goto _47
- }
-
- _onError = i32(2)
-_47:
- _sqlite3HaltConstraint(tls, _pParse, i32(275), _onError, _16_zName, int8(i32(0)), uint8(i32(3)))
-_45:
- _sqlite3VdbeResolveLabel(tls, _v, _14_allOk)
-_39:
- _i += 1
- goto _38
-
-_41:
-_35:
- if _pkChng == 0 || _pPk != nil {
- goto _49
- }
-
- _17_addrRowidOk = _sqlite3VdbeMakeLabel(tls, _v)
- _onError = int32(_pTab.X14)
- if int32(_overrideError) == i32(10) {
- goto _50
- }
-
- _onError = int32(_overrideError)
- goto _51
-
-_50:
- if _onError != i32(10) {
- goto _52
- }
-
- _onError = i32(2)
-_52:
-_51:
- if _isUpdate == 0 {
- goto _53
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(78), _regNewData, _17_addrRowidOk, _regOldData)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
-_53:
- if _onError != i32(5) || int32(_overrideError) == i32(5) {
- goto _55
- }
-
- _pIdx = (*XIndex)(_pTab.X2)
-_56:
- if _pIdx == nil {
- goto _59
- }
-
- if int32(_pIdx.X15) != i32(4) && int32(_pIdx.X15) != i32(3) {
- goto _61
- }
-
- _ipkTop = _sqlite3VdbeAddOp0(tls, _v, i32(13))
- goto _59
-
-_61:
- _pIdx = (*XIndex)(_pIdx.X5)
- goto _56
-
-_59:
-_55:
- _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDataCur, _17_addrRowidOk, _regNewData)
- switch _onError {
- case i32(1):
- goto _64
- case i32(2):
- goto _65
- case i32(3):
- goto _66
- case i32(4):
- goto _68
- case i32(5):
- goto _67
- default:
- goto _63
- }
-
-_63:
- _onError = i32(2)
-_64:
-_65:
-_66:
- _sqlite3RowidConstraint(tls, _pParse, _onError, _pTab)
- goto _69
-
-_67:
- _27_pTrigger = nil
- if ((_db.X6) & i32(262144)) == 0 {
- goto _70
- }
-
- _27_pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil)
-_70:
- if _27_pTrigger == nil && _sqlite3FkRequired(tls, _pParse, _pTab, nil, i32(0)) == 0 {
- goto _72
- }
-
- _sqlite3MultiWrite(tls, _pParse)
- _sqlite3GenerateRowDelete(tls, _pParse, _pTab, _27_pTrigger, _iDataCur, _iIdxCur, _regNewData, int16(i32(1)), uint8(i32(0)), uint8(i32(5)), uint8(i32(1)), i32(-1))
- goto _73
-
-_72:
- if (*XIndex)(_pTab.X2) == nil {
- goto _74
- }
-
- _sqlite3MultiWrite(tls, _pParse)
- _sqlite3GenerateRowIndexDelete(tls, _pParse, _pTab, _iDataCur, _iIdxCur, nil, i32(-1))
-_74:
-_73:
- _seenReplace = i32(1)
- goto _69
-
-_68:
- _sqlite3VdbeGoto(tls, _v, _ignoreDest)
- goto _69
-
-_69:
- _sqlite3VdbeResolveLabel(tls, _v, _17_addrRowidOk)
- if _ipkTop == 0 {
- goto _75
- }
-
- _ipkBottom = _sqlite3VdbeAddOp0(tls, _v, i32(13))
- _sqlite3VdbeJumpHere(tls, _v, _ipkTop)
-_75:
-_49:
- *func() **XIndex { _ix = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_76:
- if _pIdx == nil {
- goto _79
- }
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix)))) != i32(0) {
- goto _80
- }
-
- goto _77
-
-_80:
- if int32(_bAffinityDone) != i32(0) {
- goto _81
- }
-
- _sqlite3TableAffinity(tls, _v, _pTab, _regNewData+i32(1))
- _bAffinityDone = uint8(i32(1))
-_81:
- _34_iThisCur = _iIdxCur + _ix
- _34_addrUniqueOk = _sqlite3VdbeMakeLabel(tls, _v)
- if (*XExpr)(_pIdx.X9) == nil {
- goto _82
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix))))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = _regNewData + i32(1)
- _sqlite3ExprIfFalseDup(tls, _pParse, (*XExpr)(_pIdx.X9), _34_addrUniqueOk, i32(16))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = i32(0)
-_82:
- _34_regIdx = (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix)))) + i32(1)
- _i = i32(0)
-_83:
- if _i >= int32(_pIdx.X14) {
- goto _86
- }
-
- _37_iField = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i))))
- if _37_iField != i32(-2) {
- goto _87
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = _regNewData + i32(1)
- _sqlite3ExprCodeCopy(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pIdx.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), _34_regIdx+_i)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(56 /* X21 */))) = i32(0)
- _sqlite3VdbeComment(tls, _v, str(122808), unsafe.Pointer(_pIdx.X0), _i)
- goto _88
-
-_87:
- if _37_iField != i32(-1) && _37_iField != int32(_pTab.X10) {
- goto _90
- }
-
- _37_x = _regNewData
- goto _91
-
-_90:
- _37_x = (_37_iField + _regNewData) + i32(1)
-_91:
- _sqlite3VdbeAddOp2(tls, _v, func() int32 {
- if _37_iField < i32(0) {
- return i32(66)
- }
- return i32(65)
- }(), _37_x, _34_regIdx+_i)
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(func() *int8 {
- if _37_iField < i32(0) {
- return str(27392)
- }
- return ((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_37_iField))).X0)
- }()))
-_88:
- _i += 1
- goto _83
-
-_86:
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _34_regIdx, int32(_pIdx.X14), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_ix))))
- _sqlite3VdbeComment(tls, _v, str(111944), unsafe.Pointer(_pIdx.X0))
- if _isUpdate == 0 || _pPk != _pIdx || int32(_pkChng) != i32(0) {
- goto _98
- }
-
- _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
- goto _77
-
-_98:
- _onError = int32(_pIdx.X15)
- if _onError != i32(0) {
- goto _99
- }
-
- _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
- goto _77
-
-_99:
- if int32(_overrideError) == i32(10) {
- goto _100
- }
-
- _onError = int32(_overrideError)
- goto _101
-
-_100:
- if _onError != i32(10) {
- goto _102
- }
-
- _onError = i32(2)
-_102:
-_101:
- if _ix != i32(0) || (*XIndex)(_pIdx.X5) != nil || _pPk != _pIdx || _onError != i32(5) || i32(0) != ((_db.X6)&i32(262144)) && nil != _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil) || i32(0) != ((_db.X6)&i32(524288)) && (nil != (*XFKey)(_pTab.X4) || nil != _sqlite3FkReferences(tls, _pTab)) {
- goto _111
- }
-
- _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
- goto _77
-
-_111:
- _sqlite3VdbeAddOp4Int(tls, _v, i32(28), _34_iThisCur, _34_addrUniqueOk, _34_regIdx, int32(_pIdx.X13))
- _34_regR = func() int32 {
- if _pIdx == _pPk {
- return _34_regIdx
- }
- return _sqlite3GetTempRange(tls, _pParse, _nPkField)
- }()
- if _isUpdate == 0 && _onError != i32(5) {
- goto _115
- }
-
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _116
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(131), _34_iThisCur, _34_regR)
- if _isUpdate == 0 {
- goto _117
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(78), _34_regR, _34_addrUniqueOk, _regOldData)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
-_117:
- goto _118
-
-_116:
- if _pIdx == _pPk {
- goto _119
- }
-
- _i = i32(0)
-_120:
- if _i >= int32(_pPk.X13) {
- goto _123
- }
-
- func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110431), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(120520)))
- crt.X__builtin_abort(tls)
- }
- }()
- _50_x = int32(_sqlite3ColumnOfIndex(tls, _pIdx, *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))))
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _34_iThisCur, _50_x, _34_regR+_i)
- _sqlite3VdbeComment(tls, _v, str(6608), unsafe.Pointer(_pTab.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i)))))).X0))
- _i += 1
- goto _120
-
-_123:
-_119:
- if _isUpdate == 0 {
- goto _126
- }
-
- _53_addrJump = _sqlite3VdbeCurrentAddr(tls, _v) + int32(_pPk.X13)
- _53_op = i32(77)
- _53_regCmp = func() int32 {
- if int32((uint32(_pIdx.X16)<>uint(i32(30))) == i32(2) {
- return _34_regIdx
- }
- return _34_regR
- }()
- _i = i32(0)
-_129:
- if _i >= int32(_pPk.X13) {
- goto _132
- }
-
- _54_p4 = (*int8)(unsafe.Pointer(_sqlite3LocateCollSeq(tls, _pParse, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X8)) + 4*uintptr(_i))))))
- _50_x = int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pPk.X1)) + 2*uintptr(_i))))
- func() {
- if _50_x < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110453), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(114680)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _i != (int32(_pPk.X13) - i32(1)) {
- goto _135
- }
-
- _53_addrJump = _34_addrUniqueOk
- _53_op = i32(78)
-_135:
- _sqlite3VdbeAddOp4(tls, _v, _53_op, (_regOldData+i32(1))+_50_x, _53_addrJump, _53_regCmp+_i, _54_p4, i32(-3))
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
- _i += 1
- goto _129
-
-_132:
-_126:
-_118:
-_115:
- func() {
- if _onError != i32(1) && _onError != i32(2) && _onError != i32(3) && _onError != i32(4) && _onError != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110470), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(122680)))
- crt.X__builtin_abort(tls)
- }
- }()
- switch _onError {
- case i32(1):
- goto _143
- case i32(2):
- goto _144
- case i32(3):
- goto _145
- case i32(4):
- goto _146
- default:
- goto _147
- }
-
-_143:
-_144:
-_145:
- _sqlite3UniqueConstraint(tls, _pParse, _onError, _pIdx)
- goto _148
-
-_146:
- _sqlite3VdbeGoto(tls, _v, _ignoreDest)
- goto _148
-
-_147:
- _59_pTrigger = nil
- func() {
- if _onError != i32(5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110485), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateConstraintChecksØ00__func__Ø000))), unsafe.Pointer(str(122788)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3MultiWrite(tls, _pParse)
- if ((_db.X6) & i32(262144)) == 0 {
- goto _151
- }
-
- _59_pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(109), nil, nil)
-_151:
- _sqlite3GenerateRowDelete(tls, _pParse, _pTab, _59_pTrigger, _iDataCur, _iIdxCur, _34_regR, int16(_nPkField), uint8(i32(0)), uint8(i32(5)), uint8(func() int32 {
- if _pIdx == _pPk {
- return i32(1)
- }
- return i32(0)
- }()), _34_iThisCur)
- _seenReplace = i32(1)
- goto _148
-
-_148:
- _sqlite3VdbeResolveLabel(tls, _v, _34_addrUniqueOk)
- if _34_regR == _34_regIdx {
- goto _154
- }
-
- _sqlite3ReleaseTempRange(tls, _pParse, _34_regR, _nPkField)
-_154:
-_77:
- *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_ix }() += 1
- goto _76
-
-_79:
- if _ipkTop == 0 {
- goto _155
- }
-
- _sqlite3VdbeGoto(tls, _v, _ipkTop+i32(1))
- _sqlite3VdbeJumpHere(tls, _v, _ipkBottom)
-_155:
- *_pbMayReplace = _seenReplace
-}
-
-var _sqlite3GenerateConstraintChecksØ00__func__Ø000 [32]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3GenerateConstraintChecksØ00__func__Ø000[0], str(122824), 32)
-}
-
-func _checkConstraintUnchanged(tls *crt.TLS, _pExpr *XExpr, _aiChng *int32, _chngRowid int32) (r0 int32) { // sqlite3.c:109959:1
- var _w XWalker // sqlite3.c:109960:10
- _ = _w
- crt.Xmemset(tls, (unsafe.Pointer)(&_w), i32(0), u32(28))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */))) = uint8(i32(0))
- *(*func(*crt.TLS, *XWalker, *XExpr) int32)(unsafe.Pointer((*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer) int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(4 /* X1 */))))) = _checkConstraintExprNode
- *(**int32)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(24 /* X6 */))))) = _aiChng
- _sqlite3WalkExpr(tls, &_w, _pExpr)
- if _chngRowid != 0 {
- goto _0
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_w)) + uintptr(20 /* X5 */)))
- *p = uint8(int32(*p) & i32(-3))
- sink2 = *p
- }
-_0:
- return bool2int((_w.X5) == 0)
-}
-
-func _checkConstraintExprNode(tls *crt.TLS, _pWalker *XWalker, _pExpr *XExpr) (r0 int32) { // sqlite3.c:109935:1
- if int32(_pExpr.X0) != i32(152) {
- goto _0
- }
-
- func() {
- if int32(_pExpr.X9) < i32(0) && int32(_pExpr.X9) != i32(-1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109937), unsafe.Pointer((*int8)(unsafe.Pointer(&_checkConstraintExprNodeØ00__func__Ø000))), unsafe.Pointer(str(122856)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_pExpr.X9) < i32(0) {
- goto _4
- }
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(*(**int32)(unsafe.Pointer((*t56)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(24 /* X6 */))))))) + 4*uintptr(_pExpr.X9)))) < i32(0) {
- goto _5
- }
-
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */)))
- *p = uint8(int32(*p) | i32(1))
- sink2 = *p
- }
-_5:
- goto _6
-
-_4:
- {
- p := (*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pWalker)) + uintptr(20 /* X5 */)))
- *p = uint8(int32(*p) | i32(2))
- sink2 = *p
- }
-_6:
-_0:
- r0 = i32(0)
- return
-}
-
-var _checkConstraintExprNodeØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_checkConstraintExprNodeØ00__func__Ø000[0], str(122896), 24)
-}
-
-func _sqlite3RowidConstraint(tls *crt.TLS, _pParse *XParse, _onError int32, _pTab *XTable) { // sqlite3.c:103894:1
- var _zMsg *int8 // sqlite3.c:103899:8
- _ = _zMsg
- var _rc int32 // sqlite3.c:103900:7
- _ = _rc
- if int32(_pTab.X10) < i32(0) {
- goto _0
- }
-
- _zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(6608), unsafe.Pointer(_pTab.X0), unsafe.Pointer((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_pTab.X10))).X0))
- _rc = i32(1555)
- goto _1
-
-_0:
- _zMsg = _sqlite3MPrintf(tls, (*Xsqlite3)(_pParse.X0), str(122920), unsafe.Pointer(_pTab.X0))
- _rc = i32(2579)
-_1:
- _sqlite3HaltConstraint(tls, _pParse, _rc, _onError, _zMsg, int8(i32(-1)), uint8(i32(2)))
-}
-
-func _sqlite3MultiWrite(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:103810:1
- var _pToplevel *XParse // sqlite3.c:103811:9
- _ = _pToplevel
- _pToplevel = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pToplevel)) + uintptr(20 /* X8 */))) = uint8(i32(1))
-}
-
-func _sqlite3GenerateRowIndexDelete(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iDataCur int32, _iIdxCur int32, _aRegIdx *int32, _iIdxNoSeek int32) { // sqlite3.c:105406:1
- var _i int32 // sqlite3.c:105414:7
- _ = _i
- var _r1 int32 // sqlite3.c:105415:7
- _ = _r1
- var _iPartIdxLabel int32 // sqlite3.c:105416:7
- _ = _iPartIdxLabel
- var _pIdx *XIndex // sqlite3.c:105417:9
- _ = _pIdx
- var _pPrior *XIndex // sqlite3.c:105418:9
- _ = _pPrior
- var _v *TVdbe // sqlite3.c:105419:8
- _ = _v
- var _pPk *XIndex // sqlite3.c:105420:9
- _ = _pPk
- _r1 = i32(-1)
- _pPrior = nil
- _v = (*TVdbe)(_pParse.X2)
- _pPk = func() *XIndex {
- if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- return nil
- }
- return _sqlite3PrimaryKeyIndex(tls, _pTab)
- }()
- *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_2:
- if _pIdx == nil {
- goto _5
- }
-
- func() {
- if (_iIdxCur+_i) == _iDataCur && _pPk != _pIdx {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(105425), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3GenerateRowIndexDeleteØ00__func__Ø000))), unsafe.Pointer(str(122932)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _aRegIdx == nil || (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i)))) != i32(0) {
- goto _10
- }
-
- goto _3
-
-_10:
- if _pIdx != _pPk {
- goto _11
- }
-
- goto _3
-
-_11:
- if (_iIdxCur + _i) != _iIdxNoSeek {
- goto _12
- }
-
- goto _3
-
-_12:
- _r1 = _sqlite3GenerateIndexKey(tls, _pParse, _pIdx, _iDataCur, i32(0), i32(1), &_iPartIdxLabel, _pPrior, _r1)
- _sqlite3VdbeAddOp3(tls, _v, i32(129), _iIdxCur+_i, _r1, int32(func() uint16 {
- if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0 {
- return (_pIdx.X13)
- }
- return (_pIdx.X14)
- }()))
- _sqlite3ResolvePartIdxLabel(tls, _pParse, _iPartIdxLabel)
- _pPrior = _pIdx
-_3:
- *func() **XIndex { _i += 1; return &_pIdx }() = (*XIndex)(_pIdx.X5)
- goto _2
-
-_5:
-}
-
-var _sqlite3GenerateRowIndexDeleteØ00__func__Ø000 [30]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3GenerateRowIndexDeleteØ00__func__Ø000[0], str(122968), 30)
-}
-
-func _sqlite3FkCheck(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _regOld int32, _regNew int32, _aChange *int32, _bChngRowid int32) { // sqlite3.c:108266:1
- var _db *Xsqlite3 // sqlite3.c:108274:11
- _ = _db
- var _pFKey *XFKey // sqlite3.c:108275:8
- _ = _pFKey
- var _iDb int32 // sqlite3.c:108276:7
- _ = _iDb
- var _zDb *int8 // sqlite3.c:108277:14
- _ = _zDb
- var _isIgnoreErrors int32 // sqlite3.c:108278:7
- _ = _isIgnoreErrors
- var _1_pTo *XTable // sqlite3.c:108292:11
- _ = _1_pTo
- var _1_pIdx *XIndex // sqlite3.c:108293:11
- _ = _1_pIdx
- var _1_aiFree *int32 // sqlite3.c:108294:9
- _ = _1_aiFree
- var _1_aiCol *int32 // sqlite3.c:108295:9
- _ = _1_aiCol
- var _1_iCol int32 // sqlite3.c:108296:9
- _ = _1_iCol
- var _1_i int32 // sqlite3.c:108297:9
- _ = _1_i
- var _1_bIgnore int32 // sqlite3.c:108298:9
- _ = _1_bIgnore
- var _6_v *TVdbe // sqlite3.c:108327:14
- _ = _6_v
- var _6_iJump int32 // sqlite3.c:108328:13
- _ = _6_iJump
- var _7_iReg int32 // sqlite3.c:108330:15
- _ = _7_iReg
- var _12_rcauth int32 // sqlite3.c:108355:13
- _ = _12_rcauth
- var _12_zCol *int8 // sqlite3.c:108356:14
- _ = _12_zCol
- var _15_pIdx *XIndex // sqlite3.c:108393:11
- _ = _15_pIdx
- var _15_pSrc *XSrcList // sqlite3.c:108394:13
- _ = _15_pSrc
- var _15_aiCol *int32 // sqlite3.c:108395:9
- _ = _15_aiCol
- var _19_pItem *TSrcList_item // sqlite3.c:108420:27
- _ = _19_pItem
- var _21_eAction int32 // sqlite3.c:108430:13
- _ = _21_eAction
- _db = (*Xsqlite3)(_pParse.X0)
- _isIgnoreErrors = int32(_pParse.X47)
- func() {
- if (_regOld == i32(0)) == (_regNew == i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108281), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(123000)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((_db.X6) & i32(524288)) != i32(0) {
- goto _2
- }
- return
-
-_2:
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
- _zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- _pFKey = (*XFKey)(_pTab.X4)
-_3:
- if _pFKey == nil {
- goto _6
- }
-
- _1_pIdx = nil
- _1_aiFree = nil
- _1_bIgnore = i32(0)
- if _aChange == nil || Xsqlite3_stricmp(tls, _pTab.X0, _pFKey.X2) == i32(0) || _fkChildIsModified(tls, _pTab, _pFKey, _aChange, _bChngRowid) != i32(0) {
- goto _9
- }
-
- goto _4
-
-_9:
- if (_pParse.X47) == 0 {
- goto _10
- }
-
- _1_pTo = _sqlite3FindTable(tls, _db, _pFKey.X2, _zDb)
- goto _11
-
-_10:
- _1_pTo = _sqlite3LocateTable(tls, _pParse, uint32(i32(0)), _pFKey.X2, _zDb)
-_11:
- if _1_pTo != nil && _sqlite3FkLocateIndex(tls, _pParse, _1_pTo, _pFKey, &_1_pIdx, &_1_aiFree) == 0 {
- goto _13
- }
-
- func() {
- if _isIgnoreErrors != i32(0) && (_regOld == i32(0) || _regNew != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108317), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(123028)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _isIgnoreErrors != 0 && (_db.X17) == 0 {
- goto _19
- }
- return
-
-_19:
- if _1_pTo != nil {
- goto _20
- }
-
- _6_v = _sqlite3GetVdbe(tls, _pParse)
- _6_iJump = (_sqlite3VdbeCurrentAddr(tls, _6_v) + (_pFKey.X5)) + i32(1)
- _1_i = i32(0)
-_21:
- if _1_i >= (_pFKey.X5) {
- goto _24
- }
-
- _7_iReg = (((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(_1_i))).X0) + _regOld) + i32(1)
- _sqlite3VdbeAddOp2(tls, _6_v, i32(75), _7_iReg, _6_iJump)
- _1_i += 1
- goto _21
-
-_24:
- _sqlite3VdbeAddOp2(tls, _6_v, i32(147), int32(_pFKey.X6), i32(-1))
-_20:
- goto _4
-
-_13:
- func() {
- if (_pFKey.X5) != i32(1) && (_1_aiFree == nil || _1_pIdx == nil) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108337), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(123076)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _1_aiFree == nil {
- goto _29
- }
-
- _1_aiCol = _1_aiFree
- goto _30
-
-_29:
- _1_iCol = (*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X0
- _1_aiCol = &_1_iCol
-_30:
- _1_i = i32(0)
-_31:
- if _1_i >= (_pFKey.X5) {
- goto _34
- }
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aiCol)) + 4*uintptr(_1_i)))) != int32(_pTab.X10) {
- goto _35
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aiCol)) + 4*uintptr(_1_i))) = i32(-1)
-_35:
- func() {
- if _1_pIdx != nil && int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X1)) + 2*uintptr(_1_i)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108349), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(123112)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (_db.X59) == nil {
- goto _39
- }
-
- _12_zCol = (*XColumn)(unsafe.Pointer(uintptr(_1_pTo.X1) + 16*uintptr(func() int16 {
- if _1_pIdx != nil {
- return (*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pIdx.X1)) + 2*uintptr(_1_i))))
- }
- return (_1_pTo.X10)
- }()))).X0
- _12_rcauth = _sqlite3AuthReadCol(tls, _pParse, _1_pTo.X0, _12_zCol, _iDb)
- _1_bIgnore = bool2int(_12_rcauth == i32(2))
-_39:
- _1_i += 1
- goto _31
-
-_34:
- _sqlite3TableLock(tls, _pParse, _iDb, _1_pTo.X7, uint8(i32(0)), _1_pTo.X0)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(40 /* X17 */))) += 1
- if _regOld == i32(0) {
- goto _42
- }
-
- _fkLookupParent(tls, _pParse, _iDb, _1_pTo, _1_pIdx, _pFKey, _1_aiCol, _regOld, i32(-1), _1_bIgnore)
-_42:
- if _regNew == i32(0) || _isSetNullAction(tls, _pParse, _pFKey) != 0 {
- goto _44
- }
-
- _fkLookupParent(tls, _pParse, _iDb, _1_pTo, _1_pIdx, _pFKey, _1_aiCol, _regNew, i32(1), _1_bIgnore)
-_44:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_aiFree))
-_4:
- _pFKey = (*XFKey)(_pFKey.X1)
- goto _3
-
-_6:
- _pFKey = _sqlite3FkReferences(tls, _pTab)
-_45:
- if _pFKey == nil {
- goto _48
- }
-
- _15_pIdx = nil
- _15_aiCol = nil
- if _aChange == nil || _fkParentIsModified(tls, _pTab, _pFKey, _aChange, _bChngRowid) != i32(0) {
- goto _50
- }
-
- goto _46
-
-_50:
- if (_pFKey.X6) != 0 || ((_db.X6)&i32(33554432)) != 0 || (*XParse)(_pParse.X39) != nil || (_pParse.X8) != 0 {
- goto _54
- }
-
- func() {
- if _regOld != i32(0) || _regNew == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108404), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(123144)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _46
-
-_54:
- if _sqlite3FkLocateIndex(tls, _pParse, _pTab, _pFKey, &_15_pIdx, &_15_aiCol) == 0 {
- goto _58
- }
-
- if _isIgnoreErrors != 0 && (_db.X17) == 0 {
- goto _60
- }
- return
-
-_60:
- goto _46
-
-_58:
- func() {
- if _15_aiCol == nil && (_pFKey.X5) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108414), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3FkCheckØ00__func__Ø000))), unsafe.Pointer(str(123168)))
- crt.X__builtin_abort(tls)
- }
- }()
- _15_pSrc = _sqlite3SrcListAppend(tls, _db, nil, nil, nil)
- if _15_pSrc == nil {
- goto _64
- }
-
- _19_pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_15_pSrc)) + uintptr(8 /* X2 */)))))
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(16 /* X4 */))))) = (*XTable)(_pFKey.X0)
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(8 /* X2 */))) = (*XTable)(_pFKey.X0).X0
- *(*uint32)(unsafe.Pointer(uintptr(_19_pItem.X4) + uintptr(32 /* X8 */))) += 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(40 /* X11 */))) = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- if _regNew == i32(0) {
- goto _65
- }
-
- _fkScanChildren(tls, _pParse, _15_pSrc, _pTab, _15_pIdx, _pFKey, _15_aiCol, _regNew, i32(-1))
-_65:
- if _regOld == i32(0) {
- goto _66
- }
-
- _21_eAction = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(bool2int(_aChange != nil)))))
- _fkScanChildren(tls, _pParse, _15_pSrc, _pTab, _15_pIdx, _pFKey, _15_aiCol, _regOld, i32(1))
- if (_pFKey.X6) != 0 || _21_eAction == i32(9) || _21_eAction == i32(7) {
- goto _69
- }
-
- _sqlite3MayAbort(tls, _pParse)
-_69:
-_66:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_19_pItem)) + uintptr(8 /* X2 */))) = nil
- _sqlite3SrcListDelete(tls, _db, _15_pSrc)
-_64:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_15_aiCol))
-_46:
- _pFKey = (*XFKey)(_pFKey.X3)
- goto _45
-
-_48:
-}
-
-var _sqlite3FkCheckØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3FkCheckØ00__func__Ø000[0], str(123192), 15)
-}
-
-func _fkLookupParent(tls *crt.TLS, _pParse *XParse, _iDb int32, _pTab *XTable, _pIdx *XIndex, _pFKey *XFKey, _aiCol *int32, _regData int32, _nIncr int32, _isIgnore int32) { // sqlite3.c:107731:1
- var _i int32 // sqlite3.c:107742:7
- _ = _i
- var _v *TVdbe // sqlite3.c:107743:8
- _ = _v
- var _iCur int32 // sqlite3.c:107744:7
- _ = _iCur
- var _iOk int32 // sqlite3.c:107745:7
- _ = _iOk
- var _2_iReg int32 // sqlite3.c:107759:9
- _ = _2_iReg
- var _4_iMustBeInt int32 // sqlite3.c:107767:11
- _ = _4_iMustBeInt
- var _4_regTemp int32 // sqlite3.c:107768:11
- _ = _4_regTemp
- var _6_nCol int32 // sqlite3.c:107795:11
- _ = _6_nCol
- var _6_regTemp int32 // sqlite3.c:107796:11
- _ = _6_regTemp
- var _6_regRec int32 // sqlite3.c:107797:11
- _ = _6_regRec
- var _8_iJump int32 // sqlite3.c:107816:13
- _ = _8_iJump
- var _9_iChild int32 // sqlite3.c:107818:15
- _ = _9_iChild
- var _9_iParent int32 // sqlite3.c:107819:15
- _ = _9_iParent
- _v = _sqlite3GetVdbe(tls, _pParse)
- _iCur = (_pParse.X17) - i32(1)
- _iOk = _sqlite3VdbeMakeLabel(tls, _v)
- if _nIncr >= i32(0) {
- goto _0
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(45), int32(_pFKey.X6), _iOk)
-_0:
- _i = i32(0)
-_1:
- if _i >= (_pFKey.X5) {
- goto _4
- }
-
- _2_iReg = ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i)))) + _regData) + i32(1)
- _sqlite3VdbeAddOp2(tls, _v, i32(75), _2_iReg, _iOk)
- _i += 1
- goto _1
-
-_4:
- if _isIgnore != i32(0) {
- goto _5
- }
-
- if _pIdx != nil {
- goto _6
- }
-
- _4_regTemp = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp2(tls, _v, i32(65), ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(i32(0)))))+i32(1))+_regData, _4_regTemp)
- _4_iMustBeInt = _sqlite3VdbeAddOp2(tls, _v, i32(17), _4_regTemp, i32(0))
- if _pTab != (*XTable)(_pFKey.X0) || _nIncr != i32(1) {
- goto _8
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(78), _regData, _iOk, _4_regTemp)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(144)))
-_8:
- _sqlite3OpenTable(tls, _pParse, _iCur, _iDb, _pTab, i32(106))
- _sqlite3VdbeAddOp3(tls, _v, i32(32), _iCur, i32(0), _4_regTemp)
- _sqlite3VdbeGoto(tls, _v, _iOk)
- _sqlite3VdbeJumpHere(tls, _v, _sqlite3VdbeCurrentAddr(tls, _v)-i32(2))
- _sqlite3VdbeJumpHere(tls, _v, _4_iMustBeInt)
- _sqlite3ReleaseTempReg(tls, _pParse, _4_regTemp)
- goto _9
-
-_6:
- _6_nCol = _pFKey.X5
- _6_regTemp = _sqlite3GetTempRange(tls, _pParse, _6_nCol)
- _6_regRec = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp3(tls, _v, i32(106), _iCur, _pIdx.X11, _iDb)
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pIdx)
- _i = i32(0)
-_10:
- if _i >= _6_nCol {
- goto _13
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(64), ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i))))+i32(1))+_regData, _6_regTemp+_i)
- _i += 1
- goto _10
-
-_13:
- if _pTab != (*XTable)(_pFKey.X0) || _nIncr != i32(1) {
- goto _15
- }
-
- _8_iJump = (_sqlite3VdbeCurrentAddr(tls, _v) + _6_nCol) + i32(1)
- _i = i32(0)
-_16:
- if _i >= _6_nCol {
- goto _19
- }
-
- _9_iChild = ((*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i)))) + i32(1)) + _regData
- _9_iParent = (int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) + i32(1)) + _regData
- func() {
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107820), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkLookupParentØ00__func__Ø000))), unsafe.Pointer(str(122156)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i)))) == int32(_pTab.X10) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107821), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkLookupParentØ00__func__Ø000))), unsafe.Pointer(str(123208)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))) != int32(_pTab.X10) {
- goto _24
- }
-
- _9_iParent = _regData
-_24:
- _sqlite3VdbeAddOp3(tls, _v, i32(77), _9_iChild, _8_iJump, _9_iParent)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(16)))
- _i += 1
- goto _16
-
-_19:
- _sqlite3VdbeGoto(tls, _v, _iOk)
-_15:
- _sqlite3VdbeAddOp4(tls, _v, i32(101), _6_regTemp, _6_nCol, _6_regRec, _sqlite3IndexAffinityStr(tls, (*Xsqlite3)(_pParse.X0), _pIdx), _6_nCol)
- _sqlite3VdbeAddOp4Int(tls, _v, i32(30), _iCur, _iOk, _6_regRec, i32(0))
- _sqlite3ReleaseTempReg(tls, _pParse, _6_regRec)
- _sqlite3ReleaseTempRange(tls, _pParse, _6_regTemp, _6_nCol)
-_9:
-_5:
- if (_pFKey.X6) != 0 || (((*Xsqlite3)(_pParse.X0).X6)&i32(33554432)) != 0 || (*XParse)(_pParse.X39) != nil || (_pParse.X8) != 0 {
- goto _28
- }
-
- func() {
- if _nIncr != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107849), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkLookupParentØ00__func__Ø000))), unsafe.Pointer(str(123232)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3HaltConstraint(tls, _pParse, i32(787), i32(2), nil, int8(i32(-2)), uint8(i32(4)))
- goto _31
-
-_28:
- if _nIncr <= i32(0) || int32(_pFKey.X6) != i32(0) {
- goto _33
- }
-
- _sqlite3MayAbort(tls, _pParse)
-_33:
- _sqlite3VdbeAddOp2(tls, _v, i32(147), int32(_pFKey.X6), _nIncr)
-_31:
- _sqlite3VdbeResolveLabel(tls, _v, _iOk)
- _sqlite3VdbeAddOp1(tls, _v, i32(114), _iCur)
-}
-
-var _fkLookupParentØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_fkLookupParentØ00__func__Ø000[0], str(123244), 15)
-}
-
-func _isSetNullAction(tls *crt.TLS, _pParse *XParse, _pFKey *XFKey) (r0 int32) { // sqlite3.c:108233:1
- var _pTop *XParse // sqlite3.c:108234:9
- _ = _pTop
- var _1_p *XTrigger // sqlite3.c:108236:13
- _ = _1_p
- _pTop = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- if (*XTriggerPrg)(_pTop.X69) == nil {
- goto _2
- }
-
- _1_p = (*XTrigger)((*XTriggerPrg)(_pTop.X69).X0)
- if (_1_p != (*(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(i32(0))))) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(0))))) != i32(7)) && (_1_p != (*(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(i32(1))))) || int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(i32(1))))) != i32(7)) {
- goto _6
- }
- return i32(1)
-
-_6:
-_2:
- r0 = i32(0)
- return
-}
-
-func _fkScanChildren(tls *crt.TLS, _pParse *XParse, _pSrc *XSrcList, _pTab *XTable, _pIdx *XIndex, _pFKey *XFKey, _aiCol *int32, _regData int32, _nIncr int32) { // sqlite3.c:107951:1
- var _db *Xsqlite3 // sqlite3.c:107961:11
- _ = _db
- var _i int32 // sqlite3.c:107962:7
- _ = _i
- var _pWhere *XExpr // sqlite3.c:107963:8
- _ = _pWhere
- var _sNameContext XNameContext // sqlite3.c:107964:15
- _ = _sNameContext
- var _pWInfo *XWhereInfo // sqlite3.c:107965:13
- _ = _pWInfo
- var _iFkIfZero int32 // sqlite3.c:107966:7
- _ = _iFkIfZero
- var _v *TVdbe // sqlite3.c:107967:8
- _ = _v
- var _2_pLeft *XExpr // sqlite3.c:107988:10
- _ = _2_pLeft
- var _2_pRight *XExpr // sqlite3.c:107989:10
- _ = _2_pRight
- var _2_pEq *XExpr // sqlite3.c:107990:10
- _ = _2_pEq
- var _2_iCol int16 // sqlite3.c:107991:9
- _ = _2_iCol
- var _2_zCol *int8 // sqlite3.c:107992:16
- _ = _2_zCol
- var _3_pNe *XExpr // sqlite3.c:108016:10
- _ = _3_pNe
- var _3_pLeft *XExpr // sqlite3.c:108017:10
- _ = _3_pLeft
- var _3_pRight *XExpr // sqlite3.c:108018:10
- _ = _3_pRight
- var _5_pEq *XExpr // sqlite3.c:108024:12
- _ = _5_pEq
- var _5_pAll *XExpr // sqlite3.c:108024:18
- _ = _5_pAll
- var _5_pPk *XIndex // sqlite3.c:108025:13
- _ = _5_pPk
- var _6_iCol int16 // sqlite3.c:108028:13
- _ = _6_iCol
- _db = (*Xsqlite3)(_pParse.X0)
- _pWhere = nil
- _iFkIfZero = i32(0)
- _v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if _pIdx != nil && (*XTable)(_pIdx.X3) != _pTab {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107969), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(123260)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _pIdx != nil && int32(_pIdx.X13) != (_pFKey.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107970), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(123292)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _pIdx == nil && (_pFKey.X5) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107971), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(123332)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _pIdx == nil && ((_pTab.X9)&uint32(i32(32))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107972), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(123360)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _nIncr >= i32(0) {
- goto _12
- }
-
- _iFkIfZero = _sqlite3VdbeAddOp2(tls, _v, i32(45), int32(_pFKey.X6), i32(0))
-_12:
- _i = i32(0)
-_13:
- if _i >= (_pFKey.X5) {
- goto _16
- }
-
- _2_iCol = int16(func() int32 {
- if _pIdx != nil {
- return int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i))))
- }
- return i32(-1)
- }())
- _2_pLeft = _exprTableRegister(tls, _pParse, _pTab, _regData, _2_iCol)
- _2_iCol = int16(func() int32 {
- if _aiCol != nil {
- return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aiCol)) + 4*uintptr(_i))))
- }
- return ((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X0)
- }())
- func() {
- if int32(_2_iCol) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(107997), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(103492)))
- crt.X__builtin_abort(tls)
- }
- }()
- _2_zCol = (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pFKey.X0).X1) + 16*uintptr(_2_iCol))).X0
- _2_pRight = _sqlite3Expr(tls, _db, i32(27), _2_zCol)
- _2_pEq = _sqlite3PExpr(tls, _pParse, i32(78), _2_pLeft, _2_pRight)
- _pWhere = _sqlite3ExprAnd(tls, _db, _pWhere, _2_pEq)
- _i += 1
- goto _13
-
-_16:
- if _pTab != (*XTable)(_pFKey.X0) || _nIncr <= i32(0) {
- goto _24
- }
-
- if ((_pTab.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _25
- }
-
- _3_pLeft = _exprTableRegister(tls, _pParse, _pTab, _regData, int16(i32(-1)))
- _3_pRight = _exprTableColumn(tls, _db, _pTab, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X11, int16(i32(-1)))
- _3_pNe = _sqlite3PExpr(tls, _pParse, i32(77), _3_pLeft, _3_pRight)
- goto _26
-
-_25:
- _5_pAll = nil
- _5_pPk = _sqlite3PrimaryKeyIndex(tls, _pTab)
- func() {
- if _pIdx == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108026), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(43128)))
- crt.X__builtin_abort(tls)
- }
- }()
- _i = i32(0)
-_29:
- if _i >= int32(_5_pPk.X13) {
- goto _32
- }
-
- _6_iCol = *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pIdx.X1)) + 2*uintptr(_i)))
- func() {
- if int32(_6_iCol) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108029), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkScanChildrenØ00__func__Ø000))), unsafe.Pointer(str(103492)))
- crt.X__builtin_abort(tls)
- }
- }()
- _3_pLeft = _exprTableRegister(tls, _pParse, _pTab, _regData, _6_iCol)
- _3_pRight = _exprTableColumn(tls, _db, _pTab, (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X11, _6_iCol)
- _5_pEq = _sqlite3PExpr(tls, _pParse, i32(78), _3_pLeft, _3_pRight)
- _5_pAll = _sqlite3ExprAnd(tls, _db, _5_pAll, _5_pEq)
- _i += 1
- goto _29
-
-_32:
- _3_pNe = _sqlite3PExpr(tls, _pParse, i32(19), _5_pAll, nil)
-_26:
- _pWhere = _sqlite3ExprAnd(tls, _db, _pWhere, _3_pNe)
-_24:
- crt.Xmemset(tls, (unsafe.Pointer)(&_sNameContext), i32(0), u32(32))
- *(**XSrcList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNameContext)) + uintptr(4 /* X1 */))))) = _pSrc
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sNameContext)) + uintptr(0 /* X0 */))))) = _pParse
- _sqlite3ResolveExprNames(tls, &_sNameContext, _pWhere)
- _pWInfo = _sqlite3WhereBegin(tls, _pParse, _pSrc, _pWhere, nil, nil, uint16(i32(0)), i32(0))
- _sqlite3VdbeAddOp2(tls, _v, i32(147), int32(_pFKey.X6), _nIncr)
- if _pWInfo == nil {
- goto _35
- }
-
- _sqlite3WhereEnd(tls, _pWInfo)
-_35:
- _sqlite3ExprDelete(tls, _db, _pWhere)
- if _iFkIfZero == 0 {
- goto _36
- }
-
- _sqlite3VdbeJumpHere(tls, _v, _iFkIfZero)
-_36:
-}
-
-var _fkScanChildrenØ00__func__Ø000 [15]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_fkScanChildrenØ00__func__Ø000[0], str(123388), 15)
-}
-
-func _exprTableRegister(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _regBase int32, _iCol int16) (r0 *XExpr) { // sqlite3.c:107872:1
- var _pExpr *XExpr // sqlite3.c:107878:8
- _ = _pExpr
- var _pCol *XColumn // sqlite3.c:107879:10
- _ = _pCol
- var _zColl *int8 // sqlite3.c:107880:14
- _ = _zColl
- var _db *Xsqlite3 // sqlite3.c:107881:11
- _ = _db
- _db = (*Xsqlite3)(_pParse.X0)
- _pExpr = _sqlite3Expr(tls, _db, i32(157), nil)
- if _pExpr == nil {
- goto _0
- }
-
- if int32(_iCol) < i32(0) || int32(_iCol) == int32(_pTab.X10) {
- goto _2
- }
-
- _pCol = (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1) + 16*uintptr(_iCol)))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = (_regBase + int32(_iCol)) + i32(1)
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = _pCol.X4
- _zColl = _pCol.X2
- if _zColl != nil {
- goto _3
- }
-
- _zColl = (*XCollSeq)(_db.X2).X0
-_3:
- _pExpr = _sqlite3ExprAddCollateString(tls, _pParse, _pExpr, _zColl)
- goto _4
-
-_2:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _regBase
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(1 /* X1 */))) = int8(i32(68))
-_4:
-_0:
- r0 = _pExpr
- return
-}
-
-func _exprTableColumn(tls *crt.TLS, _db *Xsqlite3, _pTab *XTable, _iCursor int32, _iCol int16) (r0 *XExpr) { // sqlite3.c:107904:1
- var _pExpr *XExpr // sqlite3.c:107910:8
- _ = _pExpr
- _pExpr = _sqlite3Expr(tls, _db, i32(152), nil)
- if _pExpr == nil {
- goto _0
- }
-
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(44 /* X14 */))))) = _pTab
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(28 /* X8 */))) = _iCursor
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pExpr)) + uintptr(32 /* X9 */))) = _iCol
-_0:
- return _pExpr
-}
-
-func _sqlite3CompleteInsertion(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iDataCur int32, _iIdxCur int32, _regNewData int32, _aRegIdx *int32, _update_flags int32, _appendBias int32, _useSeekResult int32) { // sqlite3.c:110540:1
- var _v *TVdbe // sqlite3.c:110551:8
- _ = _v
- var _pIdx *XIndex // sqlite3.c:110552:9
- _ = _pIdx
- var _pik_flags uint8 // sqlite3.c:110553:6
- _ = _pik_flags
- var _regData int32 // sqlite3.c:110554:7
- _ = _regData
- var _regRec int32 // sqlite3.c:110555:7
- _ = _regRec
- var _i int32 // sqlite3.c:110556:7
- _ = _i
- var _bAffinityDone uint8 // sqlite3.c:110557:6
- _ = _bAffinityDone
- _bAffinityDone = u8(0)
- func() {
- if _update_flags != i32(0) && _update_flags != i32(4) && _update_flags != i32(6) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110559), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(123404)))
- crt.X__builtin_abort(tls)
- }
- }()
- _v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110565), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(43120)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSelect)(_pTab.X3) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110566), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(106748)))
- crt.X__builtin_abort(tls)
- }
- }()
- *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_8:
- if _pIdx == nil {
- goto _11
- }
-
- if (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i)))) != i32(0) {
- goto _12
- }
-
- goto _9
-
-_12:
- _bAffinityDone = uint8(i32(1))
- if (*XExpr)(_pIdx.X9) == nil {
- goto _13
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(75), *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))), _sqlite3VdbeCurrentAddr(tls, _v)+i32(2))
-_13:
- _pik_flags = uint8(func() int32 {
- if _useSeekResult != 0 {
- return i32(16)
- }
- return i32(0)
- }())
- if int32((uint32(_pIdx.X16)<>uint(i32(30))) != i32(2) || ((_pTab.X9)&uint32(i32(32))) == uint32(i32(0)) {
- goto _17
- }
-
- func() {
- if int32(_pParse.X6) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CompleteInsertionØ00__func__Ø000))), unsafe.Pointer(str(123508)))
- crt.X__builtin_abort(tls)
- }
- }()
- {
- p := &_pik_flags
- *p = uint8(int32(*p) | i32(1))
- sink2 = *p
- }
- {
- p := &_pik_flags
- *p = uint8(int32(*p) | (_update_flags & i32(2)))
- sink2 = *p
- }
-_17:
- _sqlite3VdbeAddOp4Int(tls, _v, i32(128), _iIdxCur+_i, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))), (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))))+i32(1), int32(func() uint16 {
- if ((uint32((_pIdx.X16)>>uint(i32(3))) << uint(i32(31))) >> uint(i32(31))) != 0 {
- return (_pIdx.X13)
- }
- return (_pIdx.X14)
- }()))
- _sqlite3VdbeChangeP5(tls, _v, uint16(_pik_flags))
-_9:
- *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_i }() += 1
- goto _8
-
-_11:
- if ((_pTab.X9) & uint32(i32(32))) == uint32(i32(0)) {
- goto _22
- }
- return
-
-_22:
- _regData = _regNewData + i32(1)
- _regRec = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regData, int32(_pTab.X11), _regRec)
- if _bAffinityDone != 0 {
- goto _23
- }
-
- _sqlite3TableAffinity(tls, _v, _pTab, i32(0))
- _sqlite3ExprCacheAffinityChange(tls, _pParse, _regData, int32(_pTab.X11))
-_23:
- if (_pParse.X6) == 0 {
- goto _24
- }
-
- _pik_flags = uint8(i32(0))
- goto _25
-
-_24:
- _pik_flags = uint8(i32(1))
- {
- p := &_pik_flags
- *p = uint8(int32(*p) | func() int32 {
- if _update_flags != 0 {
- return _update_flags
- }
- return i32(32)
- }())
- sink2 = *p
- }
-_25:
- if _appendBias == 0 {
- goto _28
- }
-
- {
- p := &_pik_flags
- *p = uint8(int32(*p) | i32(8))
- sink2 = *p
- }
-_28:
- if _useSeekResult == 0 {
- goto _29
- }
-
- {
- p := &_pik_flags
- *p = uint8(int32(*p) | i32(16))
- sink2 = *p
- }
-_29:
- _sqlite3VdbeAddOp3(tls, _v, i32(118), _iDataCur, _regRec, _regNewData)
- if (_pParse.X6) != 0 {
- goto _30
- }
-
- _sqlite3VdbeAppendP4(tls, _v, (unsafe.Pointer)(_pTab), i32(-15))
-_30:
- _sqlite3VdbeChangeP5(tls, _v, uint16(_pik_flags))
-}
-
-var _sqlite3CompleteInsertionØ00__func__Ø000 [25]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CompleteInsertionØ00__func__Ø000[0], str(123528), 25)
-}
-
-func _sqlite3FkActions(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pChanges *XExprList, _regOld int32, _aChange *int32, _bChngRowid int32) { // sqlite3.c:108763:1
- var _1_pFKey *XFKey // sqlite3.c:108776:10
- _ = _1_pFKey
- var _3_pAct *XTrigger // sqlite3.c:108779:17
- _ = _3_pAct
- if (((*Xsqlite3)(_pParse.X0).X6) & i32(524288)) == 0 {
- goto _0
- }
-
- _1_pFKey = _sqlite3FkReferences(tls, _pTab)
-_1:
- if _1_pFKey == nil {
- goto _4
- }
-
- if _aChange != nil && _fkParentIsModified(tls, _pTab, _1_pFKey, _aChange, _bChngRowid) == 0 {
- goto _6
- }
-
- _3_pAct = _fkActionTrigger(tls, _pParse, _pTab, _1_pFKey, _pChanges)
- if _3_pAct == nil {
- goto _7
- }
-
- _sqlite3CodeRowTriggerDirect(tls, _pParse, _3_pAct, _pTab, _regOld, i32(2), i32(0))
-_7:
-_6:
- _1_pFKey = (*XFKey)(_1_pFKey.X3)
- goto _1
-
-_4:
-_0:
-}
-
-func _fkActionTrigger(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _pFKey *XFKey, _pChanges *XExprList) (r0 *XTrigger) { // sqlite3.c:108581:1
- var _db *Xsqlite3 // sqlite3.c:108587:11
- _ = _db
- var _action int32 // sqlite3.c:108588:7
- _ = _action
- var _pTrigger *XTrigger // sqlite3.c:108589:11
- _ = _pTrigger
- var _iAction int32 // sqlite3.c:108590:7
- _ = _iAction
- var _2_zFrom *int8 // sqlite3.c:108599:16
- _ = _2_zFrom
- var _2_nFrom int32 // sqlite3.c:108600:9
- _ = _2_nFrom
- var _2_pIdx *XIndex // sqlite3.c:108601:11
- _ = _2_pIdx
- var _2_aiCol *int32 // sqlite3.c:108602:9
- _ = _2_aiCol
- var _2_pStep *XTriggerStep // sqlite3.c:108603:17
- _ = _2_pStep
- var _2_pWhere *XExpr // sqlite3.c:108604:10
- _ = _2_pWhere
- var _2_pList *XExprList // sqlite3.c:108605:14
- _ = _2_pList
- var _2_pSelect *XSelect // sqlite3.c:108606:12
- _ = _2_pSelect
- var _2_i int32 // sqlite3.c:108607:9
- _ = _2_i
- var _2_pWhen *XExpr // sqlite3.c:108608:10
- _ = _2_pWhen
- var _3_tOld XToken // sqlite3.c:108614:13
- _ = _3_tOld
- var _3_tNew XToken // sqlite3.c:108615:13
- _ = _3_tNew
- var _3_tFromCol XToken // sqlite3.c:108616:13
- _ = _3_tFromCol
- var _3_tToCol XToken // sqlite3.c:108617:13
- _ = _3_tToCol
- var _3_iFromCol int32 // sqlite3.c:108618:11
- _ = _3_iFromCol
- var _3_pEq *XExpr // sqlite3.c:108619:12
- _ = _3_pEq
- var _5_pNew *XExpr // sqlite3.c:108659:14
- _ = _5_pNew
- var _7_pDflt *XExpr // sqlite3.c:108665:16
- _ = _7_pDflt
- var _11_tFrom XToken // sqlite3.c:108684:13
- _ = _11_tFrom
- var _11_pRaise *XExpr // sqlite3.c:108685:12
- _ = _11_pRaise
- _db = (*Xsqlite3)(_pParse.X0)
- _iAction = bool2int(_pChanges != nil)
- _action = int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(25 /* X7 */))))) + 1*uintptr(_iAction))))
- if _action != i32(6) || ((_db.X6)&i32(33554432)) == 0 {
- goto _1
- }
- return nil
-
-_1:
- _pTrigger = *(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(_iAction)))
- if _action == i32(0) || _pTrigger != nil {
- goto _3
- }
-
- _2_pIdx = nil
- _2_aiCol = nil
- _2_pStep = nil
- _2_pWhere = nil
- _2_pList = nil
- _2_pSelect = nil
- _2_pWhen = nil
- if _sqlite3FkLocateIndex(tls, _pParse, _pTab, _pFKey, &_2_pIdx, &_2_aiCol) == 0 {
- goto _4
- }
- return nil
-
-_4:
- func() {
- if _2_aiCol == nil && (_pFKey.X5) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108611), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(123168)))
- crt.X__builtin_abort(tls)
- }
- }()
- _2_i = i32(0)
-_8:
- if _2_i >= (_pFKey.X5) {
- goto _11
- }
-
- _3_tOld = XToken{}
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tOld)) + uintptr(0 /* X0 */))) = str(44328)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tOld)) + uintptr(4 /* X1 */))) = uint32(i32(3))
- _3_tNew = XToken{}
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tNew)) + uintptr(0 /* X0 */))) = str(44324)
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_3_tNew)) + uintptr(4 /* X1 */))) = uint32(i32(3))
- _3_iFromCol = func() int32 {
- if _2_aiCol != nil {
- return (*(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_aiCol)) + 4*uintptr(_2_i))))
- }
- return ((*t72)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]struct {
- X0 int32
- X1 *int8
- })(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(36 /* X9 */))))) + 8*uintptr(i32(0)))).X0)
- }()
- func() {
- if _3_iFromCol < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108622), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(123556)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _2_pIdx == nil && (int32(_pTab.X10) < i32(0) || int32(_pTab.X10) >= int32(_pTab.X11)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108623), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(123568)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _2_pIdx != nil && int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx.X1)) + 2*uintptr(_2_i)))) < i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108624), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(123112)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3TokenInit(tls, &_3_tToCol, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(func() int16 {
- if _2_pIdx != nil {
- return (*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pIdx.X1)) + 2*uintptr(_2_i))))
- }
- return (_pTab.X10)
- }()))).X0)
- _sqlite3TokenInit(tls, &_3_tFromCol, (*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pFKey.X0).X1)+16*uintptr(_3_iFromCol))).X0)
- _3_pEq = _sqlite3PExpr(tls, _pParse, i32(78), _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tOld, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0))), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tFromCol, i32(0)))
- _2_pWhere = _sqlite3ExprAnd(tls, _db, _2_pWhere, _3_pEq)
- if _pChanges == nil {
- goto _25
- }
-
- _3_pEq = _sqlite3PExpr(tls, _pParse, i32(72), _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tOld, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0))), _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tNew, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0))))
- _2_pWhen = _sqlite3ExprAnd(tls, _db, _2_pWhen, _3_pEq)
-_25:
- if _action == i32(6) || _action == i32(9) && _pChanges == nil {
- goto _28
- }
-
- if _action != i32(9) {
- goto _29
- }
-
- _5_pNew = _sqlite3PExpr(tls, _pParse, i32(122), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tNew, i32(0)), _sqlite3ExprAlloc(tls, _db, i32(27), &_3_tToCol, i32(0)))
- goto _30
-
-_29:
- if _action != i32(8) {
- goto _31
- }
-
- _7_pDflt = (*XExpr)((*XColumn)(unsafe.Pointer(uintptr((*XTable)(_pFKey.X0).X1) + 16*uintptr(_3_iFromCol))).X1)
- if _7_pDflt == nil {
- goto _32
- }
-
- _5_pNew = _sqlite3ExprDup(tls, _db, _7_pDflt, i32(0))
- goto _33
-
-_32:
- _5_pNew = _sqlite3ExprAlloc(tls, _db, i32(101), nil, i32(0))
-_33:
- goto _34
-
-_31:
- _5_pNew = _sqlite3ExprAlloc(tls, _db, i32(101), nil, i32(0))
-_34:
-_30:
- _2_pList = _sqlite3ExprListAppend(tls, _pParse, _2_pList, _5_pNew)
- _sqlite3ExprListSetName(tls, _pParse, _2_pList, &_3_tFromCol, i32(0))
-_28:
- _2_i += 1
- goto _8
-
-_11:
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_2_aiCol))
- _2_zFrom = (*XTable)(_pFKey.X0).X0
- _2_nFrom = _sqlite3Strlen30(tls, _2_zFrom)
- if _action != i32(6) {
- goto _35
- }
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_11_tFrom)) + uintptr(0 /* X0 */))) = _2_zFrom
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_11_tFrom)) + uintptr(4 /* X1 */))) = uint32(_2_nFrom)
- _11_pRaise = _sqlite3Expr(tls, _db, i32(56), str(60256))
- if _11_pRaise == nil {
- goto _36
- }
-
- *(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_11_pRaise)) + uintptr(1 /* X1 */))) = int8(i32(2))
-_36:
- _2_pSelect = _sqlite3SelectNew(tls, _pParse, _sqlite3ExprListAppend(tls, _pParse, nil, _11_pRaise), _sqlite3SrcListAppend(tls, _db, nil, &_11_tFrom, nil), _2_pWhere, nil, nil, nil, uint32(i32(0)), nil, nil)
- _2_pWhere = nil
-_35:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) += 1
- _pTrigger = (*XTrigger)(_sqlite3DbMallocZero(tls, _db, uint64((u32(72)+uint32(_2_nFrom))+uint32(i32(1)))))
- if _pTrigger == nil {
- goto _37
- }
-
- _2_pStep = store75((**XTriggerStep)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger))+uintptr(28 /* X8 */))))), (*XTriggerStep)(unsafe.Pointer((*XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger))+36*uintptr(i32(1)))))))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(12 /* X4 */))) = (*int8)(unsafe.Pointer((*XTriggerStep)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + 36*uintptr(i32(1))))))
- crt.Xmemcpy(tls, (unsafe.Pointer)(_2_pStep.X4), (unsafe.Pointer)(_2_zFrom), uint32(_2_nFrom))
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(16 /* X5 */))))) = _sqlite3ExprDup(tls, _db, _2_pWhere, i32(1))
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(20 /* X6 */))))) = _sqlite3ExprListDup(tls, _db, _2_pList, i32(1))
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(8 /* X3 */))))) = _sqlite3SelectDup(tls, _db, _2_pSelect, i32(1))
- if _2_pWhen == nil {
- goto _38
- }
-
- _2_pWhen = _sqlite3PExpr(tls, _pParse, i32(19), _2_pWhen, nil)
- *(**XExpr)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(12 /* X4 */))))) = _sqlite3ExprDup(tls, _db, _2_pWhen, i32(1))
-_38:
-_37:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t7)(unsafe.Pointer(uintptr((unsafe.Pointer)(_db))+uintptr(252 /* X58 */))))) + uintptr(0 /* X0 */))) -= 1
- _sqlite3ExprDelete(tls, _db, _2_pWhere)
- _sqlite3ExprDelete(tls, _db, _2_pWhen)
- _sqlite3ExprListDelete(tls, _db, _2_pList)
- _sqlite3SelectDelete(tls, _db, _2_pSelect)
- if int32(_db.X17) != i32(1) {
- goto _39
- }
-
- _fkTriggerDelete(tls, _db, _pTrigger)
- return nil
-
-_39:
- func() {
- if _2_pStep == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(108735), unsafe.Pointer((*int8)(unsafe.Pointer(&_fkActionTriggerØ00__func__Ø000))), unsafe.Pointer(str(123624)))
- crt.X__builtin_abort(tls)
- }
- }()
- switch _action {
- case i32(6):
- goto _43
- case i32(9):
- goto _44
- default:
- goto _45
- }
-
-_43:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(0 /* X0 */))) = uint8(i32(119))
- goto _46
-
-_44:
- if _pChanges != nil {
- goto _47
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(0 /* X0 */))) = uint8(i32(109))
- goto _46
-
-_47:
-_45:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(0 /* X0 */))) = uint8(i32(110))
-_46:
- *(**XTrigger)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_2_pStep)) + uintptr(4 /* X2 */))))) = _pTrigger
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(20 /* X6 */))))) = (*XSchema)(_pTab.X20)
- *(**XSchema)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(24 /* X7 */))))) = (*XSchema)(_pTab.X20)
- *(**XTrigger)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[2]unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pFKey))+uintptr(28 /* X8 */))))) + 4*uintptr(_iAction))) = _pTrigger
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTrigger)) + uintptr(8 /* X2 */))) = uint8(func() int32 {
- if _pChanges != nil {
- return i32(110)
- }
- return i32(109)
- }())
-_3:
- return _pTrigger
-}
-
-var _fkActionTriggerØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_fkActionTriggerØ00__func__Ø000[0], str(123636), 16)
-}
-
-func _sqlite3AutoincrementEnd(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:109194:1
- if (*TAggInfo_func)(_pParse.X38) == nil {
- goto _0
- }
-
- _autoIncrementEnd(tls, _pParse)
-_0:
-}
-
-func _autoIncrementEnd(tls *crt.TLS, _pParse *XParse) { // sqlite3.c:109159:1
- var _p *TAggInfo_func // sqlite3.c:109160:15
- _ = _p
- var _v *TVdbe // sqlite3.c:109161:8
- _ = _v
- var _db *Xsqlite3 // sqlite3.c:109162:11
- _ = _db
- var _1_aOp *XVdbeOp // sqlite3.c:109174:12
- _ = _1_aOp
- var _1_pDb *XDb // sqlite3.c:109175:8
- _ = _1_pDb
- var _1_iRec int32 // sqlite3.c:109176:9
- _ = _1_iRec
- var _1_memId int32 // sqlite3.c:109177:9
- _ = _1_memId
- _v = (*TVdbe)(_pParse.X2)
- _db = (*Xsqlite3)(_pParse.X0)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109164), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoIncrementEndØ00__func__Ø000))), unsafe.Pointer(str(42900)))
- crt.X__builtin_abort(tls)
- }
- }()
- _p = (*TAggInfo_func)(_pParse.X38)
-_2:
- if _p == nil {
- goto _5
- }
-
- _1_pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_p.X2)))
- _1_memId = _p.X3
- _1_iRec = _sqlite3GetTempReg(tls, _pParse)
- func() {
- if _sqlite3SchemaMutexHeld(tls, _db, i32(0), (*XSchema)(_1_pDb.X4)) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109180), unsafe.Pointer((*int8)(unsafe.Pointer(&_autoIncrementEndØ00__func__Ø000))), unsafe.Pointer(str(42904)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3OpenTable(tls, _pParse, i32(0), _p.X2, (*XTable)((*XSchema)(_1_pDb.X4).X6), i32(107))
- _1_aOp = _sqlite3VdbeAddOpList(tls, _v, i32(5), (*XVdbeOpList)(unsafe.Pointer(&_autoIncrementEndØ00autoIncEndØ002)), _autoIncrementEndØ00iLnØ001)
- if _1_aOp != nil {
- goto _8
- }
-
- goto _5
-
-_8:
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(0)))))) + uintptr(4 /* X3 */))) = _1_memId + i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(1)))))) + uintptr(8 /* X4 */))) = _1_memId + i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(2)))))) + uintptr(4 /* X3 */))) = _1_memId - i32(1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(2)))))) + uintptr(12 /* X5 */))) = _1_iRec
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(3)))))) + uintptr(8 /* X4 */))) = _1_iRec
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(3)))))) + uintptr(12 /* X5 */))) = _1_memId + i32(1)
- *(*uint16)(unsafe.Pointer(uintptr((unsafe.Pointer)((*XVdbeOp)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_aOp))+24*uintptr(i32(3)))))) + uintptr(2 /* X2 */))) = uint16(i32(8))
- _sqlite3ReleaseTempReg(tls, _pParse, _1_iRec)
- _p = (*TAggInfo_func)(_p.X0)
- goto _2
-
-_5:
-}
-
-var _autoIncrementEndØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_autoIncrementEndØ00__func__Ø000[0], str(123652), 17)
-}
-
-var _autoIncrementEndØ00autoIncEndØ002 [5]XVdbeOpList // sqlite3.c:109167:29
-
-func init() {
- _autoIncrementEndØ00autoIncEndØ002 = [5]XVdbeOpList{XVdbeOpList{X0: u8(76), X1: i8(0), X2: i8(2), X3: i8(0)}, XVdbeOpList{X0: u8(117), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(101), X1: i8(0), X2: i8(2), X3: i8(0)}, XVdbeOpList{X0: u8(118), X1: i8(0), X2: i8(0), X3: i8(0)}, XVdbeOpList{X0: u8(114), X1: i8(0), X2: i8(0), X3: i8(0)}}
-}
-
-var _autoIncrementEndØ00iLnØ001 int32 // sqlite3.c:109166:22
-
-func _sqlite3AuthContextPop(tls *crt.TLS, _pContext *XAuthContext) { // sqlite3.c:99686:1
- if (*XParse)(_pContext.X1) == nil {
- goto _0
- }
-
- *(**int8)(unsafe.Pointer(uintptr(_pContext.X1) + uintptr(452 /* X65 */))) = _pContext.X0
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pContext)) + uintptr(4 /* X1 */))))) = nil
-_0:
-}
-
-func _targetSrcList(tls *crt.TLS, _pParse *XParse, _pStep *XTriggerStep) (r0 *XSrcList) { // sqlite3.c:123295:1
- var _db *Xsqlite3 // sqlite3.c:123299:11
- _ = _db
- var _iDb int32 // sqlite3.c:123300:7
- _ = _iDb
- var _pSrc *XSrcList // sqlite3.c:123301:11
- _ = _pSrc
- var _2_zDb *int8 // sqlite3.c:123309:18
- _ = _2_zDb
- _db = (*Xsqlite3)(_pParse.X0)
- _pSrc = _sqlite3SrcListAppend(tls, _db, nil, nil, nil)
- if _pSrc == nil {
- goto _0
- }
-
- func() {
- if (_pSrc.X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123305), unsafe.Pointer((*int8)(unsafe.Pointer(&_targetSrcListØ00__func__Ø000))), unsafe.Pointer(str(123672)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr((_pSrc.X0)-i32(1)))))) + uintptr(8 /* X2 */))) = _sqlite3DbStrDup(tls, _db, _pStep.X4)
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)((*XTrigger)(_pStep.X2).X6))
- if _iDb != i32(0) && _iDb < i32(2) {
- goto _4
- }
-
- func() {
- if _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123310), unsafe.Pointer((*int8)(unsafe.Pointer(&_targetSrcListØ00__func__Ø000))), unsafe.Pointer(str(56120)))
- crt.X__builtin_abort(tls)
- }
- }()
- _2_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc))+uintptr(8 /* X2 */)))))+68*uintptr((_pSrc.X0)-i32(1)))))) + uintptr(4 /* X1 */))) = _sqlite3DbStrDup(tls, _db, _2_zDb)
-_4:
-_0:
- r0 = _pSrc
- return
-}
-
-var _targetSrcListØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_targetSrcListØ00__func__Ø000[0], str(123688), 14)
-}
-
-func _sqlite3Insert(tls *crt.TLS, _pParse *XParse, _pTabList *XSrcList, _pSelect *XSelect, _pColumn *XIdList, _onError int32) { // sqlite3.c:109313:1
- var _db *Xsqlite3 // sqlite3.c:109320:11
- _ = _db
- var _pTab *XTable // sqlite3.c:109321:9
- _ = _pTab
- var _zTab *int8 // sqlite3.c:109322:8
- _ = _zTab
- var _i int32 // sqlite3.c:109323:7
- _ = _i
- var _j int32 // sqlite3.c:109323:10
- _ = _j
- var _v *TVdbe // sqlite3.c:109324:8
- _ = _v
- var _pIdx *XIndex // sqlite3.c:109325:9
- _ = _pIdx
- var _nColumn int32 // sqlite3.c:109326:7
- _ = _nColumn
- var _nHidden int32 // sqlite3.c:109327:7
- _ = _nHidden
- var _iDataCur int32 // sqlite3.c:109328:7
- _ = _iDataCur
- var _iIdxCur int32 // sqlite3.c:109329:7
- _ = _iIdxCur
- var _ipkColumn int32 // sqlite3.c:109330:7
- _ = _ipkColumn
- var _endOfLoop int32 // sqlite3.c:109331:7
- _ = _endOfLoop
- var _srcTab int32 // sqlite3.c:109332:7
- _ = _srcTab
- var _addrInsTop int32 // sqlite3.c:109333:7
- _ = _addrInsTop
- var _addrCont int32 // sqlite3.c:109334:7
- _ = _addrCont
- var _dest XSelectDest // sqlite3.c:109335:14
- _ = _dest
- var _iDb int32 // sqlite3.c:109336:7
- _ = _iDb
- var _useTempTable uint8 // sqlite3.c:109337:6
- _ = _useTempTable
- var _appendFlag uint8 // sqlite3.c:109338:6
- _ = _appendFlag
- var _withoutRowid uint8 // sqlite3.c:109339:6
- _ = _withoutRowid
- var _bIdListInOrder uint8 // sqlite3.c:109340:6
- _ = _bIdListInOrder
- var _pList *XExprList // sqlite3.c:109341:12
- _ = _pList
- var _regFromSelect int32 // sqlite3.c:109344:7
- _ = _regFromSelect
- var _regAutoinc int32 // sqlite3.c:109345:7
- _ = _regAutoinc
- var _regRowCount int32 // sqlite3.c:109346:7
- _ = _regRowCount
- var _regIns int32 // sqlite3.c:109347:7
- _ = _regIns
- var _regRowid int32 // sqlite3.c:109348:7
- _ = _regRowid
- var _regData int32 // sqlite3.c:109349:7
- _ = _regData
- var _aRegIdx *int32 // sqlite3.c:109350:7
- _ = _aRegIdx
- var _isView int32 // sqlite3.c:109353:7
- _ = _isView
- var _pTrigger *XTrigger // sqlite3.c:109354:11
- _ = _pTrigger
- var _tmask int32 // sqlite3.c:109355:7
- _ = _tmask
- var _18_regYield int32 // sqlite3.c:109511:9
- _ = _18_regYield
- var _18_addrTop int32 // sqlite3.c:109512:9
- _ = _18_addrTop
- var _18_rc int32 // sqlite3.c:109513:9
- _ = _18_rc
- var _20_regRec int32 // sqlite3.c:109553:11
- _ = _20_regRec
- var _20_regTempRowid int32 // sqlite3.c:109554:11
- _ = _20_regTempRowid
- var _20_addrL int32 // sqlite3.c:109555:11
- _ = _20_addrL
- var _21_sNC XNameContext // sqlite3.c:109574:17
- _ = _21_sNC
- var _30_nIdx int32 // sqlite3.c:109623:9
- _ = _30_nIdx
- var _35_regCols int32 // sqlite3.c:109667:9
- _ = _35_regCols
- var _37_addr1 int32 // sqlite3.c:109678:11
- _ = _37_addr1
- var _52_pOp *XVdbeOp // sqlite3.c:109747:16
- _ = _52_pOp
- var _54_addr1 int32 // sqlite3.c:109762:13
- _ = _54_addr1
- var _59_iRegStore int32 // sqlite3.c:109786:11
- _ = _59_iRegStore
- var _71_pVTab *int8 // sqlite3.c:109826:18
- _ = _71_pVTab
- var _72_isReplace int32 // sqlite3.c:109834:11
- _ = _72_isReplace
- var _72_bUseSeek int32 // sqlite3.c:109835:11
- _ = _72_bUseSeek
- _nHidden = i32(0)
- _iDataCur = i32(0)
- _iIdxCur = i32(0)
- _ipkColumn = i32(-1)
- _srcTab = i32(0)
- _addrInsTop = i32(0)
- _addrCont = i32(0)
- _useTempTable = u8(0)
- _appendFlag = u8(0)
- _pList = nil
- _regFromSelect = i32(0)
- _regAutoinc = i32(0)
- _regRowCount = i32(0)
- _aRegIdx = nil
- _db = (*Xsqlite3)(_pParse.X0)
- crt.Xmemset(tls, (unsafe.Pointer)(&_dest), i32(0), u32(24))
- if (_pParse.X16) == 0 && (_db.X17) == 0 {
- goto _1
- }
-
- goto _insert_cleanup
-
-_1:
- if _pSelect == nil || ((_pSelect.X3)&uint32(i32(512))) == uint32(i32(0)) || (*XSelect)(_pSelect.X13) != nil {
- goto _4
- }
-
- _pList = (*XExprList)(_pSelect.X0)
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSelect)) + uintptr(0 /* X0 */))))) = nil
- _sqlite3SelectDelete(tls, _db, _pSelect)
- _pSelect = nil
-_4:
- func() {
- if (_pTabList.X0) != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109377), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(120268)))
- crt.X__builtin_abort(tls)
- }
- }()
- _zTab = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTabList))+uintptr(8 /* X2 */))))) + 68*uintptr(i32(0)))).X2
- if func() int32 {
- if _zTab == nil {
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109379), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(1)
- }()
- }
- return i32(0)
- }() == 0 {
- goto _9
- }
-
- goto _insert_cleanup
-
-_9:
- _pTab = _sqlite3SrcListLookup(tls, _pParse, _pTabList)
- if _pTab != nil {
- goto _10
- }
-
- goto _insert_cleanup
-
-_10:
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pTab.X20))
- func() {
- if _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109385), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(56120)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3AuthCheck(tls, _pParse, i32(18), _pTab.X0, nil, (*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0) == 0 {
- goto _13
- }
-
- goto _insert_cleanup
-
-_13:
- _withoutRowid = uint8(bool2int(((_pTab.X9) & uint32(i32(32))) != uint32(i32(0))))
- _pTrigger = _sqlite3TriggersExist(tls, _pParse, _pTab, i32(108), nil, &_tmask)
- _isView = bool2int((*XSelect)(_pTab.X3) != nil)
- func() {
- if (_pTrigger == nil || _tmask == 0) && (_pTrigger != nil || _tmask != i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109407), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123704)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3ViewGetColumnNames(tls, _pParse, _pTab) == 0 {
- goto _19
- }
-
- goto _insert_cleanup
-
-_19:
- if _sqlite3IsReadOnly(tls, _pParse, _pTab, _tmask) == 0 {
- goto _20
- }
-
- goto _insert_cleanup
-
-_20:
- _v = _sqlite3GetVdbe(tls, _pParse)
- if _v != nil {
- goto _21
- }
-
- goto _insert_cleanup
-
-_21:
- if int32(_pParse.X6) != i32(0) {
- goto _22
- }
-
- _sqlite3VdbeCountChanges(tls, _v)
-_22:
- _sqlite3BeginWriteOperation(tls, _pParse, bool2int((_pSelect != nil) || (_pTrigger != nil)), _iDb)
- if _pColumn != nil || _xferOptimization(tls, _pParse, _pTab, _pSelect, _onError, _iDb) == 0 {
- goto _25
- }
-
- func() {
- if _pTrigger != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109440), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123756)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if _pList != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109441), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123768)))
- crt.X__builtin_abort(tls)
- }
- }()
- goto _insert_end
-
-_25:
- _regAutoinc = _autoIncBegin(tls, _pParse, _iDb, _pTab)
- _regRowid = store1(&_regIns, (_pParse.X18)+i32(1))
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + (int32(_pTab.X11) + i32(1))
- sink1 = *p
- }
- if (_pTab.X16) == 0 {
- goto _30
- }
-
- _regRowid += 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */))) += 1
-_30:
- _regData = _regRowid + i32(1)
- _bIdListInOrder = uint8(bool2int(((_pTab.X9) & uint32(i32(128))) == uint32(i32(0))))
- if _pColumn == nil {
- goto _31
- }
-
- _i = i32(0)
-_32:
- if _i >= (_pColumn.X1) {
- goto _35
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = i32(-1)
- _i += 1
- goto _32
-
-_35:
- _i = i32(0)
-_36:
- if _i >= (_pColumn.X1) {
- goto _39
- }
-
- _j = i32(0)
-_40:
- if _j >= int32(_pTab.X11) {
- goto _43
- }
-
- if _sqlite3StrICmp(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))).X0, (*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_j))).X0) != i32(0) {
- goto _44
- }
-
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))))) + uintptr(4 /* X1 */))) = _j
- if _i == _j {
- goto _45
- }
-
- _bIdListInOrder = uint8(i32(0))
-_45:
- if _j != int32(_pTab.X10) {
- goto _46
- }
-
- _ipkColumn = _i
- func() {
- if _withoutRowid != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109484), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123780)))
- crt.X__builtin_abort(tls)
- }
- }()
-_46:
- goto _43
-
-_44:
- _j += 1
- goto _40
-
-_43:
- if _j < int32(_pTab.X11) {
- goto _49
- }
-
- if _sqlite3IsRowid(tls, (*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))).X0) == 0 || _withoutRowid != 0 {
- goto _51
- }
-
- _ipkColumn = _i
- _bIdListInOrder = uint8(i32(0))
- goto _52
-
-_51:
- _sqlite3ErrorMsg(tls, _pParse, str(123796), unsafe.Pointer(_pTabList), i32(0), unsafe.Pointer((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0)+8*uintptr(_i))).X0))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(17 /* X5 */))) = uint8(i32(1))
- goto _insert_cleanup
-
-_52:
-_49:
- _i += 1
- goto _36
-
-_39:
-_31:
- if _pSelect == nil {
- goto _53
- }
-
- _18_regYield = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _18_addrTop = _sqlite3VdbeCurrentAddr(tls, _v) + i32(1)
- _sqlite3VdbeAddOp3(tls, _v, i32(15), _18_regYield, i32(0), _18_addrTop)
- _sqlite3SelectDestInit(tls, &_dest, i32(13), _18_regYield)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_dest)) + uintptr(12 /* X3 */))) = func() int32 {
- if _bIdListInOrder != 0 {
- return _regData
- }
- return i32(0)
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_dest)) + uintptr(16 /* X4 */))) = int32(_pTab.X11)
- _18_rc = _sqlite3Select(tls, _pParse, _pSelect, &_dest)
- _regFromSelect = _dest.X3
- if _18_rc == 0 && (_db.X17) == 0 && (_pParse.X16) == 0 {
- goto _58
- }
-
- goto _insert_cleanup
-
-_58:
- _sqlite3VdbeEndCoroutine(tls, _v, _18_regYield)
- _sqlite3VdbeJumpHere(tls, _v, _18_addrTop-i32(1))
- func() {
- if (*XExprList)(_pSelect.X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109526), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123828)))
- crt.X__builtin_abort(tls)
- }
- }()
- _nColumn = (*XExprList)(_pSelect.X0).X0
- if _pTrigger == nil && _readsTable(tls, _pParse, _iDb, _pTab) == 0 {
- goto _62
- }
-
- _useTempTable = uint8(i32(1))
-_62:
- if _useTempTable == 0 {
- goto _63
- }
-
- _srcTab = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _20_regRec = _sqlite3GetTempReg(tls, _pParse)
- _20_regTempRowid = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3VdbeAddOp2(tls, _v, i32(110), _srcTab, _nColumn)
- _20_addrL = _sqlite3VdbeAddOp1(tls, _v, i32(16), _dest.X2)
- _sqlite3VdbeAddOp3(tls, _v, i32(101), _regFromSelect, _nColumn, _20_regRec)
- _sqlite3VdbeAddOp2(tls, _v, i32(117), _srcTab, _20_regTempRowid)
- _sqlite3VdbeAddOp3(tls, _v, i32(118), _srcTab, _20_regRec, _20_regTempRowid)
- _sqlite3VdbeGoto(tls, _v, _20_addrL)
- _sqlite3VdbeJumpHere(tls, _v, _20_addrL)
- _sqlite3ReleaseTempReg(tls, _pParse, _20_regRec)
- _sqlite3ReleaseTempReg(tls, _pParse, _20_regTempRowid)
-_63:
- goto _64
-
-_53:
- crt.Xmemset(tls, (unsafe.Pointer)(&_21_sNC), i32(0), u32(32))
- *(**XParse)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_21_sNC)) + uintptr(0 /* X0 */))))) = _pParse
- _srcTab = i32(-1)
- func() {
- if int32(_useTempTable) != i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109578), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123844)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _pList == nil {
- goto _67
- }
-
- _nColumn = _pList.X0
- if _sqlite3ResolveExprListNames(tls, &_21_sNC, _pList) == 0 {
- goto _68
- }
-
- goto _insert_cleanup
-
-_68:
- goto _69
-
-_67:
- _nColumn = i32(0)
-_69:
-_64:
- if _pColumn != nil || _nColumn <= i32(0) {
- goto _71
- }
-
- _ipkColumn = int32(_pTab.X10)
-_71:
- _i = i32(0)
-_72:
- if _i >= int32(_pTab.X11) {
- goto _75
- }
-
- {
- p := &_nHidden
- *p = (*p) + func() int32 {
- if (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X6) & i32(2)) != i32(0) {
- return i32(1)
- }
- return i32(0)
- }()
- sink1 = *p
- }
- _i += 1
- goto _72
-
-_75:
- if _pColumn != nil || _nColumn == 0 || _nColumn == (int32(_pTab.X11)-_nHidden) {
- goto _80
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(123860), unsafe.Pointer(_pTabList), i32(0), int32(_pTab.X11)-_nHidden, _nColumn)
- goto _insert_cleanup
-
-_80:
- if _pColumn == nil || _nColumn == (_pColumn.X1) {
- goto _82
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(123912), _nColumn, _pColumn.X1)
- goto _insert_cleanup
-
-_82:
- if ((_db.X6) & i32(128)) == 0 {
- goto _83
- }
-
- _regRowCount = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(0), _regRowCount)
-_83:
- if _isView != 0 {
- goto _84
- }
-
- _30_nIdx = _sqlite3OpenTableAndIndices(tls, _pParse, _pTab, i32(107), uint8(i32(0)), i32(-1), nil, &_iDataCur, &_iIdxCur)
- _aRegIdx = (*int32)(_sqlite3DbMallocRawNN(tls, _db, uint64(u32(4)*uint32(_30_nIdx+i32(1)))))
- if _aRegIdx != nil {
- goto _85
- }
-
- goto _insert_cleanup
-
-_85:
- *func() **XIndex { _i = i32(0); return &_pIdx }() = (*XIndex)(_pTab.X2)
-_86:
- if _i >= _30_nIdx {
- goto _89
- }
-
- func() {
- if _pIdx == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109631), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123940)))
- crt.X__builtin_abort(tls)
- }
- }()
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_aRegIdx)) + 4*uintptr(_i))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- {
- p := (*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse)) + uintptr(44 /* X18 */)))
- *p = (*p) + int32(_pIdx.X14)
- sink1 = *p
- }
- *func() *int32 { _pIdx = (*XIndex)(_pIdx.X5); return &_i }() += 1
- goto _86
-
-_89:
-_84:
- if _useTempTable == 0 {
- goto _92
- }
-
- _addrInsTop = _sqlite3VdbeAddOp1(tls, _v, i32(37), _srcTab)
- _addrCont = _sqlite3VdbeCurrentAddr(tls, _v)
- goto _93
-
-_92:
- if _pSelect == nil {
- goto _94
- }
-
- _addrInsTop = store1(&_addrCont, _sqlite3VdbeAddOp1(tls, _v, i32(16), _dest.X2))
-_94:
-_93:
- _endOfLoop = _sqlite3VdbeMakeLabel(tls, _v)
- if (_tmask & i32(1)) == 0 {
- goto _95
- }
-
- _35_regCols = _sqlite3GetTempRange(tls, _pParse, int32(_pTab.X11)+i32(1))
- if _ipkColumn >= i32(0) {
- goto _96
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(-1), _35_regCols)
- goto _97
-
-_96:
- func() {
- if _withoutRowid != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109679), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123780)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _useTempTable == 0 {
- goto _100
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _ipkColumn, _35_regCols)
- goto _101
-
-_100:
- func() {
- if _pSelect != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109683), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123948)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_ipkColumn))).X0), _35_regCols)
-_101:
- _37_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(76), _35_regCols)
- _sqlite3VdbeAddOp2(tls, _v, i32(56), i32(-1), _35_regCols)
- _sqlite3VdbeJumpHere(tls, _v, _37_addr1)
- _sqlite3VdbeAddOp1(tls, _v, i32(17), _35_regCols)
-_97:
- func() {
- if (_pTab.X16) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109695), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(42976)))
- crt.X__builtin_abort(tls)
- }
- }()
- _i = store1(&_j, i32(0))
-_106:
- if _i >= int32(_pTab.X11) {
- goto _109
- }
-
- if _pColumn == nil {
- goto _110
- }
-
- _j = i32(0)
-_111:
- if _j >= (_pColumn.X1) {
- goto _114
- }
-
- if ((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0) + 8*uintptr(_j))).X1) != _i {
- goto _115
- }
-
- goto _114
-
-_115:
- _j += 1
- goto _111
-
-_114:
-_110:
- if (_useTempTable != 0 || _pList != nil) && (_pColumn == nil || _j < (_pColumn.X1)) && (_pColumn != nil || i32(0) == 0) {
- goto _121
- }
-
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1), (_35_regCols+_i)+i32(1))
- goto _122
-
-_121:
- if _useTempTable == 0 {
- goto _123
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _j, (_35_regCols+_i)+i32(1))
- goto _124
-
-_123:
- func() {
- if _pSelect != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109711), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(123948)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprCodeAndCache(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), (_35_regCols+_i)+i32(1))
-_124:
-_122:
- if _pColumn != nil || i32(1) == 0 {
- goto _128
- }
-
- _j += 1
-_128:
- _i += 1
- goto _106
-
-_109:
- if _isView != 0 {
- goto _129
- }
-
- _sqlite3TableAffinity(tls, _v, _pTab, _35_regCols+i32(1))
-_129:
- _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(108), nil, i32(1), _pTab, (_35_regCols-int32(_pTab.X11))-i32(1), _onError, _endOfLoop)
- _sqlite3ReleaseTempRange(tls, _pParse, _35_regCols, int32(_pTab.X11)+i32(1))
-_95:
- if _isView != 0 {
- goto _130
- }
-
- if (_pTab.X16) == 0 {
- goto _131
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regIns)
-_131:
- if _ipkColumn < i32(0) {
- goto _132
- }
-
- if _useTempTable == 0 {
- goto _133
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _ipkColumn, _regRowid)
- goto _134
-
-_133:
- if _pSelect == nil {
- goto _135
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(64), _regFromSelect+_ipkColumn, _regRowid)
- goto _136
-
-_135:
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_ipkColumn))).X0), _regRowid)
- _52_pOp = _sqlite3VdbeGetOp(tls, _v, i32(-1))
- if func() int32 {
- if _52_pOp != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109750), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3InsertØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 || int32(_52_pOp.X0) != i32(59) || (_pTab.X16) != 0 {
- goto _141
- }
-
- _appendFlag = uint8(i32(1))
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(0 /* X0 */))) = uint8(i32(117))
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(4 /* X3 */))) = _iDataCur
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(8 /* X4 */))) = _regRowid
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_52_pOp)) + uintptr(12 /* X5 */))) = _regAutoinc
-_141:
-_136:
-_134:
- if _appendFlag != 0 {
- goto _142
- }
-
- if (_pTab.X16) != 0 {
- goto _143
- }
-
- _54_addr1 = _sqlite3VdbeAddOp1(tls, _v, i32(76), _regRowid)
- _sqlite3VdbeAddOp3(tls, _v, i32(117), _iDataCur, _regRowid, _regAutoinc)
- _sqlite3VdbeJumpHere(tls, _v, _54_addr1)
- goto _144
-
-_143:
- _54_addr1 = _sqlite3VdbeCurrentAddr(tls, _v)
- _sqlite3VdbeAddOp2(tls, _v, i32(75), _regRowid, _54_addr1+i32(2))
-_144:
- _sqlite3VdbeAddOp1(tls, _v, i32(17), _regRowid)
-_142:
- goto _145
-
-_132:
- if (_pTab.X16) == 0 && _withoutRowid == 0 {
- goto _147
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(59), i32(0), _regRowid)
- goto _148
-
-_147:
- _sqlite3VdbeAddOp3(tls, _v, i32(117), _iDataCur, _regRowid, _regAutoinc)
- _appendFlag = uint8(i32(1))
-_148:
-_145:
- _autoIncStep(tls, _pParse, _regAutoinc, _regRowid)
- _nHidden = i32(0)
- _i = i32(0)
-_149:
- if _i >= int32(_pTab.X11) {
- goto _152
- }
-
- _59_iRegStore = (_regRowid + i32(1)) + _i
- if _i != int32(_pTab.X10) {
- goto _153
- }
-
- _sqlite3VdbeAddOp1(tls, _v, i32(60), _59_iRegStore)
- goto _150
-
-_153:
- if _pColumn != nil {
- goto _154
- }
-
- if (int32((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X6) & i32(2)) == i32(0) {
- goto _155
- }
-
- _j = i32(-1)
- _nHidden += 1
- goto _156
-
-_155:
- _j = _i - _nHidden
-_156:
- goto _157
-
-_154:
- _j = i32(0)
-_158:
- if _j >= (_pColumn.X1) {
- goto _161
- }
-
- if ((*TIdList_item)(unsafe.Pointer(uintptr(_pColumn.X0) + 8*uintptr(_j))).X1) != _i {
- goto _162
- }
-
- goto _161
-
-_162:
- _j += 1
- goto _158
-
-_161:
-_157:
- if _j >= i32(0) && _nColumn != i32(0) && (_pColumn == nil || _j < (_pColumn.X1)) {
- goto _166
- }
-
- _sqlite3ExprCodeFactorable(tls, _pParse, (*XExpr)((*XColumn)(unsafe.Pointer(uintptr(_pTab.X1)+16*uintptr(_i))).X1), _59_iRegStore)
- goto _167
-
-_166:
- if _useTempTable == 0 {
- goto _168
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(99), _srcTab, _j, _59_iRegStore)
- goto _169
-
-_168:
- if _pSelect == nil {
- goto _170
- }
-
- if _regFromSelect == _regData {
- goto _171
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(65), _regFromSelect+_j, _59_iRegStore)
-_171:
- goto _172
-
-_170:
- _sqlite3ExprCode(tls, _pParse, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */)))))+20*uintptr(_j))).X0), _59_iRegStore)
-_172:
-_169:
-_167:
-_150:
- _i += 1
- goto _149
-
-_152:
- if (_pTab.X16) == 0 {
- goto _173
- }
-
- _71_pVTab = (*int8)(unsafe.Pointer(_sqlite3GetVTable(tls, _db, _pTab)))
- _sqlite3VtabMakeWritable(tls, _pParse, _pTab)
- _sqlite3VdbeAddOp4(tls, _v, i32(12), i32(1), int32(_pTab.X11)+i32(2), _regIns, _71_pVTab, i32(-8))
- _sqlite3VdbeChangeP5(tls, _v, uint16(func() int32 {
- if _onError == i32(10) {
- return i32(2)
- }
- return _onError
- }()))
- _sqlite3MayAbort(tls, _pParse)
- goto _176
-
-_173:
- _sqlite3GenerateConstraintChecks(tls, _pParse, _pTab, _aRegIdx, _iDataCur, _iIdxCur, _regIns, i32(0), uint8(bool2int(_ipkColumn >= i32(0))), uint8(_onError), _endOfLoop, &_72_isReplace, nil)
- _sqlite3FkCheck(tls, _pParse, _pTab, i32(0), _regIns, nil, i32(0))
- _72_bUseSeek = bool2int((_72_isReplace == i32(0)) || ((_pTrigger == nil) && ((((_db.X6) & i32(524288)) == i32(0)) || (_sqlite3FkReferences(tls, _pTab) == nil))))
- _sqlite3CompleteInsertion(tls, _pParse, _pTab, _iDataCur, _iIdxCur, _regIns, _aRegIdx, i32(0), int32(_appendFlag), _72_bUseSeek)
-_176:
-_130:
- if ((_db.X6) & i32(128)) == i32(0) {
- goto _180
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(73), _regRowCount, i32(1))
-_180:
- if _pTrigger == nil {
- goto _181
- }
-
- _sqlite3CodeRowTrigger(tls, _pParse, _pTrigger, i32(108), nil, i32(2), _pTab, (_regData-i32(2))-int32(_pTab.X11), _onError, _endOfLoop)
-_181:
- _sqlite3VdbeResolveLabel(tls, _v, _endOfLoop)
- if _useTempTable == 0 {
- goto _182
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _srcTab, _addrCont)
- _sqlite3VdbeJumpHere(tls, _v, _addrInsTop)
- _sqlite3VdbeAddOp1(tls, _v, i32(114), _srcTab)
- goto _183
-
-_182:
- if _pSelect == nil {
- goto _184
- }
-
- _sqlite3VdbeGoto(tls, _v, _addrCont)
- _sqlite3VdbeJumpHere(tls, _v, _addrInsTop)
-_184:
-_183:
-_insert_end:
- if int32(_pParse.X6) != i32(0) || (*XTable)(_pParse.X40) != nil {
- goto _186
- }
-
- _sqlite3AutoincrementEnd(tls, _pParse)
-_186:
- if ((_db.X6)&i32(128)) == 0 || (_pParse.X6) != 0 || (*XTable)(_pParse.X40) != nil {
- goto _189
- }
-
- _sqlite3VdbeAddOp2(tls, _v, i32(67), _regRowCount, i32(1))
- _sqlite3VdbeSetNumCols(tls, _v, i32(1))
- _sqlite3VdbeSetColName(tls, _v, i32(0), i32(0), str(123960), nil)
-_189:
-_insert_cleanup:
- _sqlite3SrcListDelete(tls, _db, _pTabList)
- _sqlite3ExprListDelete(tls, _db, _pList)
- _sqlite3SelectDelete(tls, _db, _pSelect)
- _sqlite3IdListDelete(tls, _db, _pColumn)
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_aRegIdx))
-}
-
-var _sqlite3InsertØ00__func__Ø000 [14]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3InsertØ00__func__Ø000[0], str(123976), 14)
-}
-
-func _xferOptimization(tls *crt.TLS, _pParse *XParse, _pDest *XTable, _pSelect *XSelect, _onError int32, _iDbDest int32) (r0 int32) { // sqlite3.c:110781:1
- var _db *Xsqlite3 // sqlite3.c:110788:11
- _ = _db
- var _pEList *XExprList // sqlite3.c:110789:12
- _ = _pEList
- var _pSrc *XTable // sqlite3.c:110790:9
- _ = _pSrc
- var _pSrcIdx *XIndex // sqlite3.c:110791:9
- _ = _pSrcIdx
- var _pDestIdx *XIndex // sqlite3.c:110791:19
- _ = _pDestIdx
- var _pItem *TSrcList_item // sqlite3.c:110792:23
- _ = _pItem
- var _i int32 // sqlite3.c:110793:7
- _ = _i
- var _iDbSrc int32 // sqlite3.c:110794:7
- _ = _iDbSrc
- var _iSrc int32 // sqlite3.c:110795:7
- _ = _iSrc
- var _iDest int32 // sqlite3.c:110795:13
- _ = _iDest
- var _addr1 int32 // sqlite3.c:110796:7
- _ = _addr1
- var _addr2 int32 // sqlite3.c:110796:14
- _ = _addr2
- var _emptyDestTest int32 // sqlite3.c:110797:7
- _ = _emptyDestTest
- var _emptySrcTest int32 // sqlite3.c:110798:7
- _ = _emptySrcTest
- var _v *TVdbe // sqlite3.c:110799:8
- _ = _v
- var _regAutoinc int32 // sqlite3.c:110800:7
- _ = _regAutoinc
- var _destHasUniqueIdx int32 // sqlite3.c:110801:7
- _ = _destHasUniqueIdx
- var _regData int32 // sqlite3.c:110802:7
- _ = _regData
- var _regRowid int32 // sqlite3.c:110802:16
- _ = _regRowid
- var _23_pDestCol *XColumn // sqlite3.c:110893:12
- _ = _23_pDestCol
- var _23_pSrcCol *XColumn // sqlite3.c:110894:12
- _ = _23_pSrcCol
- var _37_insFlags uint8 // sqlite3.c:110999:8
- _ = _37_insFlags
- var _44_idxInsFlags uint8 // sqlite3.c:111034:8
- _ = _44_idxInsFlags
- var _47_zColl *int8 // sqlite3.c:111064:20
- _ = _47_zColl
- _db = (*Xsqlite3)(_pParse.X0)
- _emptyDestTest = i32(0)
- _emptySrcTest = i32(0)
- _destHasUniqueIdx = i32(0)
- if _pSelect != nil {
- goto _0
- }
- return i32(0)
-
-_0:
- if (*XWith)(_pParse.X70) == nil && (*XWith)(_pSelect.X17) == nil {
- goto _2
- }
- return i32(0)
-
-_2:
- if _sqlite3TriggerList(tls, _pParse, _pDest) == nil {
- goto _3
- }
- return i32(0)
-
-_3:
- if (_pDest.X16) == 0 {
- goto _4
- }
- return i32(0)
-
-_4:
- if _onError != i32(10) {
- goto _5
- }
-
- if int32(_pDest.X10) < i32(0) {
- goto _6
- }
-
- _onError = int32(_pDest.X14)
-_6:
- if _onError != i32(10) {
- goto _7
- }
-
- _onError = i32(2)
-_7:
-_5:
- func() {
- if (*XSrcList)(_pSelect.X8) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110825), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(123992)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((*XSrcList)(_pSelect.X8).X0) == i32(1) {
- goto _10
- }
- return i32(0)
-
-_10:
- if (*XSelect)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pSelect.X8)+uintptr(8 /* X2 */)))))+68*uintptr(i32(0)))).X5) == nil {
- goto _11
- }
- return i32(0)
-
-_11:
- if (*XExpr)(_pSelect.X9) == nil {
- goto _12
- }
- return i32(0)
-
-_12:
- if (*XExprList)(_pSelect.X12) == nil {
- goto _13
- }
- return i32(0)
-
-_13:
- if (*XExprList)(_pSelect.X10) == nil {
- goto _14
- }
- return i32(0)
-
-_14:
- if (*XExpr)(_pSelect.X15) == nil {
- goto _15
- }
- return i32(0)
-
-_15:
- func() {
- if (*XExpr)(_pSelect.X16) != nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110846), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(124008)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (*XSelect)(_pSelect.X13) == nil {
- goto _18
- }
- return i32(0)
-
-_18:
- if ((_pSelect.X3) & uint32(i32(1))) == 0 {
- goto _19
- }
- return i32(0)
-
-_19:
- _pEList = (*XExprList)(_pSelect.X0)
- func() {
- if _pEList == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110854), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(46300)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (_pEList.X0) == i32(1) {
- goto _22
- }
- return i32(0)
-
-_22:
- func() {
- if (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110858), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(124028)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32((*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pEList))+uintptr(8 /* X2 */)))))+20*uintptr(i32(0)))).X0).X0) == i32(161) {
- goto _25
- }
- return i32(0)
-
-_25:
- _pItem = (*TSrcList_item)(unsafe.Pointer((*[1]TSrcList_item)(unsafe.Pointer(uintptr(_pSelect.X8) + uintptr(8 /* X2 */)))))
- _pSrc = _sqlite3LocateTableItem(tls, _pParse, uint32(i32(0)), _pItem)
- if _pSrc != nil {
- goto _26
- }
- return i32(0)
-
-_26:
- if _pSrc != _pDest {
- goto _27
- }
- return i32(0)
-
-_27:
- if (((_pDest.X9) & uint32(i32(32))) == uint32(i32(0))) == (((_pSrc.X9) & uint32(i32(32))) == uint32(i32(0))) {
- goto _28
- }
- return i32(0)
-
-_28:
- if (_pSrc.X16) == 0 {
- goto _29
- }
- return i32(0)
-
-_29:
- if (*XSelect)(_pSrc.X3) == nil {
- goto _30
- }
- return i32(0)
-
-_30:
- if int32(_pDest.X11) == int32(_pSrc.X11) {
- goto _31
- }
- return i32(0)
-
-_31:
- if int32(_pDest.X10) == int32(_pSrc.X10) {
- goto _32
- }
- return i32(0)
-
-_32:
- _i = i32(0)
-_33:
- if _i >= int32(_pDest.X11) {
- goto _36
- }
-
- _23_pDestCol = (*XColumn)(unsafe.Pointer(uintptr(_pDest.X1) + 16*uintptr(_i)))
- _23_pSrcCol = (*XColumn)(unsafe.Pointer(uintptr(_pSrc.X1) + 16*uintptr(_i)))
- if int32(_23_pDestCol.X4) == int32(_23_pSrcCol.X4) {
- goto _37
- }
- return i32(0)
-
-_37:
- if Xsqlite3_stricmp(tls, _23_pDestCol.X2, _23_pSrcCol.X2) == i32(0) {
- goto _38
- }
- return i32(0)
-
-_38:
- if (_23_pDestCol.X3) == 0 || (_23_pSrcCol.X3) != 0 {
- goto _40
- }
- return i32(0)
-
-_40:
- if _i <= i32(0) {
- goto _41
- }
-
- func() {
- if (*XExpr)(_23_pDestCol.X1) != nil && int32((*XExpr)(_23_pDestCol.X1).X0) != i32(162) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110913), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(124048)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XExpr)(_23_pSrcCol.X1) != nil && int32((*XExpr)(_23_pSrcCol.X1).X0) != i32(162) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110914), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(124100)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((*XExpr)(_23_pDestCol.X1) == nil) == ((*XExpr)(_23_pSrcCol.X1) == nil) && ((*XExpr)(_23_pDestCol.X1) == nil || crt.Xstrcmp(tls, *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_23_pDestCol.X1) + uintptr(8 /* X3 */))))), *(**int8)(unsafe.Pointer((*t25)(unsafe.Pointer(uintptr(_23_pSrcCol.X1) + uintptr(8 /* X3 */)))))) == i32(0)) {
- goto _50
- }
- return i32(0)
-
-_50:
-_41:
- _i += 1
- goto _33
-
-_36:
- _pDestIdx = (*XIndex)(_pDest.X2)
-_51:
- if _pDestIdx == nil {
- goto _54
- }
-
- if int32(_pDestIdx.X15) == i32(0) {
- goto _55
- }
-
- _destHasUniqueIdx = i32(1)
-_55:
- _pSrcIdx = (*XIndex)(_pSrc.X2)
-_56:
- if _pSrcIdx == nil {
- goto _59
- }
-
- if _xferCompatibleIndex(tls, _pDestIdx, _pSrcIdx) == 0 {
- goto _60
- }
-
- goto _59
-
-_60:
- _pSrcIdx = (*XIndex)(_pSrcIdx.X5)
- goto _56
-
-_59:
- if _pSrcIdx != nil {
- goto _61
- }
- return i32(0)
-
-_61:
- _pDestIdx = (*XIndex)(_pDestIdx.X5)
- goto _51
-
-_54:
- if (*XExprList)(_pDest.X6) == nil || _sqlite3ExprListCompare(tls, (*XExprList)(_pSrc.X6), (*XExprList)(_pDest.X6), i32(-1)) == 0 {
- goto _63
- }
- return i32(0)
-
-_63:
- if ((_db.X6)&i32(524288)) == i32(0) || (*XFKey)(_pDest.X4) == nil {
- goto _65
- }
- return i32(0)
-
-_65:
- if ((_db.X6) & i32(128)) == i32(0) {
- goto _66
- }
- return i32(0)
-
-_66:
- _iDbSrc = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_pSrc.X20))
- _v = _sqlite3GetVdbe(tls, _pParse)
- _sqlite3CodeVerifySchema(tls, _pParse, _iDbSrc)
- _iSrc = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _iDest = postInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(40 /* X17 */))), int32(1))
- _regAutoinc = _autoIncBegin(tls, _pParse, _iDbDest, _pDest)
- _regData = _sqlite3GetTempReg(tls, _pParse)
- _regRowid = _sqlite3GetTempReg(tls, _pParse)
- _sqlite3OpenTable(tls, _pParse, _iDest, _iDbDest, _pDest, i32(107))
- func() {
- if ((_pDest.X9)&uint32(i32(32))) != uint32(i32(0)) && _destHasUniqueIdx == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110971), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(124152)))
- crt.X__builtin_abort(tls)
- }
- }()
- if ((_db.X6)&i32(268435456)) != i32(0) || (int32(_pDest.X10) >= i32(0) || (*XIndex)(_pDest.X2) == nil) && _destHasUniqueIdx == 0 && (_onError == i32(2) || _onError == i32(1)) {
- goto _75
- }
-
- _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iDest, i32(0))
- _emptyDestTest = _sqlite3VdbeAddOp0(tls, _v, i32(13))
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
-_75:
- if ((_pSrc.X9) & uint32(i32(32))) != uint32(i32(0)) {
- goto _76
- }
-
- _sqlite3OpenTable(tls, _pParse, _iSrc, _iDbSrc, _pSrc, i32(106))
- _emptySrcTest = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iSrc, i32(0))
- if int32(_pDest.X10) < i32(0) {
- goto _77
- }
-
- _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(125), _iSrc, _regRowid)
- _addr2 = _sqlite3VdbeAddOp3(tls, _v, i32(32), _iDest, i32(0), _regRowid)
- _sqlite3RowidConstraint(tls, _pParse, _onError, _pDest)
- _sqlite3VdbeJumpHere(tls, _v, _addr2)
- _autoIncStep(tls, _pParse, _regAutoinc, _regRowid)
- goto _78
-
-_77:
- if (*XIndex)(_pDest.X2) != nil {
- goto _79
- }
-
- _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(117), _iDest, _regRowid)
- goto _80
-
-_79:
- _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(125), _iSrc, _regRowid)
- func() {
- if ((_pDest.X9) & uint32(i32(8))) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(111013), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(124188)))
- crt.X__builtin_abort(tls)
- }
- }()
-_80:
-_78:
- _sqlite3VdbeAddOp3(tls, _v, i32(124), _iSrc, _regData, i32(1))
- if ((_db.X6) & i32(268435456)) == 0 {
- goto _83
- }
-
- _sqlite3VdbeAddOp3(tls, _v, i32(33), _iDest, i32(0), i32(-1))
- _37_insFlags = uint8(i32(57))
- goto _84
-
-_83:
- _37_insFlags = uint8(i32(41))
-_84:
- _sqlite3VdbeAddOp4(tls, _v, i32(118), _iDest, _regData, _regRowid, (*int8)(unsafe.Pointer(_pDest)), i32(-15))
- _sqlite3VdbeChangeP5(tls, _v, uint16(_37_insFlags))
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _iSrc, _addr1)
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _iSrc, i32(0))
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _iDest, i32(0))
- goto _85
-
-_76:
- _sqlite3TableLock(tls, _pParse, _iDbDest, _pDest.X7, uint8(i32(1)), _pDest.X0)
- _sqlite3TableLock(tls, _pParse, _iDbSrc, _pSrc.X7, uint8(i32(0)), _pSrc.X0)
-_85:
- _pDestIdx = (*XIndex)(_pDest.X2)
-_86:
- if _pDestIdx == nil {
- goto _89
- }
-
- _44_idxInsFlags = uint8(i32(0))
- _pSrcIdx = (*XIndex)(_pSrc.X2)
-_90:
- if func() int32 {
- if _pSrcIdx != nil {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(111035), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _95
- }
-
- if _xferCompatibleIndex(tls, _pDestIdx, _pSrcIdx) == 0 {
- goto _96
- }
-
- goto _95
-
-_96:
- _pSrcIdx = (*XIndex)(_pSrcIdx.X5)
- goto _90
-
-_95:
- func() {
- if _pSrcIdx == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(111038), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferOptimizationØ00__func__Ø000))), unsafe.Pointer(str(124228)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3VdbeAddOp3(tls, _v, i32(106), _iSrc, _pSrcIdx.X11, _iDbSrc)
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pSrcIdx)
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(_pSrcIdx.X0))
- _sqlite3VdbeAddOp3(tls, _v, i32(107), _iDest, _pDestIdx.X11, _iDbDest)
- _sqlite3VdbeSetP4KeyInfo(tls, _pParse, _pDestIdx)
- _sqlite3VdbeChangeP5(tls, _v, uint16(i32(1)))
- _sqlite3VdbeComment(tls, _v, str(24316), unsafe.Pointer(_pDestIdx.X0))
- _addr1 = _sqlite3VdbeAddOp2(tls, _v, i32(37), _iSrc, i32(0))
- _sqlite3VdbeAddOp3(tls, _v, i32(124), _iSrc, _regData, i32(1))
- if ((_db.X6) & i32(268435456)) == 0 {
- goto _99
- }
-
- _i = i32(0)
-_100:
- if _i >= int32(_pSrcIdx.X14) {
- goto _103
- }
-
- _47_zColl = *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrcIdx.X8)) + 4*uintptr(_i)))
- if Xsqlite3_stricmp(tls, (*int8)(unsafe.Pointer(&_sqlite3StrBINARY)), _47_zColl) == 0 {
- goto _104
- }
-
- goto _103
-
-_104:
- _i += 1
- goto _100
-
-_103:
- if _i != int32(_pSrcIdx.X14) {
- goto _105
- }
-
- _44_idxInsFlags = uint8(i32(16))
- _sqlite3VdbeAddOp3(tls, _v, i32(33), _iDest, i32(0), i32(-1))
-_105:
-_99:
- if ((_pSrc.X9)&uint32(i32(32))) == uint32(i32(0)) || int32((uint32(_pDestIdx.X16)<>uint(i32(30))) != i32(2) {
- goto _107
- }
-
- {
- p := &_44_idxInsFlags
- *p = uint8(int32(*p) | i32(1))
- sink2 = *p
- }
-_107:
- _sqlite3VdbeAddOp2(tls, _v, i32(128), _iDest, _regData)
- _sqlite3VdbeChangeP5(tls, _v, uint16(int32(_44_idxInsFlags)|i32(8)))
- _sqlite3VdbeAddOp2(tls, _v, i32(7), _iSrc, _addr1+i32(1))
- _sqlite3VdbeJumpHere(tls, _v, _addr1)
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _iSrc, i32(0))
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _iDest, i32(0))
- _pDestIdx = (*XIndex)(_pDestIdx.X5)
- goto _86
-
-_89:
- if _emptySrcTest == 0 {
- goto _108
- }
-
- _sqlite3VdbeJumpHere(tls, _v, _emptySrcTest)
-_108:
- _sqlite3ReleaseTempReg(tls, _pParse, _regRowid)
- _sqlite3ReleaseTempReg(tls, _pParse, _regData)
- if _emptyDestTest == 0 {
- goto _109
- }
-
- _sqlite3AutoincrementEnd(tls, _pParse)
- _sqlite3VdbeAddOp2(tls, _v, i32(55), i32(0), i32(0))
- _sqlite3VdbeJumpHere(tls, _v, _emptyDestTest)
- _sqlite3VdbeAddOp2(tls, _v, i32(114), _iDest, i32(0))
- return i32(0)
-
-_109:
- return i32(1)
-}
-
-var _xferOptimizationØ00__func__Ø000 [17]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_xferOptimizationØ00__func__Ø000[0], str(124236), 17)
-}
-
-func _xferCompatibleIndex(tls *crt.TLS, _pDest *XIndex, _pSrc *XIndex) (r0 int32) { // sqlite3.c:110720:1
- var _i int32 // sqlite3.c:110721:7
- _ = _i
- func() {
- if _pDest == nil || _pSrc == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110722), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferCompatibleIndexØ00__func__Ø000))), unsafe.Pointer(str(124256)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XTable)(_pDest.X3) == (*XTable)(_pSrc.X3) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110723), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferCompatibleIndexØ00__func__Ø000))), unsafe.Pointer(str(124272)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_pDest.X13) == int32(_pSrc.X13) {
- goto _5
- }
- return i32(0)
-
-_5:
- if int32(_pDest.X15) == int32(_pSrc.X15) {
- goto _6
- }
- return i32(0)
-
-_6:
- _i = i32(0)
-_7:
- if _i >= int32(_pSrc.X13) {
- goto _10
- }
-
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X1)) + 2*uintptr(_i)))) == int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest.X1)) + 2*uintptr(_i)))) {
- goto _11
- }
- return i32(0)
-
-_11:
- if int32(*(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X1)) + 2*uintptr(_i)))) != i32(-2) {
- goto _12
- }
-
- func() {
- if (*XExprList)(_pSrc.X10) == nil || (*XExprList)(_pDest.X10) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(110735), unsafe.Pointer((*int8)(unsafe.Pointer(&_xferCompatibleIndexØ00__func__Ø000))), unsafe.Pointer(str(124300)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _sqlite3ExprCompare(tls, (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pSrc.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), (*XExpr)((*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr(_pDest.X10)+uintptr(8 /* X2 */)))))+20*uintptr(_i))).X0), i32(-1)) == i32(0) {
- goto _16
- }
- return i32(0)
-
-_16:
-_12:
- if int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X7)) + 1*uintptr(_i)))) == int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest.X7)) + 1*uintptr(_i)))) {
- goto _17
- }
- return i32(0)
-
-_17:
- if Xsqlite3_stricmp(tls, *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pSrc.X8)) + 4*uintptr(_i))), *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pDest.X8)) + 4*uintptr(_i)))) == i32(0) {
- goto _18
- }
- return i32(0)
-
-_18:
- _i += 1
- goto _7
-
-_10:
- if _sqlite3ExprCompare(tls, (*XExpr)(_pSrc.X9), (*XExpr)(_pDest.X9), i32(-1)) == 0 {
- goto _19
- }
- return i32(0)
-
-_19:
- return i32(1)
-}
-
-var _xferCompatibleIndexØ00__func__Ø000 [20]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_xferCompatibleIndexØ00__func__Ø000[0], str(124340), 20)
-}
-
-func _autoIncBegin(tls *crt.TLS, _pParse *XParse, _iDb int32, _pTab *XTable) (r0 int32) { // sqlite3.c:109057:1
- var _memId int32 // sqlite3.c:109062:7
- _ = _memId
- var _1_pToplevel *XParse // sqlite3.c:109066:11
- _ = _1_pToplevel
- var _1_pInfo *TAggInfo_func // sqlite3.c:109067:17
- _ = _1_pInfo
- _memId = i32(0)
- if ((_pTab.X9)&uint32(i32(8))) == uint32(i32(0)) || (((*Xsqlite3)(_pParse.X0).X6)&i32(268435456)) != i32(0) {
- goto _1
- }
-
- _1_pToplevel = func() *XParse {
- if (*XParse)(_pParse.X39) != nil {
- return (*XParse)(_pParse.X39)
- }
- return _pParse
- }()
- _1_pInfo = (*TAggInfo_func)(_1_pToplevel.X38)
-_4:
- if _1_pInfo == nil || (*XTable)(_1_pInfo.X1) == _pTab {
- goto _5
- }
-
- _1_pInfo = (*TAggInfo_func)(_1_pInfo.X0)
- goto _4
-
-_5:
- if _1_pInfo != nil {
- goto _7
- }
-
- _1_pInfo = (*TAggInfo_func)(_sqlite3DbMallocRawNN(tls, (*Xsqlite3)(_pParse.X0), uint64(u32(16))))
- if _1_pInfo != nil {
- goto _8
- }
- return i32(0)
-
-_8:
- *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(0 /* X0 */))))) = (*TAggInfo_func)(_1_pToplevel.X38)
- *(**TAggInfo_func)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel)) + uintptr(128 /* X38 */))))) = _1_pInfo
- *(**XTable)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(4 /* X1 */))))) = _pTab
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(8 /* X2 */))) = _iDb
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel)) + uintptr(44 /* X18 */))) += 1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pInfo)) + uintptr(12 /* X3 */))) = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel))+uintptr(44 /* X18 */))), 1)
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pToplevel)) + uintptr(44 /* X18 */))) += 1
-_7:
- _memId = _1_pInfo.X3
-_1:
- return _memId
-}
-
-func _autoIncStep(tls *crt.TLS, _pParse *XParse, _memId int32, _regRowid int32) { // sqlite3.c:109146:1
- if _memId <= i32(0) {
- goto _0
- }
-
- _sqlite3VdbeAddOp2(tls, (*TVdbe)(_pParse.X2), i32(148), _memId, _regRowid)
-_0:
-}
-
-func _readsTable(tls *crt.TLS, _p *XParse, _iDb int32, _pTab *XTable) (r0 int32) { // sqlite3.c:109000:1
- var _v *TVdbe // sqlite3.c:109001:8
- _ = _v
- var _i int32 // sqlite3.c:109002:7
- _ = _i
- var _iEnd int32 // sqlite3.c:109003:7
- _ = _iEnd
- var _pVTab *XVTable // sqlite3.c:109005:10
- _ = _pVTab
- var _1_pOp *XVdbeOp // sqlite3.c:109009:12
- _ = _1_pOp
- var _2_pIndex *XIndex // sqlite3.c:109012:13
- _ = _2_pIndex
- var _2_tnum int32 // sqlite3.c:109013:11
- _ = _2_tnum
- _v = _sqlite3GetVdbe(tls, _p)
- _iEnd = _sqlite3VdbeCurrentAddr(tls, _v)
- _pVTab = func() *XVTable {
- if (_pTab.X16) != 0 {
- return _sqlite3GetVTable(tls, (*Xsqlite3)(_p.X0), _pTab)
- }
- return nil
- }()
- _i = i32(1)
-_2:
- if _i >= _iEnd {
- goto _5
- }
-
- _1_pOp = _sqlite3VdbeGetOp(tls, _v, _i)
- func() {
- if _1_pOp == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109010), unsafe.Pointer((*int8)(unsafe.Pointer(&_readsTableØ00__func__Ø000))), unsafe.Pointer(str(114264)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(_1_pOp.X0) != i32(106) || (_1_pOp.X5) != _iDb {
- goto _9
- }
-
- _2_tnum = _1_pOp.X4
- if _2_tnum != (_pTab.X7) {
- goto _10
- }
- return i32(1)
-
-_10:
- _2_pIndex = (*XIndex)(_pTab.X2)
-_11:
- if _2_pIndex == nil {
- goto _14
- }
-
- if _2_tnum != (_2_pIndex.X11) {
- goto _15
- }
- return i32(1)
-
-_15:
- _2_pIndex = (*XIndex)(_2_pIndex.X5)
- goto _11
-
-_14:
-_9:
- if int32(_1_pOp.X0) != i32(158) || (*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */)))))) != _pVTab {
- goto _17
- }
-
- func() {
- if (*XVTable)(*(*unsafe.Pointer)(unsafe.Pointer((*t37)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pOp)) + uintptr(16 /* X6 */)))))) == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109025), unsafe.Pointer((*int8)(unsafe.Pointer(&_readsTableØ00__func__Ø000))), unsafe.Pointer(str(124360)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_1_pOp.X1) != i32(-8) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(109026), unsafe.Pointer((*int8)(unsafe.Pointer(&_readsTableØ00__func__Ø000))), unsafe.Pointer(str(73124)))
- crt.X__builtin_abort(tls)
- }
- }()
- return i32(1)
-
-_17:
- _i += 1
- goto _2
-
-_5:
- return i32(0)
-}
-
-var _readsTableØ00__func__Ø000 [11]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_readsTableØ00__func__Ø000[0], str(124380), 11)
-}
-
-func _sqlite3ExprCodeAndCache(tls *crt.TLS, _pParse *XParse, _pExpr *XExpr, _target int32) { // sqlite3.c:95110:1
- var _v *TVdbe // sqlite3.c:95111:8
- _ = _v
- var _iMem int32 // sqlite3.c:95112:7
- _ = _iMem
- _v = (*TVdbe)(_pParse.X2)
- func() {
- if _target <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95114), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeAndCacheØ00__func__Ø000))), unsafe.Pointer(str(103932)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if int32(_pExpr.X0) == i32(157) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(95115), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprCodeAndCacheØ00__func__Ø000))), unsafe.Pointer(str(124392)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3ExprCode(tls, _pParse, _pExpr, _target)
- _iMem = preInc1((*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pParse))+uintptr(44 /* X18 */))), 1)
- _sqlite3VdbeAddOp2(tls, _v, i32(64), _target, _iMem)
- _exprToRegister(tls, _pExpr, _iMem)
-}
-
-var _sqlite3ExprCodeAndCacheØ00__func__Ø000 [24]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprCodeAndCacheØ00__func__Ø000[0], str(124416), 24)
-}
-
-func _transferParseError(tls *crt.TLS, _pTo *XParse, _pFrom *XParse) { // sqlite3.c:123417:1
- func() {
- if (_pFrom.X1) != nil && (_pFrom.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123418), unsafe.Pointer((*int8)(unsafe.Pointer(&_transferParseErrorØ00__func__Ø000))), unsafe.Pointer(str(124440)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_pTo.X1) != nil && (_pTo.X16) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123419), unsafe.Pointer((*int8)(unsafe.Pointer(&_transferParseErrorØ00__func__Ø000))), unsafe.Pointer(str(124476)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (_pTo.X16) != i32(0) {
- goto _6
- }
-
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(4 /* X1 */))) = _pFrom.X1
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(36 /* X16 */))) = _pFrom.X16
- *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pTo)) + uintptr(12 /* X3 */))) = _pFrom.X3
- goto _7
-
-_6:
- _sqlite3DbFree(tls, (*Xsqlite3)(_pFrom.X0), (unsafe.Pointer)(_pFrom.X1))
-_7:
-}
-
-var _transferParseErrorØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_transferParseErrorØ00__func__Ø000[0], str(124508), 19)
-}
-
-func _sqlite3VdbeTakeOpArray(tls *crt.TLS, _p *TVdbe, _pnOp *int32, _pnMaxArg *int32) (r0 *XVdbeOp) { // sqlite3.c:72106:1
- var _aOp *XVdbeOp // sqlite3.c:72107:10
- _ = _aOp
- _aOp = (*XVdbeOp)(_p.X17)
- func() {
- if _aOp == nil || ((*Xsqlite3)(_p.X0).X17) != 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72108), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeTakeOpArrayØ00__func__Ø000))), unsafe.Pointer(str(124528)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_p.X33) != uint32(i32(0)) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(72111), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3VdbeTakeOpArrayØ00__func__Ø000))), unsafe.Pointer(str(124556)))
- crt.X__builtin_abort(tls)
- }
- }()
- _resolveP2Values(tls, _p, _pnMaxArg)
- *_pnOp = _p.X27
- *(**XVdbeOp)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(84 /* X17 */))))) = nil
- return _aOp
-}
-
-var _sqlite3VdbeTakeOpArrayØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3VdbeTakeOpArrayØ00__func__Ø000[0], str(124584), 23)
-}
-
-func _sqlite3CodeDropTable(tls *crt.TLS, _pParse *XParse, _pTab *XTable, _iDb int32, _isView int32) { // sqlite3.c:102133:1
- var _v *TVdbe // sqlite3.c:102134:8
- _ = _v
- var _db *Xsqlite3 // sqlite3.c:102135:11
- _ = _db
- var _pTrigger *XTrigger // sqlite3.c:102136:11
- _ = _pTrigger
- var _pDb *XDb // sqlite3.c:102137:6
- _ = _pDb
- _db = (*Xsqlite3)(_pParse.X0)
- _pDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb)))
- _v = _sqlite3GetVdbe(tls, _pParse)
- func() {
- if _v == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102140), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeDropTableØ00__func__Ø000))), unsafe.Pointer(str(43120)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3BeginWriteOperation(tls, _pParse, i32(1), _iDb)
- if (_pTab.X16) == 0 {
- goto _2
- }
-
- _sqlite3VdbeAddOp0(tls, _v, i32(155))
-_2:
- _pTrigger = _sqlite3TriggerList(tls, _pParse, _pTab)
-_3:
- if _pTrigger == nil {
- goto _4
- }
-
- func() {
- if (*XSchema)(_pTrigger.X6) != (*XSchema)(_pTab.X20) && (*XSchema)(_pTrigger.X6) != (*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(i32(1)))).X4) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102155), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CodeDropTableØ00__func__Ø000))), unsafe.Pointer(str(124608)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3DropTriggerPtr(tls, _pParse, _pTrigger)
- _pTrigger = (*XTrigger)(_pTrigger.X9)
- goto _3
-
-_4:
- if ((_pTab.X9) & uint32(i32(8))) == 0 {
- goto _8
- }
-
- _sqlite3NestedParse(tls, _pParse, str(124684), unsafe.Pointer(_pDb.X0), unsafe.Pointer(_pTab.X0))
-_8:
- _sqlite3NestedParse(tls, _pParse, str(124732), unsafe.Pointer(_pDb.X0), unsafe.Pointer(str(51616)), unsafe.Pointer(_pTab.X0))
- if _isView != 0 || (_pTab.X16) != 0 {
- goto _10
- }
-
- _destroyTable(tls, _pParse, _pTab)
-_10:
- if (_pTab.X16) == 0 {
- goto _11
- }
-
- _sqlite3VdbeAddOp4(tls, _v, i32(157), _iDb, i32(0), i32(0), _pTab.X0, i32(0))
-_11:
- _sqlite3VdbeAddOp4(tls, _v, i32(141), _iDb, i32(0), i32(0), _pTab.X0, i32(0))
- _sqlite3ChangeCookie(tls, _pParse, _iDb)
- _sqliteViewResetAll(tls, _db, _iDb)
-}
-
-var _sqlite3CodeDropTableØ00__func__Ø000 [21]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CodeDropTableØ00__func__Ø000[0], str(124788), 21)
-}
-
-func _sqlite3DropTriggerPtr(tls *crt.TLS, _pParse *XParse, _pTrigger *XTrigger) { // sqlite3.c:123176:1
- var _pTable *XTable // sqlite3.c:123177:11
- _ = _pTable
- var _v *TVdbe // sqlite3.c:123178:8
- _ = _v
- var _db *Xsqlite3 // sqlite3.c:123179:11
- _ = _db
- var _iDb int32 // sqlite3.c:123180:7
- _ = _iDb
- var _1_code int32 // sqlite3.c:123189:9
- _ = _1_code
- var _1_zDb *int8 // sqlite3.c:123190:16
- _ = _1_zDb
- var _1_zTab *int8 // sqlite3.c:123191:16
- _ = _1_zTab
- _db = (*Xsqlite3)(_pParse.X0)
- _iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTrigger.X6))
- func() {
- if _iDb < i32(0) || _iDb >= (_db.X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123183), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(21312)))
- crt.X__builtin_abort(tls)
- }
- }()
- _pTable = _tableOfTrigger(tls, _pTrigger)
- func() {
- if _pTable == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123185), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(98124)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (*XSchema)(_pTable.X20) != (*XSchema)(_pTrigger.X6) && _iDb != i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123186), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(124812)))
- crt.X__builtin_abort(tls)
- }
- }()
- _1_code = i32(16)
- _1_zDb = (*XDb)(unsafe.Pointer(uintptr(_db.X4) + 16*uintptr(_iDb))).X0
- _1_zTab = func() *int8 {
- if i32(1) != 0 && (_iDb == i32(1)) {
- return str(51596)
- }
- return str(51616)
- }()
- if _iDb != i32(1) {
- goto _11
- }
-
- _1_code = i32(14)
-_11:
- if _sqlite3AuthCheck(tls, _pParse, _1_code, _pTrigger.X0, _pTable.X0, _1_zDb) == 0 && _sqlite3AuthCheck(tls, _pParse, i32(9), _1_zTab, nil, _1_zDb) == 0 {
- goto _13
- }
- return
-
-_13:
- func() {
- if _pTable == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(123202), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3DropTriggerPtrØ00__func__Ø000))), unsafe.Pointer(str(21544)))
- crt.X__builtin_abort(tls)
- }
- }()
- if store36(&_v, _sqlite3GetVdbe(tls, _pParse)) == nil {
- goto _16
- }
-
- _sqlite3NestedParse(tls, _pParse, str(124860), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(51616)), unsafe.Pointer(_pTrigger.X0))
- _sqlite3ChangeCookie(tls, _pParse, _iDb)
- _sqlite3VdbeAddOp4(tls, _v, i32(143), _iDb, i32(0), i32(0), _pTrigger.X0, i32(0))
-_16:
-}
-
-var _sqlite3DropTriggerPtrØ00__func__Ø000 [22]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3DropTriggerPtrØ00__func__Ø000[0], str(124912), 22)
-}
-
-func _destroyTable(tls *crt.TLS, _pParse *XParse, _pTab *XTable) { // sqlite3.c:102052:1
- var _iTab int32 // sqlite3.c:102077:7
- _ = _iTab
- var _iDestroyed int32 // sqlite3.c:102078:7
- _ = _iDestroyed
- var _1_pIdx *XIndex // sqlite3.c:102081:11
- _ = _1_pIdx
- var _1_iLargest int32 // sqlite3.c:102082:9
- _ = _1_iLargest
- var _3_iIdx int32 // sqlite3.c:102088:11
- _ = _3_iIdx
- var _6_iDb int32 // sqlite3.c:102097:11
- _ = _6_iDb
- _iTab = _pTab.X7
- _iDestroyed = i32(0)
-_0:
- _1_iLargest = i32(0)
- if _iDestroyed != i32(0) && _iTab >= _iDestroyed {
- goto _3
- }
-
- _1_iLargest = _iTab
-_3:
- _1_pIdx = (*XIndex)(_pTab.X2)
-_4:
- if _1_pIdx == nil {
- goto _7
- }
-
- _3_iIdx = _1_pIdx.X11
- func() {
- if (*XSchema)(_1_pIdx.X6) != (*XSchema)(_pTab.X20) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102089), unsafe.Pointer((*int8)(unsafe.Pointer(&_destroyTableØ00__func__Ø000))), unsafe.Pointer(str(120384)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _iDestroyed != i32(0) && _3_iIdx >= _iDestroyed || _3_iIdx <= _1_iLargest {
- goto _12
- }
-
- _1_iLargest = _3_iIdx
-_12:
- _1_pIdx = (*XIndex)(_1_pIdx.X5)
- goto _4
-
-_7:
- if _1_iLargest != i32(0) {
- goto _13
- }
- return
-
-_13:
- _6_iDb = _sqlite3SchemaToIndex(tls, (*Xsqlite3)(_pParse.X0), (*XSchema)(_pTab.X20))
- func() {
- if _6_iDb < i32(0) || _6_iDb >= ((*Xsqlite3)(_pParse.X0).X5) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102098), unsafe.Pointer((*int8)(unsafe.Pointer(&_destroyTableØ00__func__Ø000))), unsafe.Pointer(str(106824)))
- crt.X__builtin_abort(tls)
- }
- }()
- _destroyRootPage(tls, _pParse, _1_iLargest, _6_iDb)
- _iDestroyed = _1_iLargest
- goto _0
-}
-
-var _destroyTableØ00__func__Ø000 [13]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_destroyTableØ00__func__Ø000[0], str(124936), 13)
-}
-
-func _destroyRootPage(tls *crt.TLS, _pParse *XParse, _iTable int32, _iDb int32) { // sqlite3.c:102023:1
- var _v *TVdbe // sqlite3.c:102024:8
- _ = _v
- var _r1 int32 // sqlite3.c:102025:7
- _ = _r1
- _v = _sqlite3GetVdbe(tls, _pParse)
- _r1 = _sqlite3GetTempReg(tls, _pParse)
- func() {
- if _iTable <= i32(1) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(102026), unsafe.Pointer((*int8)(unsafe.Pointer(&_destroyRootPageØ00__func__Ø000))), unsafe.Pointer(str(124952)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3VdbeAddOp3(tls, _v, i32(133), _iTable, _r1, _iDb)
- _sqlite3MayAbort(tls, _pParse)
- _sqlite3NestedParse(tls, _pParse, str(124964), unsafe.Pointer((*XDb)(unsafe.Pointer(uintptr((*Xsqlite3)(_pParse.X0).X4)+16*uintptr(_iDb))).X0), unsafe.Pointer(str(51616)), _iTable, _r1, _r1)
- _sqlite3ReleaseTempReg(tls, _pParse, _r1)
-}
-
-var _destroyRootPageØ00__func__Ø000 [16]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_destroyRootPageØ00__func__Ø000[0], str(125020), 16)
-}
-
-func _sqliteViewResetAll(tls *crt.TLS, _db *Xsqlite3, _idx int32) { // sqlite3.c:101957:1
- var _i *XHashElem // sqlite3.c:101958:12
- _ = _i
- var _1_pTab *XTable // sqlite3.c:101962:11
- _ = _1_pTab
- func() {
- if _sqlite3SchemaMutexHeld(tls, _db, _idx, nil) == 0 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101959), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqliteViewResetAllØ00__func__Ø000))), unsafe.Pointer(str(125036)))
- crt.X__builtin_abort(tls)
- }
- }()
- if (int32((*XSchema)((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_idx))).X4).X9) & i32(2)) == i32(2) {
- goto _2
- }
- return
-
-_2:
- _i = (*XHashElem)((*XHash)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_idx))).X4) + uintptr(8 /* X2 */))).X2)
-_3:
- if _i == nil {
- goto _6
- }
-
- _1_pTab = (*XTable)(_i.X2)
- if (*XSelect)(_1_pTab.X3) == nil {
- goto _7
- }
-
- _sqlite3DeleteColumnNames(tls, _db, _1_pTab)
- *(**XColumn)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(4 /* X1 */))))) = nil
- *(*int16)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pTab)) + uintptr(42 /* X11 */))) = int16(i32(0))
-_7:
- _i = (*XHashElem)(_i.X0)
- goto _3
-
-_6:
- {
- p := (*uint16)(unsafe.Pointer(uintptr((*XDb)(unsafe.Pointer(uintptr(_db.X4)+16*uintptr(_idx))).X4) + uintptr(78 /* X9 */)))
- *p = uint16(int32(*p) & i32(-3))
- sink12 = *p
- }
-}
-
-var _sqliteViewResetAllØ00__func__Ø000 [19]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqliteViewResetAllØ00__func__Ø000[0], str(125072), 19)
-}
-
-func _sqlite3CreateView(tls *crt.TLS, _pParse *XParse, _pBegin *XToken, _pName1 *XToken, _pName2 *XToken, _pCNames *XExprList, _pSelect *XSelect, _isTemp int32, _noErr int32) { // sqlite3.c:101771:1
- var _p *XTable // sqlite3.c:101781:9
- _ = _p
- var _n int32 // sqlite3.c:101782:7
- _ = _n
- var _z *int8 // sqlite3.c:101783:14
- _ = _z
- var _sEnd XToken // sqlite3.c:101784:9
- _ = _sEnd
- var _sFix XDbFixer // sqlite3.c:101785:11
- _ = _sFix
- var _pName *XToken // sqlite3.c:101786:9
- _ = _pName
- var _iDb int32 // sqlite3.c:101787:7
- _ = _iDb
- var _db *Xsqlite3 // sqlite3.c:101788:11
- _ = _db
- _pName = nil
- _db = (*Xsqlite3)(_pParse.X0)
- if int32(_pParse.X52) <= i32(0) {
- goto _0
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(125092))
- goto _create_view_fail
-
-_0:
- _sqlite3StartTable(tls, _pParse, _pName1, _pName2, _isTemp, i32(1), i32(0), _noErr)
- _p = (*XTable)(_pParse.X63)
- if _p != nil && (_pParse.X16) == 0 {
- goto _2
- }
-
- goto _create_view_fail
-
-_2:
- _sqlite3TwoPartName(tls, _pParse, _pName1, _pName2, &_pName)
- _iDb = _sqlite3SchemaToIndex(tls, _db, (*XSchema)(_p.X20))
- _sqlite3FixInit(tls, &_sFix, _pParse, _iDb, str(116876), _pName)
- if _sqlite3FixSelect(tls, &_sFix, _pSelect) == 0 {
- goto _3
- }
-
- goto _create_view_fail
-
-_3:
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(12 /* X3 */))))) = _sqlite3SelectDup(tls, _db, _pSelect, i32(1))
- *(**XExprList)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p)) + uintptr(24 /* X6 */))))) = _sqlite3ExprListDup(tls, _db, _pCNames, i32(1))
- if (_db.X17) == 0 {
- goto _4
- }
-
- goto _create_view_fail
-
-_4:
- _sEnd = _pParse.X51
- func() {
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sEnd.X0)) + 1*uintptr(i32(0))))) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101815), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateViewØ00__func__Ø000))), unsafe.Pointer(str(125128)))
- crt.X__builtin_abort(tls)
- }
- }()
- if int32(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_sEnd.X0)) + 1*uintptr(i32(0))))) == i32(59) {
- goto _7
- }
-
- {
- p := (**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(0 /* X0 */)))
- *p = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(*p)) + 1*uintptr(_sEnd.X1)))
- sink0 = *p
- }
-_7:
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(4 /* X1 */))) = uint32(i32(0))
- _n = int32((uintptr(unsafe.Pointer(_sEnd.X0)) - uintptr(unsafe.Pointer(_pBegin.X0))) / 1)
- func() {
- if _n <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(101821), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3CreateViewØ00__func__Ø000))), unsafe.Pointer(str(1368)))
- crt.X__builtin_abort(tls)
- }
- }()
- _z = _pBegin.X0
-_10:
- if (int32(*(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sqlite3CtypeMap)) + 1*uintptr(uint8(*(*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))))))) & i32(1)) == 0 {
- goto _11
- }
-
- _n -= 1
- goto _10
-
-_11:
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(0 /* X0 */))) = (*int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_z)) + 1*uintptr(_n-i32(1))))
- *(*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(&_sEnd)) + uintptr(4 /* X1 */))) = uint32(i32(1))
- _sqlite3EndTable(tls, _pParse, nil, &_sEnd, uint8(i32(0)), nil)
-_create_view_fail:
- _sqlite3SelectDelete(tls, _db, _pSelect)
- _sqlite3ExprListDelete(tls, _db, _pCNames)
-}
-
-var _sqlite3CreateViewØ00__func__Ø000 [18]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3CreateViewØ00__func__Ø000[0], str(125144), 18)
-}
-
-func _parserDoubleLinkSelect(tls *crt.TLS, _pParse *XParse, _p *XSelect) { // sqlite3.c:135517:3
- var _1_pNext *XSelect // sqlite3.c:135519:14
- _ = _1_pNext
- var _1_pLoop *XSelect // sqlite3.c:135519:26
- _ = _1_pLoop
- var _1_mxSelect int32 // sqlite3.c:135520:11
- _ = _1_mxSelect
- var _1_cnt int32 // sqlite3.c:135520:21
- _ = _1_cnt
- if (*XSelect)(_p.X13) == nil {
- goto _0
- }
-
- _1_pNext = nil
- _1_cnt = i32(0)
- _1_pLoop = _p
-_1:
- if _1_pLoop == nil {
- goto _4
- }
-
- *(**XSelect)(unsafe.Pointer((*unsafe.Pointer)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop)) + uintptr(64 /* X14 */))))) = _1_pNext
- {
- p := (*uint32)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pLoop)) + uintptr(8 /* X3 */)))
- *p = (*p) | uint32(i32(256))
- sink5 = *p
- }
- *func() *int32 {
- *func() **XSelect { _1_pNext = _1_pLoop; return &_1_pLoop }() = (*XSelect)(_1_pLoop.X13)
- return &_1_cnt
- }() += 1
- goto _1
-
-_4:
- if ((_p.X3)&uint32(i32(1024))) != uint32(i32(0)) || store1(&_1_mxSelect, *(*int32)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[12]int32)(unsafe.Pointer(uintptr(_pParse.X0)+uintptr(92 /* X31 */))))) + 4*uintptr(i32(4))))) <= i32(0) || _1_cnt <= _1_mxSelect {
- goto _7
- }
-
- _sqlite3ErrorMsg(tls, _pParse, str(125164))
-_7:
-_0:
-}
-
-var _yy_reduceØ00__func__Ø000 [10]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_yy_reduceØ00__func__Ø000[0], str(125200), 10)
-}
-
-func _sqlite3ExprListSetSpan(tls *crt.TLS, _pParse *XParse, _pList *XExprList, _pSpan *XExprSpan) { // sqlite3.c:92515:1
- var _db *Xsqlite3 // sqlite3.c:92520:11
- _ = _db
- var _1_pItem *TExprList_item // sqlite3.c:92523:26
- _ = _1_pItem
- _db = (*Xsqlite3)(_pParse.X0)
- func() {
- if _pList == nil && int32(_db.X17) == i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92521), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSpanØ00__func__Ø000))), unsafe.Pointer(str(125212)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _pList == nil {
- goto _3
- }
-
- _1_pItem = (*TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TExprList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_pList))+uintptr(8 /* X2 */))))) + 20*uintptr((_pList.X0)-i32(1))))
- func() {
- if (_pList.X0) <= i32(0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92524), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSpanØ00__func__Ø000))), unsafe.Pointer(str(20888)))
- crt.X__builtin_abort(tls)
- }
- }()
- func() {
- if (_db.X17) == 0 && (*XExpr)(_1_pItem.X0) != (*XExpr)(_pSpan.X0) {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(92525), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3ExprListSetSpanØ00__func__Ø000))), unsafe.Pointer(str(125244)))
- crt.X__builtin_abort(tls)
- }
- }()
- _sqlite3DbFree(tls, _db, (unsafe.Pointer)(_1_pItem.X2))
- *(**int8)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem)) + uintptr(8 /* X2 */))) = _sqlite3DbStrNDup(tls, _db, _pSpan.X1, uint64(int32((uintptr(unsafe.Pointer(_pSpan.X2))-uintptr(unsafe.Pointer(_pSpan.X1)))/1)))
-_3:
-}
-
-var _sqlite3ExprListSetSpanØ00__func__Ø000 [23]int8 // -
-
-func init() {
- crt.Xstrncpy(nil, &_sqlite3ExprListSetSpanØ00__func__Ø000[0], str(125292), 23)
-}
-
-func _sqlite3SrcListShiftJoinType(tls *crt.TLS, _p *XSrcList) { // sqlite3.c:103625:1
- var _1_i int32 // sqlite3.c:103627:9
- _ = _1_i
- if _p == nil {
- goto _0
- }
-
- _1_i = (_p.X0) - i32(1)
-_1:
- if _1_i <= i32(0) {
- goto _4
- }
-
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i)))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = (*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+68*uintptr(_1_i-i32(1)))))) + uintptr(36 /* X9 */))).X0
- _1_i -= 1
- goto _1
-
-_4:
- *(*uint8)(unsafe.Pointer(uintptr((unsafe.Pointer)((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)((*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */)))))+68*uintptr(i32(0))))))+uintptr(36 /* X9 */))))) + uintptr(0 /* X0 */))) = uint8(i32(0))
-_0:
-}
-
-func _sqlite3SrcListIndexedBy(tls *crt.TLS, _pParse *XParse, _p *XSrcList, _pIndexedBy *XToken) { // sqlite3.c:103575:1
- var _1_pItem *TSrcList_item // sqlite3.c:103578:25
- _ = _1_pItem
- func() {
- if _pIndexedBy == nil {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103576), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListIndexedByØ00__func__Ø000))), unsafe.Pointer(str(125316)))
- crt.X__builtin_abort(tls)
- }
- }()
- if _p == nil || func() int32 {
- if (_p.X0) > i32(0) {
- return i32(1)
- }
- return func() int32 {
- crt.X__builtin_fprintf(tls, Xstderr, str(40), unsafe.Pointer(str(76)), i32(103577), unsafe.Pointer((*int8)(unsafe.Pointer(&_sqlite3SrcListIndexedByØ00__func__Ø000))), unsafe.Pointer(str(3240)))
- crt.X__builtin_abort(tls)
- return i32(0)
- }()
- }() == 0 {
- goto _5
- }
-
- _1_pItem = (*TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)((*[1]TSrcList_item)(unsafe.Pointer(uintptr((unsafe.Pointer)(_p))+uintptr(8 /* X2 */))))) + 68*uintptr((_p.X0)-i32(1))))
- func() {
- if int32((uint32((*t26)(unsafe.Pointer(uintptr((unsafe.Pointer)(_1_pItem))+uintptr(36 /* X9 */))).X1)<