mirror of
https://github.com/glebarez/go-sqlite.git
synced 2025-10-04 15:32:46 +08:00

modified: generator.go modified: internal/bin/bin_linux_amd64.go modified: internal/mptest/mptest_linux_amd64.go modified: internal/threadtest1/threadtest1_linux_amd64.go modified: internal/threadtest2/threadtest2_linux_amd64.go modified: internal/threadtest3/threadtest3_linux_amd64.go modified: internal/threadtest4/threadtest4_linux_amd64.go
6064 lines
174 KiB
Go
6064 lines
174 KiB
Go
// Code generated by ccgo. DO NOT EDIT.
|
|
|
|
// threadtest3
|
|
// /*
|
|
// ** 2010-07-22
|
|
// **
|
|
// ** The author disclaims copyright to this source code. In place of
|
|
// ** a legal notice, here is a blessing:
|
|
// **
|
|
// ** May you do good and not evil.
|
|
// ** May you find forgiveness for yourself and forgive others.
|
|
// ** May you share freely, never taking more than you give.
|
|
// **
|
|
// *************************************************************************
|
|
// **
|
|
// ** The code in this file runs a few multi-threaded test cases using the
|
|
// ** SQLite library. It can be compiled to an executable on unix using the
|
|
// ** following command:
|
|
// **
|
|
// ** gcc -O2 threadtest3.c sqlite3.c -ldl -lpthread -lm
|
|
// **
|
|
// ** Even though threadtest3.c is the only C source code file mentioned on
|
|
// ** the compiler command-line, #include macros are used to pull in additional
|
|
// ** C code files named "tt3_*.c".
|
|
// **
|
|
// ** After compiling, run this program with an optional argument telling
|
|
// ** which test to run. All tests are run if no argument is given. The
|
|
// ** argument can be a glob pattern to match multiple tests. Examples:
|
|
// **
|
|
// ** ./a.out -- Run all tests
|
|
// ** ./a.out walthread3 -- Run the "walthread3" test
|
|
// ** ./a.out 'wal*' -- Run all of the wal* tests
|
|
// ** ./a.out --help -- List all available tests
|
|
// **
|
|
// ** The exit status is non-zero if any test fails.
|
|
// */
|
|
|
|
// /*
|
|
// ** The "Set Error Line" macro.
|
|
// */
|
|
package main
|
|
|
|
import (
|
|
"math"
|
|
"os"
|
|
"unsafe"
|
|
|
|
"github.com/cznic/crt"
|
|
"github.com/cznic/sqlite/internal/bin"
|
|
)
|
|
|
|
var argv []*int8
|
|
|
|
func main() {
|
|
for _, v := range os.Args {
|
|
argv = append(argv, (*int8)(crt.CString(v)))
|
|
}
|
|
argv = append(argv, nil)
|
|
X_start(crt.NewTLS(), int32(len(os.Args)), &argv[0])
|
|
}
|
|
|
|
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
|
|
|
|
func init() {
|
|
Xstdin = unsafe.Pointer(&X__stdfiles)
|
|
}
|
|
|
|
var X__stdfiles [3]unsafe.Pointer
|
|
|
|
var Xstdout unsafe.Pointer
|
|
|
|
func init() {
|
|
Xstdout = unsafe.Pointer(uintptr(unsafe.Pointer(&X__stdfiles)) + 8)
|
|
}
|
|
|
|
var Xstderr unsafe.Pointer
|
|
|
|
func init() {
|
|
Xstderr = unsafe.Pointer(uintptr(unsafe.Pointer(&X__stdfiles)) + 16)
|
|
}
|
|
|
|
func Xmain(tls *crt.TLS, _argc int32, _argv **int8) (r0 int32) {
|
|
var _i, _iArg, _nTestfound, _4_rc int32
|
|
var _2_zArg, _9_z *int8
|
|
var _aTest [14]TThreadTest
|
|
r0 = int32(0)
|
|
_aTest = [14]TThreadTest{}
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), 0).XxTest = _walthread1
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), 0).XzTest = str(0)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), 0).XnMs = int32(20000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(1)).XxTest = _walthread2
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(1)).XzTest = str(11)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(1)).XnMs = int32(20000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(2)).XxTest = _walthread3
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(2)).XzTest = str(22)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(2)).XnMs = int32(20000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(3)).XxTest = _walthread4
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(3)).XzTest = str(33)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(3)).XnMs = int32(20000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(4)).XxTest = _walthread5
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(4)).XzTest = str(44)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(4)).XnMs = int32(1000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(5)).XxTest = _cgt_pager_1
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(5)).XzTest = str(55)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(5)).XnMs = int32(0)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(6)).XxTest = _dynamic_triggers
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(6)).XzTest = str(67)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(6)).XnMs = int32(20000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(7)).XxTest = _checkpoint_starvation_1
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(7)).XzTest = str(84)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(7)).XnMs = int32(10000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(8)).XxTest = _checkpoint_starvation_2
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(8)).XzTest = str(108)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(8)).XnMs = int32(10000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(9)).XxTest = _create_drop_index_1
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(9)).XzTest = str(132)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(9)).XnMs = int32(10000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(10)).XxTest = _lookaside1
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(10)).XzTest = str(152)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(10)).XnMs = int32(10000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(11)).XxTest = _vacuum1
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(11)).XzTest = str(163)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(11)).XnMs = int32(10000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(12)).XxTest = _stress1
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(12)).XzTest = str(171)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(12)).XnMs = int32(10000)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(13)).XxTest = _stress2
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(13)).XzTest = str(179)
|
|
elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(13)).XnMs = int32(60000)
|
|
_nTestfound = int32(0)
|
|
bin.Xsqlite3_config(tls, int32(2))
|
|
if _argc < int32(2) {
|
|
_argc = int32(2)
|
|
_argv = (**int8)(unsafe.Pointer(&_mainØ00substArgvØ001))
|
|
}
|
|
_iArg = int32(1)
|
|
_1:
|
|
if _iArg >= _argc {
|
|
goto _4
|
|
}
|
|
_2_zArg = *elem1(_argv, uintptr(_iArg))
|
|
if int32(*elem2(_2_zArg, 0)) != int32(45) {
|
|
goto _5
|
|
}
|
|
if bin.Xsqlite3_stricmp(tls, _2_zArg, str(187)) != int32(0) {
|
|
goto _6
|
|
}
|
|
_4_rc = Xsqlite3_multiplex_initialize(tls, nil, int32(1))
|
|
if _4_rc != int32(0) {
|
|
crt.Xfprintf(tls, (*crt.XFILE)(Xstderr), str(200), _4_rc)
|
|
return int32(253)
|
|
}
|
|
goto _8
|
|
_6:
|
|
goto _usage
|
|
_8:
|
|
goto _2
|
|
_5:
|
|
_i = int32(0)
|
|
_9:
|
|
if uint64(_i) >= uint64(14) {
|
|
goto _12
|
|
}
|
|
if bin.Xsqlite3_strglob(tls, _2_zArg, elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(_i)).XzTest) == int32(0) {
|
|
goto _12
|
|
}
|
|
_i += 1
|
|
goto _9
|
|
_12:
|
|
if uint64(_i) >= uint64(14) {
|
|
goto _usage
|
|
}
|
|
_2:
|
|
_iArg += 1
|
|
goto _1
|
|
_4:
|
|
_iArg = int32(1)
|
|
_15:
|
|
if _iArg >= _argc {
|
|
goto _18
|
|
}
|
|
if int32(*elem2(*elem1(_argv, uintptr(_iArg)), 0)) == int32(45) {
|
|
goto _16
|
|
}
|
|
_i = int32(0)
|
|
_20:
|
|
if uint64(_i) >= uint64(14) {
|
|
goto _23
|
|
}
|
|
_9_z = elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(_i)).XzTest
|
|
if bin.Xsqlite3_strglob(tls, *elem1(_argv, uintptr(_iArg)), _9_z) == int32(0) {
|
|
crt.Xprintf(tls, str(240), unsafe.Pointer(_9_z), (elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(_i)).XnMs)/int32(1000))
|
|
crt.Xfflush(tls, (*crt.XFILE)(Xstdout))
|
|
(elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(_i)).XxTest)(tls, elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(_i)).XnMs)
|
|
_nTestfound += 1
|
|
}
|
|
_i += 1
|
|
goto _20
|
|
_23:
|
|
_16:
|
|
_iArg += 1
|
|
goto _15
|
|
_18:
|
|
if _nTestfound == int32(0) {
|
|
goto _usage
|
|
}
|
|
crt.Xprintf(tls, str(270), _nGlobalErr, _nTestfound)
|
|
return func() int32 {
|
|
if _nGlobalErr > int32(0) {
|
|
return int32(255)
|
|
}
|
|
return int32(0)
|
|
}()
|
|
|
|
_usage:
|
|
crt.Xprintf(tls, str(297), unsafe.Pointer(*elem1(_argv, 0)))
|
|
crt.Xprintf(tls, str(349))
|
|
_i = int32(0)
|
|
_28:
|
|
if uint64(_i) >= uint64(14) {
|
|
goto _31
|
|
}
|
|
crt.Xprintf(tls, str(371), unsafe.Pointer(elem0((*TThreadTest)(unsafe.Pointer(&_aTest)), uintptr(_i)).XzTest))
|
|
_i += 1
|
|
goto _28
|
|
_31:
|
|
return int32(254)
|
|
|
|
_ = _aTest
|
|
panic(0)
|
|
}
|
|
|
|
func _walthread1(tls *crt.TLS, _nMs int32) {
|
|
var _i int32
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(987)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(988)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(386))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(995)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(997)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
_i = int32(0)
|
|
_8:
|
|
if _i >= int32(10) {
|
|
goto _11
|
|
}
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(999)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread1_thread, nil)
|
|
_i += 1
|
|
goto _8
|
|
_11:
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1001)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread1_ckpt_thread, nil)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1002)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _opendb_x(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _zFile *int8, _bDelete int32) {
|
|
var _1_rc, _1_flags int32
|
|
if _pErr.Xrc != int32(0) {
|
|
goto _0
|
|
}
|
|
_1_flags = int32(70)
|
|
if _bDelete != 0 {
|
|
crt.Xunlink(tls, _zFile)
|
|
}
|
|
_1_rc = bin.Xsqlite3_open_v2(tls, _zFile, (**bin.Xsqlite3)(unsafe.Pointer(&_pDb.Xdb)), _1_flags, nil)
|
|
if _1_rc != 0 {
|
|
_sqlite_error(tls, _pErr, _pDb, str(562))
|
|
bin.Xsqlite3_close(tls, (*bin.Xsqlite3)(_pDb.Xdb))
|
|
_pDb.Xdb = nil
|
|
goto _3
|
|
}
|
|
bin.Xsqlite3_create_function(tls, (*bin.Xsqlite3)(_pDb.Xdb), str(567), int32(-1), int32(1), nil, nil, func() func(*crt.TLS, *bin.Xsqlite3_context, int32, **bin.XMem) {
|
|
v := _md5step
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_context, int32, **bin.XMem))(unsafe.Pointer(&v))
|
|
}(), func() func(*crt.TLS, *bin.Xsqlite3_context) {
|
|
v := _md5finalize
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_context))(unsafe.Pointer(&v))
|
|
}())
|
|
bin.Xsqlite3_busy_handler(tls, (*bin.Xsqlite3)(_pDb.Xdb), _busyhandler, nil)
|
|
bin.Xsqlite3_exec(tls, (*bin.Xsqlite3)(_pDb.Xdb), str(574), nil, nil, nil)
|
|
_3:
|
|
_0:
|
|
}
|
|
|
|
func _sqlite_error(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _zFunc *int8) {
|
|
_pErr.Xrc = bin.Xsqlite3_errcode(tls, (*bin.Xsqlite3)(_pDb.Xdb))
|
|
_pErr.XzErr = bin.Xsqlite3_mprintf(tls, str(597), unsafe.Pointer(_zFunc), unsafe.Pointer(bin.Xsqlite3_errmsg(tls, (*bin.Xsqlite3)(_pDb.Xdb))), bin.Xsqlite3_extended_errcode(tls, (*bin.Xsqlite3)(_pDb.Xdb)))
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** During testing, the special md5sum() aggregate function is available.
|
|
// ** inside SQLite. The following routines implement that function.
|
|
// */
|
|
func _md5step(tls *crt.TLS, _context unsafe.Pointer, _argc int32, _argv *unsafe.Pointer) {
|
|
var _i int32
|
|
var _2_zData *int8
|
|
var _p *XMD5Context
|
|
if _argc < int32(1) {
|
|
return
|
|
}
|
|
_p = (*XMD5Context)(bin.Xsqlite3_aggregate_context(tls, (*bin.Xsqlite3_context)(_context), int32(92)))
|
|
if _p == nil {
|
|
return
|
|
}
|
|
if _p.XisInit == 0 {
|
|
_MD5Init(tls, _p)
|
|
}
|
|
_i = int32(0)
|
|
_3:
|
|
if _i >= _argc {
|
|
goto _6
|
|
}
|
|
_2_zData = (*int8)(unsafe.Pointer(bin.Xsqlite3_value_text(tls, (*bin.XMem)(*elem3(_argv, uintptr(_i))))))
|
|
if _2_zData != nil {
|
|
_MD5Update(tls, _p, (*uint8)(unsafe.Pointer(_2_zData)), uint32(crt.Xstrlen(tls, _2_zData)))
|
|
}
|
|
_i += 1
|
|
goto _3
|
|
_6:
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
|
|
// * initialization constants.
|
|
// */
|
|
func _MD5Init(tls *crt.TLS, _ctx *XMD5Context) {
|
|
_ctx.XisInit = int32(1)
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbuf)), 0) = uint32(1732584193)
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbuf)), uintptr(1)) = uint32(4023233417)
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbuf)), uintptr(2)) = uint32(2562383102)
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbuf)), uintptr(3)) = uint32(271733878)
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), 0) = 0
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), uintptr(1)) = 0
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// * Update context to reflect the concatenation of another buffer full
|
|
// * of bytes.
|
|
// */
|
|
func _MD5Update(tls *crt.TLS, _ctx *XMD5Context, _buf *uint8, _len uint32) {
|
|
var _t uint32
|
|
var _1_p *uint8
|
|
_t = *elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), 0)
|
|
if store5(elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), 0), _t+(_len<<3)) < _t {
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), uintptr(1)) += 1
|
|
}
|
|
*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), uintptr(1)) += _len >> 29
|
|
_t = (_t >> 3) & uint32(63)
|
|
if _t == 0 {
|
|
goto _1
|
|
}
|
|
_1_p = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))) + uintptr(_t)))
|
|
_t = uint32(64) - _t
|
|
if _len < _t {
|
|
crt.Xmemcpy(tls, unsafe.Pointer(_1_p), unsafe.Pointer(_buf), uint64(_len))
|
|
return
|
|
}
|
|
crt.Xmemcpy(tls, unsafe.Pointer(_1_p), unsafe.Pointer(_buf), uint64(_t))
|
|
_byteReverse(tls, (*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))), uint32(16))
|
|
_MD5Transform(tls, (*[4]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer(&_ctx.Xbuf)))), (*[16]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer((*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))))))))
|
|
*(*uintptr)(unsafe.Pointer(&_buf)) += uintptr(_t)
|
|
_len -= _t
|
|
_1:
|
|
if _len >= uint32(64) {
|
|
crt.Xmemcpy(tls, unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu))), unsafe.Pointer(_buf), uint64(64))
|
|
_byteReverse(tls, (*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))), uint32(16))
|
|
_MD5Transform(tls, (*[4]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer(&_ctx.Xbuf)))), (*[16]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer((*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))))))))
|
|
*(*uintptr)(unsafe.Pointer(&_buf)) += uintptr(int32(64))
|
|
_len -= uint32(64)
|
|
goto _1
|
|
}
|
|
crt.Xmemcpy(tls, unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu))), unsafe.Pointer(_buf), uint64(_len))
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// * Note: this code is harmless on little-endian machines.
|
|
// */
|
|
func _byteReverse(tls *crt.TLS, _buf *uint8, _longs uint32) {
|
|
var _t uint32
|
|
_0:
|
|
_t = (((uint32(*elem6(_buf, uintptr(3))) << 8) | uint32(*elem6(_buf, uintptr(2)))) << 16) | ((uint32(*elem6(_buf, uintptr(1))) << 8) | uint32(*elem6(_buf, 0)))
|
|
*(*uint32)(unsafe.Pointer(_buf)) = _t
|
|
*(*uintptr)(unsafe.Pointer(&_buf)) += uintptr(int32(4))
|
|
if preInc5(&_longs, uint32(4294967295)) != 0 {
|
|
goto _0
|
|
}
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// * The core of the MD5 algorithm, this alters an existing MD5 hash to
|
|
// * reflect the addition of 16 longwords of new data. MD5Update blocks
|
|
// * the data and converts bytes into longwords for this routine.
|
|
// */
|
|
func _MD5Transform(tls *crt.TLS, _buf *[4]uint32, _in *[16]uint32) {
|
|
var _a, _b, _c, _d uint32
|
|
_a = *elem4((*uint32)(unsafe.Pointer(_buf)), 0)
|
|
_b = *elem4((*uint32)(unsafe.Pointer(_buf)), uintptr(1))
|
|
_c = *elem4((*uint32)(unsafe.Pointer(_buf)), uintptr(2))
|
|
_d = *elem4((*uint32)(unsafe.Pointer(_buf)), uintptr(3))
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_d ^ (_b & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), 0))) + uint32(3614090360)
|
|
return &_a
|
|
}() = (_a << 7) | (_a >> 25)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_c ^ (_a & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(1)))) + uint32(3905402710)
|
|
return &_d
|
|
}() = (_d << 12) | (_d >> 20)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_b ^ (_d & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(2)))) + uint32(606105819)
|
|
return &_c
|
|
}() = (_c << 17) | (_c >> 15)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_a ^ (_c & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(3)))) + uint32(3250441966)
|
|
return &_b
|
|
}() = (_b << 22) | (_b >> 10)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_d ^ (_b & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(4)))) + uint32(4118548399)
|
|
return &_a
|
|
}() = (_a << 7) | (_a >> 25)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_c ^ (_a & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(5)))) + uint32(1200080426)
|
|
return &_d
|
|
}() = (_d << 12) | (_d >> 20)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_b ^ (_d & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(6)))) + uint32(2821735955)
|
|
return &_c
|
|
}() = (_c << 17) | (_c >> 15)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_a ^ (_c & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(7)))) + uint32(4249261313)
|
|
return &_b
|
|
}() = (_b << 22) | (_b >> 10)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_d ^ (_b & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(8)))) + uint32(1770035416)
|
|
return &_a
|
|
}() = (_a << 7) | (_a >> 25)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_c ^ (_a & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(9)))) + uint32(2336552879)
|
|
return &_d
|
|
}() = (_d << 12) | (_d >> 20)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_b ^ (_d & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(10)))) + uint32(4294925233)
|
|
return &_c
|
|
}() = (_c << 17) | (_c >> 15)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_a ^ (_c & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(11)))) + uint32(2304563134)
|
|
return &_b
|
|
}() = (_b << 22) | (_b >> 10)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_d ^ (_b & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(12)))) + uint32(1804603682)
|
|
return &_a
|
|
}() = (_a << 7) | (_a >> 25)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_c ^ (_a & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(13)))) + uint32(4254626195)
|
|
return &_d
|
|
}() = (_d << 12) | (_d >> 20)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_b ^ (_d & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(14)))) + uint32(2792965006)
|
|
return &_c
|
|
}() = (_c << 17) | (_c >> 15)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_a ^ (_c & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(15)))) + uint32(1236535329)
|
|
return &_b
|
|
}() = (_b << 22) | (_b >> 10)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_d & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(1)))) + uint32(4129170786)
|
|
return &_a
|
|
}() = (_a << 5) | (_a >> 27)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_c & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(6)))) + uint32(3225465664)
|
|
return &_d
|
|
}() = (_d << 9) | (_d >> 23)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_b & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(11)))) + uint32(643717713)
|
|
return &_c
|
|
}() = (_c << 14) | (_c >> 18)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_a & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), 0))) + uint32(3921069994)
|
|
return &_b
|
|
}() = (_b << 20) | (_b >> 12)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_d & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(5)))) + uint32(3593408605)
|
|
return &_a
|
|
}() = (_a << 5) | (_a >> 27)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_c & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(10)))) + uint32(38016083)
|
|
return &_d
|
|
}() = (_d << 9) | (_d >> 23)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_b & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(15)))) + uint32(3634488961)
|
|
return &_c
|
|
}() = (_c << 14) | (_c >> 18)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_a & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(4)))) + uint32(3889429448)
|
|
return &_b
|
|
}() = (_b << 20) | (_b >> 12)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_d & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(9)))) + uint32(568446438)
|
|
return &_a
|
|
}() = (_a << 5) | (_a >> 27)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_c & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(14)))) + uint32(3275163606)
|
|
return &_d
|
|
}() = (_d << 9) | (_d >> 23)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_b & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(3)))) + uint32(4107603335)
|
|
return &_c
|
|
}() = (_c << 14) | (_c >> 18)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_a & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(8)))) + uint32(1163531501)
|
|
return &_b
|
|
}() = (_b << 20) | (_b >> 12)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_d & (_b ^ _c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(13)))) + uint32(2850285829)
|
|
return &_a
|
|
}() = (_a << 5) | (_a >> 27)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_c & (_a ^ _b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(2)))) + uint32(4243563512)
|
|
return &_d
|
|
}() = (_d << 9) | (_d >> 23)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_b & (_d ^ _a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(7)))) + uint32(1735328473)
|
|
return &_c
|
|
}() = (_c << 14) | (_c >> 18)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_a & (_c ^ _d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(12)))) + uint32(2368359562)
|
|
return &_b
|
|
}() = (_b << 20) | (_b >> 12)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += (((_b ^ _c) ^ _d) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(5)))) + uint32(4294588738)
|
|
return &_a
|
|
}() = (_a << 4) | (_a >> 28)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += (((_a ^ _b) ^ _c) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(8)))) + uint32(2272392833)
|
|
return &_d
|
|
}() = (_d << 11) | (_d >> 21)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += (((_d ^ _a) ^ _b) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(11)))) + uint32(1839030562)
|
|
return &_c
|
|
}() = (_c << 16) | (_c >> 16)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += (((_c ^ _d) ^ _a) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(14)))) + uint32(4259657740)
|
|
return &_b
|
|
}() = (_b << 23) | (_b >> 9)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += (((_b ^ _c) ^ _d) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(1)))) + uint32(2763975236)
|
|
return &_a
|
|
}() = (_a << 4) | (_a >> 28)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += (((_a ^ _b) ^ _c) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(4)))) + uint32(1272893353)
|
|
return &_d
|
|
}() = (_d << 11) | (_d >> 21)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += (((_d ^ _a) ^ _b) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(7)))) + uint32(4139469664)
|
|
return &_c
|
|
}() = (_c << 16) | (_c >> 16)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += (((_c ^ _d) ^ _a) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(10)))) + uint32(3200236656)
|
|
return &_b
|
|
}() = (_b << 23) | (_b >> 9)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += (((_b ^ _c) ^ _d) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(13)))) + uint32(681279174)
|
|
return &_a
|
|
}() = (_a << 4) | (_a >> 28)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += (((_a ^ _b) ^ _c) + (*elem4((*uint32)(unsafe.Pointer(_in)), 0))) + uint32(3936430074)
|
|
return &_d
|
|
}() = (_d << 11) | (_d >> 21)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += (((_d ^ _a) ^ _b) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(3)))) + uint32(3572445317)
|
|
return &_c
|
|
}() = (_c << 16) | (_c >> 16)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += (((_c ^ _d) ^ _a) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(6)))) + uint32(76029189)
|
|
return &_b
|
|
}() = (_b << 23) | (_b >> 9)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += (((_b ^ _c) ^ _d) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(9)))) + uint32(3654602809)
|
|
return &_a
|
|
}() = (_a << 4) | (_a >> 28)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += (((_a ^ _b) ^ _c) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(12)))) + uint32(3873151461)
|
|
return &_d
|
|
}() = (_d << 11) | (_d >> 21)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += (((_d ^ _a) ^ _b) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(15)))) + uint32(530742520)
|
|
return &_c
|
|
}() = (_c << 16) | (_c >> 16)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += (((_c ^ _d) ^ _a) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(2)))) + uint32(3299628645)
|
|
return &_b
|
|
}() = (_b << 23) | (_b >> 9)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_b | (^_d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), 0))) + uint32(4096336452)
|
|
return &_a
|
|
}() = (_a << 6) | (_a >> 26)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_a | (^_c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(7)))) + uint32(1126891415)
|
|
return &_d
|
|
}() = (_d << 10) | (_d >> 22)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_d | (^_b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(14)))) + uint32(2878612391)
|
|
return &_c
|
|
}() = (_c << 15) | (_c >> 17)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_c | (^_a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(5)))) + uint32(4237533241)
|
|
return &_b
|
|
}() = (_b << 21) | (_b >> 11)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_b | (^_d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(12)))) + uint32(1700485571)
|
|
return &_a
|
|
}() = (_a << 6) | (_a >> 26)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_a | (^_c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(3)))) + uint32(2399980690)
|
|
return &_d
|
|
}() = (_d << 10) | (_d >> 22)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_d | (^_b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(10)))) + uint32(4293915773)
|
|
return &_c
|
|
}() = (_c << 15) | (_c >> 17)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_c | (^_a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(1)))) + uint32(2240044497)
|
|
return &_b
|
|
}() = (_b << 21) | (_b >> 11)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_b | (^_d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(8)))) + uint32(1873313359)
|
|
return &_a
|
|
}() = (_a << 6) | (_a >> 26)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_a | (^_c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(15)))) + uint32(4264355552)
|
|
return &_d
|
|
}() = (_d << 10) | (_d >> 22)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_d | (^_b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(6)))) + uint32(2734768916)
|
|
return &_c
|
|
}() = (_c << 15) | (_c >> 17)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_c | (^_a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(13)))) + uint32(1309151649)
|
|
return &_b
|
|
}() = (_b << 21) | (_b >> 11)
|
|
return &_b
|
|
}() += _c
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_a += ((_c ^ (_b | (^_d))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(4)))) + uint32(4149444226)
|
|
return &_a
|
|
}() = (_a << 6) | (_a >> 26)
|
|
return &_a
|
|
}() += _b
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_d += ((_b ^ (_a | (^_c))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(11)))) + uint32(3174756917)
|
|
return &_d
|
|
}() = (_d << 10) | (_d >> 22)
|
|
return &_d
|
|
}() += _a
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_c += ((_a ^ (_d | (^_b))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(2)))) + uint32(718787259)
|
|
return &_c
|
|
}() = (_c << 15) | (_c >> 17)
|
|
return &_c
|
|
}() += _d
|
|
*func() *uint32 {
|
|
*func() *uint32 {
|
|
_b += ((_d ^ (_c | (^_a))) + (*elem4((*uint32)(unsafe.Pointer(_in)), uintptr(9)))) + uint32(3951481745)
|
|
return &_b
|
|
}() = (_b << 21) | (_b >> 11)
|
|
return &_b
|
|
}() += _c
|
|
*elem4((*uint32)(unsafe.Pointer(_buf)), 0) += _a
|
|
*elem4((*uint32)(unsafe.Pointer(_buf)), uintptr(1)) += _b
|
|
*elem4((*uint32)(unsafe.Pointer(_buf)), uintptr(2)) += _c
|
|
*elem4((*uint32)(unsafe.Pointer(_buf)), uintptr(3)) += _d
|
|
}
|
|
|
|
func _md5finalize(tls *crt.TLS, _context unsafe.Pointer) {
|
|
var _zBuf [33]int8
|
|
var _digest [16]uint8
|
|
var _p *XMD5Context
|
|
_p = (*XMD5Context)(bin.Xsqlite3_aggregate_context(tls, (*bin.Xsqlite3_context)(_context), int32(92)))
|
|
_MD5Final(tls, (*[16]uint8)(unsafe.Pointer((*uint8)(unsafe.Pointer(&_digest)))), _p)
|
|
_MD5DigestToBase16(tls, (*uint8)(unsafe.Pointer(&_digest)), (*int8)(unsafe.Pointer(&_zBuf)))
|
|
bin.Xsqlite3_result_text(tls, (*bin.Xsqlite3_context)(_context), (*int8)(unsafe.Pointer(&_zBuf)), int32(-1), func() func(*crt.TLS, unsafe.Pointer) {
|
|
v := uint64(18446744073709551615)
|
|
return *(*func(*crt.TLS, unsafe.Pointer))(unsafe.Pointer(&v))
|
|
}())
|
|
_ = _digest
|
|
_ = _zBuf
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// * Final wrapup - pad to 64-byte boundary with the bit pattern
|
|
// * 1 0* (64-bit count of bits processed, MSB-first)
|
|
// */
|
|
func _MD5Final(tls *crt.TLS, _digest *[16]uint8, _ctx *XMD5Context) {
|
|
var _count uint32
|
|
var _p *uint8
|
|
_count = ((*elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), 0)) >> 3) & uint32(63)
|
|
_p = (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))) + uintptr(_count)))
|
|
*postInc6(&_p, 1) = uint8(128)
|
|
_count = uint32(63) - _count
|
|
if _count < uint32(8) {
|
|
crt.Xmemset(tls, unsafe.Pointer(_p), int32(0), uint64(_count))
|
|
_byteReverse(tls, (*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))), uint32(16))
|
|
_MD5Transform(tls, (*[4]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer(&_ctx.Xbuf)))), (*[16]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer((*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))))))))
|
|
crt.Xmemset(tls, unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu))), int32(0), uint64(56))
|
|
goto _1
|
|
}
|
|
crt.Xmemset(tls, unsafe.Pointer(_p), int32(0), uint64(_count-uint32(8)))
|
|
_1:
|
|
_byteReverse(tls, (*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))), uint32(14))
|
|
*elem4((*uint32)(unsafe.Pointer((*[16]uint32)(unsafe.Pointer(&_ctx.Xu)))), uintptr(14)) = *elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), 0)
|
|
*elem4((*uint32)(unsafe.Pointer((*[16]uint32)(unsafe.Pointer(&_ctx.Xu)))), uintptr(15)) = *elem4((*uint32)(unsafe.Pointer(&_ctx.Xbits)), uintptr(1))
|
|
_MD5Transform(tls, (*[4]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer(&_ctx.Xbuf)))), (*[16]uint32)(unsafe.Pointer((*uint32)(unsafe.Pointer((*uint8)(unsafe.Pointer((*[64]uint8)(unsafe.Pointer(&_ctx.Xu)))))))))
|
|
_byteReverse(tls, (*uint8)(unsafe.Pointer((*uint32)(unsafe.Pointer(&_ctx.Xbuf)))), uint32(4))
|
|
crt.Xmemcpy(tls, unsafe.Pointer(_digest), unsafe.Pointer(&_ctx.Xbuf), uint64(16))
|
|
crt.Xmemset(tls, unsafe.Pointer(_ctx), int32(0), uint64(92))
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Convert a 128-bit MD5 digest into a 32-digit base-16 number.
|
|
// */
|
|
func _MD5DigestToBase16(tls *crt.TLS, _digest *uint8, _zBuf *int8) {
|
|
var _i, _j, _1_a int32
|
|
_j = store7(&_i, int32(0))
|
|
_0:
|
|
if _i >= int32(16) {
|
|
goto _3
|
|
}
|
|
_1_a = int32(*elem6(_digest, uintptr(_i)))
|
|
*elem2(_zBuf, uintptr(postInc7(&_j, 1))) = *elem2((*int8)(unsafe.Pointer(&_MD5DigestToBase16Ø00zEncodeØ001)), uintptr((_1_a>>4)&int32(15)))
|
|
*elem2(_zBuf, uintptr(postInc7(&_j, 1))) = *elem2((*int8)(unsafe.Pointer(&_MD5DigestToBase16Ø00zEncodeØ001)), uintptr(_1_a&int32(15)))
|
|
_i += 1
|
|
goto _0
|
|
_3:
|
|
*elem2(_zBuf, uintptr(_j)) = 0
|
|
}
|
|
|
|
var _MD5DigestToBase16Ø00zEncodeØ001 [17]int8
|
|
|
|
func init() {
|
|
crt.Xstrncpy(nil, &_MD5DigestToBase16Ø00zEncodeØ001[0], str(620), 17)
|
|
}
|
|
|
|
func _busyhandler(tls *crt.TLS, _pArg unsafe.Pointer, _n int32) (r0 int32) {
|
|
crt.Xusleep(tls, uint32(10000))
|
|
return int32(1)
|
|
}
|
|
|
|
func _sql_script_x(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _zSql *int8) {
|
|
if _pErr.Xrc == int32(0) {
|
|
_pErr.Xrc = bin.Xsqlite3_exec(tls, (*bin.Xsqlite3)(_pDb.Xdb), _zSql, nil, nil, &_pErr.XzErr)
|
|
}
|
|
}
|
|
|
|
func _closedb_x(tls *crt.TLS, _pErr *XError, _pDb *XSqlite) {
|
|
var _rc, _i int32
|
|
var _pIter, _pNext *XStatement
|
|
_pIter = (*XStatement)(_pDb.XpCache)
|
|
_0:
|
|
if _pIter == nil {
|
|
goto _3
|
|
}
|
|
_pNext = (*XStatement)(_pIter.XpNext)
|
|
bin.Xsqlite3_finalize(tls, _pIter.XpStmt)
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_pIter))
|
|
_pIter = _pNext
|
|
goto _0
|
|
_3:
|
|
_i = int32(0)
|
|
_4:
|
|
if _i >= _pDb.XnText {
|
|
goto _7
|
|
}
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(*elem1(_pDb.XaText, uintptr(_i))))
|
|
_i += 1
|
|
goto _4
|
|
_7:
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_pDb.XaText))
|
|
_rc = bin.Xsqlite3_close(tls, (*bin.Xsqlite3)(_pDb.Xdb))
|
|
if _rc != 0 && (_pErr.Xrc == int32(0)) {
|
|
_pErr.XzErr = bin.Xsqlite3_mprintf(tls, str(637), unsafe.Pointer(bin.Xsqlite3_errmsg(tls, (*bin.Xsqlite3)(_pDb.Xdb))))
|
|
}
|
|
crt.Xmemset(tls, unsafe.Pointer(_pDb), int32(0), uint64(32))
|
|
}
|
|
|
|
func _setstoptime_x(tls *crt.TLS, _pErr *XError, _nMs int32) {
|
|
var _1_t float64
|
|
if _pErr.Xrc == int32(0) {
|
|
_1_t = _currentTime(tls)
|
|
_timelimit = _1_t + (float64(_nMs) / (8.64e+07))
|
|
bug20530(_timelimit)
|
|
}
|
|
}
|
|
|
|
func _currentTime(tls *crt.TLS) (r0 float64) {
|
|
var _1_tm int64
|
|
var _t float64
|
|
if _currentTimeØ00pTimelimitVfsØ001 == nil {
|
|
_currentTimeØ00pTimelimitVfsØ001 = bin.Xsqlite3_vfs_find(tls, nil)
|
|
bug20530(_currentTimeØ00pTimelimitVfsØ001)
|
|
}
|
|
if (_currentTimeØ00pTimelimitVfsØ001.XiVersion >= int32(2)) && (func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int64) int32 {
|
|
v := _currentTimeØ00pTimelimitVfsØ001.XxCurrentTimeInt64
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&v))
|
|
}() != nil) {
|
|
func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int64) int32 {
|
|
v := _currentTimeØ00pTimelimitVfsØ001.XxCurrentTimeInt64
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _currentTimeØ00pTimelimitVfsØ001, &_1_tm)
|
|
_t = float64(_1_tm) / (8.64e+07)
|
|
goto _3
|
|
}
|
|
func() func(*crt.TLS, *bin.Xsqlite3_vfs, *float64) int32 {
|
|
v := _currentTimeØ00pTimelimitVfsØ001.XxCurrentTime
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *float64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _currentTimeØ00pTimelimitVfsØ001, &_t)
|
|
_3:
|
|
return _t
|
|
}
|
|
|
|
var _currentTimeØ00pTimelimitVfsØ001 *bin.Xsqlite3_vfs
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Used by setstoptime() and timetostop().
|
|
// */
|
|
var _timelimit float64
|
|
|
|
func _launch_thread_x(tls *crt.TLS, _pErr *XError, _pThreads *XThreadset, _xProc func(*crt.TLS, int32, unsafe.Pointer) *int8, _pArg unsafe.Pointer) {
|
|
var _1_iTid, _1_rc int32
|
|
var _1_p *XThread
|
|
if _pErr.Xrc != int32(0) {
|
|
goto _0
|
|
}
|
|
_1_iTid = preInc7(&_pThreads.XiMaxTid, 1)
|
|
_1_p = (*XThread)(bin.Xsqlite3_malloc(tls, int32(40)))
|
|
crt.Xmemset(tls, unsafe.Pointer(_1_p), int32(0), uint64(40))
|
|
_1_p.XiTid = _1_iTid
|
|
_1_p.XpArg = _pArg
|
|
_1_p.XxProc = _xProc
|
|
_1_rc = crt.Xpthread_create(tls, &_1_p.Xtid, nil, _launch_thread_main, unsafe.Pointer(_1_p))
|
|
if _1_rc != int32(0) {
|
|
_system_error(tls, _pErr, _1_rc)
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_1_p))
|
|
goto _2
|
|
}
|
|
*(**XThread)(unsafe.Pointer(&_1_p.XpNext)) = (*XThread)(_pThreads.XpThread)
|
|
*(**XThread)(unsafe.Pointer(&_pThreads.XpThread)) = _1_p
|
|
_2:
|
|
_0:
|
|
}
|
|
|
|
func _launch_thread_main(tls *crt.TLS, _pArg unsafe.Pointer) (r0 unsafe.Pointer) {
|
|
var _p *XThread
|
|
_p = (*XThread)(_pArg)
|
|
return unsafe.Pointer(_p.XxProc(tls, _p.XiTid, _p.XpArg))
|
|
}
|
|
|
|
func _system_error(tls *crt.TLS, _pErr *XError, _iSys int32) {
|
|
_pErr.Xrc = _iSys
|
|
_pErr.XzErr = (*int8)(bin.Xsqlite3_malloc(tls, int32(512)))
|
|
crt.Xstrerror_r(tls, _iSys, _pErr.XzErr, uint64(512))
|
|
*elem2(_pErr.XzErr, uintptr(511)) = 0
|
|
}
|
|
|
|
func _walthread1_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _nIter int32
|
|
var _1_z1, _1_z2, _1_z3 *int8
|
|
var _1_azSql [2]*int8
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_nIter = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(929)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(930)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
_1_azSql = [2]*int8{}
|
|
*elem1((**int8)(unsafe.Pointer(&_1_azSql)), 0) = str(640)
|
|
*elem1((**int8)(unsafe.Pointer(&_1_azSql)), uintptr(1)) = str(708)
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(937)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(767)))
|
|
_integrity_check_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(938)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_1_z1 = _execsql_text_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(939)
|
|
}()
|
|
return &_err
|
|
}(), &_db, int32(1), unsafe.Pointer(*elem1((**int8)(unsafe.Pointer(&_1_azSql)), 0)))
|
|
_1_z2 = _execsql_text_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(940)
|
|
}()
|
|
return &_err
|
|
}(), &_db, int32(2), unsafe.Pointer(*elem1((**int8)(unsafe.Pointer(&_1_azSql)), uintptr(1))))
|
|
_1_z3 = _execsql_text_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(941)
|
|
}()
|
|
return &_err
|
|
}(), &_db, int32(3), unsafe.Pointer(*elem1((**int8)(unsafe.Pointer(&_1_azSql)), 0)))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(942)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(773)))
|
|
if crt.Xstrcmp(tls, _1_z1, _1_z2) != 0 || crt.Xstrcmp(tls, _1_z1, _1_z3) != 0 {
|
|
_test_error_x(tls, &_err, bin.Xsqlite3_mprintf(tls, str(780), unsafe.Pointer(_1_z1), unsafe.Pointer(_1_z2), unsafe.Pointer(_1_z3)))
|
|
}
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(948)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(802))
|
|
_nIter += 1
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(957)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(934), _nIter)
|
|
|
|
_ = _1_azSql
|
|
panic(0)
|
|
}
|
|
|
|
func _timetostop_x(tls *crt.TLS, _pErr *XError) (r0 int32) {
|
|
var _ret int32
|
|
var _1_t float64
|
|
_ret = int32(1)
|
|
if _pErr.Xrc == int32(0) {
|
|
_1_t = _currentTime(tls)
|
|
_ret = bool2int(_1_t >= _timelimit)
|
|
}
|
|
return _ret
|
|
}
|
|
|
|
func _execsql_i64_x(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, args ...interface{}) (r0 int64) {
|
|
var _2_first int32
|
|
var _iRet int64
|
|
var _1_pStmt unsafe.Pointer
|
|
var _1_ap []interface{}
|
|
_iRet = int64(0)
|
|
if _pErr.Xrc != int32(0) {
|
|
goto _0
|
|
}
|
|
_1_ap = args
|
|
_1_pStmt = _getAndBindSqlStatement(tls, _pErr, _pDb, _1_ap)
|
|
if _1_pStmt == nil {
|
|
goto _1
|
|
}
|
|
_2_first = int32(1)
|
|
_2:
|
|
if int32(100) != bin.Xsqlite3_step(tls, _1_pStmt) {
|
|
goto _3
|
|
}
|
|
if _2_first != 0 && (bin.Xsqlite3_column_count(tls, _1_pStmt) > int32(0)) {
|
|
_iRet = bin.Xsqlite3_column_int64(tls, _1_pStmt, int32(0))
|
|
}
|
|
_2_first = int32(0)
|
|
goto _2
|
|
_3:
|
|
if int32(0) != bin.Xsqlite3_reset(tls, _1_pStmt) {
|
|
_sqlite_error(tls, _pErr, _pDb, str(948))
|
|
}
|
|
_1:
|
|
_1_ap = nil
|
|
_0:
|
|
return _iRet
|
|
}
|
|
|
|
func _getAndBindSqlStatement(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _ap []interface{}) (r0 unsafe.Pointer) {
|
|
var _i int32
|
|
var _1_zName *int8
|
|
var _pStmt, _1_pArg unsafe.Pointer
|
|
var _pStatement *XStatement
|
|
_pStatement = _getSqlStatement(tls, _pErr, _pDb, (*int8)(crt.VAPointer(&_ap)))
|
|
if _pStatement == nil {
|
|
return nil
|
|
}
|
|
_pStmt = _pStatement.XpStmt
|
|
_i = int32(1)
|
|
_1:
|
|
if _i > bin.Xsqlite3_bind_parameter_count(tls, _pStmt) {
|
|
goto _4
|
|
}
|
|
_1_zName = bin.Xsqlite3_bind_parameter_name(tls, _pStmt, _i)
|
|
_1_pArg = crt.VAPointer(&_ap)
|
|
switch int32(*elem2(_1_zName, uintptr(1))) {
|
|
case int32(105):
|
|
goto _6
|
|
default:
|
|
goto _7
|
|
}
|
|
|
|
_6:
|
|
bin.Xsqlite3_bind_int64(tls, _pStmt, _i, *(*int64)(_1_pArg))
|
|
goto _8
|
|
_7:
|
|
_pErr.Xrc = int32(1)
|
|
_pErr.XzErr = bin.Xsqlite3_mprintf(tls, str(954), unsafe.Pointer(_1_zName))
|
|
_pStmt = nil
|
|
goto _8
|
|
_8:
|
|
_i += 1
|
|
goto _1
|
|
_4:
|
|
return _pStmt
|
|
}
|
|
|
|
func _getSqlStatement(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _zSql *int8) (r0 *XStatement) {
|
|
var _rc int32
|
|
var _pRet *XStatement
|
|
_pRet = (*XStatement)(_pDb.XpCache)
|
|
_0:
|
|
if _pRet == nil {
|
|
goto _3
|
|
}
|
|
if int32(0) == crt.Xstrcmp(tls, bin.Xsqlite3_sql(tls, _pRet.XpStmt), _zSql) {
|
|
return _pRet
|
|
}
|
|
_pRet = (*XStatement)(_pRet.XpNext)
|
|
goto _0
|
|
_3:
|
|
_pRet = (*XStatement)(bin.Xsqlite3_malloc(tls, int32(16)))
|
|
_rc = bin.Xsqlite3_prepare_v2(tls, (*bin.Xsqlite3)(_pDb.Xdb), _zSql, int32(-1), &_pRet.XpStmt, nil)
|
|
if _rc != int32(0) {
|
|
_sqlite_error(tls, _pErr, _pDb, str(980))
|
|
return nil
|
|
}
|
|
func() {
|
|
if int32(0) != crt.Xstrcmp(tls, bin.Xsqlite3_sql(tls, _pRet.XpStmt), _zSql) {
|
|
crt.X__builtin_fprintf(tls, Xstderr, str(991), unsafe.Pointer(str(1027)), int32(614), unsafe.Pointer(&_getSqlStatementØ00__func__Ø000), unsafe.Pointer(str(1085)))
|
|
crt.X__builtin_abort(tls)
|
|
}
|
|
}()
|
|
*(**XStatement)(unsafe.Pointer(&_pRet.XpNext)) = (*XStatement)(_pDb.XpCache)
|
|
*(**XStatement)(unsafe.Pointer(&_pDb.XpCache)) = _pRet
|
|
return _pRet
|
|
}
|
|
|
|
var _getSqlStatementØ00__func__Ø000 [16]int8
|
|
|
|
func init() {
|
|
crt.Xstrncpy(nil, &_getSqlStatementØ00__func__Ø000[0], str(1127), 16)
|
|
}
|
|
|
|
func _integrity_check_x(tls *crt.TLS, _pErr *XError, _pDb *XSqlite) {
|
|
var _1_zErr, _3_z *int8
|
|
var _2_pStmt unsafe.Pointer
|
|
var _1_pStatement *XStatement
|
|
if _pErr.Xrc != int32(0) {
|
|
goto _0
|
|
}
|
|
_1_zErr = nil
|
|
_1_pStatement = _getSqlStatement(tls, _pErr, _pDb, str(1143))
|
|
if _1_pStatement == nil {
|
|
goto _1
|
|
}
|
|
_2_pStmt = _1_pStatement.XpStmt
|
|
_2:
|
|
if int32(100) != bin.Xsqlite3_step(tls, _2_pStmt) {
|
|
goto _3
|
|
}
|
|
_3_z = (*int8)(unsafe.Pointer(bin.Xsqlite3_column_text(tls, _2_pStmt, int32(0))))
|
|
if crt.Xstrcmp(tls, _3_z, str(1166)) == 0 {
|
|
goto _4
|
|
}
|
|
if _1_zErr == nil {
|
|
_1_zErr = bin.Xsqlite3_mprintf(tls, str(637), unsafe.Pointer(_3_z))
|
|
goto _6
|
|
}
|
|
_1_zErr = bin.Xsqlite3_mprintf(tls, str(1169), unsafe.Pointer(_1_zErr), unsafe.Pointer(_3_z))
|
|
_6:
|
|
_4:
|
|
goto _2
|
|
_3:
|
|
bin.Xsqlite3_reset(tls, _2_pStmt)
|
|
if _1_zErr != nil {
|
|
_pErr.XzErr = _1_zErr
|
|
_pErr.Xrc = int32(1)
|
|
}
|
|
_1:
|
|
_0:
|
|
}
|
|
|
|
func _execsql_text_x(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _iSlot int32, args ...interface{}) (r0 *int8) {
|
|
var _1_nByte, _3_first int32
|
|
var _zRet *int8
|
|
var _2_pStmt unsafe.Pointer
|
|
var _2_ap []interface{}
|
|
_zRet = nil
|
|
if _iSlot >= _pDb.XnText {
|
|
_1_nByte = int32(uint64(8) * uint64(_iSlot+int32(1)))
|
|
_pDb.XaText = (**int8)(bin.Xsqlite3_realloc(tls, unsafe.Pointer(_pDb.XaText), _1_nByte))
|
|
crt.Xmemset(tls, unsafe.Pointer(elem1(_pDb.XaText, uintptr(_pDb.XnText))), int32(0), uint64(8)*uint64((_iSlot+int32(1))-_pDb.XnText))
|
|
_pDb.XnText = _iSlot + int32(1)
|
|
}
|
|
if _pErr.Xrc != int32(0) {
|
|
goto _1
|
|
}
|
|
_2_ap = args
|
|
_2_pStmt = _getAndBindSqlStatement(tls, _pErr, _pDb, _2_ap)
|
|
if _2_pStmt == nil {
|
|
goto _2
|
|
}
|
|
_3_first = int32(1)
|
|
_3:
|
|
if int32(100) != bin.Xsqlite3_step(tls, _2_pStmt) {
|
|
goto _4
|
|
}
|
|
if _3_first != 0 && (bin.Xsqlite3_column_count(tls, _2_pStmt) > int32(0)) {
|
|
_zRet = bin.Xsqlite3_mprintf(tls, str(637), unsafe.Pointer(bin.Xsqlite3_column_text(tls, _2_pStmt, int32(0))))
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(*elem1(_pDb.XaText, uintptr(_iSlot))))
|
|
*elem1(_pDb.XaText, uintptr(_iSlot)) = _zRet
|
|
}
|
|
_3_first = int32(0)
|
|
goto _3
|
|
_4:
|
|
if int32(0) != bin.Xsqlite3_reset(tls, _2_pStmt) {
|
|
_sqlite_error(tls, _pErr, _pDb, str(948))
|
|
}
|
|
_2:
|
|
_2_ap = nil
|
|
_1:
|
|
return _zRet
|
|
}
|
|
|
|
func _test_error_x(tls *crt.TLS, _pErr *XError, _zErr *int8) {
|
|
if _pErr.Xrc == int32(0) {
|
|
_pErr.Xrc = int32(1)
|
|
_pErr.XzErr = _zErr
|
|
goto _1
|
|
}
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_zErr))
|
|
_1:
|
|
}
|
|
|
|
func _print_and_free_err(tls *crt.TLS, _p *XError) {
|
|
_print_err(tls, _p)
|
|
_free_err(tls, _p)
|
|
}
|
|
|
|
func _print_err(tls *crt.TLS, _p *XError) {
|
|
var _1_isWarn int32
|
|
if _p.Xrc == int32(0) {
|
|
goto _0
|
|
}
|
|
_1_isWarn = int32(0)
|
|
if _p.Xrc == int32(17) {
|
|
_1_isWarn = int32(1)
|
|
}
|
|
if bin.Xsqlite3_strglob(tls, str(1175), _p.XzErr) == int32(0) {
|
|
_1_isWarn = int32(1)
|
|
}
|
|
crt.Xprintf(tls, str(1196), unsafe.Pointer(func() *int8 {
|
|
if _1_isWarn != 0 {
|
|
return str(1222)
|
|
}
|
|
return str(1230)
|
|
}()), _p.Xrc, unsafe.Pointer(_p.XzErr), _p.XiLine)
|
|
if _1_isWarn == 0 {
|
|
_nGlobalErr += 1
|
|
}
|
|
crt.Xfflush(tls, (*crt.XFILE)(Xstdout))
|
|
_0:
|
|
}
|
|
|
|
// C comment
|
|
// /* Total number of errors in this process so far. */
|
|
var _nGlobalErr int32
|
|
|
|
func _free_err(tls *crt.TLS, _p *XError) {
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_p.XzErr))
|
|
_p.XzErr = nil
|
|
_p.Xrc = int32(0)
|
|
}
|
|
|
|
func _walthread1_ckpt_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _nCkpt int32
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_nCkpt = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(968)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(969)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
crt.Xusleep(tls, uint32(500000))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(971)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(1236)))
|
|
if _err.Xrc == int32(0) {
|
|
_nCkpt += 1
|
|
}
|
|
_clear_error_x(tls, &_err, int32(5))
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(975)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1258), _nCkpt)
|
|
}
|
|
|
|
func _clear_error_x(tls *crt.TLS, _pErr *XError, _rc int32) {
|
|
if _pErr.Xrc == _rc {
|
|
_pErr.Xrc = int32(0)
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_pErr.XzErr))
|
|
_pErr.XzErr = nil
|
|
}
|
|
}
|
|
|
|
func _join_all_threads_x(tls *crt.TLS, _pErr *XError, _pThreads *XThreadset) {
|
|
var _1_rc int32
|
|
var _1_ret unsafe.Pointer
|
|
var _p, _pNext *XThread
|
|
_p = (*XThread)(_pThreads.XpThread)
|
|
_0:
|
|
if _p == nil {
|
|
goto _3
|
|
}
|
|
_pNext = (*XThread)(_p.XpNext)
|
|
_1_rc = crt.Xpthread_join(tls, _p.Xtid, &_1_ret)
|
|
if _1_rc == int32(0) {
|
|
goto _4
|
|
}
|
|
if _pErr.Xrc == int32(0) {
|
|
_system_error(tls, _pErr, _1_rc)
|
|
}
|
|
goto _6
|
|
_4:
|
|
crt.Xprintf(tls, str(1273), _p.XiTid, unsafe.Pointer(func() *int8 {
|
|
if _1_ret == nil {
|
|
return str(1293)
|
|
}
|
|
return (*int8)(_1_ret)
|
|
}()))
|
|
crt.Xfflush(tls, (*crt.XFILE)(Xstdout))
|
|
_6:
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_p))
|
|
_p = _pNext
|
|
goto _0
|
|
_3:
|
|
*(**XThread)(unsafe.Pointer(&_pThreads.XpThread)) = nil
|
|
}
|
|
|
|
func _walthread2(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1050)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1051)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(1297))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1052)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1054)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1055)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread2_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1056)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread2_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1057)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread2_thread, crt.U2P(uintptr(uint32(1))))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1058)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread2_thread, crt.U2P(uintptr(uint32(1))))
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1059)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _walthread2_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _iArg, _2_journal_exists, _2_wal_exists int32
|
|
var _zJournal *int8
|
|
var _anTrans [2]int32
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_anTrans = [2]int32{}
|
|
_iArg = int32(int64(crt.P2U(_pArg)))
|
|
_zJournal = str(1346)
|
|
if _iArg != 0 {
|
|
_zJournal = str(1372)
|
|
}
|
|
_0:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1016)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _2
|
|
}
|
|
_2_journal_exists = int32(0)
|
|
_2_wal_exists = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1020)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1022)
|
|
}()
|
|
return &_err
|
|
}(), &_db, _zJournal)
|
|
_clear_error_x(tls, &_err, int32(5))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1024)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(767))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1025)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(1401))
|
|
_2_journal_exists = bool2int(_filesize_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1027)
|
|
}()
|
|
return &_err
|
|
}(), str(1446)) >= (0))
|
|
_2_wal_exists = bool2int(_filesize_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1028)
|
|
}()
|
|
return &_err
|
|
}(), str(1462)) >= (0))
|
|
if (_2_journal_exists + _2_wal_exists) != int32(1) {
|
|
_test_error_x(tls, &_err, bin.Xsqlite3_mprintf(tls, str(1474), _2_journal_exists, _2_wal_exists))
|
|
}
|
|
*elem8((*int32)(unsafe.Pointer(&_anTrans)), uintptr(_2_journal_exists)) += 1
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1036)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(773))
|
|
_integrity_check_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1037)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1038)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
goto _0
|
|
_2:
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1511), *elem8((*int32)(unsafe.Pointer(&_anTrans)), 0), *elem8((*int32)(unsafe.Pointer(&_anTrans)), uintptr(1)))
|
|
|
|
_ = _anTrans
|
|
panic(0)
|
|
}
|
|
|
|
func _filesize_x(tls *crt.TLS, _pErr *XError, _zFile *int8) (r0 int64) {
|
|
var _iRet int64
|
|
var _1_sStat crt.Xstruct_stat64
|
|
_iRet = int64(0)
|
|
if _pErr.Xrc != int32(0) {
|
|
goto _0
|
|
}
|
|
if crt.Xstat64(tls, _zFile, &_1_sStat) != 0 {
|
|
_iRet = int64(-1)
|
|
goto _2
|
|
}
|
|
_iRet = _1_sStat.Xst_size
|
|
_2:
|
|
_0:
|
|
return _iRet
|
|
}
|
|
|
|
func _walthread3(tls *crt.TLS, _nMs int32) {
|
|
var _i int32
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1107)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1108)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(1521))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1115)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1117)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
_i = int32(0)
|
|
_8:
|
|
if _i >= int32(6) {
|
|
goto _11
|
|
}
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1119)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread3_thread, crt.U2P(uintptr(int64(_i))))
|
|
_i += 1
|
|
goto _8
|
|
_11:
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1121)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _walthread3_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _iArg, _1_stop int32
|
|
var _iNextWrite, _1_sum1, _1_sum2, _2_iMax int64
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_iArg = int32(int64(crt.P2U(_pArg)))
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1070)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1071)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(1680))
|
|
_iNextWrite = int64(_iArg + int32(1))
|
|
_4:
|
|
_1_stop = int32(0)
|
|
_6:
|
|
if int32(0) != store7(&_1_stop, _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1079)
|
|
}()
|
|
return &_err
|
|
}())) {
|
|
goto _7
|
|
}
|
|
_2_iMax = _execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1080)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(1711)))
|
|
if (_2_iMax + int64(1)) == _iNextWrite {
|
|
goto _7
|
|
}
|
|
goto _6
|
|
_7:
|
|
if _1_stop != 0 {
|
|
goto _5
|
|
}
|
|
_1_sum1 = _execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1085)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(1735)))
|
|
_1_sum2 = _execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1086)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(1759)))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1087)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(1784)), unsafe.Pointer(&_iNextWrite), unsafe.Pointer(&_1_sum1), unsafe.Pointer(&_1_sum2))
|
|
_integrity_check_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1091)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_iNextWrite += int64(6)
|
|
goto _4
|
|
_5:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1096)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return nil
|
|
}
|
|
|
|
func _walthread4(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1165)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1166)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(1835))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1170)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1172)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1173)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread4_reader_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1174)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread4_writer_thread, nil)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1175)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _walthread4_reader_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1130)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1131)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
_integrity_check_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1132)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
goto _2
|
|
}
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1134)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return nil
|
|
}
|
|
|
|
func _walthread4_writer_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _iRow int64
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_iRow = int64(1)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1145)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1146)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(1911))
|
|
_4:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1147)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _5
|
|
}
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1148)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(1943)), unsafe.Pointer(&_iRow))
|
|
_iRow += 1
|
|
if _iRow == int64(10) {
|
|
_iRow = 0
|
|
}
|
|
goto _4
|
|
_5:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1154)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return nil
|
|
}
|
|
|
|
func _walthread5(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1198)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1199)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(1990))
|
|
_filecopy_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1224)
|
|
}()
|
|
return &_err
|
|
}(), str(378), str(3150))
|
|
_filecopy_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1225)
|
|
}()
|
|
return &_err
|
|
}(), str(1462), str(3161))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1226)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_filecopy_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1228)
|
|
}()
|
|
return &_err
|
|
}(), str(3150), str(378))
|
|
_filecopy_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1229)
|
|
}()
|
|
return &_err
|
|
}(), str(3161), str(1462))
|
|
if _err.Xrc == int32(0) {
|
|
crt.Xprintf(tls, str(3176), int32(_filesize_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1232)
|
|
}()
|
|
return &_err
|
|
}(), str(1462))))
|
|
crt.Xprintf(tls, str(3200), int32(_filesize_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1233)
|
|
}()
|
|
return &_err
|
|
}(), str(378))))
|
|
}
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1236)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1237)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread5_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1238)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread5_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1239)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread5_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1240)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread5_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1241)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _walthread5_thread, nil)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1242)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
if _err.Xrc == int32(0) {
|
|
crt.Xprintf(tls, str(3176), int32(_filesize_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1245)
|
|
}()
|
|
return &_err
|
|
}(), str(1462))))
|
|
crt.Xprintf(tls, str(3200), int32(_filesize_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1246)
|
|
}()
|
|
return &_err
|
|
}(), str(378))))
|
|
}
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _filecopy_x(tls *crt.TLS, _pErr *XError, _zFrom *int8, _zTo *int8) {
|
|
var _3_fd1, _3_fd2, _6_nCopy int32
|
|
var _1_nByte, _3_iOff int64
|
|
var _3_aBuf [1024]int8
|
|
if _pErr.Xrc != int32(0) {
|
|
goto _0
|
|
}
|
|
_1_nByte = _filesize_x(tls, _pErr, _zFrom)
|
|
if _1_nByte < (0) {
|
|
_test_error_x(tls, _pErr, bin.Xsqlite3_mprintf(tls, str(3217), unsafe.Pointer(_zFrom)))
|
|
goto _2
|
|
}
|
|
crt.Xunlink(tls, _zTo)
|
|
_3_fd1 = crt.Xopen64(tls, _zFrom, int32(0))
|
|
if _3_fd1 < int32(0) {
|
|
_system_error(tls, _pErr, *crt.X__errno_location(tls))
|
|
return
|
|
}
|
|
_3_fd2 = crt.Xopen64(tls, _zTo, int32(194), int32(420))
|
|
if _3_fd2 < int32(0) {
|
|
_system_error(tls, _pErr, *crt.X__errno_location(tls))
|
|
crt.Xclose(tls, _3_fd1)
|
|
return
|
|
}
|
|
_3_iOff = 0
|
|
_5:
|
|
if _3_iOff >= _1_nByte {
|
|
goto _6
|
|
}
|
|
_6_nCopy = int32(1024)
|
|
if (int64(_6_nCopy) + _3_iOff) > _1_nByte {
|
|
_6_nCopy = int32(_1_nByte - _3_iOff)
|
|
}
|
|
if int64(_6_nCopy) != crt.Xread(tls, _3_fd1, unsafe.Pointer(&_3_aBuf), uint64(_6_nCopy)) {
|
|
_system_error(tls, _pErr, *crt.X__errno_location(tls))
|
|
goto _6
|
|
}
|
|
if int64(_6_nCopy) != crt.Xwrite(tls, _3_fd2, unsafe.Pointer(&_3_aBuf), uint64(_6_nCopy)) {
|
|
_system_error(tls, _pErr, *crt.X__errno_location(tls))
|
|
goto _6
|
|
}
|
|
_3_iOff += int64(_6_nCopy)
|
|
goto _5
|
|
_6:
|
|
crt.Xclose(tls, _3_fd1)
|
|
crt.Xclose(tls, _3_fd2)
|
|
_2:
|
|
_0:
|
|
_ = _3_aBuf
|
|
}
|
|
|
|
func _walthread5_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _nRow int64
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1185)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_nRow = _execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1186)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(3234)))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1187)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
if _nRow != int64(65536) {
|
|
_test_error_x(tls, &_err, bin.Xsqlite3_mprintf(tls, str(3258), int32(_nRow)))
|
|
}
|
|
_print_and_free_err(tls, &_err)
|
|
return nil
|
|
}
|
|
|
|
func _cgt_pager_1(tls *crt.TLS, _nMs int32) {
|
|
var _err XError
|
|
var _db XSqlite
|
|
var _xSub func(*crt.TLS, *XError, *XSqlite)
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1289)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1290)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(3276))
|
|
_xSub = _cgt_pager_1_populate
|
|
_xSub(tls, &_err, &_db)
|
|
_xSub = _cgt_pager_1_update
|
|
_xSub(tls, &_err, &_db)
|
|
_xSub = _cgt_pager_1_read
|
|
_xSub(tls, &_err, &_db)
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1300)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _cgt_pager_1_populate(tls *crt.TLS, _pErr *XError, _pDb *XSqlite) {
|
|
var _iRow, _1_iBlob int64
|
|
var _zInsert *int8
|
|
_zInsert = str(3373)
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1259)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(767))
|
|
_iRow = int64(1)
|
|
_2:
|
|
if _iRow > int64(10000) {
|
|
goto _5
|
|
}
|
|
_1_iBlob = int64(600) + (_iRow % int64(300))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1262)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, unsafe.Pointer(_zInsert), unsafe.Pointer(&_iRow), unsafe.Pointer(&_1_iBlob))
|
|
_iRow += 1
|
|
goto _2
|
|
_5:
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1264)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(773))
|
|
}
|
|
|
|
func _cgt_pager_1_update(tls *crt.TLS, _pErr *XError, _pDb *XSqlite) {
|
|
var _iRow, _1_iBlob int64
|
|
var _zUpdate *int8
|
|
_zUpdate = str(3420)
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1269)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(767))
|
|
_iRow = int64(1)
|
|
_2:
|
|
if _iRow > int64(10000) {
|
|
goto _5
|
|
}
|
|
_1_iBlob = int64(600) + ((_iRow + int64(100)) % int64(300))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1272)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, unsafe.Pointer(_zUpdate), unsafe.Pointer(&_1_iBlob), unsafe.Pointer(&_iRow))
|
|
_iRow += 1
|
|
goto _2
|
|
_5:
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1274)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(773))
|
|
}
|
|
|
|
func _cgt_pager_1_read(tls *crt.TLS, _pErr *XError, _pDb *XSqlite) {
|
|
var _iRow int64
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1278)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(767))
|
|
_iRow = int64(1)
|
|
_2:
|
|
if _iRow > int64(10000) {
|
|
goto _5
|
|
}
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1280)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, unsafe.Pointer(str(3471)), unsafe.Pointer(&_iRow))
|
|
_iRow += 1
|
|
goto _2
|
|
_5:
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(1282)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(773))
|
|
}
|
|
|
|
func _dynamic_triggers(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1396)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1397)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(3504))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1410)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1412)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(1))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1415)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _dynamic_triggers_2, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1416)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _dynamic_triggers_2, nil)
|
|
crt.Xsleep(tls, uint32(2))
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(0))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1421)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _dynamic_triggers_2, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1422)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _dynamic_triggers_1, nil)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1424)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _dynamic_triggers_2(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _nInsert, _nDelete int32
|
|
var _iVal int64
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_iVal = int64(0)
|
|
_nInsert = int32(0)
|
|
_nDelete = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1371)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1372)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
_6:
|
|
_iVal = (_iVal + int64(1)) % int64(100)
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1375)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(3753)), unsafe.Pointer(&_iVal), unsafe.Pointer(&_iVal))
|
|
_nInsert += 1
|
|
if _iVal != 0 {
|
|
goto _6
|
|
}
|
|
_9:
|
|
_iVal = (_iVal + int64(1)) % int64(100)
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1381)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(3787)), unsafe.Pointer(&_iVal))
|
|
_nDelete += 1
|
|
if _iVal != 0 {
|
|
goto _9
|
|
}
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1385)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(3816), _nInsert, _nDelete)
|
|
}
|
|
|
|
func _dynamic_triggers_1(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _nDrop, _nCreate, _1_i int32
|
|
var _2_zSql, _3_zSql, _4_zSql, _5_zSql *int8
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_nDrop = int32(0)
|
|
_nCreate = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1318)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1319)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
_1_i = int32(1)
|
|
_6:
|
|
if _1_i >= int32(9) {
|
|
goto _9
|
|
}
|
|
_2_zSql = bin.Xsqlite3_mprintf(tls, str(3839), _1_i, _1_i, _1_i+int32(1))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1328)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(_2_zSql))
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_2_zSql))
|
|
_nCreate += 1
|
|
_1_i += 1
|
|
goto _6
|
|
_9:
|
|
_1_i = int32(1)
|
|
_12:
|
|
if _1_i >= int32(9) {
|
|
goto _15
|
|
}
|
|
_3_zSql = bin.Xsqlite3_mprintf(tls, str(3929), _1_i, _1_i, _1_i+int32(1))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1339)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(_3_zSql))
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_3_zSql))
|
|
_nCreate += 1
|
|
_1_i += 1
|
|
goto _12
|
|
_15:
|
|
_1_i = int32(1)
|
|
_18:
|
|
if _1_i >= int32(9) {
|
|
goto _21
|
|
}
|
|
_4_zSql = bin.Xsqlite3_mprintf(tls, str(4015), _1_i)
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1346)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(_4_zSql))
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_4_zSql))
|
|
_nDrop += 1
|
|
_1_i += 1
|
|
goto _18
|
|
_21:
|
|
_1_i = int32(1)
|
|
_24:
|
|
if _1_i >= int32(9) {
|
|
goto _27
|
|
}
|
|
_5_zSql = bin.Xsqlite3_mprintf(tls, str(4034), _1_i)
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1353)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(_5_zSql))
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_5_zSql))
|
|
_nDrop += 1
|
|
_1_i += 1
|
|
goto _24
|
|
_27:
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(1358)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(4053), _nCreate, _nDrop)
|
|
}
|
|
|
|
func _checkpoint_starvation_1(tls *crt.TLS, _nMs int32) {
|
|
var _ctx XCheckpointStarvationCtx
|
|
var _err XError
|
|
_err = XError{}
|
|
_ctx = XCheckpointStarvationCtx{}
|
|
_checkpoint_starvation_main(tls, _nMs, &_ctx)
|
|
if _ctx.XnMaxFrame < int32(500) {
|
|
_test_error_x(tls, &_err, bin.Xsqlite3_mprintf(tls, str(4076), _ctx.XnMaxFrame))
|
|
}
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _checkpoint_starvation_main(tls *crt.TLS, _nMs int32, _p *XCheckpointStarvationCtx) {
|
|
var _nInsert, _i int32
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_nInsert = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(99)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(100)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(4107))
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(106)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
_i = int32(0)
|
|
_6:
|
|
if _i >= int32(4) {
|
|
goto _9
|
|
}
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(109)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _checkpoint_starvation_reader, nil)
|
|
crt.Xusleep(tls, uint32(25000))
|
|
_i += 1
|
|
goto _6
|
|
_9:
|
|
bin.Xsqlite3_wal_hook(tls, (*bin.Xsqlite3)(_db.Xdb), func() func(*crt.TLS, unsafe.Pointer, *bin.Xsqlite3, *int8, int32) int32 {
|
|
v := _checkpoint_starvation_walhook
|
|
return *(*func(*crt.TLS, unsafe.Pointer, *bin.Xsqlite3, *int8, int32) int32)(unsafe.Pointer(&v))
|
|
}(), unsafe.Pointer(_p))
|
|
_12:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(114)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(115)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(4177))
|
|
_nInsert += 1
|
|
goto _12
|
|
}
|
|
crt.Xprintf(tls, str(4217), unsafe.Pointer(func() *int8 {
|
|
if _p.XeMode == int32(0) {
|
|
return str(4241)
|
|
}
|
|
return str(4249)
|
|
}()))
|
|
crt.Xprintf(tls, str(4257), _p.XnMaxFrame)
|
|
crt.Xprintf(tls, str(4288), _nInsert)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(125)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(126)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _checkpoint_starvation_reader(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _1_iCount1, _1_iCount2 int64
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(73)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(74)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(76)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(767))
|
|
_1_iCount1 = _execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(77)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(4325)))
|
|
crt.Xusleep(tls, uint32(100000))
|
|
_1_iCount2 = _execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(79)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(4325)))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(80)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(773))
|
|
if _1_iCount1 != _1_iCount2 {
|
|
_test_error_x(tls, &_err, bin.Xsqlite3_mprintf(tls, str(4349), _1_iCount1, _1_iCount2))
|
|
}
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(86)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return nil
|
|
}
|
|
|
|
func _checkpoint_starvation_walhook(tls *crt.TLS, _pCtx unsafe.Pointer, _db unsafe.Pointer, _zDb *int8, _nFrame int32) (r0 int32) {
|
|
var _p *XCheckpointStarvationCtx
|
|
_p = (*XCheckpointStarvationCtx)(_pCtx)
|
|
if _nFrame > _p.XnMaxFrame {
|
|
_p.XnMaxFrame = _nFrame
|
|
}
|
|
if _nFrame >= int32(50) {
|
|
bin.Xsqlite3_wal_checkpoint_v2(tls, (*bin.Xsqlite3)(_db), _zDb, _p.XeMode, nil, nil)
|
|
}
|
|
return int32(0)
|
|
}
|
|
|
|
func _checkpoint_starvation_2(tls *crt.TLS, _nMs int32) {
|
|
var _ctx XCheckpointStarvationCtx
|
|
var _err XError
|
|
_err = XError{}
|
|
_ctx = XCheckpointStarvationCtx{XeMode: int32(2)}
|
|
_checkpoint_starvation_main(tls, _nMs, &_ctx)
|
|
if _ctx.XnMaxFrame > int32(60) {
|
|
_test_error_x(tls, &_err, bin.Xsqlite3_mprintf(tls, str(4379), _ctx.XnMaxFrame))
|
|
}
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _create_drop_index_1(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(54)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(55)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(4410))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(60)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(62)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(1))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(65)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _create_drop_index_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(66)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _create_drop_index_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(67)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _create_drop_index_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(68)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _create_drop_index_thread, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(69)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _create_drop_index_thread, nil)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(71)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(0))
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _create_drop_index_thread(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_0:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(21)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(22)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(24)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(4551))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(42)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
goto _0
|
|
}
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
func _lookaside1(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(71)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(72)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(4924))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(85)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(87)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(1))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(90)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _lookaside1_thread_reader, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(91)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _lookaside1_thread_reader, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(92)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _lookaside1_thread_reader, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(93)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _lookaside1_thread_reader, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(94)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _lookaside1_thread_reader, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(95)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _lookaside1_thread_writer, nil)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(96)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(0))
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _lookaside1_thread_reader(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _1_rc int32
|
|
var _1_pStmt unsafe.Pointer
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(25)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(27)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
_1_pStmt = nil
|
|
bin.Xsqlite3_prepare_v2(tls, (*bin.Xsqlite3)(_db.Xdb), str(5276), int32(-1), &_1_pStmt, nil)
|
|
_6:
|
|
if bin.Xsqlite3_step(tls, _1_pStmt) == int32(100) {
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(33)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(5293)))
|
|
goto _6
|
|
}
|
|
_1_rc = bin.Xsqlite3_finalize(tls, _1_pStmt)
|
|
if (_err.Xrc == int32(0)) && (_1_rc != int32(0)) {
|
|
_sqlite_error(tls, &_err, &_db, str(5324))
|
|
}
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(41)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
func _lookaside1_thread_writer(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(50)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(53)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5333))
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(58)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
goto _2
|
|
}
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(60)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
func _vacuum1(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(72)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(73)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5379))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(77)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(79)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(1))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(82)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _vacuum1_thread_writer, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(83)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _vacuum1_thread_writer, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(84)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _vacuum1_thread_writer, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(85)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _vacuum1_thread_vacuumer, nil)
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(86)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(0))
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
func _vacuum1_thread_writer(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _i int64
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(26)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_i = int64(0)
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(29)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
_i += 1
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(33)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(5444)))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(39)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(5579)), unsafe.Pointer(&_i))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(43)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(5611)))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
goto _2
|
|
}
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(47)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
func _vacuum1_thread_vacuumer(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(55)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(58)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5639))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(60)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
goto _2
|
|
}
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(62)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
func _stress1(tls *crt.TLS, _nMs int32) {
|
|
var _threads XThreadset
|
|
var _err XError
|
|
_err = XError{}
|
|
_threads = XThreadset{}
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(138)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(1))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(141)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_1, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(142)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_1, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(144)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_2, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(145)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_2, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(147)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_3, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(148)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_3, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(150)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_4, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(151)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_4, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(153)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_5, nil)
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(154)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress_thread_5, crt.U2P(uintptr(uint32(1))))
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(156)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(0))
|
|
_print_and_free_err(tls, &_err)
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Thread 1. CREATE and DROP a table.
|
|
// */
|
|
func _stress_thread_1(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(24)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(25)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(26)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5646))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(28)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5694))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
goto _2
|
|
}
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(31)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Thread 2. Open and close database connections.
|
|
// */
|
|
func _stress_thread_2(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_0:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(42)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(43)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(44)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5718))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(46)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
goto _0
|
|
}
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Thread 3. Attempt many small SELECT statements.
|
|
// */
|
|
func _stress_thread_3(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _i1, _i2 int32
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_i1 = int32(0)
|
|
_i2 = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(62)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(63)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(64)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5747))
|
|
_i1 += 1
|
|
if _err.Xrc != 0 {
|
|
_i2 += 1
|
|
}
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_clear_error_x(tls, &_err, int32(1))
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(70)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(5776), _i2, _i1)
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Thread 5. Attempt INSERT statements.
|
|
// */
|
|
func _stress_thread_4(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _i1, _i2, _iArg int32
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_i1 = int32(0)
|
|
_i2 = int32(0)
|
|
_iArg = int32(int64(crt.P2U(_pArg)))
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(85)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(86)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
if _iArg != 0 {
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(88)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(89)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
}
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(91)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5799))
|
|
_i1 += 1
|
|
if _err.Xrc != 0 {
|
|
_i2 += 1
|
|
}
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_clear_error_x(tls, &_err, int32(1))
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(100)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(5922), _i2, _i1)
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Thread 6. Attempt DELETE operations.
|
|
// */
|
|
func _stress_thread_5(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _iArg, _i1, _i2 int32
|
|
var _1_i int64
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_iArg = int32(int64(crt.P2U(_pArg)))
|
|
_i1 = int32(0)
|
|
_i2 = int32(0)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(116)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
_2:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(117)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _3
|
|
}
|
|
_1_i = int64(_i1 % int32(4))
|
|
if _iArg != 0 {
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(120)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(121)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(378), int32(0))
|
|
}
|
|
_execsql_i64_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(123)
|
|
}()
|
|
return &_err
|
|
}(), &_db, unsafe.Pointer(str(5946)), unsafe.Pointer(&_1_i))
|
|
_i1 += 1
|
|
if _err.Xrc != 0 {
|
|
_i2 += 1
|
|
}
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
goto _2
|
|
_3:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(128)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(5983), _i2, _i1)
|
|
}
|
|
|
|
func _stress2(tls *crt.TLS, _nMs int32) {
|
|
var _i int32
|
|
var _zDb *int8
|
|
var _threads XThreadset
|
|
var _err XError
|
|
var _db XSqlite
|
|
var _aTask [13]TStress2Task
|
|
_aTask = [13]TStress2Task{}
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), 0).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload1
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(1)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload2
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(2)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload3
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(3)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload4
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(4)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload5
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(5)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload6
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(6)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload7
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(7)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload8
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(8)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload9
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(9)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload10
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(10)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload11
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(11)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload14
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(12)).Xx = func() func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32) {
|
|
v := _stress2_workload17
|
|
return *(*func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32))(unsafe.Pointer(&v))
|
|
}()
|
|
_zDb = str(378)
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_threads = XThreadset{}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(345)
|
|
}()
|
|
return &_err
|
|
}(), &_db, _zDb, int32(1))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(346)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(6014))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(350)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
_setstoptime_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(352)
|
|
}()
|
|
return &_err
|
|
}(), _nMs)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(1))
|
|
_i = int32(0)
|
|
_8:
|
|
if uint64(_i) >= uint64(13) {
|
|
goto _11
|
|
}
|
|
_stress2_launch_thread_loop(tls, &_err, &_threads, _zDb, func() func(*crt.TLS, *XError, *XSqlite, int32) {
|
|
v := elem9((*TStress2Task)(unsafe.Pointer(&_aTask)), uintptr(_i)).Xx
|
|
return *(*func(*crt.TLS, *XError, *XSqlite, int32))(unsafe.Pointer(&v))
|
|
}())
|
|
_i += 1
|
|
goto _8
|
|
_11:
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(358)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress2_workload19, unsafe.Pointer(_zDb))
|
|
_launch_thread_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(359)
|
|
}()
|
|
return &_err
|
|
}(), &_threads, _stress2_workload19, unsafe.Pointer(_zDb))
|
|
_join_all_threads_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(361)
|
|
}()
|
|
return &_err
|
|
}(), &_threads)
|
|
bin.Xsqlite3_enable_shared_cache(tls, int32(0))
|
|
_print_and_free_err(tls, &_err)
|
|
_ = _aTask
|
|
}
|
|
|
|
func _stress2_workload1(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
var _iTab int32
|
|
_iTab = (_i % int32(4)) + int32(1)
|
|
_sql_script_printf_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(193)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6105), _iTab)
|
|
}
|
|
|
|
func _sql_script_printf_x(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _zFormat *int8, args ...interface{}) {
|
|
var _1_zSql *int8
|
|
var _ap []interface{}
|
|
_ap = args
|
|
if _pErr.Xrc == int32(0) {
|
|
_1_zSql = bin.Xsqlite3_vmprintf(tls, _zFormat, _ap)
|
|
_pErr.Xrc = bin.Xsqlite3_exec(tls, (*bin.Xsqlite3)(_pDb.Xdb), _1_zSql, nil, nil, &_pErr.XzErr)
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_1_zSql))
|
|
}
|
|
_ap = nil
|
|
}
|
|
|
|
func _stress2_workload2(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
var _iTab int32
|
|
_iTab = (_i % int32(4)) + int32(1)
|
|
_sql_script_printf_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(200)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6158), _iTab)
|
|
}
|
|
|
|
func _stress2_workload3(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(204)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6184))
|
|
}
|
|
|
|
func _stress2_workload4(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(208)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6219))
|
|
}
|
|
|
|
func _stress2_workload5(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(212)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6252))
|
|
}
|
|
|
|
func _stress2_workload6(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(218)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6321))
|
|
}
|
|
|
|
func _stress2_workload7(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_printf_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(224)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6387), _i)
|
|
}
|
|
|
|
func _stress2_workload8(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_printf_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(231)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6469), _i)
|
|
}
|
|
|
|
func _stress2_workload9(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_printf_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(239)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6546), _i)
|
|
}
|
|
|
|
func _stress2_workload10(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_printf_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(244)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6602), _i)
|
|
}
|
|
|
|
func _stress2_workload11(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(250)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(5639))
|
|
}
|
|
|
|
func _stress2_workload14(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(254)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(1143))
|
|
}
|
|
|
|
func _stress2_workload17(tls *crt.TLS, _pErr *XError, _pDb *XSqlite, _i int32) {
|
|
_sql_script_printf_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(258)
|
|
}()
|
|
return _pErr
|
|
}(), _pDb, str(6656), unsafe.Pointer(func() *int8 {
|
|
if (_i % int32(2)) != 0 {
|
|
return str(6681)
|
|
}
|
|
return str(6688)
|
|
}()))
|
|
}
|
|
|
|
func _stress2_launch_thread_loop(tls *crt.TLS, _pErr *XError, _pThreads *XThreadset, _zDb *int8, _x func(*crt.TLS, *XError, *XSqlite, int32)) {
|
|
var _pCtx *XStress2Ctx
|
|
_pCtx = (*XStress2Ctx)(bin.Xsqlite3_malloc(tls, int32(16)))
|
|
_pCtx.XzDb = _zDb
|
|
*(*func(*crt.TLS, *XError, *XSqlite, int32))(unsafe.Pointer(&_pCtx.XxProc)) = _x
|
|
_launch_thread_x(tls, func() *XError {
|
|
_pErr.XiLine = func() int32 {
|
|
if _pErr.Xrc != 0 {
|
|
return _pErr.XiLine
|
|
}
|
|
return int32(316)
|
|
}()
|
|
return _pErr
|
|
}(), _pThreads, _stress2_thread_wrapper, unsafe.Pointer(_pCtx))
|
|
}
|
|
|
|
func _stress2_thread_wrapper(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _i1, _i2, _1_cnt int32
|
|
var _err XError
|
|
var _db XSqlite
|
|
var _pCtx *XStress2Ctx
|
|
_pCtx = (*XStress2Ctx)(_pArg)
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_i1 = int32(0)
|
|
_i2 = int32(0)
|
|
_0:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(291)
|
|
}()
|
|
return &_err
|
|
}()) != 0 {
|
|
goto _1
|
|
}
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(293)
|
|
}()
|
|
return &_err
|
|
}(), &_db, _pCtx.XzDb, int32(0))
|
|
_1_cnt = int32(0)
|
|
_6:
|
|
if _err.Xrc != int32(0) || _1_cnt >= int32(5) {
|
|
goto _10
|
|
}
|
|
func() func(*crt.TLS, *XError, *XSqlite, int32) {
|
|
v := _pCtx.XxProc
|
|
return *(*func(*crt.TLS, *XError, *XSqlite, int32))(unsafe.Pointer(&v))
|
|
}()(tls, &_err, &_db, _i1)
|
|
_i2 += bool2int(_err.Xrc == int32(0))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_i1 += 1
|
|
_1_cnt += 1
|
|
goto _6
|
|
_10:
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(300)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
goto _0
|
|
_1:
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(6692), _i2, _i1)
|
|
}
|
|
|
|
func _stress2_workload19(tls *crt.TLS, _iTid int32, _pArg unsafe.Pointer) (r0 *int8) {
|
|
var _zDb *int8
|
|
var _err XError
|
|
var _db XSqlite
|
|
_err = XError{}
|
|
_db = XSqlite{}
|
|
_zDb = (*int8)(_pArg)
|
|
_0:
|
|
if _timetostop_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(267)
|
|
}()
|
|
return &_err
|
|
}()) == 0 {
|
|
_opendb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(268)
|
|
}()
|
|
return &_err
|
|
}(), &_db, _zDb, int32(0))
|
|
_sql_script_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(269)
|
|
}()
|
|
return &_err
|
|
}(), &_db, str(5718))
|
|
_clear_error_x(tls, &_err, int32(6))
|
|
_closedb_x(tls, func() *XError {
|
|
_err.XiLine = func() int32 {
|
|
if _err.Xrc != 0 {
|
|
return _err.XiLine
|
|
}
|
|
return int32(271)
|
|
}()
|
|
return &_err
|
|
}(), &_db)
|
|
goto _0
|
|
}
|
|
_print_and_free_err(tls, &_err)
|
|
return bin.Xsqlite3_mprintf(tls, str(1166))
|
|
}
|
|
|
|
var _mainØ00substArgvØ001 [3]*int8
|
|
|
|
func init() {
|
|
_mainØ00substArgvØ001 = [3]*int8{nil, str(6701), nil}
|
|
}
|
|
|
|
// C comment
|
|
// /************************** Public Interfaces *****************************/
|
|
// /*
|
|
// ** CAPI: Initialize the multiplex VFS shim - sqlite3_multiplex_initialize()
|
|
// **
|
|
// ** Use the VFS named zOrigVfsName as the VFS that does the actual work.
|
|
// ** Use the default if zOrigVfsName==NULL.
|
|
// **
|
|
// ** The multiplex VFS shim is named "multiplex". It will become the default
|
|
// ** VFS if makeDefault is non-zero.
|
|
// **
|
|
// ** THIS ROUTINE IS NOT THREADSAFE. Call this routine exactly once
|
|
// ** during start-up.
|
|
// */
|
|
func Xsqlite3_multiplex_initialize(tls *crt.TLS, _zOrigVfsName *int8, _makeDefault int32) (r0 int32) {
|
|
var _pOrigVfs *bin.Xsqlite3_vfs
|
|
if _gMultiplex.XisInitialized != 0 {
|
|
return int32(21)
|
|
}
|
|
_pOrigVfs = bin.Xsqlite3_vfs_find(tls, _zOrigVfsName)
|
|
if _pOrigVfs == nil {
|
|
return int32(1)
|
|
}
|
|
func() {
|
|
if _pOrigVfs == &_gMultiplex.XsThisVfs {
|
|
crt.X__builtin_fprintf(tls, Xstderr, str(991), unsafe.Pointer(str(6703)), int32(1099), unsafe.Pointer(&_sqlite3_multiplex_initializeØ00__func__Ø000), unsafe.Pointer(str(6763)))
|
|
crt.X__builtin_abort(tls)
|
|
}
|
|
}()
|
|
_gMultiplex.XisInitialized = int32(1)
|
|
*(**bin.Xsqlite3_vfs)(unsafe.Pointer(&_gMultiplex.XpOrigVfs)) = _pOrigVfs
|
|
_gMultiplex.XsThisVfs = *_pOrigVfs
|
|
{
|
|
p := &(_gMultiplex.XsThisVfs.XszOsFile)
|
|
*p = int32(uint64(*p) + uint64(16))
|
|
}
|
|
_gMultiplex.XsThisVfs.XzName = str(6794)
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, *bin.Xsqlite3_file, int32, *int32) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxOpen))) = _multiplexOpen
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxDelete))) = _multiplexDelete
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxAccess))) = _multiplexAccess
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int8) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxFullPathname))) = _multiplexFullPathname
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8) unsafe.Pointer)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxDlOpen))) = _multiplexDlOpen
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8))(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxDlError))) = _multiplexDlError
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, unsafe.Pointer, *int8) func(*crt.TLS))(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxDlSym))) = _multiplexDlSym
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, unsafe.Pointer))(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxDlClose))) = _multiplexDlClose
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxRandomness))) = _multiplexRandomness
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxSleep))) = _multiplexSleep
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, *float64) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxCurrentTime))) = _multiplexCurrentTime
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxGetLastError))) = _multiplexGetLastError
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&(_gMultiplex.XsThisVfs.XxCurrentTimeInt64))) = _multiplexCurrentTimeInt64
|
|
_gMultiplex.XsIoMethodsV1.XiVersion = int32(1)
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxClose))) = _multiplexClose
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxRead))) = _multiplexRead
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxWrite))) = _multiplexWrite
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int64) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxTruncate))) = _multiplexTruncate
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxSync))) = _multiplexSync
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, *int64) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxFileSize))) = _multiplexFileSize
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxLock))) = _multiplexLock
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxUnlock))) = _multiplexUnlock
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, *int32) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxCheckReservedLock))) = _multiplexCheckReservedLock
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int32, unsafe.Pointer) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxFileControl))) = _multiplexFileControl
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxSectorSize))) = _multiplexSectorSize
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV1.XxDeviceCharacteristics))) = _multiplexDeviceCharacteristics
|
|
_gMultiplex.XsIoMethodsV2 = _gMultiplex.XsIoMethodsV1
|
|
_gMultiplex.XsIoMethodsV2.XiVersion = int32(2)
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int32, int32, int32, *unsafe.Pointer) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV2.XxShmMap))) = _multiplexShmMap
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int32, int32, int32) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV2.XxShmLock))) = _multiplexShmLock
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file))(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV2.XxShmBarrier))) = _multiplexShmBarrier
|
|
*(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&(_gMultiplex.XsIoMethodsV2.XxShmUnmap))) = _multiplexShmUnmap
|
|
bin.Xsqlite3_vfs_register(tls, &_gMultiplex.XsThisVfs, _makeDefault)
|
|
bin.Xsqlite3_auto_extension(tls, func() func(*crt.TLS) { v := _multiplexFuncInit; return *(*func(*crt.TLS))(unsafe.Pointer(&v)) }())
|
|
return int32(0)
|
|
}
|
|
|
|
// C comment
|
|
// /************************* Global Variables **********************************/
|
|
// /*
|
|
// ** All global variables used by this file are containing within the following
|
|
// ** gMultiplex structure.
|
|
// */
|
|
var _gMultiplex t10
|
|
|
|
var _sqlite3_multiplex_initializeØ00__func__Ø000 [29]int8
|
|
|
|
func init() {
|
|
crt.Xstrncpy(nil, &_sqlite3_multiplex_initializeØ00__func__Ø000[0], str(6804), 29)
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** This is the xOpen method used for the "multiplex" VFS.
|
|
// **
|
|
// ** Most of the work is done by the underlying original VFS. This method
|
|
// ** simply links the new file into the appropriate multiplex group if it is a
|
|
// ** file that needs to be tracked.
|
|
// */
|
|
func _multiplexOpen(tls *crt.TLS, _pVfs *bin.Xsqlite3_vfs, _zName *int8, _pConn *bin.Xsqlite3_file, _flags int32, _pOutFlags *int32) (r0 int32) {
|
|
var _rc, _nName, _sz, _9_bExists, _12_iChunk int32
|
|
var _8_sz64 int64
|
|
var _zToFree, _3_zUri, _4_p *int8
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _pOrigVfs *bin.Xsqlite3_vfs
|
|
var _pGroup *XmultiplexGroup
|
|
var _pMultiplexOpen *XmultiplexConn
|
|
_rc = int32(0)
|
|
_pGroup = nil
|
|
_pSubOpen = nil
|
|
_pOrigVfs = (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs)
|
|
_nName = int32(0)
|
|
_sz = int32(0)
|
|
_zToFree = nil
|
|
|
|
crt.Xmemset(tls, unsafe.Pointer(_pConn), int32(0), uint64(_pVfs.XszOsFile))
|
|
func() {
|
|
if _zName == nil && (_flags&int32(8)) == 0 {
|
|
crt.X__builtin_fprintf(tls, Xstderr, str(991), unsafe.Pointer(str(6703)), int32(484), unsafe.Pointer(&_multiplexOpenØ00__func__Ø000), unsafe.Pointer(str(6833)))
|
|
crt.X__builtin_abort(tls)
|
|
}
|
|
}()
|
|
_pMultiplexOpen = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
if _rc != int32(0) {
|
|
goto _3
|
|
}
|
|
_nName = func() int32 {
|
|
if _zName != nil {
|
|
return _multiplexStrlen30(tls, _zName)
|
|
}
|
|
return int32(0)
|
|
}()
|
|
_sz = int32((uint64(40) + uint64(_nName)) + uint64(1))
|
|
_pGroup = (*XmultiplexGroup)(bin.Xsqlite3_malloc64(tls, uint64(_sz)))
|
|
if _pGroup == nil {
|
|
_rc = int32(7)
|
|
}
|
|
_3:
|
|
if _rc != int32(0) {
|
|
goto _7
|
|
}
|
|
_3_zUri = func() *int8 {
|
|
if (_flags & int32(64)) != 0 {
|
|
return _zName
|
|
}
|
|
return nil
|
|
}()
|
|
crt.Xmemset(tls, unsafe.Pointer(_pGroup), int32(0), uint64(_sz))
|
|
*(**XmultiplexGroup)(unsafe.Pointer(&_pMultiplexOpen.XpGroup)) = _pGroup
|
|
_pGroup.XbEnabled = uint8(255)
|
|
_pGroup.XbTruncate = uint8(bin.Xsqlite3_uri_boolean(tls, _3_zUri, str(6878), bool2int((_flags&int32(256)) == int32(0))))
|
|
_pGroup.XszChunk = uint32(int32(bin.Xsqlite3_uri_int64(tls, _3_zUri, str(6887), int64(2147418112))))
|
|
_pGroup.XszChunk = (_pGroup.XszChunk + uint32(65535)) & uint32(4294901760)
|
|
if _zName != nil {
|
|
_4_p = (*int8)(unsafe.Pointer(elem11(_pGroup, uintptr(1))))
|
|
_pGroup.XzName = _4_p
|
|
crt.Xmemcpy(tls, unsafe.Pointer(_pGroup.XzName), unsafe.Pointer(_zName), uint64(_nName+int32(1)))
|
|
_pGroup.XnName = _nName
|
|
}
|
|
if _pGroup.XbEnabled == 0 {
|
|
goto _11
|
|
}
|
|
_12:
|
|
if (uint32(bin.Xsqlite3PendingByte()) % _pGroup.XszChunk) >= (_pGroup.XszChunk - uint32(65536)) {
|
|
_pGroup.XszChunk += uint32(65536)
|
|
goto _12
|
|
}
|
|
_11:
|
|
_pGroup.Xflags = _flags
|
|
_rc = _multiplexSubFilename(tls, _pGroup, int32(1))
|
|
if _rc != int32(0) {
|
|
goto _14
|
|
}
|
|
_pSubOpen = _multiplexSubOpen(tls, _pGroup, int32(0), &_rc, _pOutFlags, int32(0))
|
|
if (_pSubOpen == nil) && (_rc == int32(0)) {
|
|
_rc = int32(14)
|
|
}
|
|
_14:
|
|
if _rc != int32(0) {
|
|
goto _17
|
|
}
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, *int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxFileSize
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, *int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, &_8_sz64)
|
|
if _rc != int32(0) || _zName == nil {
|
|
goto _19
|
|
}
|
|
if (_flags & int32(16384)) != 0 {
|
|
_pGroup.XbEnabled = 0
|
|
goto _29
|
|
}
|
|
if _8_sz64 != (0) {
|
|
goto _22
|
|
}
|
|
if (_flags & int32(2048)) == 0 {
|
|
goto _23
|
|
}
|
|
_12_iChunk = int32(1)
|
|
_24:
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32 {
|
|
v := _pOrigVfs.XxAccess
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_12_iChunk)).Xz, int32(0), &_9_bExists)
|
|
if _rc != int32(0) || _9_bExists == 0 {
|
|
goto _26
|
|
}
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32 {
|
|
v := _pOrigVfs.XxDelete
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_12_iChunk)).Xz, int32(0))
|
|
if _rc == int32(0) {
|
|
_rc = _multiplexSubFilename(tls, _pGroup, preInc7(&_12_iChunk, 1))
|
|
}
|
|
_26:
|
|
if (_rc == int32(0)) && _9_bExists != 0 {
|
|
goto _24
|
|
}
|
|
_23:
|
|
goto _29
|
|
_22:
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32 {
|
|
v := _pOrigVfs.XxAccess
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(1)).Xz, int32(0), &_9_bExists)
|
|
_9_bExists = bool2int(_multiplexSubSize(tls, _pGroup, int32(1), &_rc) > (0))
|
|
if ((((_rc == int32(0)) && _9_bExists != 0) && (_8_sz64 == (_8_sz64 & int64(4294901760)))) && (_8_sz64 > (0))) && (_8_sz64 != int64(_pGroup.XszChunk)) {
|
|
_pGroup.XszChunk = uint32(int32(_8_sz64))
|
|
goto _38
|
|
}
|
|
if ((_rc == int32(0)) && (_9_bExists == 0)) && (_8_sz64 > int64(_pGroup.XszChunk)) {
|
|
_pGroup.XbEnabled = 0
|
|
}
|
|
_38:
|
|
_29:
|
|
_19:
|
|
_17:
|
|
if _rc != int32(0) {
|
|
goto _39
|
|
}
|
|
if ((*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XiVersion) == int32(1) {
|
|
*(**bin.Xsqlite3_io_methods)(unsafe.Pointer(&(_pMultiplexOpen.Xbase.XpMethods))) = &_gMultiplex.XsIoMethodsV1
|
|
goto _41
|
|
}
|
|
*(**bin.Xsqlite3_io_methods)(unsafe.Pointer(&(_pMultiplexOpen.Xbase.XpMethods))) = &_gMultiplex.XsIoMethodsV2
|
|
_41:
|
|
goto _42
|
|
_39:
|
|
_multiplexFreeComponents(tls, _pGroup)
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_pGroup))
|
|
_42:
|
|
_7:
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_zToFree))
|
|
return _rc
|
|
}
|
|
|
|
var _multiplexOpenØ00__func__Ø000 [14]int8
|
|
|
|
func init() {
|
|
crt.Xstrncpy(nil, &_multiplexOpenØ00__func__Ø000[0], str(6897), 14)
|
|
}
|
|
|
|
// C comment
|
|
// /************************* Utility Routines *********************************/
|
|
// /*
|
|
// ** 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 _multiplexStrlen30(tls *crt.TLS, _z *int8) (r0 int32) {
|
|
var _z2 *int8
|
|
_z2 = _z
|
|
if _z == nil {
|
|
return int32(0)
|
|
}
|
|
_0:
|
|
if (*_z2) != 0 {
|
|
*(*uintptr)(unsafe.Pointer(&_z2)) += uintptr(1)
|
|
goto _0
|
|
}
|
|
return int32(1073741823) & int32(int64(uintptr(unsafe.Pointer(_z2))-uintptr(unsafe.Pointer(_z))))
|
|
}
|
|
|
|
// C comment
|
|
// /* Compute the filename for the iChunk-th chunk
|
|
// */
|
|
func _multiplexSubFilename(tls *crt.TLS, _pGroup *XmultiplexGroup, _iChunk int32) (r0 int32) {
|
|
var _3_n int32
|
|
var _3_z *int8
|
|
var _1_p *TmultiplexReal
|
|
if _iChunk < _pGroup.XnReal {
|
|
goto _0
|
|
}
|
|
_1_p = (*TmultiplexReal)(bin.Xsqlite3_realloc64(tls, _pGroup.XaReal, uint64(_iChunk+int32(1))*uint64(16)))
|
|
if _1_p == nil {
|
|
return int32(7)
|
|
}
|
|
crt.Xmemset(tls, unsafe.Pointer(elem12(_1_p, uintptr(_pGroup.XnReal))), int32(0), uint64(16)*uint64((_iChunk+int32(1))-_pGroup.XnReal))
|
|
*(**TmultiplexReal)(unsafe.Pointer(&_pGroup.XaReal)) = _1_p
|
|
_pGroup.XnReal = _iChunk + int32(1)
|
|
_0:
|
|
if _pGroup.XzName == nil || (elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz) != nil {
|
|
goto _3
|
|
}
|
|
_3_n = _pGroup.XnName
|
|
elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz = store2(&_3_z, (*int8)(bin.Xsqlite3_malloc64(tls, uint64(_3_n+int32(5)))))
|
|
if _3_z == nil {
|
|
return int32(7)
|
|
}
|
|
_multiplexFilename(tls, _pGroup.XzName, _pGroup.XnName, _pGroup.Xflags, _iChunk, _3_z)
|
|
_3:
|
|
return int32(0)
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Generate the file-name for chunk iChunk of the group with base name
|
|
// ** zBase. The file-name is written to buffer zOut before returning. Buffer
|
|
// ** zOut must be allocated by the caller so that it is at least (nBase+5)
|
|
// ** bytes in size, where nBase is the length of zBase, not including the
|
|
// ** nul-terminator.
|
|
// **
|
|
// ** If iChunk is 0 (or 400 - the number for the first journal file chunk),
|
|
// ** the output is a copy of the input string. Otherwise, if
|
|
// ** SQLITE_ENABLE_8_3_NAMES is not defined or the input buffer does not contain
|
|
// ** a "." character, then the output is a copy of the input string with the
|
|
// ** three-digit zero-padded decimal representation if iChunk appended to it.
|
|
// ** For example:
|
|
// **
|
|
// ** zBase="test.db", iChunk=4 -> zOut="test.db004"
|
|
// **
|
|
// ** Or, if SQLITE_ENABLE_8_3_NAMES is defined and the input buffer contains
|
|
// ** a "." character, then everything after the "." is replaced by the
|
|
// ** three-digit representation of iChunk.
|
|
// **
|
|
// ** zBase="test.db", iChunk=4 -> zOut="test.004"
|
|
// **
|
|
// ** The output buffer string is terminated by 2 0x00 bytes. This makes it safe
|
|
// ** to pass to sqlite3_uri_parameter() and similar.
|
|
// */
|
|
func _multiplexFilename(tls *crt.TLS, _zBase *int8, _nBase int32, _flags int32, _iChunk int32, _zOut *int8) {
|
|
var _n int32
|
|
_n = _nBase
|
|
crt.Xmemcpy(tls, unsafe.Pointer(_zOut), unsafe.Pointer(_zBase), uint64(_n+int32(1)))
|
|
if (_iChunk != int32(0)) && (_iChunk <= int32(299)) {
|
|
bin.Xsqlite3_snprintf(tls, int32(4), elem2(_zOut, uintptr(_n)), str(6911), _iChunk)
|
|
_n += int32(3)
|
|
}
|
|
func() {
|
|
if int32(*elem2(_zOut, uintptr(_n))) != int32(0) {
|
|
crt.X__builtin_fprintf(tls, Xstderr, str(991), unsafe.Pointer(str(6703)), int32(250), unsafe.Pointer(&_multiplexFilenameØ00__func__Ø000), unsafe.Pointer(str(6916)))
|
|
crt.X__builtin_abort(tls)
|
|
}
|
|
}()
|
|
*elem2(_zOut, uintptr(_n+int32(1))) = 0
|
|
}
|
|
|
|
var _multiplexFilenameØ00__func__Ø000 [18]int8
|
|
|
|
func init() {
|
|
crt.Xstrncpy(nil, &_multiplexFilenameØ00__func__Ø000[0], str(6930), 18)
|
|
}
|
|
|
|
// C comment
|
|
// /* Translate an sqlite3_file* that is really a multiplexGroup* into
|
|
// ** the sqlite3_file* for the underlying original VFS.
|
|
// **
|
|
// ** For chunk 0, the pGroup->flags determines whether or not a new file
|
|
// ** is created if it does not already exist. For chunks 1 and higher, the
|
|
// ** file is created only if createFlag is 1.
|
|
// */
|
|
func _multiplexSubOpen(tls *crt.TLS, _pGroup *XmultiplexGroup, _iChunk int32, _rc *int32, _pOutFlags *int32, _createFlag int32) (r0 *bin.Xsqlite3_file) {
|
|
var _1_flags, _1_bExists int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _pOrigVfs *bin.Xsqlite3_vfs
|
|
_pSubOpen = nil
|
|
_pOrigVfs = (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs)
|
|
*_rc = _multiplexSubFilename(tls, _pGroup, _iChunk)
|
|
if (*_rc) != int32(0) || store13(&_pSubOpen, (*bin.Xsqlite3_file)(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xp)) != nil {
|
|
goto _1
|
|
}
|
|
_1_flags = _pGroup.Xflags
|
|
if _createFlag != 0 {
|
|
_1_flags |= int32(4)
|
|
goto _7
|
|
}
|
|
if _iChunk == int32(0) {
|
|
goto _7
|
|
}
|
|
if (elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz) == nil {
|
|
return nil
|
|
}
|
|
*_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32 {
|
|
v := _pOrigVfs.XxAccess
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz, int32(0), &_1_bExists)
|
|
if (*_rc) == 0 && _1_bExists != 0 {
|
|
goto _9
|
|
}
|
|
if (*_rc) != 0 {
|
|
bin.Xsqlite3_log(tls, *_rc, str(6948), unsafe.Pointer(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz))
|
|
}
|
|
return nil
|
|
|
|
_9:
|
|
_1_flags &= int32(-5)
|
|
_7:
|
|
_pSubOpen = (*bin.Xsqlite3_file)(bin.Xsqlite3_malloc64(tls, uint64(_pOrigVfs.XszOsFile)))
|
|
if _pSubOpen == nil {
|
|
*_rc = int32(3082)
|
|
return nil
|
|
}
|
|
*(**bin.Xsqlite3_file)(unsafe.Pointer(&(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xp))) = _pSubOpen
|
|
*_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, *bin.Xsqlite3_file, int32, *int32) int32 {
|
|
v := _pOrigVfs.XxOpen
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, *bin.Xsqlite3_file, int32, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz, _pSubOpen, _1_flags, _pOutFlags)
|
|
if (*_rc) != int32(0) {
|
|
bin.Xsqlite3_log(tls, *_rc, str(6982), unsafe.Pointer(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz))
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_pSubOpen))
|
|
*(**bin.Xsqlite3_file)(unsafe.Pointer(&(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xp))) = nil
|
|
return nil
|
|
}
|
|
_1:
|
|
return _pSubOpen
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Return the size, in bytes, of chunk number iChunk. If that chunk
|
|
// ** does not exist, then return 0. This function does not distingish between
|
|
// ** non-existant files and zero-length files.
|
|
// */
|
|
func _multiplexSubSize(tls *crt.TLS, _pGroup *XmultiplexGroup, _iChunk int32, _rc *int32) (r0 int64) {
|
|
var _sz int64
|
|
var _pSub *bin.Xsqlite3_file
|
|
_sz = int64(0)
|
|
if (*_rc) != 0 {
|
|
return 0
|
|
}
|
|
_pSub = _multiplexSubOpen(tls, _pGroup, _iChunk, _rc, nil, int32(0))
|
|
if _pSub == nil {
|
|
return 0
|
|
}
|
|
*_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, *int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSub.XpMethods).XxFileSize
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, *int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSub, &_sz)
|
|
return _sz
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Deallocate memory held by a multiplexGroup
|
|
// */
|
|
func _multiplexFreeComponents(tls *crt.TLS, _pGroup *XmultiplexGroup) {
|
|
var _i int32
|
|
_i = int32(0)
|
|
_0:
|
|
if _i >= _pGroup.XnReal {
|
|
goto _3
|
|
}
|
|
_multiplexSubClose(tls, _pGroup, _i, nil)
|
|
_i += 1
|
|
goto _0
|
|
_3:
|
|
bin.Xsqlite3_free(tls, _pGroup.XaReal)
|
|
*(**TmultiplexReal)(unsafe.Pointer(&_pGroup.XaReal)) = nil
|
|
_pGroup.XnReal = int32(0)
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** Close a single sub-file in the connection group.
|
|
// */
|
|
func _multiplexSubClose(tls *crt.TLS, _pGroup *XmultiplexGroup, _iChunk int32, _pOrigVfs *bin.Xsqlite3_vfs) {
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
_pSubOpen = (*bin.Xsqlite3_file)(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xp)
|
|
if _pSubOpen == nil {
|
|
goto _0
|
|
}
|
|
func() func(*crt.TLS, *bin.Xsqlite3_file) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxClose
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen)
|
|
if (_pOrigVfs != nil) && ((elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz) != nil) {
|
|
func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32 {
|
|
v := _pOrigVfs.XxDelete
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz, int32(0))
|
|
}
|
|
bin.Xsqlite3_free(tls, elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xp)
|
|
_0:
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk)).Xz))
|
|
crt.Xmemset(tls, unsafe.Pointer(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_iChunk))), int32(0), uint64(16))
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** This is the xDelete method used for the "multiplex" VFS.
|
|
// ** It attempts to delete the filename specified.
|
|
// */
|
|
func _multiplexDelete(tls *crt.TLS, _pVfs *bin.Xsqlite3_vfs, _zName *int8, _syncDir int32) (r0 int32) {
|
|
var _rc, _1_nName, _3_iChunk, _3_bExists int32
|
|
var _1_z *int8
|
|
var _pOrigVfs *bin.Xsqlite3_vfs
|
|
_pOrigVfs = (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs)
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32 {
|
|
v := _pOrigVfs.XxDelete
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, _zName, _syncDir)
|
|
if _rc != int32(0) {
|
|
goto _0
|
|
}
|
|
_1_nName = int32(crt.Xstrlen(tls, _zName))
|
|
_1_z = (*int8)(bin.Xsqlite3_malloc64(tls, uint64(_1_nName+int32(5))))
|
|
if _1_z == nil {
|
|
_rc = int32(3082)
|
|
goto _2
|
|
}
|
|
_3_iChunk = int32(0)
|
|
_3:
|
|
_multiplexFilename(tls, _zName, _1_nName, int32(2048), preInc7(&_3_iChunk, 1), _1_z)
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32 {
|
|
v := _pOrigVfs.XxAccess
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, _1_z, int32(0), &_3_bExists)
|
|
if (_rc == int32(0)) && _3_bExists != 0 {
|
|
goto _3
|
|
}
|
|
_5:
|
|
if (_rc == int32(0)) && (_3_iChunk > int32(1)) {
|
|
_multiplexFilename(tls, _zName, _1_nName, int32(2048), preInc7(&_3_iChunk, -1), _1_z)
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32 {
|
|
v := _pOrigVfs.XxDelete
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, _1_z, _syncDir)
|
|
goto _5
|
|
}
|
|
if _rc != int32(0) {
|
|
goto _8
|
|
}
|
|
_3_iChunk = int32(0)
|
|
_9:
|
|
_multiplexFilename(tls, _zName, _1_nName, int32(524288), preInc7(&_3_iChunk, 1), _1_z)
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32 {
|
|
v := _pOrigVfs.XxAccess
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, _1_z, int32(0), &_3_bExists)
|
|
if (_rc == int32(0)) && _3_bExists != 0 {
|
|
goto _9
|
|
}
|
|
_11:
|
|
if (_rc == int32(0)) && (_3_iChunk > int32(1)) {
|
|
_multiplexFilename(tls, _zName, _1_nName, int32(524288), preInc7(&_3_iChunk, -1), _1_z)
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32 {
|
|
v := _pOrigVfs.XxDelete
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pOrigVfs, _1_z, _syncDir)
|
|
goto _11
|
|
}
|
|
_8:
|
|
_2:
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_1_z))
|
|
_0:
|
|
return _rc
|
|
}
|
|
|
|
func _multiplexAccess(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b *int8, _c int32, _d *int32) (r0 int32) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32 {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxAccess
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b, _c, _d)
|
|
}
|
|
|
|
func _multiplexFullPathname(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b *int8, _c int32, _d *int8) (r0 int32) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int8) int32 {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxFullPathname
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8, int32, *int8) int32)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b, _c, _d)
|
|
}
|
|
|
|
func _multiplexDlOpen(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b *int8) (r0 unsafe.Pointer) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int8) unsafe.Pointer {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxDlOpen
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int8) unsafe.Pointer)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b)
|
|
}
|
|
|
|
func _multiplexDlError(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b int32, _c *int8) {
|
|
func() func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8) {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxDlError
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8))(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b, _c)
|
|
}
|
|
|
|
func _multiplexDlSym(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b unsafe.Pointer, _c *int8) (r0 func(*crt.TLS)) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, unsafe.Pointer, *int8) func(*crt.TLS) {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxDlSym
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, unsafe.Pointer, *int8) func(*crt.TLS))(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b, _c)
|
|
}
|
|
|
|
func _multiplexDlClose(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b unsafe.Pointer) {
|
|
func() func(*crt.TLS, *bin.Xsqlite3_vfs, unsafe.Pointer) {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxDlClose
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, unsafe.Pointer))(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b)
|
|
}
|
|
|
|
func _multiplexRandomness(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b int32, _c *int8) (r0 int32) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8) int32 {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxRandomness
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8) int32)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b, _c)
|
|
}
|
|
|
|
func _multiplexSleep(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b int32) (r0 int32) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, int32) int32 {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxSleep
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b)
|
|
}
|
|
|
|
func _multiplexCurrentTime(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b *float64) (r0 int32) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, *float64) int32 {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxCurrentTime
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *float64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b)
|
|
}
|
|
|
|
func _multiplexGetLastError(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b int32, _c *int8) (r0 int32) {
|
|
if ((*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxGetLastError) != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8) int32 {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxGetLastError
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, int32, *int8) int32)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b, _c)
|
|
}
|
|
return int32(0)
|
|
}
|
|
|
|
func _multiplexCurrentTimeInt64(tls *crt.TLS, _a *bin.Xsqlite3_vfs, _b *int64) (r0 int32) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_vfs, *int64) int32 {
|
|
v := (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs).XxCurrentTimeInt64
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_vfs, *int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs), _b)
|
|
}
|
|
|
|
// C comment
|
|
// /* xClose requests get passed through to the original VFS.
|
|
// ** We loop over all open chunk handles and close them.
|
|
// ** The group structure for this file is unlinked from
|
|
// ** our list of groups and freed.
|
|
// */
|
|
func _multiplexClose(tls *crt.TLS, _pConn *bin.Xsqlite3_file) (r0 int32) {
|
|
var _rc int32
|
|
var _pGroup *XmultiplexGroup
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pGroup = (*XmultiplexGroup)(_p.XpGroup)
|
|
_rc = int32(0)
|
|
_multiplexFreeComponents(tls, _pGroup)
|
|
bin.Xsqlite3_free(tls, unsafe.Pointer(_pGroup))
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xRead requests thru to the original VFS after
|
|
// ** determining the correct chunk to operate on.
|
|
// ** Break up reads across chunk boundaries.
|
|
// */
|
|
func _multiplexRead(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _pBuf unsafe.Pointer, _iAmt int32, _iOfst int64) (r0 int32) {
|
|
var _rc, _5_i, _6_extra int32
|
|
var _1_pSubOpen, _5_pSubOpen *bin.Xsqlite3_file
|
|
var _pGroup *XmultiplexGroup
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pGroup = (*XmultiplexGroup)(_p.XpGroup)
|
|
_rc = int32(0)
|
|
if _pGroup.XbEnabled != 0 {
|
|
goto _0
|
|
}
|
|
_1_pSubOpen = _multiplexSubOpen(tls, _pGroup, int32(0), &_rc, nil, int32(0))
|
|
if _1_pSubOpen == nil {
|
|
_rc = int32(266)
|
|
goto _2
|
|
}
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_1_pSubOpen.XpMethods).XxRead
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _1_pSubOpen, _pBuf, _iAmt, _iOfst)
|
|
_2:
|
|
goto _3
|
|
_0:
|
|
_4:
|
|
if _iAmt <= int32(0) {
|
|
goto _5
|
|
}
|
|
_5_i = int32(_iOfst / int64(_pGroup.XszChunk))
|
|
_5_pSubOpen = _multiplexSubOpen(tls, _pGroup, _5_i, &_rc, nil, int32(1))
|
|
if _5_pSubOpen == nil {
|
|
goto _6
|
|
}
|
|
_6_extra = int32(uint32(int32(_iOfst%int64(_pGroup.XszChunk))+_iAmt) - _pGroup.XszChunk)
|
|
if _6_extra < int32(0) {
|
|
_6_extra = int32(0)
|
|
}
|
|
_iAmt -= _6_extra
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_5_pSubOpen.XpMethods).XxRead
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _5_pSubOpen, _pBuf, _iAmt, _iOfst%int64(_pGroup.XszChunk))
|
|
if _rc != int32(0) {
|
|
goto _5
|
|
}
|
|
_pBuf = unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_pBuf) + uintptr(_iAmt))))
|
|
_iOfst += int64(_iAmt)
|
|
_iAmt = _6_extra
|
|
goto _9
|
|
_6:
|
|
_rc = int32(266)
|
|
goto _5
|
|
_9:
|
|
goto _4
|
|
_5:
|
|
_3:
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xWrite requests thru to the original VFS after
|
|
// ** determining the correct chunk to operate on.
|
|
// ** Break up writes across chunk boundaries.
|
|
// */
|
|
func _multiplexWrite(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _pBuf unsafe.Pointer, _iAmt int32, _iOfst int64) (r0 int32) {
|
|
var _rc, _5_i, _6_extra int32
|
|
var _1_pSubOpen, _5_pSubOpen *bin.Xsqlite3_file
|
|
var _pGroup *XmultiplexGroup
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pGroup = (*XmultiplexGroup)(_p.XpGroup)
|
|
_rc = int32(0)
|
|
if _pGroup.XbEnabled != 0 {
|
|
goto _0
|
|
}
|
|
_1_pSubOpen = _multiplexSubOpen(tls, _pGroup, int32(0), &_rc, nil, int32(0))
|
|
if _1_pSubOpen == nil {
|
|
_rc = int32(778)
|
|
goto _2
|
|
}
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_1_pSubOpen.XpMethods).XxWrite
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _1_pSubOpen, _pBuf, _iAmt, _iOfst)
|
|
_2:
|
|
goto _3
|
|
_0:
|
|
_4:
|
|
if _rc != int32(0) || _iAmt <= int32(0) {
|
|
goto _5
|
|
}
|
|
_5_i = int32(_iOfst / int64(_pGroup.XszChunk))
|
|
_5_pSubOpen = _multiplexSubOpen(tls, _pGroup, _5_i, &_rc, nil, int32(1))
|
|
if _5_pSubOpen == nil {
|
|
goto _7
|
|
}
|
|
_6_extra = int32(uint32(int32(_iOfst%int64(_pGroup.XszChunk))+_iAmt) - _pGroup.XszChunk)
|
|
if _6_extra < int32(0) {
|
|
_6_extra = int32(0)
|
|
}
|
|
_iAmt -= _6_extra
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_5_pSubOpen.XpMethods).XxWrite
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, unsafe.Pointer, int32, int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _5_pSubOpen, _pBuf, _iAmt, _iOfst%int64(_pGroup.XszChunk))
|
|
_pBuf = unsafe.Pointer((*int8)(unsafe.Pointer(uintptr(_pBuf) + uintptr(_iAmt))))
|
|
_iOfst += int64(_iAmt)
|
|
_iAmt = _6_extra
|
|
_7:
|
|
goto _4
|
|
_5:
|
|
_3:
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xTruncate requests thru to the original VFS after
|
|
// ** determining the correct chunk to operate on. Delete any
|
|
// ** chunks above the truncate mark.
|
|
// */
|
|
func _multiplexTruncate(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _size int64) (r0 int32) {
|
|
var _rc, _4_i, _4_iBaseGroup int32
|
|
var _1_pSubOpen, _4_pSubOpen *bin.Xsqlite3_file
|
|
var _4_pOrigVfs *bin.Xsqlite3_vfs
|
|
var _pGroup *XmultiplexGroup
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pGroup = (*XmultiplexGroup)(_p.XpGroup)
|
|
_rc = int32(0)
|
|
if _pGroup.XbEnabled != 0 {
|
|
goto _0
|
|
}
|
|
_1_pSubOpen = _multiplexSubOpen(tls, _pGroup, int32(0), &_rc, nil, int32(0))
|
|
if _1_pSubOpen == nil {
|
|
_rc = int32(1546)
|
|
goto _2
|
|
}
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_1_pSubOpen.XpMethods).XxTruncate
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _1_pSubOpen, _size)
|
|
_2:
|
|
goto _3
|
|
_0:
|
|
_4_iBaseGroup = int32(_size / int64(_pGroup.XszChunk))
|
|
_4_pOrigVfs = (*bin.Xsqlite3_vfs)(_gMultiplex.XpOrigVfs)
|
|
_4_i = _pGroup.XnReal - int32(1)
|
|
_4:
|
|
if _4_i <= _4_iBaseGroup || _rc != int32(0) {
|
|
goto _8
|
|
}
|
|
if _pGroup.XbTruncate != 0 {
|
|
_multiplexSubClose(tls, _pGroup, _4_i, _4_pOrigVfs)
|
|
goto _10
|
|
}
|
|
_4_pSubOpen = _multiplexSubOpen(tls, _pGroup, _4_i, &_rc, nil, int32(0))
|
|
if _4_pSubOpen != nil {
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_4_pSubOpen.XpMethods).XxTruncate
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _4_pSubOpen, 0)
|
|
}
|
|
_10:
|
|
_4_i -= 1
|
|
goto _4
|
|
_8:
|
|
if _rc != int32(0) {
|
|
goto _12
|
|
}
|
|
_4_pSubOpen = _multiplexSubOpen(tls, _pGroup, _4_iBaseGroup, &_rc, nil, int32(0))
|
|
if _4_pSubOpen != nil {
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_4_pSubOpen.XpMethods).XxTruncate
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _4_pSubOpen, _size%int64(_pGroup.XszChunk))
|
|
}
|
|
_12:
|
|
if _rc != 0 {
|
|
_rc = int32(1546)
|
|
}
|
|
_3:
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xSync requests through to the original VFS without change
|
|
// */
|
|
func _multiplexSync(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _flags int32) (r0 int32) {
|
|
var _rc, _i, _2_rc2 int32
|
|
var _1_pSubOpen *bin.Xsqlite3_file
|
|
var _pGroup *XmultiplexGroup
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pGroup = (*XmultiplexGroup)(_p.XpGroup)
|
|
_rc = int32(0)
|
|
_i = int32(0)
|
|
_0:
|
|
if _i >= _pGroup.XnReal {
|
|
goto _3
|
|
}
|
|
_1_pSubOpen = (*bin.Xsqlite3_file)(elem12((*TmultiplexReal)(_pGroup.XaReal), uintptr(_i)).Xp)
|
|
if _1_pSubOpen == nil {
|
|
goto _4
|
|
}
|
|
_2_rc2 = func() func(*crt.TLS, *bin.Xsqlite3_file, int32) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_1_pSubOpen.XpMethods).XxSync
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _1_pSubOpen, _flags)
|
|
if _2_rc2 != int32(0) {
|
|
_rc = _2_rc2
|
|
}
|
|
_4:
|
|
_i += 1
|
|
goto _0
|
|
_3:
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xFileSize requests through to the original VFS.
|
|
// ** Aggregate the size of all the chunks before returning.
|
|
// */
|
|
func _multiplexFileSize(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _pSize *int64) (r0 int32) {
|
|
var _rc, _i int32
|
|
var _5_sz int64
|
|
var _1_pSubOpen *bin.Xsqlite3_file
|
|
var _pGroup *XmultiplexGroup
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pGroup = (*XmultiplexGroup)(_p.XpGroup)
|
|
_rc = int32(0)
|
|
if _pGroup.XbEnabled != 0 {
|
|
goto _0
|
|
}
|
|
_1_pSubOpen = _multiplexSubOpen(tls, _pGroup, int32(0), &_rc, nil, int32(0))
|
|
if _1_pSubOpen == nil {
|
|
_rc = int32(1802)
|
|
goto _2
|
|
}
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, *int64) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_1_pSubOpen.XpMethods).XxFileSize
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, *int64) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _1_pSubOpen, _pSize)
|
|
_2:
|
|
goto _3
|
|
_0:
|
|
*_pSize = 0
|
|
_i = int32(0)
|
|
_4:
|
|
if _rc != int32(0) {
|
|
goto _7
|
|
}
|
|
_5_sz = _multiplexSubSize(tls, _pGroup, _i, &_rc)
|
|
if _5_sz == (0) {
|
|
goto _7
|
|
}
|
|
*_pSize = (int64(_i) * int64(_pGroup.XszChunk)) + _5_sz
|
|
_i += 1
|
|
goto _4
|
|
_7:
|
|
_3:
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xLock requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexLock(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _lock int32) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file, int32) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxLock
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, _lock)
|
|
}
|
|
return int32(5)
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xUnlock requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexUnlock(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _lock int32) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file, int32) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxUnlock
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, _lock)
|
|
}
|
|
return int32(2058)
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xCheckReservedLock requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexCheckReservedLock(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _pResOut *int32) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file, *int32) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxCheckReservedLock
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, *int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, _pResOut)
|
|
}
|
|
return int32(3594)
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xFileControl requests through to the original VFS unchanged,
|
|
// ** except for any MULTIPLEX_CTRL_* requests here.
|
|
// */
|
|
func _multiplexFileControl(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _op int32, _pArg unsafe.Pointer) (r0 int32) {
|
|
var _rc, _2_bEnabled int32
|
|
var _3_szChunk uint32
|
|
var _6_aFcntl **int8
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _pGroup *XmultiplexGroup
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pGroup = (*XmultiplexGroup)(_p.XpGroup)
|
|
_rc = int32(1)
|
|
if _gMultiplex.XisInitialized == 0 {
|
|
return int32(21)
|
|
}
|
|
switch _op {
|
|
case int32(5):
|
|
goto _5
|
|
case int32(6):
|
|
goto _5
|
|
case int32(14):
|
|
goto _7
|
|
case int32(214014):
|
|
goto _2
|
|
case int32(214015):
|
|
goto _3
|
|
case int32(214016):
|
|
goto _4
|
|
default:
|
|
goto _8
|
|
}
|
|
|
|
_2:
|
|
if _pArg != nil {
|
|
_2_bEnabled = *(*int32)(_pArg)
|
|
_pGroup.XbEnabled = uint8(_2_bEnabled)
|
|
_rc = int32(0)
|
|
}
|
|
goto _10
|
|
_3:
|
|
if _pArg == nil {
|
|
goto _11
|
|
}
|
|
_3_szChunk = *(*uint32)(_pArg)
|
|
if _3_szChunk < uint32(1) {
|
|
_rc = int32(21)
|
|
goto _13
|
|
}
|
|
_3_szChunk = _3_szChunk + uint32(65535)
|
|
_3_szChunk &= uint32(4294901760)
|
|
_pGroup.XszChunk = _3_szChunk
|
|
_rc = int32(0)
|
|
_13:
|
|
_11:
|
|
goto _10
|
|
_4:
|
|
_rc = int32(0)
|
|
goto _10
|
|
_5:
|
|
_rc = int32(0)
|
|
goto _10
|
|
_7:
|
|
_6_aFcntl = (**int8)(_pArg)
|
|
if (*elem1(_6_aFcntl, uintptr(1))) == nil || bin.Xsqlite3_stricmp(tls, *elem1(_6_aFcntl, uintptr(1)), str(7014)) != int32(0) {
|
|
goto _15
|
|
}
|
|
if (*elem1(_6_aFcntl, uintptr(2))) == nil || (*elem2(*elem1(_6_aFcntl, uintptr(2)), 0)) == 0 {
|
|
goto _17
|
|
}
|
|
if (bin.Xsqlite3_stricmp(tls, *elem1(_6_aFcntl, uintptr(2)), str(7033)) == int32(0)) || (bin.Xsqlite3_stricmp(tls, *elem1(_6_aFcntl, uintptr(2)), str(7036)) == int32(0)) {
|
|
_pGroup.XbTruncate = uint8(1)
|
|
goto _22
|
|
}
|
|
if (bin.Xsqlite3_stricmp(tls, *elem1(_6_aFcntl, uintptr(2)), str(7038)) == int32(0)) || (bin.Xsqlite3_stricmp(tls, *elem1(_6_aFcntl, uintptr(2)), str(7042)) == int32(0)) {
|
|
_pGroup.XbTruncate = 0
|
|
}
|
|
_22:
|
|
_17:
|
|
*elem1(_6_aFcntl, 0) = bin.Xsqlite3_mprintf(tls, func() *int8 {
|
|
if _pGroup.XbTruncate != 0 {
|
|
return str(7033)
|
|
}
|
|
return str(7038)
|
|
}())
|
|
_rc = int32(0)
|
|
goto _10
|
|
_15:
|
|
_8:
|
|
_pSubOpen = _multiplexSubOpen(tls, _pGroup, int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen == nil {
|
|
goto _25
|
|
}
|
|
_rc = func() func(*crt.TLS, *bin.Xsqlite3_file, int32, unsafe.Pointer) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxFileControl
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int32, unsafe.Pointer) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, _op, _pArg)
|
|
if (_op == int32(12)) && (_rc == int32(0)) {
|
|
*(**int8)(_pArg) = bin.Xsqlite3_mprintf(tls, str(7044), unsafe.Pointer(*(**int8)(_pArg)))
|
|
}
|
|
_25:
|
|
goto _10
|
|
_10:
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xSectorSize requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexSectorSize(tls *crt.TLS, _pConn *bin.Xsqlite3_file) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if (_pSubOpen != nil) && (((*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxSectorSize) != nil) {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxSectorSize
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen)
|
|
}
|
|
return int32(4096)
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xDeviceCharacteristics requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexDeviceCharacteristics(tls *crt.TLS, _pConn *bin.Xsqlite3_file) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxDeviceCharacteristics
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen)
|
|
}
|
|
return int32(0)
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xShmMap requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexShmMap(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _iRegion int32, _szRegion int32, _bExtend int32, _pp *unsafe.Pointer) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file, int32, int32, int32, *unsafe.Pointer) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxShmMap
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int32, int32, int32, *unsafe.Pointer) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, _iRegion, _szRegion, _bExtend, _pp)
|
|
}
|
|
return int32(10)
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xShmLock requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexShmLock(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _ofst int32, _n int32, _flags int32) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file, int32, int32, int32) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxShmLock
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int32, int32, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, _ofst, _n, _flags)
|
|
}
|
|
return int32(5)
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xShmBarrier requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexShmBarrier(tls *crt.TLS, _pConn *bin.Xsqlite3_file) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
func() func(*crt.TLS, *bin.Xsqlite3_file) {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxShmBarrier
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file))(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen)
|
|
}
|
|
}
|
|
|
|
// C comment
|
|
// /* Pass xShmUnmap requests through to the original VFS unchanged.
|
|
// */
|
|
func _multiplexShmUnmap(tls *crt.TLS, _pConn *bin.Xsqlite3_file, _deleteFlag int32) (r0 int32) {
|
|
var _rc int32
|
|
var _pSubOpen *bin.Xsqlite3_file
|
|
var _p *XmultiplexConn
|
|
_p = (*XmultiplexConn)(unsafe.Pointer(_pConn))
|
|
_pSubOpen = _multiplexSubOpen(tls, (*XmultiplexGroup)(_p.XpGroup), int32(0), &_rc, nil, int32(0))
|
|
if _pSubOpen != nil {
|
|
return func() func(*crt.TLS, *bin.Xsqlite3_file, int32) int32 {
|
|
v := (*bin.Xsqlite3_io_methods)(_pSubOpen.XpMethods).XxShmUnmap
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_file, int32) int32)(unsafe.Pointer(&v))
|
|
}()(tls, _pSubOpen, _deleteFlag)
|
|
}
|
|
return int32(0)
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** This is the entry point to register the auto-extension for the
|
|
// ** multiplex_control() function.
|
|
// */
|
|
func _multiplexFuncInit(tls *crt.TLS, _db unsafe.Pointer, _pzErrMsg **int8, _pApi *bin.Xsqlite3_api_routines) (r0 int32) {
|
|
var _rc int32
|
|
_rc = bin.Xsqlite3_create_function(tls, (*bin.Xsqlite3)(_db), str(7057), int32(2), int32(5), nil, func() func(*crt.TLS, *bin.Xsqlite3_context, int32, **bin.XMem) {
|
|
v := _multiplexControlFunc
|
|
return *(*func(*crt.TLS, *bin.Xsqlite3_context, int32, **bin.XMem))(unsafe.Pointer(&v))
|
|
}(), nil, nil)
|
|
return _rc
|
|
}
|
|
|
|
// C comment
|
|
// /*
|
|
// ** This is the implementation of the multiplex_control() SQL function.
|
|
// */
|
|
func _multiplexControlFunc(tls *crt.TLS, _context unsafe.Pointer, _argc int32, _argv *unsafe.Pointer) {
|
|
var _rc, _op, _iVal int32
|
|
var _db unsafe.Pointer
|
|
_rc = int32(0)
|
|
_db = unsafe.Pointer(bin.Xsqlite3_context_db_handle(tls, (*bin.Xsqlite3_context)(_context)))
|
|
_op = int32(0)
|
|
if (_db == nil) || (_argc != int32(2)) {
|
|
_rc = int32(1)
|
|
goto _2
|
|
}
|
|
_op = bin.Xsqlite3_value_int(tls, (*bin.XMem)(*elem3(_argv, 0)))
|
|
_iVal = bin.Xsqlite3_value_int(tls, (*bin.XMem)(*elem3(_argv, uintptr(1))))
|
|
switch _op {
|
|
case int32(1):
|
|
goto _4
|
|
case int32(2):
|
|
goto _5
|
|
case int32(3):
|
|
goto _6
|
|
default:
|
|
goto _7
|
|
}
|
|
|
|
_4:
|
|
_op = int32(214014)
|
|
goto _8
|
|
_5:
|
|
_op = int32(214015)
|
|
goto _8
|
|
_6:
|
|
_op = int32(214016)
|
|
goto _8
|
|
_7:
|
|
_rc = int32(12)
|
|
goto _8
|
|
_8:
|
|
_2:
|
|
if _rc == int32(0) {
|
|
_rc = bin.Xsqlite3_file_control(tls, (*bin.Xsqlite3)(_db), nil, _op, unsafe.Pointer(&_iVal))
|
|
}
|
|
bin.Xsqlite3_result_error_code(tls, (*bin.Xsqlite3_context)(_context), _rc)
|
|
_ = _iVal
|
|
}
|
|
|
|
func bool2int(b bool) int32 {
|
|
if b {
|
|
return 1
|
|
}
|
|
return 0
|
|
}
|
|
func bug20530(interface{}) {} //TODO remove when https://github.com/golang/go/issues/20530 is fixed.
|
|
func init() { nzf32 *= -1; nzf64 *= -1 }
|
|
|
|
var inf = math.Inf(1)
|
|
var nzf32 float32 // -0.0
|
|
var nzf64 float64 // -0.0
|
|
func elem1(a **int8, index uintptr) **int8 {
|
|
return (**int8)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 8*index))
|
|
}
|
|
func elem3(a *unsafe.Pointer, index uintptr) *unsafe.Pointer {
|
|
return (*unsafe.Pointer)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 8*index))
|
|
}
|
|
func elem8(a *int32, index uintptr) *int32 {
|
|
return (*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 4*index))
|
|
}
|
|
func elem2(a *int8, index uintptr) *int8 {
|
|
return (*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 1*index))
|
|
}
|
|
func elem9(a *TStress2Task, index uintptr) *TStress2Task {
|
|
return (*TStress2Task)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 8*index))
|
|
}
|
|
func elem0(a *TThreadTest, index uintptr) *TThreadTest {
|
|
return (*TThreadTest)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 24*index))
|
|
}
|
|
func elem12(a *TmultiplexReal, index uintptr) *TmultiplexReal {
|
|
return (*TmultiplexReal)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 16*index))
|
|
}
|
|
func elem11(a *XmultiplexGroup, index uintptr) *XmultiplexGroup {
|
|
return (*XmultiplexGroup)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 40*index))
|
|
}
|
|
func elem4(a *uint32, index uintptr) *uint32 {
|
|
return (*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 4*index))
|
|
}
|
|
func elem6(a *uint8, index uintptr) *uint8 {
|
|
return (*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(a)) + 1*index))
|
|
}
|
|
func postInc6(p **uint8, d int) *uint8 {
|
|
q := (*uintptr)(unsafe.Pointer(p))
|
|
v := *q
|
|
*q += uintptr(d)
|
|
return (*uint8)(unsafe.Pointer(v))
|
|
}
|
|
func postInc7(p *int32, d int32) int32 { v := *p; *p += d; return v }
|
|
func preInc7(p *int32, d int32) int32 { v := *p + d; *p = v; return v }
|
|
func preInc5(p *uint32, d uint32) uint32 { v := *p + d; *p = v; return v }
|
|
func store2(p **int8, v *int8) *int8 { *p = v; return v }
|
|
func store13(p **bin.Xsqlite3_file, v *bin.Xsqlite3_file) *bin.Xsqlite3_file { *p = v; return v }
|
|
func store7(p *int32, v int32) int32 { *p = v; return v }
|
|
func store5(p *uint32, v uint32) uint32 { *p = v; return v }
|
|
|
|
type XStatement struct {
|
|
XpStmt unsafe.Pointer
|
|
XpNext unsafe.Pointer
|
|
} // t14 struct{*struct{},*struct{}}
|
|
|
|
type XThreadset struct {
|
|
XiMaxTid int32
|
|
XpThread unsafe.Pointer
|
|
} // t15 struct{int32,*struct{}}
|
|
|
|
type XCheckpointStarvationCtx struct {
|
|
XeMode int32
|
|
XnMaxFrame int32
|
|
} // t16 struct{int32,int32}
|
|
|
|
type TmultiplexReal struct {
|
|
Xp unsafe.Pointer
|
|
Xz *int8
|
|
} // t17 struct{*struct{},*int8}
|
|
|
|
type XmultiplexGroup struct {
|
|
XaReal unsafe.Pointer
|
|
XnReal int32
|
|
XzName *int8
|
|
XnName int32
|
|
Xflags int32
|
|
XszChunk uint32
|
|
XbEnabled uint8
|
|
XbTruncate uint8
|
|
} // t18 struct{*struct{},int32,*int8,int32,int32,uint32,uint8,uint8}
|
|
|
|
type XmultiplexConn struct {
|
|
Xbase bin.Xsqlite3_file
|
|
XpGroup unsafe.Pointer
|
|
} // t19 struct{struct{*struct{}},*struct{}}
|
|
|
|
type XMD5Context struct {
|
|
XisInit int32
|
|
Xbuf [4]uint32
|
|
Xbits [2]uint32
|
|
Xu t20
|
|
} // t21 struct{int32,[4]uint32,[2]uint32,union{[64]uint8,[16]uint32}}
|
|
|
|
type XError struct {
|
|
Xrc int32
|
|
XiLine int32
|
|
XzErr *int8
|
|
} // t22 struct{int32,int32,*int8}
|
|
|
|
type XSqlite struct {
|
|
Xdb unsafe.Pointer
|
|
XpCache unsafe.Pointer
|
|
XnText int32
|
|
XaText **int8
|
|
} // t23 struct{*struct{},*struct{},int32,**int8}
|
|
|
|
type XThread struct {
|
|
XiTid int32
|
|
XpArg unsafe.Pointer
|
|
Xtid uint64
|
|
XxProc func(*crt.TLS, int32, unsafe.Pointer) *int8
|
|
XpNext unsafe.Pointer
|
|
} // t24 struct{int32,*struct{},uint64,*func(int32,*struct{})*int8,*struct{}}
|
|
|
|
type XStress2Ctx struct {
|
|
XzDb *int8
|
|
XxProc func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32)
|
|
} // t25 struct{*int8,*func(*struct{},*struct{},int32)}
|
|
|
|
type TStress2Task struct {
|
|
Xx func(*crt.TLS, unsafe.Pointer, unsafe.Pointer, int32)
|
|
} // t26 struct{*func(*struct{},*struct{},int32)}
|
|
|
|
type TThreadTest struct {
|
|
XxTest func(*crt.TLS, int32)
|
|
XzTest *int8
|
|
XnMs int32
|
|
} // t27 struct{*func(int32),*int8,int32}
|
|
|
|
type t10 struct {
|
|
XpOrigVfs unsafe.Pointer
|
|
XsThisVfs bin.Xsqlite3_vfs
|
|
XsIoMethodsV1 bin.Xsqlite3_io_methods
|
|
XsIoMethodsV2 bin.Xsqlite3_io_methods
|
|
XisInitialized int32
|
|
} // struct{*struct{},struct{int32,int32,int32,*struct{},*int8,*struct{},*func(*struct{},*int8,*struct{},int32,*int32)int32,*func(*struct{},*int8,int32)int32,*func(*struct{},*int8,int32,*int32)int32,*func(*struct{},*int8,int32,*int8)int32,*func(*struct{},*int8)*struct{},*func(*struct{},int32,*int8),*func(*struct{},*struct{},*int8)*func(),*func(*struct{},*struct{}),*func(*struct{},int32,*int8)int32,*func(*struct{},int32)int32,*func(*struct{},*float64)int32,*func(*struct{},int32,*int8)int32,*func(*struct{},*int64)int32,*func(*struct{},*int8,*func())int32,*func(*struct{},*int8)*func(),*func(*struct{},*int8)*int8},struct{int32,*func(*struct{})int32,*func(*struct{},*struct{},int32,int64)int32,*func(*struct{},*struct{},int32,int64)int32,*func(*struct{},int64)int32,*func(*struct{},int32)int32,*func(*struct{},*int64)int32,*func(*struct{},int32)int32,*func(*struct{},int32)int32,*func(*struct{},*int32)int32,*func(*struct{},int32,*struct{})int32,*func(*struct{})int32,*func(*struct{})int32,*func(*struct{},int32,int32,int32,**struct{})int32,*func(*struct{},int32,int32,int32)int32,*func(*struct{}),*func(*struct{},int32)int32,*func(*struct{},int64,int32,**struct{})int32,*func(*struct{},int64,*struct{})int32},struct{int32,*func(*struct{})int32,*func(*struct{},*struct{},int32,int64)int32,*func(*struct{},*struct{},int32,int64)int32,*func(*struct{},int64)int32,*func(*struct{},int32)int32,*func(*struct{},*int64)int32,*func(*struct{},int32)int32,*func(*struct{},int32)int32,*func(*struct{},*int32)int32,*func(*struct{},int32,*struct{})int32,*func(*struct{})int32,*func(*struct{})int32,*func(*struct{},int32,int32,int32,**struct{})int32,*func(*struct{},int32,int32,int32)int32,*func(*struct{}),*func(*struct{},int32)int32,*func(*struct{},int64,int32,**struct{})int32,*func(*struct{},int64,*struct{})int32},int32}
|
|
|
|
type t20 struct {
|
|
X [0]struct {
|
|
Xin [64]uint8
|
|
Xin32 [16]uint32
|
|
}
|
|
U [64]byte
|
|
} // union{[64]uint8,[16]uint32}
|
|
func str(n int) *int8 { return (*int8)(unsafe.Pointer(&strTab[n])) }
|
|
func wstr(n int) *int32 { return (*int32)(unsafe.Pointer(&strTab[n])) }
|
|
|
|
var strTab = []byte("walthread1\x00walthread2\x00walthread3\x00walthread4\x00walthread5\x00cgt_pager_1\x00dynamic_triggers\x00checkpoint_starvation_1\x00checkpoint_starvation_2\x00create_drop_index_1\x00lookaside1\x00vacuum1\x00stress1\x00stress2\x00-multiplexor\x00Failed to install multiplexor VFS (%d)\x0a\x00Running %s for %d seconds...\x0a\x00%d errors out of %d tests\x0a\x00Usage: %s [-multiplexor] [testname|testprefix*]...\x0a\x00Available tests are:\x0a\x00 %s\x0a\x00test.db\x00PRAGMA journal_mode = WAL;CREATE TABLE t1(x PRIMARY KEY);INSERT INTO t1 VALUES(randomblob(100));INSERT INTO t1 VALUES(randomblob(100));INSERT INTO t1 SELECT md5sum(x) FROM t1;\x00open\x00md5sum\x00PRAGMA synchronous=OFF\x00sqlite3_%s() - %s (%d)\x000123456789abcdef\x00%s\x00SELECT md5sum(x) FROM t1 WHERE rowid != (SELECT max(rowid) FROM t1)\x00SELECT x FROM t1 WHERE rowid = (SELECT max(rowid) FROM t1)\x00BEGIN\x00COMMIT\x00Failed read: %s %s %s\x00BEGIN;INSERT INTO t1 VALUES(randomblob(100));INSERT INTO t1 VALUES(randomblob(100));INSERT INTO t1 SELECT md5sum(x) FROM t1;COMMIT;\x00%d iterations\x00reset\x00Cannot discern type: \"%s\"\x00prepare_v2\x00%s:%i: assertion failure in %s: %s\x0a\x00../../../sqlite.org/sqlite-src-3190300/test/threadtest3.c\x000==strcmp(sqlite3_sql(pRet->pStmt), zSql)\x00getSqlStatement\x00PRAGMA integrity_check\x00ok\x00%z\x0a%s\x00* - no such table: *\x00%s: (%d) \"%s\" at line %d\x0a\x00Warning\x00Error\x00PRAGMA wal_checkpoint\x00%d checkpoints\x00Thread %d says: %s\x0a\x00...\x00CREATE TABLE t1(x INTEGER PRIMARY KEY, y UNIQUE)\x00PRAGMA journal_mode = WAL\x00PRAGMA journal_mode = DELETE\x00INSERT INTO t1 VALUES(NULL, randomblob(100))\x00test.db-journal\x00test.db-wal\x00File system looks incorrect (%d, %d)\x00W %d R %d\x00PRAGMA journal_mode = WAL;CREATE TABLE t1(cnt PRIMARY KEY, sum1, sum2);CREATE INDEX i1 ON t1(sum1);CREATE INDEX i2 ON t1(sum2);INSERT INTO t1 VALUES(0, 0, 0);\x00PRAGMA wal_autocheckpoint = 10\x00SELECT max(cnt) FROM t1\x00SELECT sum(cnt) FROM t1\x00SELECT sum(sum1) FROM t1\x00INSERT INTO t1 VALUES(:iNextWrite, :iSum1, :iSum2)\x00PRAGMA journal_mode = WAL;CREATE TABLE t1(a INTEGER PRIMARY KEY, b UNIQUE);\x00PRAGMA wal_autocheckpoint = 15;\x00REPLACE INTO t1 VALUES(:iRow, randomblob(300))\x00PRAGMA wal_autocheckpoint = 0;PRAGMA page_size = 1024;PRAGMA journal_mode = WAL;CREATE TABLE t1(x);BEGIN;INSERT INTO t1 VALUES(randomblob(900));INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 2 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 4 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 8 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 16 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 32 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 64 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 128 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 256 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 512 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 1024 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 2048 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 4096 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 8192 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 16384 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 32768 */INSERT INTO t1 SELECT randomblob(900) FROM t1; /* 65536 */COMMIT;\x00test_sv.db\x00test_sv.db-wal\x00 WAL file is %d bytes,\x00 DB file is %d.\x0a\x00no such file: %s\x00SELECT count(*) FROM t1\x00Bad row count: %d\x00PRAGMA cache_size = 2000;PRAGMA page_size = 1024;CREATE TABLE t1(a INTEGER PRIMARY KEY, b BLOB);\x00INSERT INTO t1 VALUES(:iRow, zeroblob(:iBlob))\x00UPDATE t1 SET b = zeroblob(:iBlob) WHERE a = :iRow\x00SELECT * FROM t1 WHERE a = :iRow\x00PRAGMA page_size = 1024;PRAGMA journal_mode = WAL;CREATE TABLE t1(x, y);CREATE TABLE t2(x, y);CREATE TABLE t3(x, y);CREATE TABLE t4(x, y);CREATE TABLE t5(x, y);CREATE TABLE t6(x, y);CREATE TABLE t7(x, y);CREATE TABLE t8(x, y);CREATE TABLE t9(x, y);\x00INSERT INTO t1 VALUES(:iX, :iY+1)\x00DELETE FROM t1 WHERE x = :iX\x00%d inserts, %d deletes\x00CREATE TRIGGER itr%d BEFORE INSERT ON t%d BEGIN INSERT INTO t%d VALUES(new.x, new.y);END;\x00CREATE TRIGGER dtr%d BEFORE DELETE ON t%d BEGIN DELETE FROM t%d WHERE x = old.x; END;\x00DROP TRIGGER itr%d\x00DROP TRIGGER dtr%d\x00%d created, %d dropped\x00WAL failed to grow - %d frames\x00PRAGMA page_size = 1024;PRAGMA journal_mode = WAL;CREATE TABLE t1(x);\x00INSERT INTO t1 VALUES(randomblob(1200))\x00 Checkpoint mode : %s\x0a\x00PASSIVE\x00RESTART\x00 Peak WAL : %d frames\x0a\x00 Transaction count: %d transactions\x0a\x00SELECT count(x) FROM t1\x00Isolation failure - %lld %lld\x00WAL grew too large - %d frames\x00CREATE TABLE t11(a, b, c, d);WITH data(x) AS (SELECT 1 UNION ALL SELECT x+1 FROM data WHERE x<100) INSERT INTO t11 SELECT x,x,x,x FROM data;\x00DROP INDEX IF EXISTS i1;DROP INDEX IF EXISTS i2;DROP INDEX IF EXISTS i3;DROP INDEX IF EXISTS i4;CREATE INDEX IF NOT EXISTS i1 ON t11(a);CREATE INDEX IF NOT EXISTS i2 ON t11(b);CREATE INDEX IF NOT EXISTS i3 ON t11(c);CREATE INDEX IF NOT EXISTS i4 ON t11(d);SELECT * FROM t11 ORDER BY a;SELECT * FROM t11 ORDER BY b;SELECT * FROM t11 ORDER BY c;SELECT * FROM t11 ORDER BY d;\x00CREATE TABLE t1(x PRIMARY KEY) WITHOUT ROWID;WITH data(x,y) AS ( SELECT 1, quote(randomblob(750)) UNION ALL SELECT x*2, y||y FROM data WHERE x<5) INSERT INTO t1 SELECT y FROM data;CREATE TABLE t3(x PRIMARY KEY,i) WITHOUT ROWID;INSERT INTO t3 VALUES(1, 1);CREATE TABLE t2(x,y,z);INSERT INTO t2 VALUES(randomblob(50), randomblob(50), randomblob(50));\x00SELECT 1 FROM t1\x00SELECT length(x||y||z) FROM t2\x00finalize\x00BEGIN;UPDATE t3 SET i=i+1 WHERE x=1;ROLLBACK;\x00CREATE TABLE t1(x PRIMARY KEY, y BLOB);CREATE INDEX i1 ON t1(y);\x00WITH loop(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM loop WHERE i<100) INSERT INTO t1 SELECT randomblob(50), randomblob(2500) FROM loop\x00DELETE FROM t1 WHERE rowid = :i\x00SELECT * FROM t1 ORDER BY x\x00VACUUM\x00CREATE TABLE IF NOT EXISTS t1(a PRIMARY KEY, b)\x00DROP TABLE IF EXISTS t1\x00SELECT * FROM sqlite_master;\x00SELECT * FROM t1 ORDER BY a;\x00read t1 %d/%d attempts\x00WITH loop(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM loop LIMIT 200) INSERT INTO t1 VALUES(randomblob(60), randomblob(60));\x00wrote t1 %d/%d attempts\x00DELETE FROM t1 WHERE (rowid % 4)==:i\x00deleted from t1 %d/%d attempts\x00CREATE TABLE IF NOT EXISTS t0(x PRIMARY KEY, y, z);CREATE INDEX IF NOT EXISTS i0 ON t0(y);\x00CREATE TABLE IF NOT EXISTS t%d(x PRIMARY KEY, y, z);\x00DROP TABLE IF EXISTS t%d;\x00SELECT * FROM t0 WHERE z = 'small'\x00SELECT * FROM t0 WHERE z = 'big'\x00INSERT INTO t0 VALUES(hex(random()), hex(randomblob(200)), 'small');\x00INSERT INTO t0 VALUES(hex(random()), hex(randomblob(57)), 'big');\x00UPDATE t0 SET y = hex(randomblob(200)) WHERE x LIKE hex((%d %% 5)) AND z='small';\x00UPDATE t0 SET y = hex(randomblob(57)) WHERE x LIKE hex(%d %% 5) AND z='big';\x00DELETE FROM t0 WHERE x LIKE hex(%d %% 5) AND z='small';\x00DELETE FROM t0 WHERE x LIKE hex(%d %% 5) AND z='big';\x00PRAGMA journal_mode = %q\x00delete\x00wal\x00ok %d/%d\x00*\x00../../../sqlite.org/sqlite-src-3190300/src/test_multiplex.c\x00pOrigVfs!=&gMultiplex.sThisVfs\x00multiplex\x00sqlite3_multiplex_initialize\x00zName || (flags & SQLITE_OPEN_DELETEONCLOSE)\x00truncate\x00chunksize\x00multiplexOpen\x00%03d\x00zOut[n]=='\\0'\x00multiplexFilename\x00multiplexor.xAccess failure on %s\x00multiplexor.xOpen failure on %s\x00multiplex_truncate\x00on\x001\x00off\x000\x00multiplex/%z\x00multiplex_control\x00")
|